diff --git a/src/builtins.ts b/src/builtins.ts index b1b68204..50a79d2b 100644 --- a/src/builtins.ts +++ b/src/builtins.ts @@ -484,10 +484,8 @@ export namespace BuiltinSymbols { export const runtime_register = "~lib/runtime/runtime.register"; export const runtime_discard = "~lib/runtime/runtime.discard"; export const runtime_newArray = "~lib/runtime/runtime.newArray"; - - // std/gc.ts - export const gc_mark_roots = "~lib/gc/__gc_mark_roots"; - export const gc_mark_members = "~lib/gc/__gc_mark_members"; + export const gc_mark_roots = "~lib/runtime/__gc_mark_roots"; + export const gc_mark_members = "~lib/runtime/__gc_mark_members"; // std/typedarray.ts export const Int8Array = "~lib/typedarray/Int8Array"; diff --git a/std/assembly/array.ts b/std/assembly/array.ts index 47047e3a..2af424d4 100644 --- a/std/assembly/array.ts +++ b/std/assembly/array.ts @@ -1,13 +1,12 @@ /// -import { MAX_BYTELENGTH } from "./util/runtime"; +import { MAX_BYTELENGTH, reallocate } from "./util/runtime"; import { COMPARATOR, SORT } from "./util/sort"; -import { runtime, __runtime_id } from "./runtime"; +import { runtime, __runtime_id, __gc_mark_members } from "./runtime"; import { ArrayBuffer, ArrayBufferView } from "./arraybuffer"; 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"; -import { __gc_mark_members } from "./gc"; /** Ensures that the given array has _at least_ the specified capacity. */ function ensureCapacity(array: ArrayBufferView, minCapacity: i32, alignLog2: u32): void { @@ -15,7 +14,7 @@ function ensureCapacity(array: ArrayBufferView, minCapacity: i32, alignLog2: u32 if (minCapacity > (MAX_BYTELENGTH >>> alignLog2)) throw new RangeError(E_INVALIDLENGTH); let oldData = array.data; let newByteLength = minCapacity << alignLog2; - let newData = runtime.reallocate(changetype(oldData), newByteLength); // registers on move + let newData = reallocate(changetype(oldData), newByteLength); // registers on move if (newData !== changetype(oldData)) { array.data = changetype(newData); // links array.dataStart = newData; diff --git a/std/assembly/collector/itcm.ts b/std/assembly/collector/itcm.ts index a7704ef9..83fa90e8 100644 --- a/std/assembly/collector/itcm.ts +++ b/std/assembly/collector/itcm.ts @@ -5,7 +5,7 @@ const TRACE = isDefined(GC_TRACE); import { HEADER_SIZE } from "../util/runtime"; -import { __gc_mark_roots, __gc_mark_members } from "../gc"; +import { __gc_mark_roots, __gc_mark_members } from "../runtime"; /** Collector states. */ const enum State { diff --git a/std/assembly/fixedarray.ts b/std/assembly/fixedarray.ts index 0602b2eb..40463ad5 100644 --- a/std/assembly/fixedarray.ts +++ b/std/assembly/fixedarray.ts @@ -1,7 +1,6 @@ import { HEADER, HEADER_SIZE, MAX_BYTELENGTH } from "./util/runtime"; -import { runtime, __runtime_id } from "./runtime"; +import { runtime, __runtime_id, __gc_mark_members } from "./runtime"; import { E_INDEXOUTOFRANGE, E_INVALIDLENGTH, E_HOLEYARRAY } from "./util/error"; -import { __gc_mark_members } from "./gc"; // NOTE: DO NOT USE YET! diff --git a/std/assembly/gc.ts b/std/assembly/gc.ts deleted file mode 100644 index f19fc4a1..00000000 --- a/std/assembly/gc.ts +++ /dev/null @@ -1,60 +0,0 @@ -/// - -import { E_NOTIMPLEMENTED } from "./util/error"; - -/** Marks root objects. */ -// @ts-ignore: decorator -@unsafe @builtin -export declare function __gc_mark_roots(): void; - -/** Marks class members. */ -// @ts-ignore: decorator -@unsafe @builtin -export declare function __gc_mark_members(classId: u32, ref: usize): void; - -// @ts-ignore -@lazy -var ROOT = new Set(); - -/** Garbage collector interface. */ -export namespace gc { - - /** Whether the garbage collector interface is implemented. */ - // @ts-ignore: decorator - @lazy - export const implemented: bool = isDefined(__ref_collect); - - /** Performs a full garbage collection cycle. */ - export function collect(): void { - if (isDefined(__ref_collect)) __ref_collect(); - else throw new Error(E_NOTIMPLEMENTED); - } - - /** Retains a managed object externally, making sure that it doesn't become collected. */ - // @ts-ignore: decorator - @unsafe - export function retain(ref: usize): void { - var root = ROOT; - if (!root.has(ref)) { - root.add(ref); - if (implemented) { - if (isDefined(__ref_link)) __ref_link(ref, changetype(root)); - else if (isDefined(__ref_retain)) __ref_retain(ref); - } - } - } - - /** Releases a managed object externally, allowing it to become collected. */ - // @ts-ignore: decorator - @unsafe - export function release(ref: usize): void { - var root = ROOT; - if (root.has(ref)) { - root.delete(ref); - if (implemented) { - if (isDefined(__ref_unlink)) __ref_unlink(ref, changetype(root)); - else if (isDefined(__ref_release)) __ref_release(ref); - } - } - } -} diff --git a/std/assembly/map.ts b/std/assembly/map.ts index 732ded47..3dadd668 100644 --- a/std/assembly/map.ts +++ b/std/assembly/map.ts @@ -1,8 +1,7 @@ /// import { HASH } from "./util/hash"; -import { __runtime_id } from "./runtime"; -import { __gc_mark_members } from "./gc"; +import { __runtime_id, __gc_mark_members } from "./runtime"; // A deterministic hash map based on CloseTable from https://github.com/jorendorff/dht diff --git a/std/assembly/runtime.ts b/std/assembly/runtime.ts index 996ced3b..18a38f1b 100644 --- a/std/assembly/runtime.ts +++ b/std/assembly/runtime.ts @@ -4,6 +4,7 @@ import { HEADER, HEADER_SIZE, HEADER_MAGIC, adjust } from "./util/runtime"; import { HEAP_BASE, memory } from "./memory"; import { ArrayBufferView } from "./arraybuffer"; +import { E_NOTIMPLEMENTED } from "./util/error"; /** Gets the computed unique id of a class type. */ // @ts-ignore: decorator @@ -15,6 +16,16 @@ export declare function __runtime_id(): u32; @unsafe @builtin export declare function __runtime_instanceof(id: u32, superId: u32): bool; +/** Marks root objects when a tracing GC is present. */ +// @ts-ignore: decorator +@unsafe @builtin +export declare function __gc_mark_roots(): void; + +/** Marks class members when a tracing GC is present. */ +// @ts-ignore: decorator +@unsafe @builtin +export declare function __gc_mark_members(classId: u32, ref: usize): void; + /** Runtime implementation. */ @unmanaged export class runtime { @@ -49,52 +60,6 @@ export namespace runtime { return changetype(header) + HEADER_SIZE; } - /** Reallocates the memory of a managed object that turned out to be too small or too large. */ - // @ts-ignore: decorator - @unsafe - export function reallocate(ref: usize, newPayloadSize: usize): usize { - // Background: When managed objects are allocated these aren't immediately registered with GC - // but can be used as scratch objects while unregistered. This is useful in situations where - // the object must be reallocated multiple times because its final size isn't known beforehand, - // e.g. in Array#filter, with only the final object making it into GC'ed userland. - var header = changetype
(ref - HEADER_SIZE); - var payloadSize = header.payloadSize; - if (payloadSize < newPayloadSize) { - let newAdjustedSize = adjust(newPayloadSize); - if (select(adjust(payloadSize), 0, ref > HEAP_BASE) < newAdjustedSize) { - // move if the allocation isn't large enough or not a heap object - let newHeader = changetype
(memory.allocate(newAdjustedSize)); - newHeader.classId = header.classId; - if (isDefined(__ref_collect)) { - newHeader.reserved1 = 0; - newHeader.reserved2 = 0; - } - let newRef = changetype(newHeader) + HEADER_SIZE; - memory.copy(newRef, ref, payloadSize); - memory.fill(newRef + payloadSize, 0, newPayloadSize - payloadSize); - if (header.classId == HEADER_MAGIC) { - // free right away if not registered yet - assert(ref > HEAP_BASE); // static objects aren't scratch objects - memory.free(changetype(header)); - } else if (isDefined(__ref_collect)) { - // if previously registered, register again - // @ts-ignore: stub - __ref_register(ref); - } - header = newHeader; - ref = newRef; - } else { - // otherwise just clear additional memory within this block - memory.fill(ref + payloadSize, 0, newPayloadSize - payloadSize); - } - } else { - // if the size is the same or less, just update the header accordingly. - // unused space is cleared when grown, so no need to do this here. - } - header.payloadSize = newPayloadSize; - return ref; - } - /** Discards the memory of a managed object that hasn't been registered yet. */ // @ts-ignore: decorator @unsafe @@ -129,14 +94,14 @@ export namespace runtime { // @ts-ignore: decorator @unsafe export function newString(length: i32): usize { - return runtime.register(runtime.allocate(length << 1), __runtime_id()); + return register(allocate(length << 1), __runtime_id()); } /** Allocates and registers, but doesn't initialize the data of, a new `ArrayBuffer` of the specified byteLength. */ // @ts-ignore: decorator @unsafe export function newArrayBuffer(byteLength: i32): usize { - return runtime.register(runtime.allocate(byteLength), __runtime_id()); + return register(allocate(byteLength), __runtime_id()); } /** Allocates and registers, but doesn't initialize the data of, a new `Array` of the specified length and element alignment.*/ @@ -148,9 +113,9 @@ export namespace runtime { // called and the static buffer provided as `data`. This function can also be used to // create typed arrays in that `Array` also implements `ArrayBufferView` but has an // additional `.length_` property that remains unused overhead for typed arrays. - var array = runtime.register(runtime.allocate(offsetof()), id); + var array = register(allocate(offsetof()), id); var bufferSize = length << alignLog2; - var buffer = runtime.register(runtime.allocate(bufferSize), __runtime_id()); + var buffer = register(allocate(bufferSize), __runtime_id()); changetype(array).data = changetype(buffer); // links changetype(array).dataStart = buffer; changetype(array).dataLength = bufferSize; @@ -158,4 +123,36 @@ export namespace runtime { if (data) memory.copy(buffer, data, bufferSize); return array; } + + /** Retains a managed object externally, making sure that it doesn't become collected. */ + // @ts-ignore: decorator + @unsafe + export function retain(ref: usize): void { + if (isDefined(__ref_collect)) { + if (isDefined(__ref_link)) __ref_link(ref, changetype(ROOT)); + else if (isDefined(__ref_retain)) __ref_retain(ref); + } + } + + /** Releases a managed object externally, allowing it to become collected. */ + // @ts-ignore: decorator + @unsafe + export function release(ref: usize): void { + if (isDefined(__ref_collect)) { + if (isDefined(__ref_unlink)) __ref_unlink(ref, changetype(ROOT)); + else if (isDefined(__ref_release)) __ref_release(ref); + } + } + + /** Performs a full garbage collection cycle. */ + export function collect(): void { + if (isDefined(__ref_collect)) __ref_collect(); + else throw new Error(E_NOTIMPLEMENTED); + } } + +class Root {} + +// @ts-ignore +@lazy +var ROOT = new Root(); diff --git a/std/assembly/runtime/arena.ts b/std/assembly/runtime/arena.ts index 8b75953b..9a31c7a4 100644 --- a/std/assembly/runtime/arena.ts +++ b/std/assembly/runtime/arena.ts @@ -1,3 +1 @@ import "allocator/arena"; - -// export { memory }; diff --git a/std/assembly/runtime/default.ts b/std/assembly/runtime/default.ts index 6131b14b..7178fe2a 100644 --- a/std/assembly/runtime/default.ts +++ b/std/assembly/runtime/default.ts @@ -1,4 +1,4 @@ import "allocator/tlsf"; import "collector/itcm"; -// export { memory, gc }; +export { runtime }; diff --git a/std/assembly/set.ts b/std/assembly/set.ts index 5ac85463..367e3b3d 100644 --- a/std/assembly/set.ts +++ b/std/assembly/set.ts @@ -1,8 +1,7 @@ /// import { HASH } from "./util/hash"; -import { __runtime_id } from "./runtime"; -import { __gc_mark_members } from "./gc"; +import { __runtime_id, __gc_mark_members } from "./runtime"; // A deterministic hash set based on CloseTable from https://github.com/jorendorff/dht diff --git a/std/assembly/util/memory.ts b/std/assembly/util/memory.ts index 3b4af9d1..c9e4a82c 100644 --- a/std/assembly/util/memory.ts +++ b/std/assembly/util/memory.ts @@ -1,154 +1,154 @@ -export function memcpy(dest: usize, src: usize, n: usize): void { // see: musl/src/string/memcpy.c - var w: u32, x: u32; +// export function memcpy(dest: usize, src: usize, n: usize): void { // see: musl/src/string/memcpy.c +// var w: u32, x: u32; - // copy 1 byte each until src is aligned to 4 bytes - while (n && (src & 3)) { - store(dest++, load(src++)); - n--; - } +// // copy 1 byte each until src is aligned to 4 bytes +// while (n && (src & 3)) { +// store(dest++, load(src++)); +// n--; +// } - // if dst is aligned to 4 bytes as well, copy 4 bytes each - if ((dest & 3) == 0) { - while (n >= 16) { - store(dest , load(src )); - store(dest + 4, load(src + 4)); - store(dest + 8, load(src + 8)); - store(dest + 12, load(src + 12)); - src += 16; dest += 16; n -= 16; - } - if (n & 8) { - store(dest , load(src )); - store(dest + 4, load(src + 4)); - dest += 8; src += 8; - } - if (n & 4) { - store(dest, load(src)); - dest += 4; src += 4; - } - if (n & 2) { // drop to 2 bytes each - store(dest, load(src)); - dest += 2; src += 2; - } - if (n & 1) { // drop to 1 byte - store(dest++, load(src++)); - } - return; - } +// // if dst is aligned to 4 bytes as well, copy 4 bytes each +// if ((dest & 3) == 0) { +// while (n >= 16) { +// store(dest , load(src )); +// store(dest + 4, load(src + 4)); +// store(dest + 8, load(src + 8)); +// store(dest + 12, load(src + 12)); +// src += 16; dest += 16; n -= 16; +// } +// if (n & 8) { +// store(dest , load(src )); +// store(dest + 4, load(src + 4)); +// dest += 8; src += 8; +// } +// if (n & 4) { +// store(dest, load(src)); +// dest += 4; src += 4; +// } +// if (n & 2) { // drop to 2 bytes each +// store(dest, load(src)); +// dest += 2; src += 2; +// } +// if (n & 1) { // drop to 1 byte +// store(dest++, load(src++)); +// } +// return; +// } - // if dst is not aligned to 4 bytes, use alternating shifts to copy 4 bytes each - // doing shifts if faster when copying enough bytes (here: 32 or more) - if (n >= 32) { - switch (dest & 3) { - // known to be != 0 - case 1: { - w = load(src); - store(dest++, load(src++)); - store(dest++, load(src++)); - store(dest++, load(src++)); - n -= 3; - while (n >= 17) { - x = load(src + 1); - store(dest, w >> 24 | x << 8); - w = load(src + 5); - store(dest + 4, x >> 24 | w << 8); - x = load(src + 9); - store(dest + 8, w >> 24 | x << 8); - w = load(src + 13); - store(dest + 12, x >> 24 | w << 8); - src += 16; dest += 16; n -= 16; - } - break; - } - case 2: { - w = load(src); - store(dest++, load(src++)); - store(dest++, load(src++)); - n -= 2; - while (n >= 18) { - x = load(src + 2); - store(dest, w >> 16 | x << 16); - w = load(src + 6); - store(dest + 4, x >> 16 | w << 16); - x = load(src + 10); - store(dest + 8, w >> 16 | x << 16); - w = load(src + 14); - store(dest + 12, x >> 16 | w << 16); - src += 16; dest += 16; n -= 16; - } - break; - } - case 3: { - w = load(src); - store(dest++, load(src++)); - n -= 1; - while (n >= 19) { - x = load(src + 3); - store(dest, w >> 8 | x << 24); - w = load(src + 7); - store(dest + 4, x >> 8 | w << 24); - x = load(src + 11); - store(dest + 8, w >> 8 | x << 24); - w = load(src + 15); - store(dest + 12, x >> 8 | w << 24); - src += 16; dest += 16; n -= 16; - } - break; - } - } - } +// // if dst is not aligned to 4 bytes, use alternating shifts to copy 4 bytes each +// // doing shifts if faster when copying enough bytes (here: 32 or more) +// if (n >= 32) { +// switch (dest & 3) { +// // known to be != 0 +// case 1: { +// w = load(src); +// store(dest++, load(src++)); +// store(dest++, load(src++)); +// store(dest++, load(src++)); +// n -= 3; +// while (n >= 17) { +// x = load(src + 1); +// store(dest, w >> 24 | x << 8); +// w = load(src + 5); +// store(dest + 4, x >> 24 | w << 8); +// x = load(src + 9); +// store(dest + 8, w >> 24 | x << 8); +// w = load(src + 13); +// store(dest + 12, x >> 24 | w << 8); +// src += 16; dest += 16; n -= 16; +// } +// break; +// } +// case 2: { +// w = load(src); +// store(dest++, load(src++)); +// store(dest++, load(src++)); +// n -= 2; +// while (n >= 18) { +// x = load(src + 2); +// store(dest, w >> 16 | x << 16); +// w = load(src + 6); +// store(dest + 4, x >> 16 | w << 16); +// x = load(src + 10); +// store(dest + 8, w >> 16 | x << 16); +// w = load(src + 14); +// store(dest + 12, x >> 16 | w << 16); +// src += 16; dest += 16; n -= 16; +// } +// break; +// } +// case 3: { +// w = load(src); +// store(dest++, load(src++)); +// n -= 1; +// while (n >= 19) { +// x = load(src + 3); +// store(dest, w >> 8 | x << 24); +// w = load(src + 7); +// store(dest + 4, x >> 8 | w << 24); +// x = load(src + 11); +// store(dest + 8, w >> 8 | x << 24); +// w = load(src + 15); +// store(dest + 12, x >> 8 | w << 24); +// src += 16; dest += 16; n -= 16; +// } +// break; +// } +// } +// } - // copy remaining bytes one by one - if (n & 16) { - store(dest++, load(src++)); - store(dest++, load(src++)); - store(dest++, load(src++)); - store(dest++, load(src++)); - store(dest++, load(src++)); - store(dest++, load(src++)); - store(dest++, load(src++)); - store(dest++, load(src++)); - store(dest++, load(src++)); - store(dest++, load(src++)); - store(dest++, load(src++)); - store(dest++, load(src++)); - store(dest++, load(src++)); - store(dest++, load(src++)); - store(dest++, load(src++)); - store(dest++, load(src++)); - } - if (n & 8) { - store(dest++, load(src++)); - store(dest++, load(src++)); - store(dest++, load(src++)); - store(dest++, load(src++)); - store(dest++, load(src++)); - store(dest++, load(src++)); - store(dest++, load(src++)); - store(dest++, load(src++)); - } - if (n & 4) { - store(dest++, load(src++)); - store(dest++, load(src++)); - store(dest++, load(src++)); - store(dest++, load(src++)); - } - if (n & 2) { - store(dest++, load(src++)); - store(dest++, load(src++)); - } - if (n & 1) { - store(dest++, load(src++)); - } -} +// // copy remaining bytes one by one +// if (n & 16) { +// store(dest++, load(src++)); +// store(dest++, load(src++)); +// store(dest++, load(src++)); +// store(dest++, load(src++)); +// store(dest++, load(src++)); +// store(dest++, load(src++)); +// store(dest++, load(src++)); +// store(dest++, load(src++)); +// store(dest++, load(src++)); +// store(dest++, load(src++)); +// store(dest++, load(src++)); +// store(dest++, load(src++)); +// store(dest++, load(src++)); +// store(dest++, load(src++)); +// store(dest++, load(src++)); +// store(dest++, load(src++)); +// } +// if (n & 8) { +// store(dest++, load(src++)); +// store(dest++, load(src++)); +// store(dest++, load(src++)); +// store(dest++, load(src++)); +// store(dest++, load(src++)); +// store(dest++, load(src++)); +// store(dest++, load(src++)); +// store(dest++, load(src++)); +// } +// if (n & 4) { +// store(dest++, load(src++)); +// store(dest++, load(src++)); +// store(dest++, load(src++)); +// store(dest++, load(src++)); +// } +// if (n & 2) { +// store(dest++, load(src++)); +// store(dest++, load(src++)); +// } +// if (n & 1) { +// store(dest++, load(src++)); +// } +// } // @ts-ignore: decorator @inline export function memmove(dest: usize, src: usize, n: usize): void { // see: musl/src/string/memmove.c if (dest === src) return; - if (src + n <= dest || dest + n <= src) { - memcpy(dest, src, n); - return; - } + // if (src + n <= dest || dest + n <= src) { + // memcpy(dest, src, n); + // return; + // } if (dest < src) { if ((src & 7) == (dest & 7)) { while (dest & 7) { diff --git a/std/assembly/util/runtime.ts b/std/assembly/util/runtime.ts index 8b98895d..838a5541 100644 --- a/std/assembly/util/runtime.ts +++ b/std/assembly/util/runtime.ts @@ -45,3 +45,49 @@ export function adjust(payloadSize: usize): usize { // MAX_LENGTH -> 2^30 = 0x40000000 (MAX_SIZE_32) return 1 << (32 - clz(payloadSize + HEADER_SIZE - 1)); } + +/** Reallocates the memory of a managed object that turned out to be too small or too large. */ +// @ts-ignore: decorator +@unsafe +export function reallocate(ref: usize, newPayloadSize: usize): usize { + // Background: When managed objects are allocated these aren't immediately registered with GC + // but can be used as scratch objects while unregistered. This is useful in situations where + // the object must be reallocated multiple times because its final size isn't known beforehand, + // e.g. in Array#filter, with only the final object making it into GC'ed userland. + var header = changetype
(ref - HEADER_SIZE); + var payloadSize = header.payloadSize; + if (payloadSize < newPayloadSize) { + let newAdjustedSize = adjust(newPayloadSize); + if (select(adjust(payloadSize), 0, ref > HEAP_BASE) < newAdjustedSize) { + // move if the allocation isn't large enough or not a heap object + let newHeader = changetype
(memory.allocate(newAdjustedSize)); + newHeader.classId = header.classId; + if (isDefined(__ref_collect)) { + newHeader.reserved1 = 0; + newHeader.reserved2 = 0; + } + let newRef = changetype(newHeader) + HEADER_SIZE; + memory.copy(newRef, ref, payloadSize); + memory.fill(newRef + payloadSize, 0, newPayloadSize - payloadSize); + if (header.classId == HEADER_MAGIC) { + // free right away if not registered yet + assert(ref > HEAP_BASE); // static objects aren't scratch objects + memory.free(changetype(header)); + } else if (isDefined(__ref_collect)) { + // if previously registered, register again + // @ts-ignore: stub + __ref_register(ref); + } + header = newHeader; + ref = newRef; + } else { + // otherwise just clear additional memory within this block + memory.fill(ref + payloadSize, 0, newPayloadSize - payloadSize); + } + } else { + // if the size is the same or less, just update the header accordingly. + // unused space is cleared when grown, so no need to do this here. + } + header.payloadSize = newPayloadSize; + return ref; +} diff --git a/tests/compiler/assert-nonnull.optimized.wat b/tests/compiler/assert-nonnull.optimized.wat index fb3865de..91afd2e4 100644 --- a/tests/compiler/assert-nonnull.optimized.wat +++ b/tests/compiler/assert-nonnull.optimized.wat @@ -58,7 +58,7 @@ if i32.const 0 i32.const 16 - i32.const 97 + i32.const 96 i32.const 45 call $~lib/env/abort unreachable @@ -72,7 +72,7 @@ if i32.const 0 i32.const 16 - i32.const 100 + i32.const 99 i32.const 61 call $~lib/env/abort unreachable @@ -100,7 +100,7 @@ if i32.const 0 i32.const 16 - i32.const 100 + i32.const 99 i32.const 61 call $~lib/env/abort unreachable diff --git a/tests/compiler/assert-nonnull.untouched.wat b/tests/compiler/assert-nonnull.untouched.wat index 812bb4a9..21c264d2 100644 --- a/tests/compiler/assert-nonnull.untouched.wat +++ b/tests/compiler/assert-nonnull.untouched.wat @@ -74,7 +74,7 @@ if i32.const 0 i32.const 16 - i32.const 97 + i32.const 96 i32.const 45 call $~lib/env/abort unreachable @@ -88,7 +88,7 @@ if i32.const 0 i32.const 16 - i32.const 100 + i32.const 99 i32.const 61 call $~lib/env/abort unreachable @@ -128,7 +128,7 @@ if i32.const 0 i32.const 16 - i32.const 100 + i32.const 99 i32.const 61 call $~lib/env/abort unreachable diff --git a/tests/compiler/call-super.optimized.wat b/tests/compiler/call-super.optimized.wat index c23bee86..b44b2318 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 117 + i32.const 82 i32.const 6 call $~lib/env/abort unreachable @@ -121,7 +121,7 @@ if i32.const 0 i32.const 16 - i32.const 119 + i32.const 84 i32.const 6 call $~lib/env/abort unreachable diff --git a/tests/compiler/call-super.untouched.wat b/tests/compiler/call-super.untouched.wat index 158fa3bb..72e72191 100644 --- a/tests/compiler/call-super.untouched.wat +++ b/tests/compiler/call-super.untouched.wat @@ -139,7 +139,7 @@ if i32.const 0 i32.const 16 - i32.const 117 + i32.const 82 i32.const 6 call $~lib/env/abort unreachable @@ -156,7 +156,7 @@ if i32.const 0 i32.const 16 - i32.const 119 + i32.const 84 i32.const 6 call $~lib/env/abort unreachable diff --git a/tests/compiler/class-extends.optimized.wat b/tests/compiler/class-extends.optimized.wat index d75befae..6ecc3755 100644 --- a/tests/compiler/class-extends.optimized.wat +++ b/tests/compiler/class-extends.optimized.wat @@ -1,15 +1,47 @@ (module (type $FUNCSIG$vi (func (param i32))) + (type $FUNCSIG$iii (func (param i32 i32) (result i32))) + (type $FUNCSIG$ii (func (param i32) (result i32))) + (type $FUNCSIG$vii (func (param i32 i32))) + (type $FUNCSIG$viii (func (param i32 i32 i32))) + (type $FUNCSIG$viiii (func (param i32 i32 i32 i32))) + (type $FUNCSIG$iiii (func (param i32 i32 i32) (result i32))) (type $FUNCSIG$v (func)) - (memory $0 0) + (type $FUNCSIG$iiiii (func (param i32 i32 i32 i32) (result i32))) + (import "env" "abort" (func $~lib/env/abort (param i32 i32 i32 i32))) + (memory $0 1) + (data (i32.const 8) "\01\00\00\00,") + (data (i32.const 24) "~\00l\00i\00b\00/\00a\00l\00l\00o\00c\00a\00t\00o\00r\00/\00t\00l\00s\00f\00.\00t\00s") + (data (i32.const 72) "\01\00\00\00\1e") + (data (i32.const 88) "~\00l\00i\00b\00/\00r\00u\00n\00t\00i\00m\00e\00.\00t\00s") (table $0 1 funcref) (elem (i32.const 0) $null) + (global $~lib/allocator/tlsf/ROOT (mut i32) (i32.const 0)) + (global $~lib/collector/itcm/state (mut i32) (i32.const 0)) + (global $~lib/collector/itcm/fromSpace (mut i32) (i32.const 0)) + (global $~lib/collector/itcm/toSpace (mut i32) (i32.const 0)) + (global $~lib/collector/itcm/iter (mut i32) (i32.const 0)) + (global $~lib/collector/itcm/white (mut i32) (i32.const 0)) + (global $~lib/runtime/ROOT (mut i32) (i32.const 0)) + (global $~lib/argc (mut i32) (i32.const 0)) (global $~lib/capabilities i32 (i32.const 2)) (export "memory" (memory $0)) (export "table" (table $0)) (export "test" (func $class-extends/test)) + (export "runtime.instanceof" (func $~lib/runtime/runtime.instanceof)) + (export "runtime.allocate" (func $~lib/runtime/runtime.allocate)) + (export "runtime.discard" (func $~lib/runtime/runtime.discard)) + (export "runtime.register" (func $~lib/runtime/runtime.register)) + (export "runtime.newString" (func $~lib/runtime/runtime.newString)) + (export "runtime.newArrayBuffer" (func $~lib/runtime/runtime.newArrayBuffer)) + (export ".setargc" (func $~lib/setargc)) + (export "runtime.newArray" (func $~lib/runtime/runtime.newArray|trampoline)) + (export "runtime.retain" (func $~lib/runtime/runtime.retain)) + (export "runtime.release" (func $~lib/runtime/runtime.release)) + (export "runtime.collect" (func $~lib/runtime/runtime.collect)) (export ".capabilities" (global $~lib/capabilities)) - (func $class-extends/test (; 0 ;) (type $FUNCSIG$vi) (param $0 i32) + (start $start) + (func $class-extends/test (; 1 ;) (type $FUNCSIG$vi) (param $0 i32) local.get $0 i32.load drop @@ -23,7 +55,1884 @@ i32.const 3 i32.store16 offset=4 ) - (func $null (; 1 ;) (type $FUNCSIG$v) + (func $~lib/runtime/runtime.instanceof (; 2 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + local.get $0 + if (result i32) + local.get $0 + i32.const 16 + i32.sub + i32.load + local.get $1 + call $~lib/runtime/__runtime_instanceof + else + i32.const 0 + end + ) + (func $~lib/allocator/tlsf/Root#setSLMap (; 3 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + local.get $1 + i32.const 22 + i32.ge_u + if + i32.const 0 + i32.const 24 + i32.const 159 + i32.const 4 + call $~lib/env/abort + unreachable + end + local.get $1 + i32.const 2 + i32.shl + local.get $0 + i32.add + local.get $2 + i32.store offset=4 + ) + (func $~lib/allocator/tlsf/Root#setHead (; 4 ;) (type $FUNCSIG$viiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) + local.get $1 + i32.const 22 + i32.ge_u + if + i32.const 0 + i32.const 24 + i32.const 184 + i32.const 4 + call $~lib/env/abort + unreachable + end + local.get $2 + i32.const 32 + i32.ge_u + if + i32.const 0 + i32.const 24 + i32.const 185 + i32.const 4 + call $~lib/env/abort + unreachable + end + local.get $1 + i32.const 5 + i32.shl + local.get $2 + i32.add + i32.const 2 + i32.shl + local.get $0 + i32.add + local.get $3 + i32.store offset=96 + ) + (func $~lib/allocator/tlsf/Block#get:right (; 5 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + i32.load + i32.const -4 + i32.and + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 104 + i32.const 4 + call $~lib/env/abort + unreachable + end + local.get $0 + i32.const 8 + i32.add + local.get $0 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $0 + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 105 + i32.const 11 + call $~lib/env/abort + unreachable + end + local.get $0 + ) + (func $~lib/allocator/tlsf/fls (; 6 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 447 + i32.const 2 + call $~lib/env/abort + unreachable + end + i32.const 31 + local.get $0 + i32.clz + i32.sub + ) + (func $~lib/allocator/tlsf/Root#getHead (; 7 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + local.get $1 + i32.const 22 + i32.ge_u + if + i32.const 0 + i32.const 24 + i32.const 175 + i32.const 4 + call $~lib/env/abort + unreachable + end + local.get $2 + i32.const 32 + i32.ge_u + if + i32.const 0 + i32.const 24 + i32.const 176 + i32.const 4 + call $~lib/env/abort + unreachable + end + local.get $1 + i32.const 5 + i32.shl + local.get $2 + i32.add + i32.const 2 + i32.shl + local.get $0 + i32.add + i32.load offset=96 + ) + (func $~lib/allocator/tlsf/Root#getSLMap (; 8 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + local.get $1 + i32.const 22 + i32.ge_u + if + i32.const 0 + i32.const 24 + i32.const 153 + i32.const 4 + call $~lib/env/abort + unreachable + end + local.get $1 + i32.const 2 + i32.shl + local.get $0 + i32.add + i32.load offset=4 + ) + (func $~lib/allocator/tlsf/Root#remove (; 9 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $1 + i32.load + local.tee $2 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 277 + i32.const 4 + call $~lib/env/abort + unreachable + end + local.get $2 + i32.const -4 + i32.and + local.tee $3 + i32.const 16 + i32.ge_u + local.tee $2 + if + local.get $3 + i32.const 1073741824 + i32.lt_u + local.set $2 + end + local.get $2 + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 279 + i32.const 4 + call $~lib/env/abort + unreachable + end + local.get $3 + i32.const 256 + i32.lt_u + if (result i32) + local.get $3 + i32.const 8 + i32.div_u + local.set $4 + i32.const 0 + else + local.get $3 + local.get $3 + call $~lib/allocator/tlsf/fls + local.tee $2 + i32.const 5 + i32.sub + i32.shr_u + i32.const 32 + i32.xor + local.set $4 + local.get $2 + i32.const 7 + i32.sub + end + local.set $2 + local.get $1 + i32.load offset=8 + local.set $3 + local.get $1 + i32.load offset=4 + local.tee $5 + if + local.get $5 + local.get $3 + i32.store offset=8 + end + local.get $3 + if + local.get $3 + local.get $5 + i32.store offset=4 + end + local.get $0 + local.get $2 + local.get $4 + call $~lib/allocator/tlsf/Root#getHead + local.get $1 + i32.eq + if + local.get $0 + local.get $2 + local.get $4 + local.get $3 + call $~lib/allocator/tlsf/Root#setHead + local.get $3 + i32.eqz + if + local.get $0 + local.get $2 + local.get $0 + local.get $2 + call $~lib/allocator/tlsf/Root#getSLMap + i32.const 1 + local.get $4 + i32.shl + i32.const -1 + i32.xor + i32.and + local.tee $1 + call $~lib/allocator/tlsf/Root#setSLMap + local.get $1 + i32.eqz + if + local.get $0 + local.get $0 + i32.load + i32.const 1 + local.get $2 + i32.shl + i32.const -1 + i32.xor + i32.and + i32.store + end + end + end + ) + (func $~lib/allocator/tlsf/Block#get:left (; 10 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + i32.load + i32.const 2 + i32.and + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 96 + i32.const 4 + call $~lib/env/abort + unreachable + end + local.get $0 + i32.const 4 + i32.sub + i32.load + local.tee $0 + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 97 + i32.const 11 + call $~lib/env/abort + unreachable + end + local.get $0 + ) + (func $~lib/allocator/tlsf/Root#setJump (; 11 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + local.get $0 + i32.load + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 353 + i32.const 4 + call $~lib/env/abort + unreachable + end + local.get $0 + call $~lib/allocator/tlsf/Block#get:right + local.get $1 + i32.ne + if + i32.const 0 + i32.const 24 + i32.const 354 + i32.const 4 + call $~lib/env/abort + unreachable + end + local.get $1 + i32.load + i32.const 2 + i32.and + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 355 + i32.const 4 + call $~lib/env/abort + unreachable + end + local.get $1 + i32.const 4 + i32.sub + local.get $0 + i32.store + ) + (func $~lib/allocator/tlsf/Root#insert (; 12 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $1 + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 208 + i32.const 4 + call $~lib/env/abort + unreachable + end + local.get $1 + i32.load + local.tee $3 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 210 + i32.const 4 + call $~lib/env/abort + unreachable + end + local.get $1 + i32.load + i32.const -4 + i32.and + local.tee $4 + i32.const 16 + i32.ge_u + local.tee $2 + if + local.get $4 + i32.const 1073741824 + i32.lt_u + local.set $2 + end + local.get $2 + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 212 + i32.const 4 + call $~lib/env/abort + unreachable + end + local.get $1 + call $~lib/allocator/tlsf/Block#get:right + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 216 + i32.const 23 + call $~lib/env/abort + unreachable + end + local.get $2 + i32.load + local.tee $4 + i32.const 1 + i32.and + if + local.get $0 + local.get $2 + call $~lib/allocator/tlsf/Root#remove + local.get $1 + local.get $4 + i32.const -4 + i32.and + i32.const 8 + i32.add + local.get $3 + i32.add + local.tee $3 + i32.store + local.get $1 + call $~lib/allocator/tlsf/Block#get:right + local.tee $2 + i32.load + local.set $4 + end + local.get $3 + i32.const 2 + i32.and + if + local.get $1 + call $~lib/allocator/tlsf/Block#get:left + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 230 + i32.const 24 + call $~lib/env/abort + unreachable + end + local.get $1 + i32.load + local.tee $5 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 232 + i32.const 6 + call $~lib/env/abort + unreachable + end + local.get $0 + local.get $1 + call $~lib/allocator/tlsf/Root#remove + local.get $1 + local.get $3 + i32.const -4 + i32.and + i32.const 8 + i32.add + local.get $5 + i32.add + local.tee $3 + i32.store + end + local.get $2 + local.get $4 + i32.const 2 + i32.or + i32.store + local.get $1 + local.get $2 + call $~lib/allocator/tlsf/Root#setJump + local.get $3 + i32.const -4 + i32.and + local.tee $3 + i32.const 16 + i32.ge_u + local.tee $2 + if + local.get $3 + i32.const 1073741824 + i32.lt_u + local.set $2 + end + local.get $2 + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 245 + i32.const 4 + call $~lib/env/abort + unreachable + end + local.get $0 + local.get $3 + i32.const 256 + i32.lt_u + if (result i32) + local.get $3 + i32.const 8 + i32.div_u + local.set $3 + i32.const 0 + else + local.get $3 + local.get $3 + call $~lib/allocator/tlsf/fls + local.tee $2 + i32.const 5 + i32.sub + i32.shr_u + i32.const 32 + i32.xor + local.set $3 + local.get $2 + i32.const 7 + i32.sub + end + local.tee $2 + local.get $3 + call $~lib/allocator/tlsf/Root#getHead + local.set $4 + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + local.get $4 + i32.store offset=8 + local.get $4 + if + local.get $4 + local.get $1 + i32.store offset=4 + end + local.get $0 + local.get $2 + local.get $3 + local.get $1 + call $~lib/allocator/tlsf/Root#setHead + local.get $0 + local.get $0 + i32.load + i32.const 1 + local.get $2 + i32.shl + i32.or + i32.store + local.get $0 + local.get $2 + local.get $0 + local.get $2 + call $~lib/allocator/tlsf/Root#getSLMap + i32.const 1 + local.get $3 + i32.shl + i32.or + call $~lib/allocator/tlsf/Root#setSLMap + ) + (func $~lib/allocator/tlsf/Root#addMemory (; 13 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local $4 i32) + local.get $1 + local.get $2 + i32.gt_u + if + i32.const 0 + i32.const 24 + i32.const 396 + i32.const 4 + call $~lib/env/abort + unreachable + end + local.get $1 + i32.const 7 + i32.and + if + i32.const 0 + i32.const 24 + i32.const 397 + i32.const 4 + call $~lib/env/abort + unreachable + end + local.get $2 + i32.const 7 + i32.and + if + i32.const 0 + i32.const 24 + i32.const 398 + i32.const 4 + call $~lib/env/abort + unreachable + end + i32.const 2912 + i32.load + local.tee $3 + if + local.get $1 + local.get $3 + i32.const 4 + i32.add + i32.lt_u + if + i32.const 0 + i32.const 24 + i32.const 403 + i32.const 6 + call $~lib/env/abort + unreachable + end + local.get $1 + i32.const 8 + i32.sub + local.get $3 + i32.eq + if + local.get $3 + i32.load + local.set $4 + local.get $1 + i32.const 8 + i32.sub + local.set $1 + end + else + local.get $1 + local.get $0 + i32.const 2916 + i32.add + i32.lt_u + if + i32.const 0 + i32.const 24 + i32.const 412 + i32.const 6 + call $~lib/env/abort + unreachable + end + end + local.get $2 + local.get $1 + i32.sub + local.tee $2 + i32.const 32 + i32.lt_u + if + return + end + local.get $1 + local.get $4 + i32.const 2 + i32.and + local.get $2 + i32.const 16 + i32.sub + i32.const 1 + i32.or + i32.or + i32.store + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.store offset=8 + local.get $1 + local.get $2 + i32.add + i32.const 8 + i32.sub + local.tee $2 + i32.const 2 + i32.store + i32.const 2912 + local.get $2 + i32.store + local.get $0 + local.get $1 + call $~lib/allocator/tlsf/Root#insert + ) + (func $~lib/allocator/tlsf/ffs (; 14 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 441 + i32.const 2 + call $~lib/env/abort + unreachable + end + local.get $0 + i32.ctz + ) + (func $~lib/allocator/tlsf/Root#search (; 15 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + local.get $1 + i32.const 16 + i32.ge_u + local.tee $2 + if + local.get $1 + i32.const 1073741824 + i32.lt_u + local.set $2 + end + local.get $2 + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 315 + i32.const 4 + call $~lib/env/abort + unreachable + end + local.get $1 + i32.const 256 + i32.lt_u + if (result i32) + i32.const 0 + local.set $2 + local.get $1 + i32.const 8 + i32.div_u + else + local.get $1 + call $~lib/allocator/tlsf/fls + local.tee $3 + i32.const 7 + i32.sub + local.set $2 + local.get $1 + local.get $3 + i32.const 5 + i32.sub + i32.shr_u + i32.const 32 + i32.xor + local.tee $1 + i32.const 31 + i32.lt_u + if (result i32) + local.get $1 + i32.const 1 + i32.add + else + local.get $2 + i32.const 1 + i32.add + local.set $2 + i32.const 0 + end + end + local.set $1 + local.get $0 + local.get $2 + call $~lib/allocator/tlsf/Root#getSLMap + i32.const -1 + local.get $1 + i32.shl + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $2 + local.get $1 + call $~lib/allocator/tlsf/ffs + call $~lib/allocator/tlsf/Root#getHead + else + local.get $0 + i32.load + i32.const -1 + local.get $2 + i32.const 1 + i32.add + i32.shl + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + call $~lib/allocator/tlsf/ffs + local.tee $2 + call $~lib/allocator/tlsf/Root#getSLMap + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 342 + i32.const 16 + call $~lib/env/abort + unreachable + end + local.get $0 + local.get $2 + local.get $1 + call $~lib/allocator/tlsf/ffs + call $~lib/allocator/tlsf/Root#getHead + else + i32.const 0 + end + end + ) + (func $~lib/allocator/tlsf/Root#use (; 16 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + (local $4 i32) + local.get $1 + i32.load + local.tee $4 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 367 + i32.const 4 + call $~lib/env/abort + unreachable + end + local.get $2 + i32.const 16 + i32.ge_u + local.tee $3 + if + local.get $2 + i32.const 1073741824 + i32.lt_u + local.set $3 + end + local.get $3 + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 368 + i32.const 4 + call $~lib/env/abort + unreachable + end + local.get $2 + i32.const 7 + i32.and + if + i32.const 0 + i32.const 24 + i32.const 369 + i32.const 4 + call $~lib/env/abort + unreachable + end + local.get $0 + local.get $1 + call $~lib/allocator/tlsf/Root#remove + local.get $4 + i32.const -4 + i32.and + local.get $2 + i32.sub + local.tee $3 + i32.const 24 + i32.ge_u + if + local.get $1 + local.get $4 + i32.const 2 + i32.and + local.get $2 + i32.or + i32.store + local.get $1 + i32.const 8 + i32.add + local.get $2 + i32.add + local.tee $2 + local.get $3 + i32.const 8 + i32.sub + i32.const 1 + i32.or + i32.store + local.get $0 + local.get $2 + call $~lib/allocator/tlsf/Root#insert + else + local.get $1 + local.get $4 + i32.const -2 + i32.and + i32.store + local.get $1 + call $~lib/allocator/tlsf/Block#get:right + local.tee $0 + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 387 + i32.const 25 + call $~lib/env/abort + unreachable + end + local.get $0 + local.get $0 + i32.load + i32.const -3 + i32.and + i32.store + end + local.get $1 + i32.const 8 + i32.add + ) + (func $~lib/allocator/tlsf/__mem_allocate (; 17 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + global.get $~lib/allocator/tlsf/ROOT + local.tee $2 + i32.eqz + if + i32.const 1 + current_memory + local.tee $1 + i32.gt_s + local.tee $2 + if (result i32) + i32.const 1 + local.get $1 + i32.sub + grow_memory + i32.const 0 + i32.lt_s + else + local.get $2 + end + if + unreachable + end + i32.const 120 + local.set $2 + i32.const 120 + global.set $~lib/allocator/tlsf/ROOT + i32.const 2912 + i32.const 0 + i32.store + i32.const 120 + i32.const 0 + i32.store + i32.const 0 + local.set $1 + loop $repeat|0 + local.get $1 + i32.const 22 + i32.lt_u + if + i32.const 120 + local.get $1 + i32.const 0 + call $~lib/allocator/tlsf/Root#setSLMap + i32.const 0 + local.set $3 + loop $repeat|1 + local.get $3 + i32.const 32 + i32.lt_u + if + i32.const 120 + local.get $1 + local.get $3 + i32.const 0 + call $~lib/allocator/tlsf/Root#setHead + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $repeat|1 + end + end + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $repeat|0 + end + end + i32.const 120 + i32.const 3040 + current_memory + i32.const 16 + i32.shl + call $~lib/allocator/tlsf/Root#addMemory + end + local.get $0 + i32.const 1073741824 + i32.gt_u + if + unreachable + end + local.get $2 + local.get $0 + i32.const 7 + i32.add + i32.const -8 + i32.and + local.tee $0 + i32.const 16 + local.get $0 + i32.const 16 + i32.gt_u + select + local.tee $1 + call $~lib/allocator/tlsf/Root#search + local.tee $0 + i32.eqz + if + current_memory + local.tee $0 + local.get $1 + i32.const 65535 + i32.add + i32.const -65536 + i32.and + i32.const 16 + i32.shr_u + local.tee $3 + local.get $0 + local.get $3 + i32.gt_s + select + grow_memory + i32.const 0 + i32.lt_s + if + local.get $3 + grow_memory + i32.const 0 + i32.lt_s + if + unreachable + end + end + local.get $2 + local.get $0 + i32.const 16 + i32.shl + current_memory + i32.const 16 + i32.shl + call $~lib/allocator/tlsf/Root#addMemory + local.get $2 + local.get $1 + call $~lib/allocator/tlsf/Root#search + local.tee $0 + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 502 + i32.const 12 + call $~lib/env/abort + unreachable + end + end + local.get $0 + i32.load + i32.const -4 + i32.and + local.get $1 + i32.lt_u + if + i32.const 0 + i32.const 24 + i32.const 505 + i32.const 2 + call $~lib/env/abort + unreachable + end + local.get $2 + local.get $0 + local.get $1 + call $~lib/allocator/tlsf/Root#use + ) + (func $~lib/runtime/runtime.allocate (; 18 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + i32.const 1 + i32.const 32 + local.get $0 + i32.const 15 + i32.add + i32.clz + i32.sub + i32.shl + call $~lib/allocator/tlsf/__mem_allocate + local.tee $1 + i32.const -1520547049 + i32.store + local.get $1 + local.get $0 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.store offset=8 + local.get $1 + i32.const 0 + i32.store offset=12 + local.get $1 + i32.const 16 + i32.add + ) + (func $~lib/allocator/tlsf/__mem_free (; 19 ;) (type $FUNCSIG$vi) (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + local.get $0 + if + global.get $~lib/allocator/tlsf/ROOT + local.tee $1 + if + local.get $0 + i32.const 8 + i32.sub + local.tee $2 + i32.load + local.tee $3 + i32.const 1 + i32.and + if + i32.const 0 + i32.const 24 + i32.const 518 + i32.const 6 + call $~lib/env/abort + unreachable + end + local.get $2 + local.get $3 + i32.const 1 + i32.or + i32.store + local.get $1 + local.get $0 + i32.const 8 + i32.sub + call $~lib/allocator/tlsf/Root#insert + end + end + ) + (func $~lib/runtime/runtime.discard (; 20 ;) (type $FUNCSIG$vi) (param $0 i32) + local.get $0 + i32.const 120 + i32.le_u + if + i32.const 0 + i32.const 88 + i32.const 68 + i32.const 6 + call $~lib/env/abort + unreachable + end + local.get $0 + i32.const 16 + i32.sub + local.tee $0 + i32.load + i32.const -1520547049 + i32.ne + if + i32.const 0 + i32.const 88 + i32.const 70 + i32.const 6 + call $~lib/env/abort + unreachable + end + local.get $0 + call $~lib/allocator/tlsf/__mem_free + ) + (func $~lib/collector/itcm/maybeInit (; 21 ;) (type $FUNCSIG$v) + (local $0 i32) + global.get $~lib/collector/itcm/state + i32.eqz + if + i32.const 16 + call $~lib/allocator/tlsf/__mem_allocate + global.set $~lib/collector/itcm/fromSpace + global.get $~lib/collector/itcm/fromSpace + local.tee $0 + i32.const -1 + i32.store + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + local.get $0 + i32.store offset=8 + local.get $0 + local.get $0 + i32.store offset=12 + i32.const 16 + call $~lib/allocator/tlsf/__mem_allocate + global.set $~lib/collector/itcm/toSpace + global.get $~lib/collector/itcm/toSpace + local.tee $0 + i32.const -1 + i32.store + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + local.get $0 + i32.store offset=8 + local.get $0 + local.get $0 + i32.store offset=12 + global.get $~lib/collector/itcm/toSpace + global.set $~lib/collector/itcm/iter + i32.const 1 + global.set $~lib/collector/itcm/state + end + ) + (func $~lib/collector/itcm/ManagedObjectList#push (; 22 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $0 + i32.load offset=12 + local.set $2 + local.get $1 + local.get $1 + i32.load offset=8 + i32.const 3 + i32.and + local.get $0 + i32.or + i32.store offset=8 + local.get $1 + local.get $2 + i32.store offset=12 + local.get $2 + local.get $2 + i32.load offset=8 + i32.const 3 + i32.and + local.get $1 + i32.or + i32.store offset=8 + local.get $0 + local.get $1 + i32.store offset=12 + ) + (func $~lib/collector/itcm/__ref_register (; 23 ;) (type $FUNCSIG$vi) (param $0 i32) + call $~lib/collector/itcm/maybeInit + local.get $0 + i32.const 16 + i32.sub + local.tee $0 + global.get $~lib/collector/itcm/white + local.get $0 + i32.load offset=8 + i32.const -4 + i32.and + i32.or + i32.store offset=8 + global.get $~lib/collector/itcm/fromSpace + local.get $0 + call $~lib/collector/itcm/ManagedObjectList#push + ) + (func $~lib/runtime/runtime.register (; 24 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $0 + i32.const 120 + i32.le_u + if + i32.const 0 + i32.const 88 + i32.const 82 + i32.const 6 + call $~lib/env/abort + unreachable + end + local.get $0 + i32.const 16 + i32.sub + local.tee $2 + i32.load + i32.const -1520547049 + i32.ne + if + i32.const 0 + i32.const 88 + i32.const 84 + i32.const 6 + call $~lib/env/abort + unreachable + end + local.get $2 + local.get $1 + i32.store + block + local.get $0 + call $~lib/collector/itcm/__ref_register + end + local.get $0 + ) + (func $~lib/runtime/runtime.newString (; 25 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + i32.const 1 + i32.shl + call $~lib/runtime/runtime.allocate + i32.const 1 + call $~lib/runtime/runtime.register + ) + (func $~lib/runtime/runtime.newArrayBuffer (; 26 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + call $~lib/runtime/runtime.allocate + i32.const 2 + call $~lib/runtime/runtime.register + ) + (func $~lib/collector/itcm/ManagedObject#makeGray (; 27 ;) (type $FUNCSIG$vi) (param $0 i32) + (local $1 i32) + (local $2 i32) + global.get $~lib/collector/itcm/iter + local.get $0 + i32.eq + if + local.get $0 + i32.load offset=12 + global.set $~lib/collector/itcm/iter + end + local.get $0 + i32.load offset=8 + i32.const -4 + i32.and + local.tee $2 + local.get $0 + i32.load offset=12 + local.tee $1 + i32.store offset=12 + local.get $1 + local.get $1 + i32.load offset=8 + i32.const 3 + i32.and + local.get $2 + i32.or + i32.store offset=8 + global.get $~lib/collector/itcm/toSpace + local.get $0 + call $~lib/collector/itcm/ManagedObjectList#push + local.get $0 + local.get $0 + i32.load offset=8 + i32.const -4 + i32.and + i32.const 2 + i32.or + i32.store offset=8 + ) + (func $~lib/collector/itcm/__ref_link (; 28 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (local $2 i32) + call $~lib/collector/itcm/maybeInit + global.get $~lib/collector/itcm/white + i32.eqz + local.get $1 + i32.const 16 + i32.sub + local.tee $2 + i32.load offset=8 + i32.const 3 + i32.and + i32.eq + local.tee $1 + if (result i32) + global.get $~lib/collector/itcm/white + local.get $0 + i32.const 16 + i32.sub + i32.load offset=8 + i32.const 3 + i32.and + i32.eq + else + local.get $1 + end + if + local.get $2 + call $~lib/collector/itcm/ManagedObject#makeGray + end + ) + (func $~lib/memory/memory.copy (; 29 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local $4 i32) + block $~lib/util/memory/memmove|inlined.0 + local.get $0 + local.get $1 + i32.eq + br_if $~lib/util/memory/memmove|inlined.0 + 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 + loop $continue|0 + local.get $0 + i32.const 7 + i32.and + if + local.get $2 + i32.eqz + br_if $~lib/util/memory/memmove|inlined.0 + local.get $2 + i32.const 1 + i32.sub + local.set $2 + local.get $0 + local.tee $3 + i32.const 1 + i32.add + local.set $0 + local.get $1 + local.tee $4 + i32.const 1 + i32.add + local.set $1 + local.get $3 + local.get $4 + i32.load8_u + i32.store8 + br $continue|0 + end + end + loop $continue|1 + local.get $2 + i32.const 8 + i32.ge_u + if + 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 + br $continue|1 + end + end + end + loop $continue|2 + local.get $2 + if + local.get $0 + local.tee $3 + i32.const 1 + i32.add + local.set $0 + local.get $1 + local.tee $4 + i32.const 1 + i32.add + local.set $1 + local.get $3 + local.get $4 + i32.load8_u + i32.store8 + local.get $2 + i32.const 1 + i32.sub + local.set $2 + br $continue|2 + end + end + else + local.get $1 + i32.const 7 + i32.and + local.get $0 + i32.const 7 + i32.and + i32.eq + if + loop $continue|3 + local.get $0 + local.get $2 + i32.add + i32.const 7 + i32.and + if + local.get $2 + i32.eqz + br_if $~lib/util/memory/memmove|inlined.0 + local.get $2 + i32.const 1 + i32.sub + local.tee $2 + local.get $0 + i32.add + local.get $1 + local.get $2 + i32.add + i32.load8_u + i32.store8 + br $continue|3 + end + end + loop $continue|4 + local.get $2 + i32.const 8 + i32.ge_u + if + local.get $2 + i32.const 8 + i32.sub + local.tee $2 + local.get $0 + i32.add + local.get $1 + local.get $2 + i32.add + i64.load + i64.store + br $continue|4 + end + end + end + loop $continue|5 + local.get $2 + if + local.get $2 + i32.const 1 + i32.sub + local.tee $2 + local.get $0 + i32.add + local.get $1 + local.get $2 + i32.add + i32.load8_u + i32.store8 + br $continue|5 + end + end + end + end + ) + (func $~lib/runtime/runtime.newArray (; 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) + i32.const 16 + call $~lib/runtime/runtime.allocate + local.get $2 + call $~lib/runtime/runtime.register + local.tee $2 + local.set $6 + local.get $0 + local.get $1 + i32.shl + local.tee $4 + call $~lib/runtime/runtime.allocate + i32.const 2 + call $~lib/runtime/runtime.register + local.tee $5 + local.tee $1 + local.get $2 + i32.load + i32.ne + if + local.get $1 + local.get $6 + call $~lib/collector/itcm/__ref_link + end + local.get $2 + local.get $1 + i32.store + local.get $2 + local.get $5 + i32.store offset=4 + local.get $2 + local.get $4 + i32.store offset=8 + local.get $2 + local.get $0 + i32.store offset=12 + local.get $3 + if + local.get $5 + local.get $3 + local.get $4 + call $~lib/memory/memory.copy + end + local.get $2 + ) + (func $~lib/runtime/runtime.retain (; 31 ;) (type $FUNCSIG$vi) (param $0 i32) + local.get $0 + global.get $~lib/runtime/ROOT + call $~lib/collector/itcm/__ref_link + ) + (func $~lib/runtime/runtime.release (; 32 ;) (type $FUNCSIG$vi) (param $0 i32) nop ) + (func $~lib/collector/itcm/step (; 33 ;) (type $FUNCSIG$v) + (local $0 i32) + block $break|0 + block $case3|0 + block $case2|0 + block $case1|0 + global.get $~lib/collector/itcm/state + local.tee $0 + if + local.get $0 + i32.const 1 + i32.sub + br_table $case1|0 $case2|0 $case3|0 $break|0 + end + unreachable + end + call $~lib/runtime/__gc_mark_roots + i32.const 2 + global.set $~lib/collector/itcm/state + br $break|0 + end + global.get $~lib/collector/itcm/iter + i32.load offset=8 + i32.const -4 + i32.and + local.tee $0 + global.get $~lib/collector/itcm/toSpace + i32.ne + if + local.get $0 + global.set $~lib/collector/itcm/iter + local.get $0 + global.get $~lib/collector/itcm/white + i32.eqz + local.get $0 + i32.load offset=8 + i32.const -4 + i32.and + i32.or + i32.store offset=8 + block $__inlined_func$~lib/runtime/__gc_mark_members + block $invalid + local.get $0 + i32.load + i32.const 1 + i32.sub + br_table $__inlined_func$~lib/runtime/__gc_mark_members $__inlined_func$~lib/runtime/__gc_mark_members $__inlined_func$~lib/runtime/__gc_mark_members $invalid + end + unreachable + end + else + call $~lib/runtime/__gc_mark_roots + global.get $~lib/collector/itcm/toSpace + global.get $~lib/collector/itcm/iter + i32.load offset=8 + i32.const -4 + i32.and + i32.eq + if + global.get $~lib/collector/itcm/fromSpace + local.set $0 + global.get $~lib/collector/itcm/toSpace + global.set $~lib/collector/itcm/fromSpace + local.get $0 + global.set $~lib/collector/itcm/toSpace + global.get $~lib/collector/itcm/white + i32.eqz + global.set $~lib/collector/itcm/white + local.get $0 + i32.load offset=8 + i32.const -4 + i32.and + global.set $~lib/collector/itcm/iter + i32.const 3 + global.set $~lib/collector/itcm/state + end + end + br $break|0 + end + global.get $~lib/collector/itcm/iter + local.tee $0 + global.get $~lib/collector/itcm/toSpace + i32.ne + if + local.get $0 + i32.load offset=8 + i32.const -4 + i32.and + global.set $~lib/collector/itcm/iter + local.get $0 + i32.const 120 + i32.ge_u + if + local.get $0 + call $~lib/allocator/tlsf/__mem_free + end + else + global.get $~lib/collector/itcm/toSpace + local.tee $0 + local.get $0 + i32.store offset=8 + local.get $0 + local.get $0 + i32.store offset=12 + i32.const 1 + global.set $~lib/collector/itcm/state + end + end + ) + (func $~lib/collector/itcm/__ref_collect (; 34 ;) (type $FUNCSIG$v) + call $~lib/collector/itcm/maybeInit + loop $continue|0 + global.get $~lib/collector/itcm/state + i32.const 1 + i32.ne + if + call $~lib/collector/itcm/step + br $continue|0 + end + end + loop $continue|1 + call $~lib/collector/itcm/step + global.get $~lib/collector/itcm/state + i32.const 1 + i32.ne + br_if $continue|1 + end + ) + (func $~lib/runtime/runtime.collect (; 35 ;) (type $FUNCSIG$v) + call $~lib/collector/itcm/__ref_collect + ) + (func $start (; 36 ;) (type $FUNCSIG$v) + i32.const 0 + call $~lib/runtime/runtime.allocate + i32.const 3 + call $~lib/runtime/runtime.register + global.set $~lib/runtime/ROOT + ) + (func $~lib/runtime/__gc_mark_roots (; 37 ;) (type $FUNCSIG$v) + (local $0 i32) + global.get $~lib/runtime/ROOT + local.tee $0 + if + call $~lib/collector/itcm/maybeInit + global.get $~lib/collector/itcm/white + local.get $0 + i32.const 16 + i32.sub + local.tee $0 + i32.load offset=8 + i32.const 3 + i32.and + i32.eq + if + local.get $0 + call $~lib/collector/itcm/ManagedObject#makeGray + end + end + ) + (func $~lib/runtime/__runtime_instanceof (; 38 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + block $nope + block $~lib/runtime/Root + block $~lib/arraybuffer/ArrayBuffer + block $~lib/string/String + local.get $0 + i32.const 1 + i32.sub + br_table $~lib/string/String $~lib/arraybuffer/ArrayBuffer $~lib/runtime/Root $nope + end + local.get $1 + i32.const 1 + i32.eq + return + end + local.get $1 + i32.const 2 + i32.eq + return + end + local.get $1 + i32.const 3 + i32.eq + return + end + i32.const 0 + ) + (func $null (; 39 ;) (type $FUNCSIG$v) + nop + ) + (func $~lib/runtime/runtime.newArray|trampoline (; 40 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + block $1of1 + block $0of1 + block $outOfRange + global.get $~lib/argc + i32.const 3 + i32.sub + br_table $0of1 $1of1 $outOfRange + end + unreachable + end + i32.const 0 + local.set $3 + end + local.get $0 + local.get $1 + local.get $2 + local.get $3 + call $~lib/runtime/runtime.newArray + ) + (func $~lib/setargc (; 41 ;) (type $FUNCSIG$vi) (param $0 i32) + local.get $0 + global.set $~lib/argc + ) ) diff --git a/tests/compiler/class-extends.untouched.wat b/tests/compiler/class-extends.untouched.wat index 98594ca2..0d1aacb4 100644 --- a/tests/compiler/class-extends.untouched.wat +++ b/tests/compiler/class-extends.untouched.wat @@ -1,16 +1,65 @@ (module (type $FUNCSIG$vi (func (param i32))) + (type $FUNCSIG$iii (func (param i32 i32) (result i32))) + (type $FUNCSIG$ii (func (param i32) (result i32))) + (type $FUNCSIG$vii (func (param i32 i32))) + (type $FUNCSIG$viii (func (param i32 i32 i32))) + (type $FUNCSIG$viiii (func (param i32 i32 i32 i32))) + (type $FUNCSIG$iiii (func (param i32 i32 i32) (result i32))) (type $FUNCSIG$v (func)) - (memory $0 0) + (type $FUNCSIG$iiiii (func (param i32 i32 i32 i32) (result i32))) + (import "env" "abort" (func $~lib/env/abort (param i32 i32 i32 i32))) + (memory $0 1) + (data (i32.const 8) "\01\00\00\00,\00\00\00\00\00\00\00\00\00\00\00~\00l\00i\00b\00/\00a\00l\00l\00o\00c\00a\00t\00o\00r\00/\00t\00l\00s\00f\00.\00t\00s\00") + (data (i32.const 72) "\01\00\00\00\1e\00\00\00\00\00\00\00\00\00\00\00~\00l\00i\00b\00/\00r\00u\00n\00t\00i\00m\00e\00.\00t\00s\00") (table $0 1 funcref) (elem (i32.const 0) $null) - (global $~lib/memory/HEAP_BASE i32 (i32.const 8)) + (global $~lib/util/runtime/HEADER_SIZE i32 (i32.const 16)) + (global $~lib/allocator/tlsf/ROOT (mut i32) (i32.const 0)) + (global $~lib/allocator/tlsf/Root.SL_START i32 (i32.const 4)) + (global $~lib/allocator/tlsf/SL_BITS i32 (i32.const 5)) + (global $~lib/allocator/tlsf/SB_BITS i32 (i32.const 8)) + (global $~lib/allocator/tlsf/FL_BITS i32 (i32.const 22)) + (global $~lib/allocator/tlsf/Root.SL_END i32 (i32.const 92)) + (global $~lib/allocator/tlsf/Root.HL_START i32 (i32.const 96)) + (global $~lib/allocator/tlsf/SL_SIZE i32 (i32.const 32)) + (global $~lib/allocator/tlsf/Root.HL_END i32 (i32.const 2912)) + (global $~lib/allocator/tlsf/Root.SIZE i32 (i32.const 2916)) + (global $~lib/allocator/tlsf/Block.INFO i32 (i32.const 8)) + (global $~lib/allocator/tlsf/Block.MIN_SIZE i32 (i32.const 16)) + (global $~lib/allocator/tlsf/FREE i32 (i32.const 1)) + (global $~lib/allocator/tlsf/LEFT_FREE i32 (i32.const 2)) + (global $~lib/allocator/tlsf/TAGS i32 (i32.const 3)) + (global $~lib/allocator/tlsf/Block.MAX_SIZE i32 (i32.const 1073741824)) + (global $~lib/allocator/tlsf/SB_SIZE i32 (i32.const 256)) + (global $~lib/util/runtime/HEADER_MAGIC i32 (i32.const -1520547049)) + (global $~lib/ASC_NO_ASSERT i32 (i32.const 0)) + (global $~lib/collector/itcm/state (mut i32) (i32.const 0)) + (global $~lib/collector/itcm/fromSpace (mut i32) (i32.const 0)) + (global $~lib/collector/itcm/toSpace (mut i32) (i32.const 0)) + (global $~lib/collector/itcm/iter (mut i32) (i32.const 0)) + (global $~lib/collector/itcm/white (mut i32) (i32.const 0)) + (global $~lib/runtime/ROOT (mut i32) (i32.const 0)) + (global $~lib/memory/HEAP_BASE i32 (i32.const 120)) + (global $~lib/argc (mut i32) (i32.const 0)) (global $~lib/capabilities i32 (i32.const 2)) (export "memory" (memory $0)) (export "table" (table $0)) (export "test" (func $class-extends/test)) + (export "runtime.instanceof" (func $~lib/runtime/runtime.instanceof)) + (export "runtime.allocate" (func $~lib/runtime/runtime.allocate)) + (export "runtime.discard" (func $~lib/runtime/runtime.discard)) + (export "runtime.register" (func $~lib/runtime/runtime.register)) + (export "runtime.newString" (func $~lib/runtime/runtime.newString)) + (export "runtime.newArrayBuffer" (func $~lib/runtime/runtime.newArrayBuffer)) + (export ".setargc" (func $~lib/setargc)) + (export "runtime.newArray" (func $~lib/runtime/runtime.newArray|trampoline)) + (export "runtime.retain" (func $~lib/runtime/runtime.retain)) + (export "runtime.release" (func $~lib/runtime/runtime.release)) + (export "runtime.collect" (func $~lib/runtime/runtime.collect)) (export ".capabilities" (global $~lib/capabilities)) - (func $class-extends/test (; 0 ;) (type $FUNCSIG$vi) (param $0 i32) + (start $start) + (func $class-extends/test (; 1 ;) (type $FUNCSIG$vi) (param $0 i32) local.get $0 i32.load drop @@ -24,6 +73,2282 @@ i32.const 3 i32.store16 offset=4 ) - (func $null (; 1 ;) (type $FUNCSIG$v) + (func $~lib/runtime/runtime.instanceof (; 2 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + local.get $0 + if (result i32) + local.get $0 + global.get $~lib/util/runtime/HEADER_SIZE + i32.sub + i32.load + local.get $1 + call $~lib/runtime/__runtime_instanceof + else + i32.const 0 + end + ) + (func $~lib/util/runtime/adjust (; 3 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + i32.const 1 + i32.const 32 + local.get $0 + global.get $~lib/util/runtime/HEADER_SIZE + i32.add + i32.const 1 + i32.sub + i32.clz + i32.sub + i32.shl + ) + (func $~lib/allocator/tlsf/Root#set:tailRef (; 4 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + i32.const 0 + local.get $1 + i32.store offset=2912 + ) + (func $~lib/allocator/tlsf/Root#setSLMap (; 5 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + local.get $1 + global.get $~lib/allocator/tlsf/FL_BITS + i32.lt_u + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 159 + i32.const 4 + call $~lib/env/abort + unreachable + end + local.get $0 + local.get $1 + i32.const 4 + i32.mul + i32.add + local.get $2 + i32.store offset=4 + ) + (func $~lib/allocator/tlsf/Root#setHead (; 6 ;) (type $FUNCSIG$viiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) + local.get $1 + global.get $~lib/allocator/tlsf/FL_BITS + i32.lt_u + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 184 + i32.const 4 + call $~lib/env/abort + unreachable + end + local.get $2 + global.get $~lib/allocator/tlsf/SL_SIZE + i32.lt_u + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 185 + i32.const 4 + call $~lib/env/abort + unreachable + end + local.get $0 + local.get $1 + global.get $~lib/allocator/tlsf/SL_SIZE + i32.mul + local.get $2 + i32.add + i32.const 4 + i32.mul + i32.add + local.get $3 + i32.store offset=96 + ) + (func $~lib/allocator/tlsf/Root#get:tailRef (; 7 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + i32.const 0 + i32.load offset=2912 + ) + (func $~lib/allocator/tlsf/Block#get:right (; 8 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + local.get $0 + i32.load + global.get $~lib/allocator/tlsf/TAGS + i32.const -1 + i32.xor + i32.and + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 104 + i32.const 4 + call $~lib/env/abort + unreachable + end + local.get $0 + global.get $~lib/allocator/tlsf/Block.INFO + i32.add + local.get $0 + i32.load + global.get $~lib/allocator/tlsf/TAGS + i32.const -1 + i32.xor + i32.and + i32.add + local.tee $1 + i32.eqz + if (result i32) + i32.const 0 + i32.const 24 + i32.const 105 + i32.const 11 + call $~lib/env/abort + unreachable + else + local.get $1 + end + ) + (func $~lib/allocator/tlsf/fls (; 9 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + i32.const 0 + i32.ne + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 447 + i32.const 2 + call $~lib/env/abort + unreachable + end + i32.const 31 + local.get $0 + i32.clz + i32.sub + ) + (func $~lib/allocator/tlsf/Root#getHead (; 10 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + local.get $1 + global.get $~lib/allocator/tlsf/FL_BITS + i32.lt_u + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 175 + i32.const 4 + call $~lib/env/abort + unreachable + end + local.get $2 + global.get $~lib/allocator/tlsf/SL_SIZE + i32.lt_u + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 176 + i32.const 4 + call $~lib/env/abort + unreachable + end + local.get $0 + local.get $1 + global.get $~lib/allocator/tlsf/SL_SIZE + i32.mul + local.get $2 + i32.add + i32.const 4 + i32.mul + i32.add + i32.load offset=96 + ) + (func $~lib/allocator/tlsf/Root#getSLMap (; 11 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + local.get $1 + global.get $~lib/allocator/tlsf/FL_BITS + i32.lt_u + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 153 + i32.const 4 + call $~lib/env/abort + unreachable + end + local.get $0 + local.get $1 + i32.const 4 + i32.mul + i32.add + i32.load offset=4 + ) + (func $~lib/allocator/tlsf/Root#remove (; 12 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + local.get $1 + i32.load + local.set $2 + local.get $2 + global.get $~lib/allocator/tlsf/FREE + i32.and + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 277 + i32.const 4 + call $~lib/env/abort + unreachable + end + local.get $2 + global.get $~lib/allocator/tlsf/TAGS + i32.const -1 + i32.xor + i32.and + local.set $3 + local.get $3 + global.get $~lib/allocator/tlsf/Block.MIN_SIZE + i32.ge_u + local.tee $4 + if (result i32) + local.get $3 + global.get $~lib/allocator/tlsf/Block.MAX_SIZE + i32.lt_u + else + local.get $4 + end + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 279 + i32.const 4 + call $~lib/env/abort + unreachable + end + local.get $3 + global.get $~lib/allocator/tlsf/SB_SIZE + i32.lt_u + if + i32.const 0 + local.set $5 + local.get $3 + i32.const 8 + i32.div_u + local.set $6 + else + local.get $3 + call $~lib/allocator/tlsf/fls + local.set $5 + local.get $3 + local.get $5 + global.get $~lib/allocator/tlsf/SL_BITS + i32.sub + i32.shr_u + i32.const 1 + global.get $~lib/allocator/tlsf/SL_BITS + i32.shl + i32.xor + local.set $6 + local.get $5 + global.get $~lib/allocator/tlsf/SB_BITS + i32.const 1 + i32.sub + i32.sub + local.set $5 + end + local.get $1 + i32.load offset=4 + local.set $7 + local.get $1 + i32.load offset=8 + local.set $8 + local.get $7 + if + local.get $7 + local.get $8 + i32.store offset=8 + end + local.get $8 + if + local.get $8 + local.get $7 + i32.store offset=4 + end + local.get $1 + local.get $0 + local.get $5 + local.get $6 + call $~lib/allocator/tlsf/Root#getHead + i32.eq + if + local.get $0 + local.get $5 + local.get $6 + local.get $8 + call $~lib/allocator/tlsf/Root#setHead + local.get $8 + i32.eqz + if + local.get $0 + local.get $5 + call $~lib/allocator/tlsf/Root#getSLMap + local.set $4 + local.get $0 + local.get $5 + local.get $4 + i32.const 1 + local.get $6 + i32.shl + i32.const -1 + i32.xor + i32.and + local.tee $4 + call $~lib/allocator/tlsf/Root#setSLMap + local.get $4 + i32.eqz + if + local.get $0 + local.get $0 + i32.load + i32.const 1 + local.get $5 + i32.shl + i32.const -1 + i32.xor + i32.and + i32.store + end + end + end + ) + (func $~lib/allocator/tlsf/Block#get:left (; 13 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + local.get $0 + i32.load + global.get $~lib/allocator/tlsf/LEFT_FREE + i32.and + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 96 + i32.const 4 + call $~lib/env/abort + unreachable + end + local.get $0 + i32.const 4 + i32.sub + i32.load + local.tee $1 + i32.eqz + if (result i32) + i32.const 0 + i32.const 24 + i32.const 97 + i32.const 11 + call $~lib/env/abort + unreachable + else + local.get $1 + end + ) + (func $~lib/allocator/tlsf/Root#setJump (; 14 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + local.get $1 + i32.load + global.get $~lib/allocator/tlsf/FREE + i32.and + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 353 + i32.const 4 + call $~lib/env/abort + unreachable + end + local.get $1 + call $~lib/allocator/tlsf/Block#get:right + local.get $2 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 354 + i32.const 4 + call $~lib/env/abort + unreachable + end + local.get $2 + i32.load + global.get $~lib/allocator/tlsf/LEFT_FREE + i32.and + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 355 + i32.const 4 + call $~lib/env/abort + unreachable + end + local.get $2 + i32.const 4 + i32.sub + local.get $1 + i32.store + ) + (func $~lib/allocator/tlsf/Root#insert (; 15 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + (local $10 i32) + local.get $1 + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 208 + i32.const 4 + call $~lib/env/abort + unreachable + end + local.get $1 + i32.load + local.set $2 + local.get $2 + global.get $~lib/allocator/tlsf/FREE + i32.and + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 210 + i32.const 4 + call $~lib/env/abort + unreachable + end + local.get $1 + i32.load + global.get $~lib/allocator/tlsf/TAGS + i32.const -1 + i32.xor + i32.and + local.tee $3 + global.get $~lib/allocator/tlsf/Block.MIN_SIZE + i32.ge_u + local.tee $4 + if (result i32) + local.get $3 + global.get $~lib/allocator/tlsf/Block.MAX_SIZE + i32.lt_u + else + local.get $4 + end + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 212 + i32.const 4 + call $~lib/env/abort + unreachable + end + local.get $1 + call $~lib/allocator/tlsf/Block#get:right + local.tee $4 + i32.eqz + if (result i32) + i32.const 0 + i32.const 24 + i32.const 216 + i32.const 23 + call $~lib/env/abort + unreachable + else + local.get $4 + end + local.set $5 + local.get $5 + i32.load + local.set $6 + local.get $6 + global.get $~lib/allocator/tlsf/FREE + i32.and + if + local.get $0 + local.get $5 + call $~lib/allocator/tlsf/Root#remove + local.get $1 + local.get $2 + global.get $~lib/allocator/tlsf/Block.INFO + local.get $6 + global.get $~lib/allocator/tlsf/TAGS + i32.const -1 + i32.xor + i32.and + i32.add + i32.add + local.tee $2 + i32.store + local.get $1 + call $~lib/allocator/tlsf/Block#get:right + local.set $5 + local.get $5 + i32.load + local.set $6 + end + local.get $2 + global.get $~lib/allocator/tlsf/LEFT_FREE + i32.and + if + local.get $1 + call $~lib/allocator/tlsf/Block#get:left + local.tee $4 + i32.eqz + if (result i32) + i32.const 0 + i32.const 24 + i32.const 230 + i32.const 24 + call $~lib/env/abort + unreachable + else + local.get $4 + end + local.set $4 + local.get $4 + i32.load + local.set $7 + local.get $7 + global.get $~lib/allocator/tlsf/FREE + i32.and + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 232 + i32.const 6 + call $~lib/env/abort + unreachable + end + local.get $0 + local.get $4 + call $~lib/allocator/tlsf/Root#remove + local.get $4 + local.get $7 + global.get $~lib/allocator/tlsf/Block.INFO + local.get $2 + global.get $~lib/allocator/tlsf/TAGS + i32.const -1 + i32.xor + i32.and + i32.add + i32.add + local.tee $7 + i32.store + local.get $4 + local.set $1 + local.get $7 + local.set $2 + end + local.get $5 + local.get $6 + global.get $~lib/allocator/tlsf/LEFT_FREE + i32.or + i32.store + local.get $0 + local.get $1 + local.get $5 + call $~lib/allocator/tlsf/Root#setJump + local.get $2 + global.get $~lib/allocator/tlsf/TAGS + i32.const -1 + i32.xor + i32.and + local.set $3 + local.get $3 + global.get $~lib/allocator/tlsf/Block.MIN_SIZE + i32.ge_u + local.tee $7 + if (result i32) + local.get $3 + global.get $~lib/allocator/tlsf/Block.MAX_SIZE + i32.lt_u + else + local.get $7 + end + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 245 + i32.const 4 + call $~lib/env/abort + unreachable + end + local.get $3 + global.get $~lib/allocator/tlsf/SB_SIZE + i32.lt_u + if + i32.const 0 + local.set $8 + local.get $3 + i32.const 8 + i32.div_u + local.set $9 + else + local.get $3 + call $~lib/allocator/tlsf/fls + local.set $8 + local.get $3 + local.get $8 + global.get $~lib/allocator/tlsf/SL_BITS + i32.sub + i32.shr_u + i32.const 1 + global.get $~lib/allocator/tlsf/SL_BITS + i32.shl + i32.xor + local.set $9 + local.get $8 + global.get $~lib/allocator/tlsf/SB_BITS + i32.const 1 + i32.sub + i32.sub + local.set $8 + end + local.get $0 + local.get $8 + local.get $9 + call $~lib/allocator/tlsf/Root#getHead + local.set $10 + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + local.get $10 + i32.store offset=8 + local.get $10 + if + local.get $10 + local.get $1 + i32.store offset=4 + end + local.get $0 + local.get $8 + local.get $9 + local.get $1 + call $~lib/allocator/tlsf/Root#setHead + local.get $0 + local.get $0 + i32.load + i32.const 1 + local.get $8 + i32.shl + i32.or + i32.store + local.get $0 + local.get $8 + local.get $0 + local.get $8 + call $~lib/allocator/tlsf/Root#getSLMap + i32.const 1 + local.get $9 + i32.shl + i32.or + call $~lib/allocator/tlsf/Root#setSLMap + ) + (func $~lib/allocator/tlsf/Root#addMemory (; 16 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + local.get $1 + local.get $2 + i32.le_u + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 396 + i32.const 4 + call $~lib/env/abort + unreachable + end + local.get $1 + i32.const 7 + i32.and + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 397 + i32.const 4 + call $~lib/env/abort + unreachable + end + local.get $2 + i32.const 7 + i32.and + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 398 + i32.const 4 + call $~lib/env/abort + unreachable + end + local.get $0 + call $~lib/allocator/tlsf/Root#get:tailRef + local.set $3 + i32.const 0 + local.set $4 + local.get $3 + if + local.get $1 + local.get $3 + i32.const 4 + i32.add + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 403 + i32.const 6 + call $~lib/env/abort + unreachable + end + local.get $1 + global.get $~lib/allocator/tlsf/Block.INFO + i32.sub + local.get $3 + i32.eq + if + local.get $1 + global.get $~lib/allocator/tlsf/Block.INFO + i32.sub + local.set $1 + local.get $3 + i32.load + local.set $4 + end + else + local.get $1 + local.get $0 + global.get $~lib/allocator/tlsf/Root.SIZE + i32.add + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 412 + i32.const 6 + call $~lib/env/abort + unreachable + end + end + local.get $2 + local.get $1 + i32.sub + local.set $5 + local.get $5 + global.get $~lib/allocator/tlsf/Block.INFO + global.get $~lib/allocator/tlsf/Block.MIN_SIZE + i32.add + global.get $~lib/allocator/tlsf/Block.INFO + i32.add + i32.lt_u + if + i32.const 0 + return + end + local.get $5 + i32.const 2 + global.get $~lib/allocator/tlsf/Block.INFO + i32.mul + i32.sub + local.set $6 + local.get $1 + local.set $7 + local.get $7 + local.get $6 + global.get $~lib/allocator/tlsf/FREE + i32.or + local.get $4 + global.get $~lib/allocator/tlsf/LEFT_FREE + i32.and + i32.or + i32.store + local.get $7 + i32.const 0 + i32.store offset=4 + local.get $7 + i32.const 0 + i32.store offset=8 + local.get $1 + local.get $5 + i32.add + global.get $~lib/allocator/tlsf/Block.INFO + i32.sub + local.set $8 + local.get $8 + i32.const 0 + global.get $~lib/allocator/tlsf/LEFT_FREE + i32.or + i32.store + local.get $0 + local.get $8 + call $~lib/allocator/tlsf/Root#set:tailRef + local.get $0 + local.get $7 + call $~lib/allocator/tlsf/Root#insert + i32.const 1 + ) + (func $~lib/allocator/tlsf/ffs (; 17 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + i32.const 0 + i32.ne + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 441 + i32.const 2 + call $~lib/env/abort + unreachable + end + local.get $0 + i32.ctz + ) + (func $~lib/allocator/tlsf/ffs (; 18 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + i32.const 0 + i32.ne + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 441 + i32.const 2 + call $~lib/env/abort + unreachable + end + local.get $0 + i32.ctz + ) + (func $~lib/allocator/tlsf/Root#search (; 19 ;) (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) + (local $7 i32) + local.get $1 + global.get $~lib/allocator/tlsf/Block.MIN_SIZE + i32.ge_u + local.tee $2 + if (result i32) + local.get $1 + global.get $~lib/allocator/tlsf/Block.MAX_SIZE + i32.lt_u + else + local.get $2 + end + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 315 + i32.const 4 + call $~lib/env/abort + unreachable + end + local.get $1 + global.get $~lib/allocator/tlsf/SB_SIZE + i32.lt_u + if + i32.const 0 + local.set $3 + local.get $1 + i32.const 8 + i32.div_u + local.set $4 + else + local.get $1 + call $~lib/allocator/tlsf/fls + local.set $3 + local.get $1 + local.get $3 + global.get $~lib/allocator/tlsf/SL_BITS + i32.sub + i32.shr_u + i32.const 1 + global.get $~lib/allocator/tlsf/SL_BITS + i32.shl + i32.xor + local.set $4 + local.get $3 + global.get $~lib/allocator/tlsf/SB_BITS + i32.const 1 + i32.sub + i32.sub + local.set $3 + local.get $4 + global.get $~lib/allocator/tlsf/SL_SIZE + i32.const 1 + i32.sub + i32.lt_u + if + local.get $4 + i32.const 1 + i32.add + local.set $4 + else + local.get $3 + i32.const 1 + i32.add + local.set $3 + i32.const 0 + local.set $4 + end + end + local.get $0 + local.get $3 + call $~lib/allocator/tlsf/Root#getSLMap + i32.const 0 + i32.const -1 + i32.xor + local.get $4 + i32.shl + i32.and + local.set $5 + local.get $5 + i32.eqz + if + local.get $0 + i32.load + i32.const 0 + i32.const -1 + i32.xor + local.get $3 + i32.const 1 + i32.add + i32.shl + i32.and + local.set $2 + local.get $2 + i32.eqz + if + i32.const 0 + local.set $6 + else + local.get $2 + call $~lib/allocator/tlsf/ffs + local.set $3 + local.get $0 + local.get $3 + call $~lib/allocator/tlsf/Root#getSLMap + local.tee $7 + if (result i32) + local.get $7 + else + i32.const 0 + i32.const 24 + i32.const 342 + i32.const 16 + call $~lib/env/abort + unreachable + end + local.set $5 + local.get $0 + local.get $3 + local.get $5 + call $~lib/allocator/tlsf/ffs + call $~lib/allocator/tlsf/Root#getHead + local.set $6 + end + else + local.get $0 + local.get $3 + local.get $5 + call $~lib/allocator/tlsf/ffs + call $~lib/allocator/tlsf/Root#getHead + local.set $6 + end + local.get $6 + ) + (func $~lib/allocator/tlsf/Root#use (; 20 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $1 + i32.load + local.set $3 + local.get $3 + global.get $~lib/allocator/tlsf/FREE + i32.and + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 367 + i32.const 4 + call $~lib/env/abort + unreachable + end + local.get $2 + global.get $~lib/allocator/tlsf/Block.MIN_SIZE + i32.ge_u + local.tee $4 + if (result i32) + local.get $2 + global.get $~lib/allocator/tlsf/Block.MAX_SIZE + i32.lt_u + else + local.get $4 + end + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 368 + i32.const 4 + call $~lib/env/abort + unreachable + end + local.get $2 + i32.const 7 + i32.and + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 369 + i32.const 4 + call $~lib/env/abort + unreachable + end + local.get $0 + local.get $1 + call $~lib/allocator/tlsf/Root#remove + local.get $3 + global.get $~lib/allocator/tlsf/TAGS + i32.const -1 + i32.xor + i32.and + local.get $2 + i32.sub + local.set $5 + local.get $5 + global.get $~lib/allocator/tlsf/Block.INFO + global.get $~lib/allocator/tlsf/Block.MIN_SIZE + i32.add + i32.ge_u + if + local.get $1 + local.get $2 + local.get $3 + global.get $~lib/allocator/tlsf/LEFT_FREE + i32.and + i32.or + i32.store + local.get $1 + global.get $~lib/allocator/tlsf/Block.INFO + i32.add + local.get $2 + i32.add + local.set $4 + local.get $4 + local.get $5 + global.get $~lib/allocator/tlsf/Block.INFO + i32.sub + global.get $~lib/allocator/tlsf/FREE + i32.or + i32.store + local.get $0 + local.get $4 + call $~lib/allocator/tlsf/Root#insert + else + local.get $1 + local.get $3 + global.get $~lib/allocator/tlsf/FREE + i32.const -1 + i32.xor + i32.and + i32.store + local.get $1 + call $~lib/allocator/tlsf/Block#get:right + local.tee $4 + i32.eqz + if (result i32) + i32.const 0 + i32.const 24 + i32.const 387 + i32.const 25 + call $~lib/env/abort + unreachable + else + local.get $4 + end + local.set $4 + local.get $4 + local.get $4 + i32.load + global.get $~lib/allocator/tlsf/LEFT_FREE + i32.const -1 + i32.xor + i32.and + i32.store + end + local.get $1 + global.get $~lib/allocator/tlsf/Block.INFO + i32.add + ) + (func $~lib/allocator/tlsf/__mem_allocate (; 21 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + global.get $~lib/allocator/tlsf/ROOT + local.set $1 + local.get $1 + i32.eqz + if + global.get $~lib/memory/HEAP_BASE + i32.const 7 + i32.add + i32.const 7 + i32.const -1 + i32.xor + i32.and + local.set $2 + current_memory + local.set $3 + local.get $2 + global.get $~lib/allocator/tlsf/Root.SIZE + i32.add + i32.const 65535 + i32.add + i32.const 65535 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.shr_u + local.set $4 + local.get $4 + local.get $3 + i32.gt_s + local.tee $5 + if (result i32) + local.get $4 + local.get $3 + i32.sub + grow_memory + i32.const 0 + i32.lt_s + else + local.get $5 + end + if + unreachable + end + local.get $2 + local.tee $1 + global.set $~lib/allocator/tlsf/ROOT + local.get $1 + i32.const 0 + call $~lib/allocator/tlsf/Root#set:tailRef + local.get $1 + i32.const 0 + i32.store + block $break|0 + i32.const 0 + local.set $5 + loop $repeat|0 + local.get $5 + global.get $~lib/allocator/tlsf/FL_BITS + i32.lt_u + i32.eqz + br_if $break|0 + block + local.get $1 + local.get $5 + i32.const 0 + call $~lib/allocator/tlsf/Root#setSLMap + block $break|1 + i32.const 0 + local.set $6 + loop $repeat|1 + local.get $6 + global.get $~lib/allocator/tlsf/SL_SIZE + i32.lt_u + i32.eqz + br_if $break|1 + local.get $1 + local.get $5 + local.get $6 + i32.const 0 + call $~lib/allocator/tlsf/Root#setHead + local.get $6 + i32.const 1 + i32.add + local.set $6 + br $repeat|1 + unreachable + end + unreachable + end + end + local.get $5 + i32.const 1 + i32.add + local.set $5 + br $repeat|0 + unreachable + end + unreachable + end + local.get $1 + local.get $2 + global.get $~lib/allocator/tlsf/Root.SIZE + i32.add + i32.const 7 + i32.add + i32.const 7 + i32.const -1 + i32.xor + i32.and + current_memory + i32.const 16 + i32.shl + call $~lib/allocator/tlsf/Root#addMemory + drop + end + local.get $0 + global.get $~lib/allocator/tlsf/Block.MAX_SIZE + i32.gt_u + if + unreachable + end + local.get $0 + i32.const 7 + i32.add + i32.const 7 + i32.const -1 + i32.xor + i32.and + local.tee $4 + global.get $~lib/allocator/tlsf/Block.MIN_SIZE + local.tee $3 + local.get $4 + local.get $3 + i32.gt_u + select + local.set $0 + local.get $1 + local.get $0 + call $~lib/allocator/tlsf/Root#search + local.set $7 + local.get $7 + i32.eqz + if + current_memory + local.set $4 + local.get $0 + i32.const 65535 + i32.add + i32.const 65535 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.shr_u + local.set $3 + local.get $4 + local.tee $2 + local.get $3 + local.tee $5 + local.get $2 + local.get $5 + i32.gt_s + select + local.set $2 + local.get $2 + grow_memory + i32.const 0 + i32.lt_s + if + local.get $3 + grow_memory + i32.const 0 + i32.lt_s + if + unreachable + end + end + current_memory + local.set $5 + local.get $1 + local.get $4 + i32.const 16 + i32.shl + local.get $5 + i32.const 16 + i32.shl + call $~lib/allocator/tlsf/Root#addMemory + drop + local.get $1 + local.get $0 + call $~lib/allocator/tlsf/Root#search + local.tee $6 + i32.eqz + if (result i32) + i32.const 0 + i32.const 24 + i32.const 502 + i32.const 12 + call $~lib/env/abort + unreachable + else + local.get $6 + end + local.set $7 + end + local.get $7 + i32.load + global.get $~lib/allocator/tlsf/TAGS + i32.const -1 + i32.xor + i32.and + local.get $0 + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 505 + i32.const 2 + call $~lib/env/abort + unreachable + end + local.get $1 + local.get $7 + local.get $0 + call $~lib/allocator/tlsf/Root#use + ) + (func $~lib/memory/memory.allocate (; 22 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + call $~lib/allocator/tlsf/__mem_allocate + return + ) + (func $~lib/runtime/runtime.allocate (; 23 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + local.get $0 + call $~lib/util/runtime/adjust + call $~lib/memory/memory.allocate + local.set $1 + local.get $1 + global.get $~lib/util/runtime/HEADER_MAGIC + i32.store + local.get $1 + local.get $0 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.store offset=8 + local.get $1 + i32.const 0 + i32.store offset=12 + local.get $1 + global.get $~lib/util/runtime/HEADER_SIZE + i32.add + ) + (func $~lib/allocator/tlsf/__mem_free (; 24 ;) (type $FUNCSIG$vi) (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + local.get $0 + if + global.get $~lib/allocator/tlsf/ROOT + local.set $1 + local.get $1 + if + local.get $0 + global.get $~lib/allocator/tlsf/Block.INFO + i32.sub + local.set $2 + local.get $2 + i32.load + local.set $3 + local.get $3 + global.get $~lib/allocator/tlsf/FREE + i32.and + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 518 + i32.const 6 + call $~lib/env/abort + unreachable + end + local.get $2 + local.get $3 + global.get $~lib/allocator/tlsf/FREE + i32.or + i32.store + local.get $1 + local.get $0 + global.get $~lib/allocator/tlsf/Block.INFO + i32.sub + call $~lib/allocator/tlsf/Root#insert + end + end + ) + (func $~lib/memory/memory.free (; 25 ;) (type $FUNCSIG$vi) (param $0 i32) + local.get $0 + call $~lib/allocator/tlsf/__mem_free + ) + (func $~lib/runtime/runtime.discard (; 26 ;) (type $FUNCSIG$vi) (param $0 i32) + (local $1 i32) + local.get $0 + global.get $~lib/memory/HEAP_BASE + i32.gt_u + i32.eqz + if + i32.const 0 + i32.const 88 + i32.const 68 + i32.const 6 + call $~lib/env/abort + unreachable + end + local.get $0 + global.get $~lib/util/runtime/HEADER_SIZE + i32.sub + local.set $1 + local.get $1 + i32.load + global.get $~lib/util/runtime/HEADER_MAGIC + i32.eq + i32.eqz + if + i32.const 0 + i32.const 88 + i32.const 70 + i32.const 6 + call $~lib/env/abort + unreachable + end + local.get $1 + call $~lib/memory/memory.free + ) + (func $~lib/collector/itcm/ManagedObjectList#clear (; 27 ;) (type $FUNCSIG$vi) (param $0 i32) + local.get $0 + local.get $0 + i32.store offset=8 + local.get $0 + local.get $0 + i32.store offset=12 + ) + (func $~lib/collector/itcm/maybeInit (; 28 ;) (type $FUNCSIG$v) + global.get $~lib/collector/itcm/state + i32.const 0 + i32.eq + if + global.get $~lib/util/runtime/HEADER_SIZE + call $~lib/memory/memory.allocate + global.set $~lib/collector/itcm/fromSpace + global.get $~lib/collector/itcm/fromSpace + i32.const -1 + i32.store + global.get $~lib/collector/itcm/fromSpace + i32.const 0 + i32.store offset=4 + global.get $~lib/collector/itcm/fromSpace + call $~lib/collector/itcm/ManagedObjectList#clear + global.get $~lib/util/runtime/HEADER_SIZE + call $~lib/memory/memory.allocate + global.set $~lib/collector/itcm/toSpace + global.get $~lib/collector/itcm/toSpace + i32.const -1 + i32.store + global.get $~lib/collector/itcm/toSpace + i32.const 0 + i32.store offset=4 + global.get $~lib/collector/itcm/toSpace + call $~lib/collector/itcm/ManagedObjectList#clear + global.get $~lib/collector/itcm/toSpace + global.set $~lib/collector/itcm/iter + i32.const 1 + global.set $~lib/collector/itcm/state + end + ) + (func $~lib/collector/itcm/ManagedObject#set:color (; 29 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + local.get $0 + local.get $0 + i32.load offset=8 + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $1 + i32.or + i32.store offset=8 + ) + (func $~lib/collector/itcm/ManagedObject#set:next (; 30 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + local.get $0 + i32.load offset=8 + i32.const 3 + i32.and + i32.or + i32.store offset=8 + ) + (func $~lib/collector/itcm/ManagedObjectList#push (; 31 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $0 + i32.load offset=12 + local.set $2 + local.get $1 + local.get $0 + call $~lib/collector/itcm/ManagedObject#set:next + local.get $1 + local.get $2 + i32.store offset=12 + local.get $2 + local.get $1 + call $~lib/collector/itcm/ManagedObject#set:next + local.get $0 + local.get $1 + i32.store offset=12 + ) + (func $~lib/collector/itcm/__ref_register (; 32 ;) (type $FUNCSIG$vi) (param $0 i32) + (local $1 i32) + (local $2 i32) + call $~lib/collector/itcm/maybeInit + block $~lib/collector/itcm/refToObj|inlined.0 (result i32) + local.get $0 + local.set $1 + local.get $1 + global.get $~lib/util/runtime/HEADER_SIZE + i32.sub + end + local.set $2 + local.get $2 + global.get $~lib/collector/itcm/white + call $~lib/collector/itcm/ManagedObject#set:color + global.get $~lib/collector/itcm/fromSpace + local.get $2 + call $~lib/collector/itcm/ManagedObjectList#push + ) + (func $~lib/runtime/runtime.register (; 33 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $0 + global.get $~lib/memory/HEAP_BASE + i32.gt_u + i32.eqz + if + i32.const 0 + i32.const 88 + i32.const 82 + i32.const 6 + call $~lib/env/abort + unreachable + end + local.get $0 + global.get $~lib/util/runtime/HEADER_SIZE + i32.sub + local.set $2 + local.get $2 + i32.load + global.get $~lib/util/runtime/HEADER_MAGIC + i32.eq + i32.eqz + if + i32.const 0 + i32.const 88 + i32.const 84 + i32.const 6 + call $~lib/env/abort + unreachable + end + local.get $2 + local.get $1 + i32.store + local.get $0 + call $~lib/collector/itcm/__ref_register + local.get $0 + ) + (func $~lib/runtime/runtime.newString (; 34 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + i32.const 1 + i32.shl + call $~lib/runtime/runtime.allocate + i32.const 1 + call $~lib/runtime/runtime.register + ) + (func $~lib/runtime/runtime.newArrayBuffer (; 35 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + call $~lib/runtime/runtime.allocate + i32.const 2 + call $~lib/runtime/runtime.register + ) + (func $~lib/collector/itcm/ManagedObject#get:color (; 36 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + i32.load offset=8 + i32.const 3 + i32.and + ) + (func $~lib/collector/itcm/ManagedObject#get:next (; 37 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + i32.load offset=8 + i32.const 3 + i32.const -1 + i32.xor + i32.and + ) + (func $~lib/collector/itcm/ManagedObject#unlink (; 38 ;) (type $FUNCSIG$vi) (param $0 i32) + (local $1 i32) + (local $2 i32) + local.get $0 + call $~lib/collector/itcm/ManagedObject#get:next + local.set $1 + local.get $0 + i32.load offset=12 + local.set $2 + local.get $1 + local.get $2 + i32.store offset=12 + local.get $2 + local.get $1 + call $~lib/collector/itcm/ManagedObject#set:next + ) + (func $~lib/collector/itcm/ManagedObject#makeGray (; 39 ;) (type $FUNCSIG$vi) (param $0 i32) + local.get $0 + global.get $~lib/collector/itcm/iter + i32.eq + if + local.get $0 + i32.load offset=12 + global.set $~lib/collector/itcm/iter + end + local.get $0 + call $~lib/collector/itcm/ManagedObject#unlink + global.get $~lib/collector/itcm/toSpace + local.get $0 + call $~lib/collector/itcm/ManagedObjectList#push + local.get $0 + local.get $0 + i32.load offset=8 + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.const 2 + i32.or + i32.store offset=8 + ) + (func $~lib/collector/itcm/__ref_link (; 40 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + call $~lib/collector/itcm/maybeInit + block $~lib/collector/itcm/refToObj|inlined.1 (result i32) + local.get $1 + local.set $2 + local.get $2 + global.get $~lib/util/runtime/HEADER_SIZE + i32.sub + end + local.set $3 + local.get $3 + call $~lib/collector/itcm/ManagedObject#get:color + global.get $~lib/collector/itcm/white + i32.eqz + i32.eq + local.tee $2 + if (result i32) + block $~lib/collector/itcm/refToObj|inlined.3 (result i32) + local.get $0 + local.set $2 + local.get $2 + global.get $~lib/util/runtime/HEADER_SIZE + i32.sub + end + call $~lib/collector/itcm/ManagedObject#get:color + global.get $~lib/collector/itcm/white + i32.eq + else + local.get $2 + end + if + local.get $3 + call $~lib/collector/itcm/ManagedObject#makeGray + end + ) + (func $~lib/memory/memory.copy (; 41 ;) (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 $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/runtime.newArray (; 42 ;) (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) + (local $8 i32) + (local $9 i32) + i32.const 16 + call $~lib/runtime/runtime.allocate + local.get $2 + call $~lib/runtime/runtime.register + local.set $4 + local.get $0 + local.get $1 + i32.shl + local.set $5 + local.get $5 + call $~lib/runtime/runtime.allocate + i32.const 2 + call $~lib/runtime/runtime.register + local.set $6 + local.get $4 + local.tee $7 + local.get $6 + local.tee $8 + local.get $7 + i32.load + local.tee $9 + i32.ne + if (result i32) + nop + local.get $8 + local.get $7 + call $~lib/collector/itcm/__ref_link + local.get $8 + else + local.get $8 + end + 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 $3 + if + local.get $6 + local.get $3 + local.get $5 + call $~lib/memory/memory.copy + end + local.get $4 + ) + (func $~lib/runtime/Root#constructor (; 43 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + i32.eqz + if + i32.const 0 + call $~lib/runtime/runtime.allocate + i32.const 3 + call $~lib/runtime/runtime.register + local.set $0 + end + local.get $0 + ) + (func $~lib/runtime/runtime.retain (; 44 ;) (type $FUNCSIG$vi) (param $0 i32) + local.get $0 + global.get $~lib/runtime/ROOT + call $~lib/collector/itcm/__ref_link + ) + (func $~lib/runtime/runtime.release (; 45 ;) (type $FUNCSIG$vi) (param $0 i32) + nop + ) + (func $~lib/collector/itcm/step (; 46 ;) (type $FUNCSIG$v) + (local $0 i32) + (local $1 i32) + block $break|0 + block $case3|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/collector/itcm/state + local.set $1 + local.get $1 + i32.const 0 + i32.eq + br_if $case0|0 + local.get $1 + i32.const 1 + i32.eq + br_if $case1|0 + local.get $1 + i32.const 2 + i32.eq + br_if $case2|0 + local.get $1 + i32.const 3 + i32.eq + br_if $case3|0 + br $break|0 + end + unreachable + end + block + call $~lib/runtime/__gc_mark_roots + i32.const 2 + global.set $~lib/collector/itcm/state + br $break|0 + unreachable + end + unreachable + end + block + global.get $~lib/collector/itcm/iter + call $~lib/collector/itcm/ManagedObject#get:next + local.set $0 + local.get $0 + global.get $~lib/collector/itcm/toSpace + i32.ne + if + local.get $0 + global.set $~lib/collector/itcm/iter + local.get $0 + global.get $~lib/collector/itcm/white + i32.eqz + call $~lib/collector/itcm/ManagedObject#set:color + local.get $0 + i32.load + block $~lib/collector/itcm/objToRef|inlined.0 (result i32) + local.get $0 + local.set $1 + local.get $1 + global.get $~lib/util/runtime/HEADER_SIZE + i32.add + end + call $~lib/runtime/__gc_mark_members + else + call $~lib/runtime/__gc_mark_roots + global.get $~lib/collector/itcm/iter + call $~lib/collector/itcm/ManagedObject#get:next + local.set $0 + local.get $0 + global.get $~lib/collector/itcm/toSpace + i32.eq + if + global.get $~lib/collector/itcm/fromSpace + local.set $1 + global.get $~lib/collector/itcm/toSpace + global.set $~lib/collector/itcm/fromSpace + local.get $1 + global.set $~lib/collector/itcm/toSpace + global.get $~lib/collector/itcm/white + i32.eqz + global.set $~lib/collector/itcm/white + local.get $1 + call $~lib/collector/itcm/ManagedObject#get:next + global.set $~lib/collector/itcm/iter + i32.const 3 + global.set $~lib/collector/itcm/state + end + end + br $break|0 + unreachable + end + unreachable + end + block + global.get $~lib/collector/itcm/iter + local.set $0 + local.get $0 + global.get $~lib/collector/itcm/toSpace + i32.ne + if + local.get $0 + call $~lib/collector/itcm/ManagedObject#get:next + global.set $~lib/collector/itcm/iter + local.get $0 + global.get $~lib/memory/HEAP_BASE + i32.ge_u + if + local.get $0 + call $~lib/memory/memory.free + end + else + global.get $~lib/collector/itcm/toSpace + call $~lib/collector/itcm/ManagedObjectList#clear + i32.const 1 + global.set $~lib/collector/itcm/state + end + br $break|0 + unreachable + end + unreachable + end + ) + (func $~lib/collector/itcm/__ref_collect (; 47 ;) (type $FUNCSIG$v) + call $~lib/collector/itcm/maybeInit + block $break|0 + loop $continue|0 + global.get $~lib/collector/itcm/state + i32.const 1 + i32.ne + if + call $~lib/collector/itcm/step + br $continue|0 + end + end + end + block $break|1 + loop $continue|1 + call $~lib/collector/itcm/step + global.get $~lib/collector/itcm/state + i32.const 1 + i32.ne + br_if $continue|1 + end + end + ) + (func $~lib/runtime/runtime.collect (; 48 ;) (type $FUNCSIG$v) + call $~lib/collector/itcm/__ref_collect + ) + (func $~lib/runtime/runtime#constructor (; 49 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + unreachable + ) + (func $start (; 50 ;) (type $FUNCSIG$v) + i32.const 0 + call $~lib/runtime/Root#constructor + global.set $~lib/runtime/ROOT + ) + (func $~lib/collector/itcm/__ref_mark (; 51 ;) (type $FUNCSIG$vi) (param $0 i32) + (local $1 i32) + (local $2 i32) + call $~lib/collector/itcm/maybeInit + block $~lib/collector/itcm/refToObj|inlined.4 (result i32) + local.get $0 + local.set $1 + local.get $1 + global.get $~lib/util/runtime/HEADER_SIZE + i32.sub + end + local.set $2 + local.get $2 + call $~lib/collector/itcm/ManagedObject#get:color + global.get $~lib/collector/itcm/white + i32.eq + if + local.get $2 + call $~lib/collector/itcm/ManagedObject#makeGray + end + ) + (func $~lib/runtime/__gc_mark_roots (; 52 ;) (type $FUNCSIG$v) + (local $0 i32) + global.get $~lib/runtime/ROOT + local.tee $0 + if + local.get $0 + call $~lib/collector/itcm/__ref_mark + end + ) + (func $~lib/runtime/__gc_mark_members (; 53 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (local $2 i32) + block $invalid + block $~lib/runtime/Root + block $~lib/arraybuffer/ArrayBuffer + block $~lib/string/String + local.get $0 + br_table $invalid $~lib/string/String $~lib/arraybuffer/ArrayBuffer $~lib/runtime/Root $invalid + end + return + end + return + end + return + end + unreachable + ) + (func $~lib/runtime/__runtime_instanceof (; 54 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + block $nope + block $~lib/runtime/Root + block $~lib/arraybuffer/ArrayBuffer + block $~lib/string/String + local.get $0 + br_table $nope $~lib/string/String $~lib/arraybuffer/ArrayBuffer $~lib/runtime/Root $nope + end + local.get $1 + i32.const 1 + i32.eq + return + end + local.get $1 + i32.const 2 + i32.eq + return + end + local.get $1 + i32.const 3 + i32.eq + return + end + i32.const 0 + return + ) + (func $null (; 55 ;) (type $FUNCSIG$v) + ) + (func $~lib/runtime/runtime.newArray|trampoline (; 56 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + block $1of1 + block $0of1 + block $outOfRange + global.get $~lib/argc + i32.const 3 + i32.sub + br_table $0of1 $1of1 $outOfRange + end + unreachable + end + i32.const 0 + local.set $3 + end + local.get $0 + local.get $1 + local.get $2 + local.get $3 + call $~lib/runtime/runtime.newArray + ) + (func $~lib/setargc (; 57 ;) (type $FUNCSIG$vi) (param $0 i32) + local.get $0 + global.set $~lib/argc ) ) diff --git a/tests/compiler/class.optimized.wat b/tests/compiler/class.optimized.wat index 62d60252..5e1638c4 100644 --- a/tests/compiler/class.optimized.wat +++ b/tests/compiler/class.optimized.wat @@ -1,17 +1,49 @@ (module + (type $FUNCSIG$viiii (func (param i32 i32 i32 i32))) + (type $FUNCSIG$iii (func (param i32 i32) (result i32))) (type $FUNCSIG$v (func)) (type $FUNCSIG$ii (func (param i32) (result i32))) + (type $FUNCSIG$iiii (func (param i32 i32 i32) (result i32))) + (type $FUNCSIG$vii (func (param i32 i32))) + (type $FUNCSIG$viii (func (param i32 i32 i32))) + (type $FUNCSIG$vi (func (param i32))) + (type $FUNCSIG$iiiii (func (param i32 i32 i32 i32) (result i32))) + (import "env" "abort" (func $~lib/env/abort (param i32 i32 i32 i32))) (memory $0 1) (data (i32.const 8) "\01\00\00\00\10") (data (i32.const 24) "c\00l\00a\00s\00s\00.\00t\00s") + (data (i32.const 40) "\01\00\00\00,") + (data (i32.const 56) "~\00l\00i\00b\00/\00a\00l\00l\00o\00c\00a\00t\00o\00r\00/\00t\00l\00s\00f\00.\00t\00s") + (data (i32.const 104) "\01\00\00\00\1e") + (data (i32.const 120) "~\00l\00i\00b\00/\00r\00u\00n\00t\00i\00m\00e\00.\00t\00s") (table $0 1 funcref) - (elem (i32.const 0) $start) + (elem (i32.const 0) $null) + (global $~lib/allocator/tlsf/ROOT (mut i32) (i32.const 0)) + (global $~lib/collector/itcm/state (mut i32) (i32.const 0)) + (global $~lib/collector/itcm/fromSpace (mut i32) (i32.const 0)) + (global $~lib/collector/itcm/toSpace (mut i32) (i32.const 0)) + (global $~lib/collector/itcm/iter (mut i32) (i32.const 0)) + (global $~lib/collector/itcm/white (mut i32) (i32.const 0)) + (global $~lib/runtime/ROOT (mut i32) (i32.const 0)) + (global $~lib/argc (mut i32) (i32.const 0)) (global $~lib/capabilities i32 (i32.const 2)) (export "memory" (memory $0)) (export "table" (table $0)) (export "test" (func $class/test)) + (export "runtime.instanceof" (func $~lib/runtime/runtime.instanceof)) + (export "runtime.allocate" (func $~lib/runtime/runtime.allocate)) + (export "runtime.discard" (func $~lib/runtime/runtime.discard)) + (export "runtime.register" (func $~lib/runtime/runtime.register)) + (export "runtime.newString" (func $~lib/runtime/runtime.newString)) + (export "runtime.newArrayBuffer" (func $~lib/runtime/runtime.newArrayBuffer)) + (export ".setargc" (func $~lib/setargc)) + (export "runtime.newArray" (func $~lib/runtime/runtime.newArray|trampoline)) + (export "runtime.retain" (func $~lib/runtime/runtime.retain)) + (export "runtime.release" (func $~lib/runtime/runtime.release)) + (export "runtime.collect" (func $~lib/runtime/runtime.collect)) (export ".capabilities" (global $~lib/capabilities)) - (func $class/test (; 0 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (start $start) + (func $class/test (; 1 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.load drop @@ -32,7 +64,1884 @@ i32.store8 offset=6 local.get $0 ) - (func $start (; 1 ;) (type $FUNCSIG$v) + (func $~lib/runtime/runtime.instanceof (; 2 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + local.get $0 + if (result i32) + local.get $0 + i32.const 16 + i32.sub + i32.load + local.get $1 + call $~lib/runtime/__runtime_instanceof + else + i32.const 0 + end + ) + (func $~lib/allocator/tlsf/Root#setSLMap (; 3 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + local.get $1 + i32.const 22 + i32.ge_u + if + i32.const 0 + i32.const 56 + i32.const 159 + i32.const 4 + call $~lib/env/abort + unreachable + end + local.get $1 + i32.const 2 + i32.shl + local.get $0 + i32.add + local.get $2 + i32.store offset=4 + ) + (func $~lib/allocator/tlsf/Root#setHead (; 4 ;) (type $FUNCSIG$viiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) + local.get $1 + i32.const 22 + i32.ge_u + if + i32.const 0 + i32.const 56 + i32.const 184 + i32.const 4 + call $~lib/env/abort + unreachable + end + local.get $2 + i32.const 32 + i32.ge_u + if + i32.const 0 + i32.const 56 + i32.const 185 + i32.const 4 + call $~lib/env/abort + unreachable + end + local.get $1 + i32.const 5 + i32.shl + local.get $2 + i32.add + i32.const 2 + i32.shl + local.get $0 + i32.add + local.get $3 + i32.store offset=96 + ) + (func $~lib/allocator/tlsf/Block#get:right (; 5 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + i32.load + i32.const -4 + i32.and + i32.eqz + if + i32.const 0 + i32.const 56 + i32.const 104 + i32.const 4 + call $~lib/env/abort + unreachable + end + local.get $0 + i32.const 8 + i32.add + local.get $0 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $0 + i32.eqz + if + i32.const 0 + i32.const 56 + i32.const 105 + i32.const 11 + call $~lib/env/abort + unreachable + end + local.get $0 + ) + (func $~lib/allocator/tlsf/fls (; 6 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + i32.eqz + if + i32.const 0 + i32.const 56 + i32.const 447 + i32.const 2 + call $~lib/env/abort + unreachable + end + i32.const 31 + local.get $0 + i32.clz + i32.sub + ) + (func $~lib/allocator/tlsf/Root#getHead (; 7 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + local.get $1 + i32.const 22 + i32.ge_u + if + i32.const 0 + i32.const 56 + i32.const 175 + i32.const 4 + call $~lib/env/abort + unreachable + end + local.get $2 + i32.const 32 + i32.ge_u + if + i32.const 0 + i32.const 56 + i32.const 176 + i32.const 4 + call $~lib/env/abort + unreachable + end + local.get $1 + i32.const 5 + i32.shl + local.get $2 + i32.add + i32.const 2 + i32.shl + local.get $0 + i32.add + i32.load offset=96 + ) + (func $~lib/allocator/tlsf/Root#getSLMap (; 8 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + local.get $1 + i32.const 22 + i32.ge_u + if + i32.const 0 + i32.const 56 + i32.const 153 + i32.const 4 + call $~lib/env/abort + unreachable + end + local.get $1 + i32.const 2 + i32.shl + local.get $0 + i32.add + i32.load offset=4 + ) + (func $~lib/allocator/tlsf/Root#remove (; 9 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $1 + i32.load + local.tee $2 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 56 + i32.const 277 + i32.const 4 + call $~lib/env/abort + unreachable + end + local.get $2 + i32.const -4 + i32.and + local.tee $3 + i32.const 16 + i32.ge_u + local.tee $2 + if + local.get $3 + i32.const 1073741824 + i32.lt_u + local.set $2 + end + local.get $2 + i32.eqz + if + i32.const 0 + i32.const 56 + i32.const 279 + i32.const 4 + call $~lib/env/abort + unreachable + end + local.get $3 + i32.const 256 + i32.lt_u + if (result i32) + local.get $3 + i32.const 8 + i32.div_u + local.set $4 + i32.const 0 + else + local.get $3 + local.get $3 + call $~lib/allocator/tlsf/fls + local.tee $2 + i32.const 5 + i32.sub + i32.shr_u + i32.const 32 + i32.xor + local.set $4 + local.get $2 + i32.const 7 + i32.sub + end + local.set $2 + local.get $1 + i32.load offset=8 + local.set $3 + local.get $1 + i32.load offset=4 + local.tee $5 + if + local.get $5 + local.get $3 + i32.store offset=8 + end + local.get $3 + if + local.get $3 + local.get $5 + i32.store offset=4 + end + local.get $0 + local.get $2 + local.get $4 + call $~lib/allocator/tlsf/Root#getHead + local.get $1 + i32.eq + if + local.get $0 + local.get $2 + local.get $4 + local.get $3 + call $~lib/allocator/tlsf/Root#setHead + local.get $3 + i32.eqz + if + local.get $0 + local.get $2 + local.get $0 + local.get $2 + call $~lib/allocator/tlsf/Root#getSLMap + i32.const 1 + local.get $4 + i32.shl + i32.const -1 + i32.xor + i32.and + local.tee $1 + call $~lib/allocator/tlsf/Root#setSLMap + local.get $1 + i32.eqz + if + local.get $0 + local.get $0 + i32.load + i32.const 1 + local.get $2 + i32.shl + i32.const -1 + i32.xor + i32.and + i32.store + end + end + end + ) + (func $~lib/allocator/tlsf/Block#get:left (; 10 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + i32.load + i32.const 2 + i32.and + i32.eqz + if + i32.const 0 + i32.const 56 + i32.const 96 + i32.const 4 + call $~lib/env/abort + unreachable + end + local.get $0 + i32.const 4 + i32.sub + i32.load + local.tee $0 + i32.eqz + if + i32.const 0 + i32.const 56 + i32.const 97 + i32.const 11 + call $~lib/env/abort + unreachable + end + local.get $0 + ) + (func $~lib/allocator/tlsf/Root#setJump (; 11 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + local.get $0 + i32.load + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 56 + i32.const 353 + i32.const 4 + call $~lib/env/abort + unreachable + end + local.get $0 + call $~lib/allocator/tlsf/Block#get:right + local.get $1 + i32.ne + if + i32.const 0 + i32.const 56 + i32.const 354 + i32.const 4 + call $~lib/env/abort + unreachable + end + local.get $1 + i32.load + i32.const 2 + i32.and + i32.eqz + if + i32.const 0 + i32.const 56 + i32.const 355 + i32.const 4 + call $~lib/env/abort + unreachable + end + local.get $1 + i32.const 4 + i32.sub + local.get $0 + i32.store + ) + (func $~lib/allocator/tlsf/Root#insert (; 12 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $1 + i32.eqz + if + i32.const 0 + i32.const 56 + i32.const 208 + i32.const 4 + call $~lib/env/abort + unreachable + end + local.get $1 + i32.load + local.tee $3 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 56 + i32.const 210 + i32.const 4 + call $~lib/env/abort + unreachable + end + local.get $1 + i32.load + i32.const -4 + i32.and + local.tee $4 + i32.const 16 + i32.ge_u + local.tee $2 + if + local.get $4 + i32.const 1073741824 + i32.lt_u + local.set $2 + end + local.get $2 + i32.eqz + if + i32.const 0 + i32.const 56 + i32.const 212 + i32.const 4 + call $~lib/env/abort + unreachable + end + local.get $1 + call $~lib/allocator/tlsf/Block#get:right + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 56 + i32.const 216 + i32.const 23 + call $~lib/env/abort + unreachable + end + local.get $2 + i32.load + local.tee $4 + i32.const 1 + i32.and + if + local.get $0 + local.get $2 + call $~lib/allocator/tlsf/Root#remove + local.get $1 + local.get $4 + i32.const -4 + i32.and + i32.const 8 + i32.add + local.get $3 + i32.add + local.tee $3 + i32.store + local.get $1 + call $~lib/allocator/tlsf/Block#get:right + local.tee $2 + i32.load + local.set $4 + end + local.get $3 + i32.const 2 + i32.and + if + local.get $1 + call $~lib/allocator/tlsf/Block#get:left + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 56 + i32.const 230 + i32.const 24 + call $~lib/env/abort + unreachable + end + local.get $1 + i32.load + local.tee $5 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 56 + i32.const 232 + i32.const 6 + call $~lib/env/abort + unreachable + end + local.get $0 + local.get $1 + call $~lib/allocator/tlsf/Root#remove + local.get $1 + local.get $3 + i32.const -4 + i32.and + i32.const 8 + i32.add + local.get $5 + i32.add + local.tee $3 + i32.store + end + local.get $2 + local.get $4 + i32.const 2 + i32.or + i32.store + local.get $1 + local.get $2 + call $~lib/allocator/tlsf/Root#setJump + local.get $3 + i32.const -4 + i32.and + local.tee $3 + i32.const 16 + i32.ge_u + local.tee $2 + if + local.get $3 + i32.const 1073741824 + i32.lt_u + local.set $2 + end + local.get $2 + i32.eqz + if + i32.const 0 + i32.const 56 + i32.const 245 + i32.const 4 + call $~lib/env/abort + unreachable + end + local.get $0 + local.get $3 + i32.const 256 + i32.lt_u + if (result i32) + local.get $3 + i32.const 8 + i32.div_u + local.set $3 + i32.const 0 + else + local.get $3 + local.get $3 + call $~lib/allocator/tlsf/fls + local.tee $2 + i32.const 5 + i32.sub + i32.shr_u + i32.const 32 + i32.xor + local.set $3 + local.get $2 + i32.const 7 + i32.sub + end + local.tee $2 + local.get $3 + call $~lib/allocator/tlsf/Root#getHead + local.set $4 + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + local.get $4 + i32.store offset=8 + local.get $4 + if + local.get $4 + local.get $1 + i32.store offset=4 + end + local.get $0 + local.get $2 + local.get $3 + local.get $1 + call $~lib/allocator/tlsf/Root#setHead + local.get $0 + local.get $0 + i32.load + i32.const 1 + local.get $2 + i32.shl + i32.or + i32.store + local.get $0 + local.get $2 + local.get $0 + local.get $2 + call $~lib/allocator/tlsf/Root#getSLMap + i32.const 1 + local.get $3 + i32.shl + i32.or + call $~lib/allocator/tlsf/Root#setSLMap + ) + (func $~lib/allocator/tlsf/Root#addMemory (; 13 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local $4 i32) + local.get $1 + local.get $2 + i32.gt_u + if + i32.const 0 + i32.const 56 + i32.const 396 + i32.const 4 + call $~lib/env/abort + unreachable + end + local.get $1 + i32.const 7 + i32.and + if + i32.const 0 + i32.const 56 + i32.const 397 + i32.const 4 + call $~lib/env/abort + unreachable + end + local.get $2 + i32.const 7 + i32.and + if + i32.const 0 + i32.const 56 + i32.const 398 + i32.const 4 + call $~lib/env/abort + unreachable + end + i32.const 2912 + i32.load + local.tee $3 + if + local.get $1 + local.get $3 + i32.const 4 + i32.add + i32.lt_u + if + i32.const 0 + i32.const 56 + i32.const 403 + i32.const 6 + call $~lib/env/abort + unreachable + end + local.get $1 + i32.const 8 + i32.sub + local.get $3 + i32.eq + if + local.get $3 + i32.load + local.set $4 + local.get $1 + i32.const 8 + i32.sub + local.set $1 + end + else + local.get $1 + local.get $0 + i32.const 2916 + i32.add + i32.lt_u + if + i32.const 0 + i32.const 56 + i32.const 412 + i32.const 6 + call $~lib/env/abort + unreachable + end + end + local.get $2 + local.get $1 + i32.sub + local.tee $2 + i32.const 32 + i32.lt_u + if + return + end + local.get $1 + local.get $4 + i32.const 2 + i32.and + local.get $2 + i32.const 16 + i32.sub + i32.const 1 + i32.or + i32.or + i32.store + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.store offset=8 + local.get $1 + local.get $2 + i32.add + i32.const 8 + i32.sub + local.tee $2 + i32.const 2 + i32.store + i32.const 2912 + local.get $2 + i32.store + local.get $0 + local.get $1 + call $~lib/allocator/tlsf/Root#insert + ) + (func $~lib/allocator/tlsf/ffs (; 14 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + i32.eqz + if + i32.const 0 + i32.const 56 + i32.const 441 + i32.const 2 + call $~lib/env/abort + unreachable + end + local.get $0 + i32.ctz + ) + (func $~lib/allocator/tlsf/Root#search (; 15 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + local.get $1 + i32.const 16 + i32.ge_u + local.tee $2 + if + local.get $1 + i32.const 1073741824 + i32.lt_u + local.set $2 + end + local.get $2 + i32.eqz + if + i32.const 0 + i32.const 56 + i32.const 315 + i32.const 4 + call $~lib/env/abort + unreachable + end + local.get $1 + i32.const 256 + i32.lt_u + if (result i32) + i32.const 0 + local.set $2 + local.get $1 + i32.const 8 + i32.div_u + else + local.get $1 + call $~lib/allocator/tlsf/fls + local.tee $3 + i32.const 7 + i32.sub + local.set $2 + local.get $1 + local.get $3 + i32.const 5 + i32.sub + i32.shr_u + i32.const 32 + i32.xor + local.tee $1 + i32.const 31 + i32.lt_u + if (result i32) + local.get $1 + i32.const 1 + i32.add + else + local.get $2 + i32.const 1 + i32.add + local.set $2 + i32.const 0 + end + end + local.set $1 + local.get $0 + local.get $2 + call $~lib/allocator/tlsf/Root#getSLMap + i32.const -1 + local.get $1 + i32.shl + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $2 + local.get $1 + call $~lib/allocator/tlsf/ffs + call $~lib/allocator/tlsf/Root#getHead + else + local.get $0 + i32.load + i32.const -1 + local.get $2 + i32.const 1 + i32.add + i32.shl + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + call $~lib/allocator/tlsf/ffs + local.tee $2 + call $~lib/allocator/tlsf/Root#getSLMap + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 56 + i32.const 342 + i32.const 16 + call $~lib/env/abort + unreachable + end + local.get $0 + local.get $2 + local.get $1 + call $~lib/allocator/tlsf/ffs + call $~lib/allocator/tlsf/Root#getHead + else + i32.const 0 + end + end + ) + (func $~lib/allocator/tlsf/Root#use (; 16 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + (local $4 i32) + local.get $1 + i32.load + local.tee $4 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 56 + i32.const 367 + i32.const 4 + call $~lib/env/abort + unreachable + end + local.get $2 + i32.const 16 + i32.ge_u + local.tee $3 + if + local.get $2 + i32.const 1073741824 + i32.lt_u + local.set $3 + end + local.get $3 + i32.eqz + if + i32.const 0 + i32.const 56 + i32.const 368 + i32.const 4 + call $~lib/env/abort + unreachable + end + local.get $2 + i32.const 7 + i32.and + if + i32.const 0 + i32.const 56 + i32.const 369 + i32.const 4 + call $~lib/env/abort + unreachable + end + local.get $0 + local.get $1 + call $~lib/allocator/tlsf/Root#remove + local.get $4 + i32.const -4 + i32.and + local.get $2 + i32.sub + local.tee $3 + i32.const 24 + i32.ge_u + if + local.get $1 + local.get $4 + i32.const 2 + i32.and + local.get $2 + i32.or + i32.store + local.get $1 + i32.const 8 + i32.add + local.get $2 + i32.add + local.tee $2 + local.get $3 + i32.const 8 + i32.sub + i32.const 1 + i32.or + i32.store + local.get $0 + local.get $2 + call $~lib/allocator/tlsf/Root#insert + else + local.get $1 + local.get $4 + i32.const -2 + i32.and + i32.store + local.get $1 + call $~lib/allocator/tlsf/Block#get:right + local.tee $0 + i32.eqz + if + i32.const 0 + i32.const 56 + i32.const 387 + i32.const 25 + call $~lib/env/abort + unreachable + end + local.get $0 + local.get $0 + i32.load + i32.const -3 + i32.and + i32.store + end + local.get $1 + i32.const 8 + i32.add + ) + (func $~lib/allocator/tlsf/__mem_allocate (; 17 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + global.get $~lib/allocator/tlsf/ROOT + local.tee $2 + i32.eqz + if + i32.const 1 + current_memory + local.tee $1 + i32.gt_s + local.tee $2 + if (result i32) + i32.const 1 + local.get $1 + i32.sub + grow_memory + i32.const 0 + i32.lt_s + else + local.get $2 + end + if + unreachable + end + i32.const 152 + local.set $2 + i32.const 152 + global.set $~lib/allocator/tlsf/ROOT + i32.const 2912 + i32.const 0 + i32.store + i32.const 152 + i32.const 0 + i32.store + i32.const 0 + local.set $1 + loop $repeat|0 + local.get $1 + i32.const 22 + i32.lt_u + if + i32.const 152 + local.get $1 + i32.const 0 + call $~lib/allocator/tlsf/Root#setSLMap + i32.const 0 + local.set $3 + loop $repeat|1 + local.get $3 + i32.const 32 + i32.lt_u + if + i32.const 152 + local.get $1 + local.get $3 + i32.const 0 + call $~lib/allocator/tlsf/Root#setHead + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $repeat|1 + end + end + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $repeat|0 + end + end + i32.const 152 + i32.const 3072 + current_memory + i32.const 16 + i32.shl + call $~lib/allocator/tlsf/Root#addMemory + end + local.get $0 + i32.const 1073741824 + i32.gt_u + if + unreachable + end + local.get $2 + local.get $0 + i32.const 7 + i32.add + i32.const -8 + i32.and + local.tee $0 + i32.const 16 + local.get $0 + i32.const 16 + i32.gt_u + select + local.tee $1 + call $~lib/allocator/tlsf/Root#search + local.tee $0 + i32.eqz + if + current_memory + local.tee $0 + local.get $1 + i32.const 65535 + i32.add + i32.const -65536 + i32.and + i32.const 16 + i32.shr_u + local.tee $3 + local.get $0 + local.get $3 + i32.gt_s + select + grow_memory + i32.const 0 + i32.lt_s + if + local.get $3 + grow_memory + i32.const 0 + i32.lt_s + if + unreachable + end + end + local.get $2 + local.get $0 + i32.const 16 + i32.shl + current_memory + i32.const 16 + i32.shl + call $~lib/allocator/tlsf/Root#addMemory + local.get $2 + local.get $1 + call $~lib/allocator/tlsf/Root#search + local.tee $0 + i32.eqz + if + i32.const 0 + i32.const 56 + i32.const 502 + i32.const 12 + call $~lib/env/abort + unreachable + end + end + local.get $0 + i32.load + i32.const -4 + i32.and + local.get $1 + i32.lt_u + if + i32.const 0 + i32.const 56 + i32.const 505 + i32.const 2 + call $~lib/env/abort + unreachable + end + local.get $2 + local.get $0 + local.get $1 + call $~lib/allocator/tlsf/Root#use + ) + (func $~lib/runtime/runtime.allocate (; 18 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + i32.const 1 + i32.const 32 + local.get $0 + i32.const 15 + i32.add + i32.clz + i32.sub + i32.shl + call $~lib/allocator/tlsf/__mem_allocate + local.tee $1 + i32.const -1520547049 + i32.store + local.get $1 + local.get $0 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.store offset=8 + local.get $1 + i32.const 0 + i32.store offset=12 + local.get $1 + i32.const 16 + i32.add + ) + (func $~lib/allocator/tlsf/__mem_free (; 19 ;) (type $FUNCSIG$vi) (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + local.get $0 + if + global.get $~lib/allocator/tlsf/ROOT + local.tee $1 + if + local.get $0 + i32.const 8 + i32.sub + local.tee $2 + i32.load + local.tee $3 + i32.const 1 + i32.and + if + i32.const 0 + i32.const 56 + i32.const 518 + i32.const 6 + call $~lib/env/abort + unreachable + end + local.get $2 + local.get $3 + i32.const 1 + i32.or + i32.store + local.get $1 + local.get $0 + i32.const 8 + i32.sub + call $~lib/allocator/tlsf/Root#insert + end + end + ) + (func $~lib/runtime/runtime.discard (; 20 ;) (type $FUNCSIG$vi) (param $0 i32) + local.get $0 + i32.const 152 + i32.le_u + if + i32.const 0 + i32.const 120 + i32.const 68 + i32.const 6 + call $~lib/env/abort + unreachable + end + local.get $0 + i32.const 16 + i32.sub + local.tee $0 + i32.load + i32.const -1520547049 + i32.ne + if + i32.const 0 + i32.const 120 + i32.const 70 + i32.const 6 + call $~lib/env/abort + unreachable + end + local.get $0 + call $~lib/allocator/tlsf/__mem_free + ) + (func $~lib/collector/itcm/maybeInit (; 21 ;) (type $FUNCSIG$v) + (local $0 i32) + global.get $~lib/collector/itcm/state + i32.eqz + if + i32.const 16 + call $~lib/allocator/tlsf/__mem_allocate + global.set $~lib/collector/itcm/fromSpace + global.get $~lib/collector/itcm/fromSpace + local.tee $0 + i32.const -1 + i32.store + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + local.get $0 + i32.store offset=8 + local.get $0 + local.get $0 + i32.store offset=12 + i32.const 16 + call $~lib/allocator/tlsf/__mem_allocate + global.set $~lib/collector/itcm/toSpace + global.get $~lib/collector/itcm/toSpace + local.tee $0 + i32.const -1 + i32.store + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + local.get $0 + i32.store offset=8 + local.get $0 + local.get $0 + i32.store offset=12 + global.get $~lib/collector/itcm/toSpace + global.set $~lib/collector/itcm/iter + i32.const 1 + global.set $~lib/collector/itcm/state + end + ) + (func $~lib/collector/itcm/ManagedObjectList#push (; 22 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $0 + i32.load offset=12 + local.set $2 + local.get $1 + local.get $1 + i32.load offset=8 + i32.const 3 + i32.and + local.get $0 + i32.or + i32.store offset=8 + local.get $1 + local.get $2 + i32.store offset=12 + local.get $2 + local.get $2 + i32.load offset=8 + i32.const 3 + i32.and + local.get $1 + i32.or + i32.store offset=8 + local.get $0 + local.get $1 + i32.store offset=12 + ) + (func $~lib/collector/itcm/__ref_register (; 23 ;) (type $FUNCSIG$vi) (param $0 i32) + call $~lib/collector/itcm/maybeInit + local.get $0 + i32.const 16 + i32.sub + local.tee $0 + global.get $~lib/collector/itcm/white + local.get $0 + i32.load offset=8 + i32.const -4 + i32.and + i32.or + i32.store offset=8 + global.get $~lib/collector/itcm/fromSpace + local.get $0 + call $~lib/collector/itcm/ManagedObjectList#push + ) + (func $~lib/runtime/runtime.register (; 24 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $0 + i32.const 152 + i32.le_u + if + i32.const 0 + i32.const 120 + i32.const 82 + i32.const 6 + call $~lib/env/abort + unreachable + end + local.get $0 + i32.const 16 + i32.sub + local.tee $2 + i32.load + i32.const -1520547049 + i32.ne + if + i32.const 0 + i32.const 120 + i32.const 84 + i32.const 6 + call $~lib/env/abort + unreachable + end + local.get $2 + local.get $1 + i32.store + block + local.get $0 + call $~lib/collector/itcm/__ref_register + end + local.get $0 + ) + (func $~lib/runtime/runtime.newString (; 25 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + i32.const 1 + i32.shl + call $~lib/runtime/runtime.allocate + i32.const 1 + call $~lib/runtime/runtime.register + ) + (func $~lib/runtime/runtime.newArrayBuffer (; 26 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + call $~lib/runtime/runtime.allocate + i32.const 2 + call $~lib/runtime/runtime.register + ) + (func $~lib/collector/itcm/ManagedObject#makeGray (; 27 ;) (type $FUNCSIG$vi) (param $0 i32) + (local $1 i32) + (local $2 i32) + global.get $~lib/collector/itcm/iter + local.get $0 + i32.eq + if + local.get $0 + i32.load offset=12 + global.set $~lib/collector/itcm/iter + end + local.get $0 + i32.load offset=8 + i32.const -4 + i32.and + local.tee $2 + local.get $0 + i32.load offset=12 + local.tee $1 + i32.store offset=12 + local.get $1 + local.get $1 + i32.load offset=8 + i32.const 3 + i32.and + local.get $2 + i32.or + i32.store offset=8 + global.get $~lib/collector/itcm/toSpace + local.get $0 + call $~lib/collector/itcm/ManagedObjectList#push + local.get $0 + local.get $0 + i32.load offset=8 + i32.const -4 + i32.and + i32.const 2 + i32.or + i32.store offset=8 + ) + (func $~lib/collector/itcm/__ref_link (; 28 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (local $2 i32) + call $~lib/collector/itcm/maybeInit + global.get $~lib/collector/itcm/white + i32.eqz + local.get $1 + i32.const 16 + i32.sub + local.tee $2 + i32.load offset=8 + i32.const 3 + i32.and + i32.eq + local.tee $1 + if (result i32) + global.get $~lib/collector/itcm/white + local.get $0 + i32.const 16 + i32.sub + i32.load offset=8 + i32.const 3 + i32.and + i32.eq + else + local.get $1 + end + if + local.get $2 + call $~lib/collector/itcm/ManagedObject#makeGray + end + ) + (func $~lib/memory/memory.copy (; 29 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local $4 i32) + block $~lib/util/memory/memmove|inlined.0 + local.get $0 + local.get $1 + i32.eq + br_if $~lib/util/memory/memmove|inlined.0 + 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 + loop $continue|0 + local.get $0 + i32.const 7 + i32.and + if + local.get $2 + i32.eqz + br_if $~lib/util/memory/memmove|inlined.0 + local.get $2 + i32.const 1 + i32.sub + local.set $2 + local.get $0 + local.tee $3 + i32.const 1 + i32.add + local.set $0 + local.get $1 + local.tee $4 + i32.const 1 + i32.add + local.set $1 + local.get $3 + local.get $4 + i32.load8_u + i32.store8 + br $continue|0 + end + end + loop $continue|1 + local.get $2 + i32.const 8 + i32.ge_u + if + 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 + br $continue|1 + end + end + end + loop $continue|2 + local.get $2 + if + local.get $0 + local.tee $3 + i32.const 1 + i32.add + local.set $0 + local.get $1 + local.tee $4 + i32.const 1 + i32.add + local.set $1 + local.get $3 + local.get $4 + i32.load8_u + i32.store8 + local.get $2 + i32.const 1 + i32.sub + local.set $2 + br $continue|2 + end + end + else + local.get $1 + i32.const 7 + i32.and + local.get $0 + i32.const 7 + i32.and + i32.eq + if + loop $continue|3 + local.get $0 + local.get $2 + i32.add + i32.const 7 + i32.and + if + local.get $2 + i32.eqz + br_if $~lib/util/memory/memmove|inlined.0 + local.get $2 + i32.const 1 + i32.sub + local.tee $2 + local.get $0 + i32.add + local.get $1 + local.get $2 + i32.add + i32.load8_u + i32.store8 + br $continue|3 + end + end + loop $continue|4 + local.get $2 + i32.const 8 + i32.ge_u + if + local.get $2 + i32.const 8 + i32.sub + local.tee $2 + local.get $0 + i32.add + local.get $1 + local.get $2 + i32.add + i64.load + i64.store + br $continue|4 + end + end + end + loop $continue|5 + local.get $2 + if + local.get $2 + i32.const 1 + i32.sub + local.tee $2 + local.get $0 + i32.add + local.get $1 + local.get $2 + i32.add + i32.load8_u + i32.store8 + br $continue|5 + end + end + end + end + ) + (func $~lib/runtime/runtime.newArray (; 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) + i32.const 16 + call $~lib/runtime/runtime.allocate + local.get $2 + call $~lib/runtime/runtime.register + local.tee $2 + local.set $6 + local.get $0 + local.get $1 + i32.shl + local.tee $4 + call $~lib/runtime/runtime.allocate + i32.const 2 + call $~lib/runtime/runtime.register + local.tee $5 + local.tee $1 + local.get $2 + i32.load + i32.ne + if + local.get $1 + local.get $6 + call $~lib/collector/itcm/__ref_link + end + local.get $2 + local.get $1 + i32.store + local.get $2 + local.get $5 + i32.store offset=4 + local.get $2 + local.get $4 + i32.store offset=8 + local.get $2 + local.get $0 + i32.store offset=12 + local.get $3 + if + local.get $5 + local.get $3 + local.get $4 + call $~lib/memory/memory.copy + end + local.get $2 + ) + (func $~lib/runtime/runtime.retain (; 31 ;) (type $FUNCSIG$vi) (param $0 i32) + local.get $0 + global.get $~lib/runtime/ROOT + call $~lib/collector/itcm/__ref_link + ) + (func $~lib/runtime/runtime.release (; 32 ;) (type $FUNCSIG$vi) (param $0 i32) nop ) + (func $~lib/collector/itcm/step (; 33 ;) (type $FUNCSIG$v) + (local $0 i32) + block $break|0 + block $case3|0 + block $case2|0 + block $case1|0 + global.get $~lib/collector/itcm/state + local.tee $0 + if + local.get $0 + i32.const 1 + i32.sub + br_table $case1|0 $case2|0 $case3|0 $break|0 + end + unreachable + end + call $~lib/runtime/__gc_mark_roots + i32.const 2 + global.set $~lib/collector/itcm/state + br $break|0 + end + global.get $~lib/collector/itcm/iter + i32.load offset=8 + i32.const -4 + i32.and + local.tee $0 + global.get $~lib/collector/itcm/toSpace + i32.ne + if + local.get $0 + global.set $~lib/collector/itcm/iter + local.get $0 + global.get $~lib/collector/itcm/white + i32.eqz + local.get $0 + i32.load offset=8 + i32.const -4 + i32.and + i32.or + i32.store offset=8 + block $__inlined_func$~lib/runtime/__gc_mark_members + block $invalid + local.get $0 + i32.load + i32.const 1 + i32.sub + br_table $__inlined_func$~lib/runtime/__gc_mark_members $__inlined_func$~lib/runtime/__gc_mark_members $__inlined_func$~lib/runtime/__gc_mark_members $invalid + end + unreachable + end + else + call $~lib/runtime/__gc_mark_roots + global.get $~lib/collector/itcm/toSpace + global.get $~lib/collector/itcm/iter + i32.load offset=8 + i32.const -4 + i32.and + i32.eq + if + global.get $~lib/collector/itcm/fromSpace + local.set $0 + global.get $~lib/collector/itcm/toSpace + global.set $~lib/collector/itcm/fromSpace + local.get $0 + global.set $~lib/collector/itcm/toSpace + global.get $~lib/collector/itcm/white + i32.eqz + global.set $~lib/collector/itcm/white + local.get $0 + i32.load offset=8 + i32.const -4 + i32.and + global.set $~lib/collector/itcm/iter + i32.const 3 + global.set $~lib/collector/itcm/state + end + end + br $break|0 + end + global.get $~lib/collector/itcm/iter + local.tee $0 + global.get $~lib/collector/itcm/toSpace + i32.ne + if + local.get $0 + i32.load offset=8 + i32.const -4 + i32.and + global.set $~lib/collector/itcm/iter + local.get $0 + i32.const 152 + i32.ge_u + if + local.get $0 + call $~lib/allocator/tlsf/__mem_free + end + else + global.get $~lib/collector/itcm/toSpace + local.tee $0 + local.get $0 + i32.store offset=8 + local.get $0 + local.get $0 + i32.store offset=12 + i32.const 1 + global.set $~lib/collector/itcm/state + end + end + ) + (func $~lib/collector/itcm/__ref_collect (; 34 ;) (type $FUNCSIG$v) + call $~lib/collector/itcm/maybeInit + loop $continue|0 + global.get $~lib/collector/itcm/state + i32.const 1 + i32.ne + if + call $~lib/collector/itcm/step + br $continue|0 + end + end + loop $continue|1 + call $~lib/collector/itcm/step + global.get $~lib/collector/itcm/state + i32.const 1 + i32.ne + br_if $continue|1 + end + ) + (func $~lib/runtime/runtime.collect (; 35 ;) (type $FUNCSIG$v) + call $~lib/collector/itcm/__ref_collect + ) + (func $start (; 36 ;) (type $FUNCSIG$v) + i32.const 0 + call $~lib/runtime/runtime.allocate + i32.const 3 + call $~lib/runtime/runtime.register + global.set $~lib/runtime/ROOT + ) + (func $~lib/runtime/__gc_mark_roots (; 37 ;) (type $FUNCSIG$v) + (local $0 i32) + global.get $~lib/runtime/ROOT + local.tee $0 + if + call $~lib/collector/itcm/maybeInit + global.get $~lib/collector/itcm/white + local.get $0 + i32.const 16 + i32.sub + local.tee $0 + i32.load offset=8 + i32.const 3 + i32.and + i32.eq + if + local.get $0 + call $~lib/collector/itcm/ManagedObject#makeGray + end + end + ) + (func $~lib/runtime/__runtime_instanceof (; 38 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + block $nope + block $~lib/runtime/Root + block $~lib/arraybuffer/ArrayBuffer + block $~lib/string/String + local.get $0 + i32.const 1 + i32.sub + br_table $~lib/string/String $~lib/arraybuffer/ArrayBuffer $~lib/runtime/Root $nope + end + local.get $1 + i32.const 1 + i32.eq + return + end + local.get $1 + i32.const 2 + i32.eq + return + end + local.get $1 + i32.const 3 + i32.eq + return + end + i32.const 0 + ) + (func $null (; 39 ;) (type $FUNCSIG$v) + nop + ) + (func $~lib/runtime/runtime.newArray|trampoline (; 40 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + block $1of1 + block $0of1 + block $outOfRange + global.get $~lib/argc + i32.const 3 + i32.sub + br_table $0of1 $1of1 $outOfRange + end + unreachable + end + i32.const 0 + local.set $3 + end + local.get $0 + local.get $1 + local.get $2 + local.get $3 + call $~lib/runtime/runtime.newArray + ) + (func $~lib/setargc (; 41 ;) (type $FUNCSIG$vi) (param $0 i32) + local.get $0 + global.set $~lib/argc + ) ) diff --git a/tests/compiler/class.untouched.wat b/tests/compiler/class.untouched.wat index 183f889b..bf4c176f 100644 --- a/tests/compiler/class.untouched.wat +++ b/tests/compiler/class.untouched.wat @@ -6,17 +6,61 @@ (type $FUNCSIG$ii (func (param i32) (result i32))) (type $FUNCSIG$iiii (func (param i32 i32 i32) (result i32))) (type $FUNCSIG$fiff (func (param i32 f32 f32) (result f32))) + (type $FUNCSIG$vii (func (param i32 i32))) + (type $FUNCSIG$viii (func (param i32 i32 i32))) + (type $FUNCSIG$vi (func (param i32))) + (type $FUNCSIG$iiiii (func (param i32 i32 i32 i32) (result i32))) (import "env" "abort" (func $~lib/env/abort (param i32 i32 i32 i32))) (memory $0 1) (data (i32.const 8) "\01\00\00\00\10\00\00\00\00\00\00\00\00\00\00\00c\00l\00a\00s\00s\00.\00t\00s\00") + (data (i32.const 40) "\01\00\00\00,\00\00\00\00\00\00\00\00\00\00\00~\00l\00i\00b\00/\00a\00l\00l\00o\00c\00a\00t\00o\00r\00/\00t\00l\00s\00f\00.\00t\00s\00") + (data (i32.const 104) "\01\00\00\00\1e\00\00\00\00\00\00\00\00\00\00\00~\00l\00i\00b\00/\00r\00u\00n\00t\00i\00m\00e\00.\00t\00s\00") (table $0 1 funcref) (elem (i32.const 0) $null) (global $class/Animal.ONE (mut i32) (i32.const 1)) - (global $~lib/memory/HEAP_BASE i32 (i32.const 40)) + (global $~lib/util/runtime/HEADER_SIZE i32 (i32.const 16)) + (global $~lib/allocator/tlsf/ROOT (mut i32) (i32.const 0)) + (global $~lib/allocator/tlsf/Root.SL_START i32 (i32.const 4)) + (global $~lib/allocator/tlsf/SL_BITS i32 (i32.const 5)) + (global $~lib/allocator/tlsf/SB_BITS i32 (i32.const 8)) + (global $~lib/allocator/tlsf/FL_BITS i32 (i32.const 22)) + (global $~lib/allocator/tlsf/Root.SL_END i32 (i32.const 92)) + (global $~lib/allocator/tlsf/Root.HL_START i32 (i32.const 96)) + (global $~lib/allocator/tlsf/SL_SIZE i32 (i32.const 32)) + (global $~lib/allocator/tlsf/Root.HL_END i32 (i32.const 2912)) + (global $~lib/allocator/tlsf/Root.SIZE i32 (i32.const 2916)) + (global $~lib/allocator/tlsf/Block.INFO i32 (i32.const 8)) + (global $~lib/allocator/tlsf/Block.MIN_SIZE i32 (i32.const 16)) + (global $~lib/allocator/tlsf/FREE i32 (i32.const 1)) + (global $~lib/allocator/tlsf/LEFT_FREE i32 (i32.const 2)) + (global $~lib/allocator/tlsf/TAGS i32 (i32.const 3)) + (global $~lib/allocator/tlsf/Block.MAX_SIZE i32 (i32.const 1073741824)) + (global $~lib/allocator/tlsf/SB_SIZE i32 (i32.const 256)) + (global $~lib/util/runtime/HEADER_MAGIC i32 (i32.const -1520547049)) + (global $~lib/ASC_NO_ASSERT i32 (i32.const 0)) + (global $~lib/collector/itcm/state (mut i32) (i32.const 0)) + (global $~lib/collector/itcm/fromSpace (mut i32) (i32.const 0)) + (global $~lib/collector/itcm/toSpace (mut i32) (i32.const 0)) + (global $~lib/collector/itcm/iter (mut i32) (i32.const 0)) + (global $~lib/collector/itcm/white (mut i32) (i32.const 0)) + (global $~lib/runtime/ROOT (mut i32) (i32.const 0)) + (global $~lib/memory/HEAP_BASE i32 (i32.const 152)) + (global $~lib/argc (mut i32) (i32.const 0)) (global $~lib/capabilities i32 (i32.const 2)) (export "memory" (memory $0)) (export "table" (table $0)) (export "test" (func $class/test)) + (export "runtime.instanceof" (func $~lib/runtime/runtime.instanceof)) + (export "runtime.allocate" (func $~lib/runtime/runtime.allocate)) + (export "runtime.discard" (func $~lib/runtime/runtime.discard)) + (export "runtime.register" (func $~lib/runtime/runtime.register)) + (export "runtime.newString" (func $~lib/runtime/runtime.newString)) + (export "runtime.newArrayBuffer" (func $~lib/runtime/runtime.newArrayBuffer)) + (export ".setargc" (func $~lib/setargc)) + (export "runtime.newArray" (func $~lib/runtime/runtime.newArray|trampoline)) + (export "runtime.retain" (func $~lib/runtime/runtime.retain)) + (export "runtime.release" (func $~lib/runtime/runtime.release)) + (export "runtime.collect" (func $~lib/runtime/runtime.collect)) (export ".capabilities" (global $~lib/capabilities)) (start $start) (func $class/Animal.add (; 1 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) @@ -118,9 +162,2283 @@ local.set $2 local.get $2 ) - (func $start (; 7 ;) (type $FUNCSIG$v) - call $start:class + (func $~lib/runtime/runtime.instanceof (; 7 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + local.get $0 + if (result i32) + local.get $0 + global.get $~lib/util/runtime/HEADER_SIZE + i32.sub + i32.load + local.get $1 + call $~lib/runtime/__runtime_instanceof + else + i32.const 0 + end ) - (func $null (; 8 ;) (type $FUNCSIG$v) + (func $~lib/util/runtime/adjust (; 8 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + i32.const 1 + i32.const 32 + local.get $0 + global.get $~lib/util/runtime/HEADER_SIZE + i32.add + i32.const 1 + i32.sub + i32.clz + i32.sub + i32.shl + ) + (func $~lib/allocator/tlsf/Root#set:tailRef (; 9 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + i32.const 0 + local.get $1 + i32.store offset=2912 + ) + (func $~lib/allocator/tlsf/Root#setSLMap (; 10 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + local.get $1 + global.get $~lib/allocator/tlsf/FL_BITS + i32.lt_u + i32.eqz + if + i32.const 0 + i32.const 56 + i32.const 159 + i32.const 4 + call $~lib/env/abort + unreachable + end + local.get $0 + local.get $1 + i32.const 4 + i32.mul + i32.add + local.get $2 + i32.store offset=4 + ) + (func $~lib/allocator/tlsf/Root#setHead (; 11 ;) (type $FUNCSIG$viiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) + local.get $1 + global.get $~lib/allocator/tlsf/FL_BITS + i32.lt_u + i32.eqz + if + i32.const 0 + i32.const 56 + i32.const 184 + i32.const 4 + call $~lib/env/abort + unreachable + end + local.get $2 + global.get $~lib/allocator/tlsf/SL_SIZE + i32.lt_u + i32.eqz + if + i32.const 0 + i32.const 56 + i32.const 185 + i32.const 4 + call $~lib/env/abort + unreachable + end + local.get $0 + local.get $1 + global.get $~lib/allocator/tlsf/SL_SIZE + i32.mul + local.get $2 + i32.add + i32.const 4 + i32.mul + i32.add + local.get $3 + i32.store offset=96 + ) + (func $~lib/allocator/tlsf/Root#get:tailRef (; 12 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + i32.const 0 + i32.load offset=2912 + ) + (func $~lib/allocator/tlsf/Block#get:right (; 13 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + local.get $0 + i32.load + global.get $~lib/allocator/tlsf/TAGS + i32.const -1 + i32.xor + i32.and + i32.eqz + if + i32.const 0 + i32.const 56 + i32.const 104 + i32.const 4 + call $~lib/env/abort + unreachable + end + local.get $0 + global.get $~lib/allocator/tlsf/Block.INFO + i32.add + local.get $0 + i32.load + global.get $~lib/allocator/tlsf/TAGS + i32.const -1 + i32.xor + i32.and + i32.add + local.tee $1 + i32.eqz + if (result i32) + i32.const 0 + i32.const 56 + i32.const 105 + i32.const 11 + call $~lib/env/abort + unreachable + else + local.get $1 + end + ) + (func $~lib/allocator/tlsf/fls (; 14 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + i32.const 0 + i32.ne + i32.eqz + if + i32.const 0 + i32.const 56 + i32.const 447 + i32.const 2 + call $~lib/env/abort + unreachable + end + i32.const 31 + local.get $0 + i32.clz + i32.sub + ) + (func $~lib/allocator/tlsf/Root#getHead (; 15 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + local.get $1 + global.get $~lib/allocator/tlsf/FL_BITS + i32.lt_u + i32.eqz + if + i32.const 0 + i32.const 56 + i32.const 175 + i32.const 4 + call $~lib/env/abort + unreachable + end + local.get $2 + global.get $~lib/allocator/tlsf/SL_SIZE + i32.lt_u + i32.eqz + if + i32.const 0 + i32.const 56 + i32.const 176 + i32.const 4 + call $~lib/env/abort + unreachable + end + local.get $0 + local.get $1 + global.get $~lib/allocator/tlsf/SL_SIZE + i32.mul + local.get $2 + i32.add + i32.const 4 + i32.mul + i32.add + i32.load offset=96 + ) + (func $~lib/allocator/tlsf/Root#getSLMap (; 16 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + local.get $1 + global.get $~lib/allocator/tlsf/FL_BITS + i32.lt_u + i32.eqz + if + i32.const 0 + i32.const 56 + i32.const 153 + i32.const 4 + call $~lib/env/abort + unreachable + end + local.get $0 + local.get $1 + i32.const 4 + i32.mul + i32.add + i32.load offset=4 + ) + (func $~lib/allocator/tlsf/Root#remove (; 17 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + local.get $1 + i32.load + local.set $2 + local.get $2 + global.get $~lib/allocator/tlsf/FREE + i32.and + i32.eqz + if + i32.const 0 + i32.const 56 + i32.const 277 + i32.const 4 + call $~lib/env/abort + unreachable + end + local.get $2 + global.get $~lib/allocator/tlsf/TAGS + i32.const -1 + i32.xor + i32.and + local.set $3 + local.get $3 + global.get $~lib/allocator/tlsf/Block.MIN_SIZE + i32.ge_u + local.tee $4 + if (result i32) + local.get $3 + global.get $~lib/allocator/tlsf/Block.MAX_SIZE + i32.lt_u + else + local.get $4 + end + i32.eqz + if + i32.const 0 + i32.const 56 + i32.const 279 + i32.const 4 + call $~lib/env/abort + unreachable + end + local.get $3 + global.get $~lib/allocator/tlsf/SB_SIZE + i32.lt_u + if + i32.const 0 + local.set $5 + local.get $3 + i32.const 8 + i32.div_u + local.set $6 + else + local.get $3 + call $~lib/allocator/tlsf/fls + local.set $5 + local.get $3 + local.get $5 + global.get $~lib/allocator/tlsf/SL_BITS + i32.sub + i32.shr_u + i32.const 1 + global.get $~lib/allocator/tlsf/SL_BITS + i32.shl + i32.xor + local.set $6 + local.get $5 + global.get $~lib/allocator/tlsf/SB_BITS + i32.const 1 + i32.sub + i32.sub + local.set $5 + end + local.get $1 + i32.load offset=4 + local.set $7 + local.get $1 + i32.load offset=8 + local.set $8 + local.get $7 + if + local.get $7 + local.get $8 + i32.store offset=8 + end + local.get $8 + if + local.get $8 + local.get $7 + i32.store offset=4 + end + local.get $1 + local.get $0 + local.get $5 + local.get $6 + call $~lib/allocator/tlsf/Root#getHead + i32.eq + if + local.get $0 + local.get $5 + local.get $6 + local.get $8 + call $~lib/allocator/tlsf/Root#setHead + local.get $8 + i32.eqz + if + local.get $0 + local.get $5 + call $~lib/allocator/tlsf/Root#getSLMap + local.set $4 + local.get $0 + local.get $5 + local.get $4 + i32.const 1 + local.get $6 + i32.shl + i32.const -1 + i32.xor + i32.and + local.tee $4 + call $~lib/allocator/tlsf/Root#setSLMap + local.get $4 + i32.eqz + if + local.get $0 + local.get $0 + i32.load + i32.const 1 + local.get $5 + i32.shl + i32.const -1 + i32.xor + i32.and + i32.store + end + end + end + ) + (func $~lib/allocator/tlsf/Block#get:left (; 18 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + local.get $0 + i32.load + global.get $~lib/allocator/tlsf/LEFT_FREE + i32.and + i32.eqz + if + i32.const 0 + i32.const 56 + i32.const 96 + i32.const 4 + call $~lib/env/abort + unreachable + end + local.get $0 + i32.const 4 + i32.sub + i32.load + local.tee $1 + i32.eqz + if (result i32) + i32.const 0 + i32.const 56 + i32.const 97 + i32.const 11 + call $~lib/env/abort + unreachable + else + local.get $1 + end + ) + (func $~lib/allocator/tlsf/Root#setJump (; 19 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + local.get $1 + i32.load + global.get $~lib/allocator/tlsf/FREE + i32.and + i32.eqz + if + i32.const 0 + i32.const 56 + i32.const 353 + i32.const 4 + call $~lib/env/abort + unreachable + end + local.get $1 + call $~lib/allocator/tlsf/Block#get:right + local.get $2 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 56 + i32.const 354 + i32.const 4 + call $~lib/env/abort + unreachable + end + local.get $2 + i32.load + global.get $~lib/allocator/tlsf/LEFT_FREE + i32.and + i32.eqz + if + i32.const 0 + i32.const 56 + i32.const 355 + i32.const 4 + call $~lib/env/abort + unreachable + end + local.get $2 + i32.const 4 + i32.sub + local.get $1 + i32.store + ) + (func $~lib/allocator/tlsf/Root#insert (; 20 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + (local $10 i32) + local.get $1 + i32.eqz + if + i32.const 0 + i32.const 56 + i32.const 208 + i32.const 4 + call $~lib/env/abort + unreachable + end + local.get $1 + i32.load + local.set $2 + local.get $2 + global.get $~lib/allocator/tlsf/FREE + i32.and + i32.eqz + if + i32.const 0 + i32.const 56 + i32.const 210 + i32.const 4 + call $~lib/env/abort + unreachable + end + local.get $1 + i32.load + global.get $~lib/allocator/tlsf/TAGS + i32.const -1 + i32.xor + i32.and + local.tee $3 + global.get $~lib/allocator/tlsf/Block.MIN_SIZE + i32.ge_u + local.tee $4 + if (result i32) + local.get $3 + global.get $~lib/allocator/tlsf/Block.MAX_SIZE + i32.lt_u + else + local.get $4 + end + i32.eqz + if + i32.const 0 + i32.const 56 + i32.const 212 + i32.const 4 + call $~lib/env/abort + unreachable + end + local.get $1 + call $~lib/allocator/tlsf/Block#get:right + local.tee $4 + i32.eqz + if (result i32) + i32.const 0 + i32.const 56 + i32.const 216 + i32.const 23 + call $~lib/env/abort + unreachable + else + local.get $4 + end + local.set $5 + local.get $5 + i32.load + local.set $6 + local.get $6 + global.get $~lib/allocator/tlsf/FREE + i32.and + if + local.get $0 + local.get $5 + call $~lib/allocator/tlsf/Root#remove + local.get $1 + local.get $2 + global.get $~lib/allocator/tlsf/Block.INFO + local.get $6 + global.get $~lib/allocator/tlsf/TAGS + i32.const -1 + i32.xor + i32.and + i32.add + i32.add + local.tee $2 + i32.store + local.get $1 + call $~lib/allocator/tlsf/Block#get:right + local.set $5 + local.get $5 + i32.load + local.set $6 + end + local.get $2 + global.get $~lib/allocator/tlsf/LEFT_FREE + i32.and + if + local.get $1 + call $~lib/allocator/tlsf/Block#get:left + local.tee $4 + i32.eqz + if (result i32) + i32.const 0 + i32.const 56 + i32.const 230 + i32.const 24 + call $~lib/env/abort + unreachable + else + local.get $4 + end + local.set $4 + local.get $4 + i32.load + local.set $7 + local.get $7 + global.get $~lib/allocator/tlsf/FREE + i32.and + i32.eqz + if + i32.const 0 + i32.const 56 + i32.const 232 + i32.const 6 + call $~lib/env/abort + unreachable + end + local.get $0 + local.get $4 + call $~lib/allocator/tlsf/Root#remove + local.get $4 + local.get $7 + global.get $~lib/allocator/tlsf/Block.INFO + local.get $2 + global.get $~lib/allocator/tlsf/TAGS + i32.const -1 + i32.xor + i32.and + i32.add + i32.add + local.tee $7 + i32.store + local.get $4 + local.set $1 + local.get $7 + local.set $2 + end + local.get $5 + local.get $6 + global.get $~lib/allocator/tlsf/LEFT_FREE + i32.or + i32.store + local.get $0 + local.get $1 + local.get $5 + call $~lib/allocator/tlsf/Root#setJump + local.get $2 + global.get $~lib/allocator/tlsf/TAGS + i32.const -1 + i32.xor + i32.and + local.set $3 + local.get $3 + global.get $~lib/allocator/tlsf/Block.MIN_SIZE + i32.ge_u + local.tee $7 + if (result i32) + local.get $3 + global.get $~lib/allocator/tlsf/Block.MAX_SIZE + i32.lt_u + else + local.get $7 + end + i32.eqz + if + i32.const 0 + i32.const 56 + i32.const 245 + i32.const 4 + call $~lib/env/abort + unreachable + end + local.get $3 + global.get $~lib/allocator/tlsf/SB_SIZE + i32.lt_u + if + i32.const 0 + local.set $8 + local.get $3 + i32.const 8 + i32.div_u + local.set $9 + else + local.get $3 + call $~lib/allocator/tlsf/fls + local.set $8 + local.get $3 + local.get $8 + global.get $~lib/allocator/tlsf/SL_BITS + i32.sub + i32.shr_u + i32.const 1 + global.get $~lib/allocator/tlsf/SL_BITS + i32.shl + i32.xor + local.set $9 + local.get $8 + global.get $~lib/allocator/tlsf/SB_BITS + i32.const 1 + i32.sub + i32.sub + local.set $8 + end + local.get $0 + local.get $8 + local.get $9 + call $~lib/allocator/tlsf/Root#getHead + local.set $10 + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + local.get $10 + i32.store offset=8 + local.get $10 + if + local.get $10 + local.get $1 + i32.store offset=4 + end + local.get $0 + local.get $8 + local.get $9 + local.get $1 + call $~lib/allocator/tlsf/Root#setHead + local.get $0 + local.get $0 + i32.load + i32.const 1 + local.get $8 + i32.shl + i32.or + i32.store + local.get $0 + local.get $8 + local.get $0 + local.get $8 + call $~lib/allocator/tlsf/Root#getSLMap + i32.const 1 + local.get $9 + i32.shl + i32.or + call $~lib/allocator/tlsf/Root#setSLMap + ) + (func $~lib/allocator/tlsf/Root#addMemory (; 21 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + local.get $1 + local.get $2 + i32.le_u + i32.eqz + if + i32.const 0 + i32.const 56 + i32.const 396 + i32.const 4 + call $~lib/env/abort + unreachable + end + local.get $1 + i32.const 7 + i32.and + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 56 + i32.const 397 + i32.const 4 + call $~lib/env/abort + unreachable + end + local.get $2 + i32.const 7 + i32.and + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 56 + i32.const 398 + i32.const 4 + call $~lib/env/abort + unreachable + end + local.get $0 + call $~lib/allocator/tlsf/Root#get:tailRef + local.set $3 + i32.const 0 + local.set $4 + local.get $3 + if + local.get $1 + local.get $3 + i32.const 4 + i32.add + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 56 + i32.const 403 + i32.const 6 + call $~lib/env/abort + unreachable + end + local.get $1 + global.get $~lib/allocator/tlsf/Block.INFO + i32.sub + local.get $3 + i32.eq + if + local.get $1 + global.get $~lib/allocator/tlsf/Block.INFO + i32.sub + local.set $1 + local.get $3 + i32.load + local.set $4 + end + else + local.get $1 + local.get $0 + global.get $~lib/allocator/tlsf/Root.SIZE + i32.add + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 56 + i32.const 412 + i32.const 6 + call $~lib/env/abort + unreachable + end + end + local.get $2 + local.get $1 + i32.sub + local.set $5 + local.get $5 + global.get $~lib/allocator/tlsf/Block.INFO + global.get $~lib/allocator/tlsf/Block.MIN_SIZE + i32.add + global.get $~lib/allocator/tlsf/Block.INFO + i32.add + i32.lt_u + if + i32.const 0 + return + end + local.get $5 + i32.const 2 + global.get $~lib/allocator/tlsf/Block.INFO + i32.mul + i32.sub + local.set $6 + local.get $1 + local.set $7 + local.get $7 + local.get $6 + global.get $~lib/allocator/tlsf/FREE + i32.or + local.get $4 + global.get $~lib/allocator/tlsf/LEFT_FREE + i32.and + i32.or + i32.store + local.get $7 + i32.const 0 + i32.store offset=4 + local.get $7 + i32.const 0 + i32.store offset=8 + local.get $1 + local.get $5 + i32.add + global.get $~lib/allocator/tlsf/Block.INFO + i32.sub + local.set $8 + local.get $8 + i32.const 0 + global.get $~lib/allocator/tlsf/LEFT_FREE + i32.or + i32.store + local.get $0 + local.get $8 + call $~lib/allocator/tlsf/Root#set:tailRef + local.get $0 + local.get $7 + call $~lib/allocator/tlsf/Root#insert + i32.const 1 + ) + (func $~lib/allocator/tlsf/ffs (; 22 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + i32.const 0 + i32.ne + i32.eqz + if + i32.const 0 + i32.const 56 + i32.const 441 + i32.const 2 + call $~lib/env/abort + unreachable + end + local.get $0 + i32.ctz + ) + (func $~lib/allocator/tlsf/ffs (; 23 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + i32.const 0 + i32.ne + i32.eqz + if + i32.const 0 + i32.const 56 + i32.const 441 + i32.const 2 + call $~lib/env/abort + unreachable + end + local.get $0 + i32.ctz + ) + (func $~lib/allocator/tlsf/Root#search (; 24 ;) (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) + (local $7 i32) + local.get $1 + global.get $~lib/allocator/tlsf/Block.MIN_SIZE + i32.ge_u + local.tee $2 + if (result i32) + local.get $1 + global.get $~lib/allocator/tlsf/Block.MAX_SIZE + i32.lt_u + else + local.get $2 + end + i32.eqz + if + i32.const 0 + i32.const 56 + i32.const 315 + i32.const 4 + call $~lib/env/abort + unreachable + end + local.get $1 + global.get $~lib/allocator/tlsf/SB_SIZE + i32.lt_u + if + i32.const 0 + local.set $3 + local.get $1 + i32.const 8 + i32.div_u + local.set $4 + else + local.get $1 + call $~lib/allocator/tlsf/fls + local.set $3 + local.get $1 + local.get $3 + global.get $~lib/allocator/tlsf/SL_BITS + i32.sub + i32.shr_u + i32.const 1 + global.get $~lib/allocator/tlsf/SL_BITS + i32.shl + i32.xor + local.set $4 + local.get $3 + global.get $~lib/allocator/tlsf/SB_BITS + i32.const 1 + i32.sub + i32.sub + local.set $3 + local.get $4 + global.get $~lib/allocator/tlsf/SL_SIZE + i32.const 1 + i32.sub + i32.lt_u + if + local.get $4 + i32.const 1 + i32.add + local.set $4 + else + local.get $3 + i32.const 1 + i32.add + local.set $3 + i32.const 0 + local.set $4 + end + end + local.get $0 + local.get $3 + call $~lib/allocator/tlsf/Root#getSLMap + i32.const 0 + i32.const -1 + i32.xor + local.get $4 + i32.shl + i32.and + local.set $5 + local.get $5 + i32.eqz + if + local.get $0 + i32.load + i32.const 0 + i32.const -1 + i32.xor + local.get $3 + i32.const 1 + i32.add + i32.shl + i32.and + local.set $2 + local.get $2 + i32.eqz + if + i32.const 0 + local.set $6 + else + local.get $2 + call $~lib/allocator/tlsf/ffs + local.set $3 + local.get $0 + local.get $3 + call $~lib/allocator/tlsf/Root#getSLMap + local.tee $7 + if (result i32) + local.get $7 + else + i32.const 0 + i32.const 56 + i32.const 342 + i32.const 16 + call $~lib/env/abort + unreachable + end + local.set $5 + local.get $0 + local.get $3 + local.get $5 + call $~lib/allocator/tlsf/ffs + call $~lib/allocator/tlsf/Root#getHead + local.set $6 + end + else + local.get $0 + local.get $3 + local.get $5 + call $~lib/allocator/tlsf/ffs + call $~lib/allocator/tlsf/Root#getHead + local.set $6 + end + local.get $6 + ) + (func $~lib/allocator/tlsf/Root#use (; 25 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $1 + i32.load + local.set $3 + local.get $3 + global.get $~lib/allocator/tlsf/FREE + i32.and + i32.eqz + if + i32.const 0 + i32.const 56 + i32.const 367 + i32.const 4 + call $~lib/env/abort + unreachable + end + local.get $2 + global.get $~lib/allocator/tlsf/Block.MIN_SIZE + i32.ge_u + local.tee $4 + if (result i32) + local.get $2 + global.get $~lib/allocator/tlsf/Block.MAX_SIZE + i32.lt_u + else + local.get $4 + end + i32.eqz + if + i32.const 0 + i32.const 56 + i32.const 368 + i32.const 4 + call $~lib/env/abort + unreachable + end + local.get $2 + i32.const 7 + i32.and + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 56 + i32.const 369 + i32.const 4 + call $~lib/env/abort + unreachable + end + local.get $0 + local.get $1 + call $~lib/allocator/tlsf/Root#remove + local.get $3 + global.get $~lib/allocator/tlsf/TAGS + i32.const -1 + i32.xor + i32.and + local.get $2 + i32.sub + local.set $5 + local.get $5 + global.get $~lib/allocator/tlsf/Block.INFO + global.get $~lib/allocator/tlsf/Block.MIN_SIZE + i32.add + i32.ge_u + if + local.get $1 + local.get $2 + local.get $3 + global.get $~lib/allocator/tlsf/LEFT_FREE + i32.and + i32.or + i32.store + local.get $1 + global.get $~lib/allocator/tlsf/Block.INFO + i32.add + local.get $2 + i32.add + local.set $4 + local.get $4 + local.get $5 + global.get $~lib/allocator/tlsf/Block.INFO + i32.sub + global.get $~lib/allocator/tlsf/FREE + i32.or + i32.store + local.get $0 + local.get $4 + call $~lib/allocator/tlsf/Root#insert + else + local.get $1 + local.get $3 + global.get $~lib/allocator/tlsf/FREE + i32.const -1 + i32.xor + i32.and + i32.store + local.get $1 + call $~lib/allocator/tlsf/Block#get:right + local.tee $4 + i32.eqz + if (result i32) + i32.const 0 + i32.const 56 + i32.const 387 + i32.const 25 + call $~lib/env/abort + unreachable + else + local.get $4 + end + local.set $4 + local.get $4 + local.get $4 + i32.load + global.get $~lib/allocator/tlsf/LEFT_FREE + i32.const -1 + i32.xor + i32.and + i32.store + end + local.get $1 + global.get $~lib/allocator/tlsf/Block.INFO + i32.add + ) + (func $~lib/allocator/tlsf/__mem_allocate (; 26 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + global.get $~lib/allocator/tlsf/ROOT + local.set $1 + local.get $1 + i32.eqz + if + global.get $~lib/memory/HEAP_BASE + i32.const 7 + i32.add + i32.const 7 + i32.const -1 + i32.xor + i32.and + local.set $2 + current_memory + local.set $3 + local.get $2 + global.get $~lib/allocator/tlsf/Root.SIZE + i32.add + i32.const 65535 + i32.add + i32.const 65535 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.shr_u + local.set $4 + local.get $4 + local.get $3 + i32.gt_s + local.tee $5 + if (result i32) + local.get $4 + local.get $3 + i32.sub + grow_memory + i32.const 0 + i32.lt_s + else + local.get $5 + end + if + unreachable + end + local.get $2 + local.tee $1 + global.set $~lib/allocator/tlsf/ROOT + local.get $1 + i32.const 0 + call $~lib/allocator/tlsf/Root#set:tailRef + local.get $1 + i32.const 0 + i32.store + block $break|0 + i32.const 0 + local.set $5 + loop $repeat|0 + local.get $5 + global.get $~lib/allocator/tlsf/FL_BITS + i32.lt_u + i32.eqz + br_if $break|0 + block + local.get $1 + local.get $5 + i32.const 0 + call $~lib/allocator/tlsf/Root#setSLMap + block $break|1 + i32.const 0 + local.set $6 + loop $repeat|1 + local.get $6 + global.get $~lib/allocator/tlsf/SL_SIZE + i32.lt_u + i32.eqz + br_if $break|1 + local.get $1 + local.get $5 + local.get $6 + i32.const 0 + call $~lib/allocator/tlsf/Root#setHead + local.get $6 + i32.const 1 + i32.add + local.set $6 + br $repeat|1 + unreachable + end + unreachable + end + end + local.get $5 + i32.const 1 + i32.add + local.set $5 + br $repeat|0 + unreachable + end + unreachable + end + local.get $1 + local.get $2 + global.get $~lib/allocator/tlsf/Root.SIZE + i32.add + i32.const 7 + i32.add + i32.const 7 + i32.const -1 + i32.xor + i32.and + current_memory + i32.const 16 + i32.shl + call $~lib/allocator/tlsf/Root#addMemory + drop + end + local.get $0 + global.get $~lib/allocator/tlsf/Block.MAX_SIZE + i32.gt_u + if + unreachable + end + local.get $0 + i32.const 7 + i32.add + i32.const 7 + i32.const -1 + i32.xor + i32.and + local.tee $4 + global.get $~lib/allocator/tlsf/Block.MIN_SIZE + local.tee $3 + local.get $4 + local.get $3 + i32.gt_u + select + local.set $0 + local.get $1 + local.get $0 + call $~lib/allocator/tlsf/Root#search + local.set $7 + local.get $7 + i32.eqz + if + current_memory + local.set $4 + local.get $0 + i32.const 65535 + i32.add + i32.const 65535 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.shr_u + local.set $3 + local.get $4 + local.tee $2 + local.get $3 + local.tee $5 + local.get $2 + local.get $5 + i32.gt_s + select + local.set $2 + local.get $2 + grow_memory + i32.const 0 + i32.lt_s + if + local.get $3 + grow_memory + i32.const 0 + i32.lt_s + if + unreachable + end + end + current_memory + local.set $5 + local.get $1 + local.get $4 + i32.const 16 + i32.shl + local.get $5 + i32.const 16 + i32.shl + call $~lib/allocator/tlsf/Root#addMemory + drop + local.get $1 + local.get $0 + call $~lib/allocator/tlsf/Root#search + local.tee $6 + i32.eqz + if (result i32) + i32.const 0 + i32.const 56 + i32.const 502 + i32.const 12 + call $~lib/env/abort + unreachable + else + local.get $6 + end + local.set $7 + end + local.get $7 + i32.load + global.get $~lib/allocator/tlsf/TAGS + i32.const -1 + i32.xor + i32.and + local.get $0 + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 56 + i32.const 505 + i32.const 2 + call $~lib/env/abort + unreachable + end + local.get $1 + local.get $7 + local.get $0 + call $~lib/allocator/tlsf/Root#use + ) + (func $~lib/memory/memory.allocate (; 27 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + call $~lib/allocator/tlsf/__mem_allocate + return + ) + (func $~lib/runtime/runtime.allocate (; 28 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + local.get $0 + call $~lib/util/runtime/adjust + call $~lib/memory/memory.allocate + local.set $1 + local.get $1 + global.get $~lib/util/runtime/HEADER_MAGIC + i32.store + local.get $1 + local.get $0 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.store offset=8 + local.get $1 + i32.const 0 + i32.store offset=12 + local.get $1 + global.get $~lib/util/runtime/HEADER_SIZE + i32.add + ) + (func $~lib/allocator/tlsf/__mem_free (; 29 ;) (type $FUNCSIG$vi) (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + local.get $0 + if + global.get $~lib/allocator/tlsf/ROOT + local.set $1 + local.get $1 + if + local.get $0 + global.get $~lib/allocator/tlsf/Block.INFO + i32.sub + local.set $2 + local.get $2 + i32.load + local.set $3 + local.get $3 + global.get $~lib/allocator/tlsf/FREE + i32.and + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 56 + i32.const 518 + i32.const 6 + call $~lib/env/abort + unreachable + end + local.get $2 + local.get $3 + global.get $~lib/allocator/tlsf/FREE + i32.or + i32.store + local.get $1 + local.get $0 + global.get $~lib/allocator/tlsf/Block.INFO + i32.sub + call $~lib/allocator/tlsf/Root#insert + end + end + ) + (func $~lib/memory/memory.free (; 30 ;) (type $FUNCSIG$vi) (param $0 i32) + local.get $0 + call $~lib/allocator/tlsf/__mem_free + ) + (func $~lib/runtime/runtime.discard (; 31 ;) (type $FUNCSIG$vi) (param $0 i32) + (local $1 i32) + local.get $0 + global.get $~lib/memory/HEAP_BASE + i32.gt_u + i32.eqz + if + i32.const 0 + i32.const 120 + i32.const 68 + i32.const 6 + call $~lib/env/abort + unreachable + end + local.get $0 + global.get $~lib/util/runtime/HEADER_SIZE + i32.sub + local.set $1 + local.get $1 + i32.load + global.get $~lib/util/runtime/HEADER_MAGIC + i32.eq + i32.eqz + if + i32.const 0 + i32.const 120 + i32.const 70 + i32.const 6 + call $~lib/env/abort + unreachable + end + local.get $1 + call $~lib/memory/memory.free + ) + (func $~lib/collector/itcm/ManagedObjectList#clear (; 32 ;) (type $FUNCSIG$vi) (param $0 i32) + local.get $0 + local.get $0 + i32.store offset=8 + local.get $0 + local.get $0 + i32.store offset=12 + ) + (func $~lib/collector/itcm/maybeInit (; 33 ;) (type $FUNCSIG$v) + global.get $~lib/collector/itcm/state + i32.const 0 + i32.eq + if + global.get $~lib/util/runtime/HEADER_SIZE + call $~lib/memory/memory.allocate + global.set $~lib/collector/itcm/fromSpace + global.get $~lib/collector/itcm/fromSpace + i32.const -1 + i32.store + global.get $~lib/collector/itcm/fromSpace + i32.const 0 + i32.store offset=4 + global.get $~lib/collector/itcm/fromSpace + call $~lib/collector/itcm/ManagedObjectList#clear + global.get $~lib/util/runtime/HEADER_SIZE + call $~lib/memory/memory.allocate + global.set $~lib/collector/itcm/toSpace + global.get $~lib/collector/itcm/toSpace + i32.const -1 + i32.store + global.get $~lib/collector/itcm/toSpace + i32.const 0 + i32.store offset=4 + global.get $~lib/collector/itcm/toSpace + call $~lib/collector/itcm/ManagedObjectList#clear + global.get $~lib/collector/itcm/toSpace + global.set $~lib/collector/itcm/iter + i32.const 1 + global.set $~lib/collector/itcm/state + end + ) + (func $~lib/collector/itcm/ManagedObject#set:color (; 34 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + local.get $0 + local.get $0 + i32.load offset=8 + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $1 + i32.or + i32.store offset=8 + ) + (func $~lib/collector/itcm/ManagedObject#set:next (; 35 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + local.get $0 + i32.load offset=8 + i32.const 3 + i32.and + i32.or + i32.store offset=8 + ) + (func $~lib/collector/itcm/ManagedObjectList#push (; 36 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $0 + i32.load offset=12 + local.set $2 + local.get $1 + local.get $0 + call $~lib/collector/itcm/ManagedObject#set:next + local.get $1 + local.get $2 + i32.store offset=12 + local.get $2 + local.get $1 + call $~lib/collector/itcm/ManagedObject#set:next + local.get $0 + local.get $1 + i32.store offset=12 + ) + (func $~lib/collector/itcm/__ref_register (; 37 ;) (type $FUNCSIG$vi) (param $0 i32) + (local $1 i32) + (local $2 i32) + call $~lib/collector/itcm/maybeInit + block $~lib/collector/itcm/refToObj|inlined.0 (result i32) + local.get $0 + local.set $1 + local.get $1 + global.get $~lib/util/runtime/HEADER_SIZE + i32.sub + end + local.set $2 + local.get $2 + global.get $~lib/collector/itcm/white + call $~lib/collector/itcm/ManagedObject#set:color + global.get $~lib/collector/itcm/fromSpace + local.get $2 + call $~lib/collector/itcm/ManagedObjectList#push + ) + (func $~lib/runtime/runtime.register (; 38 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $0 + global.get $~lib/memory/HEAP_BASE + i32.gt_u + i32.eqz + if + i32.const 0 + i32.const 120 + i32.const 82 + i32.const 6 + call $~lib/env/abort + unreachable + end + local.get $0 + global.get $~lib/util/runtime/HEADER_SIZE + i32.sub + local.set $2 + local.get $2 + i32.load + global.get $~lib/util/runtime/HEADER_MAGIC + i32.eq + i32.eqz + if + i32.const 0 + i32.const 120 + i32.const 84 + i32.const 6 + call $~lib/env/abort + unreachable + end + local.get $2 + local.get $1 + i32.store + local.get $0 + call $~lib/collector/itcm/__ref_register + local.get $0 + ) + (func $~lib/runtime/runtime.newString (; 39 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + i32.const 1 + i32.shl + call $~lib/runtime/runtime.allocate + i32.const 1 + call $~lib/runtime/runtime.register + ) + (func $~lib/runtime/runtime.newArrayBuffer (; 40 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + call $~lib/runtime/runtime.allocate + i32.const 2 + call $~lib/runtime/runtime.register + ) + (func $~lib/collector/itcm/ManagedObject#get:color (; 41 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + i32.load offset=8 + i32.const 3 + i32.and + ) + (func $~lib/collector/itcm/ManagedObject#get:next (; 42 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + i32.load offset=8 + i32.const 3 + i32.const -1 + i32.xor + i32.and + ) + (func $~lib/collector/itcm/ManagedObject#unlink (; 43 ;) (type $FUNCSIG$vi) (param $0 i32) + (local $1 i32) + (local $2 i32) + local.get $0 + call $~lib/collector/itcm/ManagedObject#get:next + local.set $1 + local.get $0 + i32.load offset=12 + local.set $2 + local.get $1 + local.get $2 + i32.store offset=12 + local.get $2 + local.get $1 + call $~lib/collector/itcm/ManagedObject#set:next + ) + (func $~lib/collector/itcm/ManagedObject#makeGray (; 44 ;) (type $FUNCSIG$vi) (param $0 i32) + local.get $0 + global.get $~lib/collector/itcm/iter + i32.eq + if + local.get $0 + i32.load offset=12 + global.set $~lib/collector/itcm/iter + end + local.get $0 + call $~lib/collector/itcm/ManagedObject#unlink + global.get $~lib/collector/itcm/toSpace + local.get $0 + call $~lib/collector/itcm/ManagedObjectList#push + local.get $0 + local.get $0 + i32.load offset=8 + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.const 2 + i32.or + i32.store offset=8 + ) + (func $~lib/collector/itcm/__ref_link (; 45 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + call $~lib/collector/itcm/maybeInit + block $~lib/collector/itcm/refToObj|inlined.1 (result i32) + local.get $1 + local.set $2 + local.get $2 + global.get $~lib/util/runtime/HEADER_SIZE + i32.sub + end + local.set $3 + local.get $3 + call $~lib/collector/itcm/ManagedObject#get:color + global.get $~lib/collector/itcm/white + i32.eqz + i32.eq + local.tee $2 + if (result i32) + block $~lib/collector/itcm/refToObj|inlined.3 (result i32) + local.get $0 + local.set $2 + local.get $2 + global.get $~lib/util/runtime/HEADER_SIZE + i32.sub + end + call $~lib/collector/itcm/ManagedObject#get:color + global.get $~lib/collector/itcm/white + i32.eq + else + local.get $2 + end + if + local.get $3 + call $~lib/collector/itcm/ManagedObject#makeGray + end + ) + (func $~lib/memory/memory.copy (; 46 ;) (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 $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/runtime.newArray (; 47 ;) (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) + (local $8 i32) + (local $9 i32) + i32.const 16 + call $~lib/runtime/runtime.allocate + local.get $2 + call $~lib/runtime/runtime.register + local.set $4 + local.get $0 + local.get $1 + i32.shl + local.set $5 + local.get $5 + call $~lib/runtime/runtime.allocate + i32.const 2 + call $~lib/runtime/runtime.register + local.set $6 + local.get $4 + local.tee $7 + local.get $6 + local.tee $8 + local.get $7 + i32.load + local.tee $9 + i32.ne + if (result i32) + nop + local.get $8 + local.get $7 + call $~lib/collector/itcm/__ref_link + local.get $8 + else + local.get $8 + end + 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 $3 + if + local.get $6 + local.get $3 + local.get $5 + call $~lib/memory/memory.copy + end + local.get $4 + ) + (func $~lib/runtime/Root#constructor (; 48 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + i32.eqz + if + i32.const 0 + call $~lib/runtime/runtime.allocate + i32.const 3 + call $~lib/runtime/runtime.register + local.set $0 + end + local.get $0 + ) + (func $~lib/runtime/runtime.retain (; 49 ;) (type $FUNCSIG$vi) (param $0 i32) + local.get $0 + global.get $~lib/runtime/ROOT + call $~lib/collector/itcm/__ref_link + ) + (func $~lib/runtime/runtime.release (; 50 ;) (type $FUNCSIG$vi) (param $0 i32) + nop + ) + (func $~lib/collector/itcm/step (; 51 ;) (type $FUNCSIG$v) + (local $0 i32) + (local $1 i32) + block $break|0 + block $case3|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/collector/itcm/state + local.set $1 + local.get $1 + i32.const 0 + i32.eq + br_if $case0|0 + local.get $1 + i32.const 1 + i32.eq + br_if $case1|0 + local.get $1 + i32.const 2 + i32.eq + br_if $case2|0 + local.get $1 + i32.const 3 + i32.eq + br_if $case3|0 + br $break|0 + end + unreachable + end + block + call $~lib/runtime/__gc_mark_roots + i32.const 2 + global.set $~lib/collector/itcm/state + br $break|0 + unreachable + end + unreachable + end + block + global.get $~lib/collector/itcm/iter + call $~lib/collector/itcm/ManagedObject#get:next + local.set $0 + local.get $0 + global.get $~lib/collector/itcm/toSpace + i32.ne + if + local.get $0 + global.set $~lib/collector/itcm/iter + local.get $0 + global.get $~lib/collector/itcm/white + i32.eqz + call $~lib/collector/itcm/ManagedObject#set:color + local.get $0 + i32.load + block $~lib/collector/itcm/objToRef|inlined.0 (result i32) + local.get $0 + local.set $1 + local.get $1 + global.get $~lib/util/runtime/HEADER_SIZE + i32.add + end + call $~lib/runtime/__gc_mark_members + else + call $~lib/runtime/__gc_mark_roots + global.get $~lib/collector/itcm/iter + call $~lib/collector/itcm/ManagedObject#get:next + local.set $0 + local.get $0 + global.get $~lib/collector/itcm/toSpace + i32.eq + if + global.get $~lib/collector/itcm/fromSpace + local.set $1 + global.get $~lib/collector/itcm/toSpace + global.set $~lib/collector/itcm/fromSpace + local.get $1 + global.set $~lib/collector/itcm/toSpace + global.get $~lib/collector/itcm/white + i32.eqz + global.set $~lib/collector/itcm/white + local.get $1 + call $~lib/collector/itcm/ManagedObject#get:next + global.set $~lib/collector/itcm/iter + i32.const 3 + global.set $~lib/collector/itcm/state + end + end + br $break|0 + unreachable + end + unreachable + end + block + global.get $~lib/collector/itcm/iter + local.set $0 + local.get $0 + global.get $~lib/collector/itcm/toSpace + i32.ne + if + local.get $0 + call $~lib/collector/itcm/ManagedObject#get:next + global.set $~lib/collector/itcm/iter + local.get $0 + global.get $~lib/memory/HEAP_BASE + i32.ge_u + if + local.get $0 + call $~lib/memory/memory.free + end + else + global.get $~lib/collector/itcm/toSpace + call $~lib/collector/itcm/ManagedObjectList#clear + i32.const 1 + global.set $~lib/collector/itcm/state + end + br $break|0 + unreachable + end + unreachable + end + ) + (func $~lib/collector/itcm/__ref_collect (; 52 ;) (type $FUNCSIG$v) + call $~lib/collector/itcm/maybeInit + block $break|0 + loop $continue|0 + global.get $~lib/collector/itcm/state + i32.const 1 + i32.ne + if + call $~lib/collector/itcm/step + br $continue|0 + end + end + end + block $break|1 + loop $continue|1 + call $~lib/collector/itcm/step + global.get $~lib/collector/itcm/state + i32.const 1 + i32.ne + br_if $continue|1 + end + end + ) + (func $~lib/runtime/runtime.collect (; 53 ;) (type $FUNCSIG$v) + call $~lib/collector/itcm/__ref_collect + ) + (func $~lib/runtime/runtime#constructor (; 54 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + unreachable + ) + (func $start (; 55 ;) (type $FUNCSIG$v) + call $start:class + i32.const 0 + call $~lib/runtime/Root#constructor + global.set $~lib/runtime/ROOT + ) + (func $~lib/collector/itcm/__ref_mark (; 56 ;) (type $FUNCSIG$vi) (param $0 i32) + (local $1 i32) + (local $2 i32) + call $~lib/collector/itcm/maybeInit + block $~lib/collector/itcm/refToObj|inlined.4 (result i32) + local.get $0 + local.set $1 + local.get $1 + global.get $~lib/util/runtime/HEADER_SIZE + i32.sub + end + local.set $2 + local.get $2 + call $~lib/collector/itcm/ManagedObject#get:color + global.get $~lib/collector/itcm/white + i32.eq + if + local.get $2 + call $~lib/collector/itcm/ManagedObject#makeGray + end + ) + (func $~lib/runtime/__gc_mark_roots (; 57 ;) (type $FUNCSIG$v) + (local $0 i32) + global.get $~lib/runtime/ROOT + local.tee $0 + if + local.get $0 + call $~lib/collector/itcm/__ref_mark + end + ) + (func $~lib/runtime/__gc_mark_members (; 58 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (local $2 i32) + block $invalid + block $~lib/runtime/Root + block $~lib/arraybuffer/ArrayBuffer + block $~lib/string/String + local.get $0 + br_table $invalid $~lib/string/String $~lib/arraybuffer/ArrayBuffer $~lib/runtime/Root $invalid + end + return + end + return + end + return + end + unreachable + ) + (func $~lib/runtime/__runtime_instanceof (; 59 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + block $nope + block $~lib/runtime/Root + block $~lib/arraybuffer/ArrayBuffer + block $~lib/string/String + local.get $0 + br_table $nope $~lib/string/String $~lib/arraybuffer/ArrayBuffer $~lib/runtime/Root $nope + end + local.get $1 + i32.const 1 + i32.eq + return + end + local.get $1 + i32.const 2 + i32.eq + return + end + local.get $1 + i32.const 3 + i32.eq + return + end + i32.const 0 + return + ) + (func $null (; 60 ;) (type $FUNCSIG$v) + ) + (func $~lib/runtime/runtime.newArray|trampoline (; 61 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + block $1of1 + block $0of1 + block $outOfRange + global.get $~lib/argc + i32.const 3 + i32.sub + br_table $0of1 $1of1 $outOfRange + end + unreachable + end + i32.const 0 + local.set $3 + end + local.get $0 + local.get $1 + local.get $2 + local.get $3 + call $~lib/runtime/runtime.newArray + ) + (func $~lib/setargc (; 62 ;) (type $FUNCSIG$vi) (param $0 i32) + local.get $0 + global.set $~lib/argc ) ) diff --git a/tests/compiler/closure.optimized.wat b/tests/compiler/closure.optimized.wat index 13be3a5f..845cbc1e 100644 --- a/tests/compiler/closure.optimized.wat +++ b/tests/compiler/closure.optimized.wat @@ -1,13 +1,1923 @@ (module + (type $FUNCSIG$iii (func (param i32 i32) (result i32))) + (type $FUNCSIG$ii (func (param i32) (result i32))) + (type $FUNCSIG$vii (func (param i32 i32))) + (type $FUNCSIG$viii (func (param i32 i32 i32))) + (type $FUNCSIG$viiii (func (param i32 i32 i32 i32))) + (type $FUNCSIG$iiii (func (param i32 i32 i32) (result i32))) + (type $FUNCSIG$vi (func (param i32))) (type $FUNCSIG$v (func)) - (memory $0 0) + (type $FUNCSIG$iiiii (func (param i32 i32 i32 i32) (result i32))) + (import "env" "abort" (func $~lib/env/abort (param i32 i32 i32 i32))) + (memory $0 1) + (data (i32.const 8) "\01\00\00\00,") + (data (i32.const 24) "~\00l\00i\00b\00/\00a\00l\00l\00o\00c\00a\00t\00o\00r\00/\00t\00l\00s\00f\00.\00t\00s") + (data (i32.const 72) "\01\00\00\00\1e") + (data (i32.const 88) "~\00l\00i\00b\00/\00r\00u\00n\00t\00i\00m\00e\00.\00t\00s") (table $0 1 funcref) (elem (i32.const 0) $null) + (global $~lib/allocator/tlsf/ROOT (mut i32) (i32.const 0)) + (global $~lib/collector/itcm/state (mut i32) (i32.const 0)) + (global $~lib/collector/itcm/fromSpace (mut i32) (i32.const 0)) + (global $~lib/collector/itcm/toSpace (mut i32) (i32.const 0)) + (global $~lib/collector/itcm/iter (mut i32) (i32.const 0)) + (global $~lib/collector/itcm/white (mut i32) (i32.const 0)) + (global $~lib/runtime/ROOT (mut i32) (i32.const 0)) + (global $~lib/argc (mut i32) (i32.const 0)) (global $~lib/capabilities i32 (i32.const 2)) (export "memory" (memory $0)) (export "table" (table $0)) + (export "runtime.instanceof" (func $~lib/runtime/runtime.instanceof)) + (export "runtime.allocate" (func $~lib/runtime/runtime.allocate)) + (export "runtime.discard" (func $~lib/runtime/runtime.discard)) + (export "runtime.register" (func $~lib/runtime/runtime.register)) + (export "runtime.newString" (func $~lib/runtime/runtime.newString)) + (export "runtime.newArrayBuffer" (func $~lib/runtime/runtime.newArrayBuffer)) + (export ".setargc" (func $~lib/setargc)) + (export "runtime.newArray" (func $~lib/runtime/runtime.newArray|trampoline)) + (export "runtime.retain" (func $~lib/runtime/runtime.retain)) + (export "runtime.release" (func $~lib/runtime/runtime.release)) + (export "runtime.collect" (func $~lib/runtime/runtime.collect)) (export ".capabilities" (global $~lib/capabilities)) - (func $null (; 0 ;) (type $FUNCSIG$v) + (start $start) + (func $~lib/runtime/runtime.instanceof (; 1 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + local.get $0 + if (result i32) + local.get $0 + i32.const 16 + i32.sub + i32.load + local.get $1 + call $~lib/runtime/__runtime_instanceof + else + i32.const 0 + end + ) + (func $~lib/allocator/tlsf/Root#setSLMap (; 2 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + local.get $1 + i32.const 22 + i32.ge_u + if + i32.const 0 + i32.const 24 + i32.const 159 + i32.const 4 + call $~lib/env/abort + unreachable + end + local.get $1 + i32.const 2 + i32.shl + local.get $0 + i32.add + local.get $2 + i32.store offset=4 + ) + (func $~lib/allocator/tlsf/Root#setHead (; 3 ;) (type $FUNCSIG$viiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) + local.get $1 + i32.const 22 + i32.ge_u + if + i32.const 0 + i32.const 24 + i32.const 184 + i32.const 4 + call $~lib/env/abort + unreachable + end + local.get $2 + i32.const 32 + i32.ge_u + if + i32.const 0 + i32.const 24 + i32.const 185 + i32.const 4 + call $~lib/env/abort + unreachable + end + local.get $1 + i32.const 5 + i32.shl + local.get $2 + i32.add + i32.const 2 + i32.shl + local.get $0 + i32.add + local.get $3 + i32.store offset=96 + ) + (func $~lib/allocator/tlsf/Block#get:right (; 4 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + i32.load + i32.const -4 + i32.and + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 104 + i32.const 4 + call $~lib/env/abort + unreachable + end + local.get $0 + i32.const 8 + i32.add + local.get $0 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $0 + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 105 + i32.const 11 + call $~lib/env/abort + unreachable + end + local.get $0 + ) + (func $~lib/allocator/tlsf/fls (; 5 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 447 + i32.const 2 + call $~lib/env/abort + unreachable + end + i32.const 31 + local.get $0 + i32.clz + i32.sub + ) + (func $~lib/allocator/tlsf/Root#getHead (; 6 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + local.get $1 + i32.const 22 + i32.ge_u + if + i32.const 0 + i32.const 24 + i32.const 175 + i32.const 4 + call $~lib/env/abort + unreachable + end + local.get $2 + i32.const 32 + i32.ge_u + if + i32.const 0 + i32.const 24 + i32.const 176 + i32.const 4 + call $~lib/env/abort + unreachable + end + local.get $1 + i32.const 5 + i32.shl + local.get $2 + i32.add + i32.const 2 + i32.shl + local.get $0 + i32.add + i32.load offset=96 + ) + (func $~lib/allocator/tlsf/Root#getSLMap (; 7 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + local.get $1 + i32.const 22 + i32.ge_u + if + i32.const 0 + i32.const 24 + i32.const 153 + i32.const 4 + call $~lib/env/abort + unreachable + end + local.get $1 + i32.const 2 + i32.shl + local.get $0 + i32.add + i32.load offset=4 + ) + (func $~lib/allocator/tlsf/Root#remove (; 8 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $1 + i32.load + local.tee $2 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 277 + i32.const 4 + call $~lib/env/abort + unreachable + end + local.get $2 + i32.const -4 + i32.and + local.tee $3 + i32.const 16 + i32.ge_u + local.tee $2 + if + local.get $3 + i32.const 1073741824 + i32.lt_u + local.set $2 + end + local.get $2 + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 279 + i32.const 4 + call $~lib/env/abort + unreachable + end + local.get $3 + i32.const 256 + i32.lt_u + if (result i32) + local.get $3 + i32.const 8 + i32.div_u + local.set $4 + i32.const 0 + else + local.get $3 + local.get $3 + call $~lib/allocator/tlsf/fls + local.tee $2 + i32.const 5 + i32.sub + i32.shr_u + i32.const 32 + i32.xor + local.set $4 + local.get $2 + i32.const 7 + i32.sub + end + local.set $2 + local.get $1 + i32.load offset=8 + local.set $3 + local.get $1 + i32.load offset=4 + local.tee $5 + if + local.get $5 + local.get $3 + i32.store offset=8 + end + local.get $3 + if + local.get $3 + local.get $5 + i32.store offset=4 + end + local.get $0 + local.get $2 + local.get $4 + call $~lib/allocator/tlsf/Root#getHead + local.get $1 + i32.eq + if + local.get $0 + local.get $2 + local.get $4 + local.get $3 + call $~lib/allocator/tlsf/Root#setHead + local.get $3 + i32.eqz + if + local.get $0 + local.get $2 + local.get $0 + local.get $2 + call $~lib/allocator/tlsf/Root#getSLMap + i32.const 1 + local.get $4 + i32.shl + i32.const -1 + i32.xor + i32.and + local.tee $1 + call $~lib/allocator/tlsf/Root#setSLMap + local.get $1 + i32.eqz + if + local.get $0 + local.get $0 + i32.load + i32.const 1 + local.get $2 + i32.shl + i32.const -1 + i32.xor + i32.and + i32.store + end + end + end + ) + (func $~lib/allocator/tlsf/Block#get:left (; 9 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + i32.load + i32.const 2 + i32.and + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 96 + i32.const 4 + call $~lib/env/abort + unreachable + end + local.get $0 + i32.const 4 + i32.sub + i32.load + local.tee $0 + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 97 + i32.const 11 + call $~lib/env/abort + unreachable + end + local.get $0 + ) + (func $~lib/allocator/tlsf/Root#setJump (; 10 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + local.get $0 + i32.load + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 353 + i32.const 4 + call $~lib/env/abort + unreachable + end + local.get $0 + call $~lib/allocator/tlsf/Block#get:right + local.get $1 + i32.ne + if + i32.const 0 + i32.const 24 + i32.const 354 + i32.const 4 + call $~lib/env/abort + unreachable + end + local.get $1 + i32.load + i32.const 2 + i32.and + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 355 + i32.const 4 + call $~lib/env/abort + unreachable + end + local.get $1 + i32.const 4 + i32.sub + local.get $0 + i32.store + ) + (func $~lib/allocator/tlsf/Root#insert (; 11 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $1 + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 208 + i32.const 4 + call $~lib/env/abort + unreachable + end + local.get $1 + i32.load + local.tee $3 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 210 + i32.const 4 + call $~lib/env/abort + unreachable + end + local.get $1 + i32.load + i32.const -4 + i32.and + local.tee $4 + i32.const 16 + i32.ge_u + local.tee $2 + if + local.get $4 + i32.const 1073741824 + i32.lt_u + local.set $2 + end + local.get $2 + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 212 + i32.const 4 + call $~lib/env/abort + unreachable + end + local.get $1 + call $~lib/allocator/tlsf/Block#get:right + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 216 + i32.const 23 + call $~lib/env/abort + unreachable + end + local.get $2 + i32.load + local.tee $4 + i32.const 1 + i32.and + if + local.get $0 + local.get $2 + call $~lib/allocator/tlsf/Root#remove + local.get $1 + local.get $4 + i32.const -4 + i32.and + i32.const 8 + i32.add + local.get $3 + i32.add + local.tee $3 + i32.store + local.get $1 + call $~lib/allocator/tlsf/Block#get:right + local.tee $2 + i32.load + local.set $4 + end + local.get $3 + i32.const 2 + i32.and + if + local.get $1 + call $~lib/allocator/tlsf/Block#get:left + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 230 + i32.const 24 + call $~lib/env/abort + unreachable + end + local.get $1 + i32.load + local.tee $5 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 232 + i32.const 6 + call $~lib/env/abort + unreachable + end + local.get $0 + local.get $1 + call $~lib/allocator/tlsf/Root#remove + local.get $1 + local.get $3 + i32.const -4 + i32.and + i32.const 8 + i32.add + local.get $5 + i32.add + local.tee $3 + i32.store + end + local.get $2 + local.get $4 + i32.const 2 + i32.or + i32.store + local.get $1 + local.get $2 + call $~lib/allocator/tlsf/Root#setJump + local.get $3 + i32.const -4 + i32.and + local.tee $3 + i32.const 16 + i32.ge_u + local.tee $2 + if + local.get $3 + i32.const 1073741824 + i32.lt_u + local.set $2 + end + local.get $2 + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 245 + i32.const 4 + call $~lib/env/abort + unreachable + end + local.get $0 + local.get $3 + i32.const 256 + i32.lt_u + if (result i32) + local.get $3 + i32.const 8 + i32.div_u + local.set $3 + i32.const 0 + else + local.get $3 + local.get $3 + call $~lib/allocator/tlsf/fls + local.tee $2 + i32.const 5 + i32.sub + i32.shr_u + i32.const 32 + i32.xor + local.set $3 + local.get $2 + i32.const 7 + i32.sub + end + local.tee $2 + local.get $3 + call $~lib/allocator/tlsf/Root#getHead + local.set $4 + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + local.get $4 + i32.store offset=8 + local.get $4 + if + local.get $4 + local.get $1 + i32.store offset=4 + end + local.get $0 + local.get $2 + local.get $3 + local.get $1 + call $~lib/allocator/tlsf/Root#setHead + local.get $0 + local.get $0 + i32.load + i32.const 1 + local.get $2 + i32.shl + i32.or + i32.store + local.get $0 + local.get $2 + local.get $0 + local.get $2 + call $~lib/allocator/tlsf/Root#getSLMap + i32.const 1 + local.get $3 + i32.shl + i32.or + call $~lib/allocator/tlsf/Root#setSLMap + ) + (func $~lib/allocator/tlsf/Root#addMemory (; 12 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local $4 i32) + local.get $1 + local.get $2 + i32.gt_u + if + i32.const 0 + i32.const 24 + i32.const 396 + i32.const 4 + call $~lib/env/abort + unreachable + end + local.get $1 + i32.const 7 + i32.and + if + i32.const 0 + i32.const 24 + i32.const 397 + i32.const 4 + call $~lib/env/abort + unreachable + end + local.get $2 + i32.const 7 + i32.and + if + i32.const 0 + i32.const 24 + i32.const 398 + i32.const 4 + call $~lib/env/abort + unreachable + end + i32.const 2912 + i32.load + local.tee $3 + if + local.get $1 + local.get $3 + i32.const 4 + i32.add + i32.lt_u + if + i32.const 0 + i32.const 24 + i32.const 403 + i32.const 6 + call $~lib/env/abort + unreachable + end + local.get $1 + i32.const 8 + i32.sub + local.get $3 + i32.eq + if + local.get $3 + i32.load + local.set $4 + local.get $1 + i32.const 8 + i32.sub + local.set $1 + end + else + local.get $1 + local.get $0 + i32.const 2916 + i32.add + i32.lt_u + if + i32.const 0 + i32.const 24 + i32.const 412 + i32.const 6 + call $~lib/env/abort + unreachable + end + end + local.get $2 + local.get $1 + i32.sub + local.tee $2 + i32.const 32 + i32.lt_u + if + return + end + local.get $1 + local.get $4 + i32.const 2 + i32.and + local.get $2 + i32.const 16 + i32.sub + i32.const 1 + i32.or + i32.or + i32.store + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.store offset=8 + local.get $1 + local.get $2 + i32.add + i32.const 8 + i32.sub + local.tee $2 + i32.const 2 + i32.store + i32.const 2912 + local.get $2 + i32.store + local.get $0 + local.get $1 + call $~lib/allocator/tlsf/Root#insert + ) + (func $~lib/allocator/tlsf/ffs (; 13 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 441 + i32.const 2 + call $~lib/env/abort + unreachable + end + local.get $0 + i32.ctz + ) + (func $~lib/allocator/tlsf/Root#search (; 14 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + local.get $1 + i32.const 16 + i32.ge_u + local.tee $2 + if + local.get $1 + i32.const 1073741824 + i32.lt_u + local.set $2 + end + local.get $2 + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 315 + i32.const 4 + call $~lib/env/abort + unreachable + end + local.get $1 + i32.const 256 + i32.lt_u + if (result i32) + i32.const 0 + local.set $2 + local.get $1 + i32.const 8 + i32.div_u + else + local.get $1 + call $~lib/allocator/tlsf/fls + local.tee $3 + i32.const 7 + i32.sub + local.set $2 + local.get $1 + local.get $3 + i32.const 5 + i32.sub + i32.shr_u + i32.const 32 + i32.xor + local.tee $1 + i32.const 31 + i32.lt_u + if (result i32) + local.get $1 + i32.const 1 + i32.add + else + local.get $2 + i32.const 1 + i32.add + local.set $2 + i32.const 0 + end + end + local.set $1 + local.get $0 + local.get $2 + call $~lib/allocator/tlsf/Root#getSLMap + i32.const -1 + local.get $1 + i32.shl + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $2 + local.get $1 + call $~lib/allocator/tlsf/ffs + call $~lib/allocator/tlsf/Root#getHead + else + local.get $0 + i32.load + i32.const -1 + local.get $2 + i32.const 1 + i32.add + i32.shl + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + call $~lib/allocator/tlsf/ffs + local.tee $2 + call $~lib/allocator/tlsf/Root#getSLMap + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 342 + i32.const 16 + call $~lib/env/abort + unreachable + end + local.get $0 + local.get $2 + local.get $1 + call $~lib/allocator/tlsf/ffs + call $~lib/allocator/tlsf/Root#getHead + else + i32.const 0 + end + end + ) + (func $~lib/allocator/tlsf/Root#use (; 15 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + (local $4 i32) + local.get $1 + i32.load + local.tee $4 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 367 + i32.const 4 + call $~lib/env/abort + unreachable + end + local.get $2 + i32.const 16 + i32.ge_u + local.tee $3 + if + local.get $2 + i32.const 1073741824 + i32.lt_u + local.set $3 + end + local.get $3 + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 368 + i32.const 4 + call $~lib/env/abort + unreachable + end + local.get $2 + i32.const 7 + i32.and + if + i32.const 0 + i32.const 24 + i32.const 369 + i32.const 4 + call $~lib/env/abort + unreachable + end + local.get $0 + local.get $1 + call $~lib/allocator/tlsf/Root#remove + local.get $4 + i32.const -4 + i32.and + local.get $2 + i32.sub + local.tee $3 + i32.const 24 + i32.ge_u + if + local.get $1 + local.get $4 + i32.const 2 + i32.and + local.get $2 + i32.or + i32.store + local.get $1 + i32.const 8 + i32.add + local.get $2 + i32.add + local.tee $2 + local.get $3 + i32.const 8 + i32.sub + i32.const 1 + i32.or + i32.store + local.get $0 + local.get $2 + call $~lib/allocator/tlsf/Root#insert + else + local.get $1 + local.get $4 + i32.const -2 + i32.and + i32.store + local.get $1 + call $~lib/allocator/tlsf/Block#get:right + local.tee $0 + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 387 + i32.const 25 + call $~lib/env/abort + unreachable + end + local.get $0 + local.get $0 + i32.load + i32.const -3 + i32.and + i32.store + end + local.get $1 + i32.const 8 + i32.add + ) + (func $~lib/allocator/tlsf/__mem_allocate (; 16 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + global.get $~lib/allocator/tlsf/ROOT + local.tee $2 + i32.eqz + if + i32.const 1 + current_memory + local.tee $1 + i32.gt_s + local.tee $2 + if (result i32) + i32.const 1 + local.get $1 + i32.sub + grow_memory + i32.const 0 + i32.lt_s + else + local.get $2 + end + if + unreachable + end + i32.const 120 + local.set $2 + i32.const 120 + global.set $~lib/allocator/tlsf/ROOT + i32.const 2912 + i32.const 0 + i32.store + i32.const 120 + i32.const 0 + i32.store + i32.const 0 + local.set $1 + loop $repeat|0 + local.get $1 + i32.const 22 + i32.lt_u + if + i32.const 120 + local.get $1 + i32.const 0 + call $~lib/allocator/tlsf/Root#setSLMap + i32.const 0 + local.set $3 + loop $repeat|1 + local.get $3 + i32.const 32 + i32.lt_u + if + i32.const 120 + local.get $1 + local.get $3 + i32.const 0 + call $~lib/allocator/tlsf/Root#setHead + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $repeat|1 + end + end + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $repeat|0 + end + end + i32.const 120 + i32.const 3040 + current_memory + i32.const 16 + i32.shl + call $~lib/allocator/tlsf/Root#addMemory + end + local.get $0 + i32.const 1073741824 + i32.gt_u + if + unreachable + end + local.get $2 + local.get $0 + i32.const 7 + i32.add + i32.const -8 + i32.and + local.tee $0 + i32.const 16 + local.get $0 + i32.const 16 + i32.gt_u + select + local.tee $1 + call $~lib/allocator/tlsf/Root#search + local.tee $0 + i32.eqz + if + current_memory + local.tee $0 + local.get $1 + i32.const 65535 + i32.add + i32.const -65536 + i32.and + i32.const 16 + i32.shr_u + local.tee $3 + local.get $0 + local.get $3 + i32.gt_s + select + grow_memory + i32.const 0 + i32.lt_s + if + local.get $3 + grow_memory + i32.const 0 + i32.lt_s + if + unreachable + end + end + local.get $2 + local.get $0 + i32.const 16 + i32.shl + current_memory + i32.const 16 + i32.shl + call $~lib/allocator/tlsf/Root#addMemory + local.get $2 + local.get $1 + call $~lib/allocator/tlsf/Root#search + local.tee $0 + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 502 + i32.const 12 + call $~lib/env/abort + unreachable + end + end + local.get $0 + i32.load + i32.const -4 + i32.and + local.get $1 + i32.lt_u + if + i32.const 0 + i32.const 24 + i32.const 505 + i32.const 2 + call $~lib/env/abort + unreachable + end + local.get $2 + local.get $0 + local.get $1 + call $~lib/allocator/tlsf/Root#use + ) + (func $~lib/runtime/runtime.allocate (; 17 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + i32.const 1 + i32.const 32 + local.get $0 + i32.const 15 + i32.add + i32.clz + i32.sub + i32.shl + call $~lib/allocator/tlsf/__mem_allocate + local.tee $1 + i32.const -1520547049 + i32.store + local.get $1 + local.get $0 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.store offset=8 + local.get $1 + i32.const 0 + i32.store offset=12 + local.get $1 + i32.const 16 + i32.add + ) + (func $~lib/allocator/tlsf/__mem_free (; 18 ;) (type $FUNCSIG$vi) (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + local.get $0 + if + global.get $~lib/allocator/tlsf/ROOT + local.tee $1 + if + local.get $0 + i32.const 8 + i32.sub + local.tee $2 + i32.load + local.tee $3 + i32.const 1 + i32.and + if + i32.const 0 + i32.const 24 + i32.const 518 + i32.const 6 + call $~lib/env/abort + unreachable + end + local.get $2 + local.get $3 + i32.const 1 + i32.or + i32.store + local.get $1 + local.get $0 + i32.const 8 + i32.sub + call $~lib/allocator/tlsf/Root#insert + end + end + ) + (func $~lib/runtime/runtime.discard (; 19 ;) (type $FUNCSIG$vi) (param $0 i32) + local.get $0 + i32.const 120 + i32.le_u + if + i32.const 0 + i32.const 88 + i32.const 68 + i32.const 6 + call $~lib/env/abort + unreachable + end + local.get $0 + i32.const 16 + i32.sub + local.tee $0 + i32.load + i32.const -1520547049 + i32.ne + if + i32.const 0 + i32.const 88 + i32.const 70 + i32.const 6 + call $~lib/env/abort + unreachable + end + local.get $0 + call $~lib/allocator/tlsf/__mem_free + ) + (func $~lib/collector/itcm/maybeInit (; 20 ;) (type $FUNCSIG$v) + (local $0 i32) + global.get $~lib/collector/itcm/state + i32.eqz + if + i32.const 16 + call $~lib/allocator/tlsf/__mem_allocate + global.set $~lib/collector/itcm/fromSpace + global.get $~lib/collector/itcm/fromSpace + local.tee $0 + i32.const -1 + i32.store + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + local.get $0 + i32.store offset=8 + local.get $0 + local.get $0 + i32.store offset=12 + i32.const 16 + call $~lib/allocator/tlsf/__mem_allocate + global.set $~lib/collector/itcm/toSpace + global.get $~lib/collector/itcm/toSpace + local.tee $0 + i32.const -1 + i32.store + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + local.get $0 + i32.store offset=8 + local.get $0 + local.get $0 + i32.store offset=12 + global.get $~lib/collector/itcm/toSpace + global.set $~lib/collector/itcm/iter + i32.const 1 + global.set $~lib/collector/itcm/state + end + ) + (func $~lib/collector/itcm/ManagedObjectList#push (; 21 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $0 + i32.load offset=12 + local.set $2 + local.get $1 + local.get $1 + i32.load offset=8 + i32.const 3 + i32.and + local.get $0 + i32.or + i32.store offset=8 + local.get $1 + local.get $2 + i32.store offset=12 + local.get $2 + local.get $2 + i32.load offset=8 + i32.const 3 + i32.and + local.get $1 + i32.or + i32.store offset=8 + local.get $0 + local.get $1 + i32.store offset=12 + ) + (func $~lib/collector/itcm/__ref_register (; 22 ;) (type $FUNCSIG$vi) (param $0 i32) + call $~lib/collector/itcm/maybeInit + local.get $0 + i32.const 16 + i32.sub + local.tee $0 + global.get $~lib/collector/itcm/white + local.get $0 + i32.load offset=8 + i32.const -4 + i32.and + i32.or + i32.store offset=8 + global.get $~lib/collector/itcm/fromSpace + local.get $0 + call $~lib/collector/itcm/ManagedObjectList#push + ) + (func $~lib/runtime/runtime.register (; 23 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $0 + i32.const 120 + i32.le_u + if + i32.const 0 + i32.const 88 + i32.const 82 + i32.const 6 + call $~lib/env/abort + unreachable + end + local.get $0 + i32.const 16 + i32.sub + local.tee $2 + i32.load + i32.const -1520547049 + i32.ne + if + i32.const 0 + i32.const 88 + i32.const 84 + i32.const 6 + call $~lib/env/abort + unreachable + end + local.get $2 + local.get $1 + i32.store + block + local.get $0 + call $~lib/collector/itcm/__ref_register + end + local.get $0 + ) + (func $~lib/runtime/runtime.newString (; 24 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + i32.const 1 + i32.shl + call $~lib/runtime/runtime.allocate + i32.const 1 + call $~lib/runtime/runtime.register + ) + (func $~lib/runtime/runtime.newArrayBuffer (; 25 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + call $~lib/runtime/runtime.allocate + i32.const 2 + call $~lib/runtime/runtime.register + ) + (func $~lib/collector/itcm/ManagedObject#makeGray (; 26 ;) (type $FUNCSIG$vi) (param $0 i32) + (local $1 i32) + (local $2 i32) + global.get $~lib/collector/itcm/iter + local.get $0 + i32.eq + if + local.get $0 + i32.load offset=12 + global.set $~lib/collector/itcm/iter + end + local.get $0 + i32.load offset=8 + i32.const -4 + i32.and + local.tee $2 + local.get $0 + i32.load offset=12 + local.tee $1 + i32.store offset=12 + local.get $1 + local.get $1 + i32.load offset=8 + i32.const 3 + i32.and + local.get $2 + i32.or + i32.store offset=8 + global.get $~lib/collector/itcm/toSpace + local.get $0 + call $~lib/collector/itcm/ManagedObjectList#push + local.get $0 + local.get $0 + i32.load offset=8 + i32.const -4 + i32.and + i32.const 2 + i32.or + i32.store offset=8 + ) + (func $~lib/collector/itcm/__ref_link (; 27 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (local $2 i32) + call $~lib/collector/itcm/maybeInit + global.get $~lib/collector/itcm/white + i32.eqz + local.get $1 + i32.const 16 + i32.sub + local.tee $2 + i32.load offset=8 + i32.const 3 + i32.and + i32.eq + local.tee $1 + if (result i32) + global.get $~lib/collector/itcm/white + local.get $0 + i32.const 16 + i32.sub + i32.load offset=8 + i32.const 3 + i32.and + i32.eq + else + local.get $1 + end + if + local.get $2 + call $~lib/collector/itcm/ManagedObject#makeGray + end + ) + (func $~lib/memory/memory.copy (; 28 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local $4 i32) + block $~lib/util/memory/memmove|inlined.0 + local.get $0 + local.get $1 + i32.eq + br_if $~lib/util/memory/memmove|inlined.0 + 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 + loop $continue|0 + local.get $0 + i32.const 7 + i32.and + if + local.get $2 + i32.eqz + br_if $~lib/util/memory/memmove|inlined.0 + local.get $2 + i32.const 1 + i32.sub + local.set $2 + local.get $0 + local.tee $3 + i32.const 1 + i32.add + local.set $0 + local.get $1 + local.tee $4 + i32.const 1 + i32.add + local.set $1 + local.get $3 + local.get $4 + i32.load8_u + i32.store8 + br $continue|0 + end + end + loop $continue|1 + local.get $2 + i32.const 8 + i32.ge_u + if + 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 + br $continue|1 + end + end + end + loop $continue|2 + local.get $2 + if + local.get $0 + local.tee $3 + i32.const 1 + i32.add + local.set $0 + local.get $1 + local.tee $4 + i32.const 1 + i32.add + local.set $1 + local.get $3 + local.get $4 + i32.load8_u + i32.store8 + local.get $2 + i32.const 1 + i32.sub + local.set $2 + br $continue|2 + end + end + else + local.get $1 + i32.const 7 + i32.and + local.get $0 + i32.const 7 + i32.and + i32.eq + if + loop $continue|3 + local.get $0 + local.get $2 + i32.add + i32.const 7 + i32.and + if + local.get $2 + i32.eqz + br_if $~lib/util/memory/memmove|inlined.0 + local.get $2 + i32.const 1 + i32.sub + local.tee $2 + local.get $0 + i32.add + local.get $1 + local.get $2 + i32.add + i32.load8_u + i32.store8 + br $continue|3 + end + end + loop $continue|4 + local.get $2 + i32.const 8 + i32.ge_u + if + local.get $2 + i32.const 8 + i32.sub + local.tee $2 + local.get $0 + i32.add + local.get $1 + local.get $2 + i32.add + i64.load + i64.store + br $continue|4 + end + end + end + loop $continue|5 + local.get $2 + if + local.get $2 + i32.const 1 + i32.sub + local.tee $2 + local.get $0 + i32.add + local.get $1 + local.get $2 + i32.add + i32.load8_u + i32.store8 + br $continue|5 + end + end + end + end + ) + (func $~lib/runtime/runtime.newArray (; 29 ;) (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/runtime.allocate + local.get $2 + call $~lib/runtime/runtime.register + local.tee $2 + local.set $6 + local.get $0 + local.get $1 + i32.shl + local.tee $4 + call $~lib/runtime/runtime.allocate + i32.const 2 + call $~lib/runtime/runtime.register + local.tee $5 + local.tee $1 + local.get $2 + i32.load + i32.ne + if + local.get $1 + local.get $6 + call $~lib/collector/itcm/__ref_link + end + local.get $2 + local.get $1 + i32.store + local.get $2 + local.get $5 + i32.store offset=4 + local.get $2 + local.get $4 + i32.store offset=8 + local.get $2 + local.get $0 + i32.store offset=12 + local.get $3 + if + local.get $5 + local.get $3 + local.get $4 + call $~lib/memory/memory.copy + end + local.get $2 + ) + (func $~lib/runtime/runtime.retain (; 30 ;) (type $FUNCSIG$vi) (param $0 i32) + local.get $0 + global.get $~lib/runtime/ROOT + call $~lib/collector/itcm/__ref_link + ) + (func $~lib/runtime/runtime.release (; 31 ;) (type $FUNCSIG$vi) (param $0 i32) nop ) + (func $~lib/collector/itcm/step (; 32 ;) (type $FUNCSIG$v) + (local $0 i32) + block $break|0 + block $case3|0 + block $case2|0 + block $case1|0 + global.get $~lib/collector/itcm/state + local.tee $0 + if + local.get $0 + i32.const 1 + i32.sub + br_table $case1|0 $case2|0 $case3|0 $break|0 + end + unreachable + end + call $~lib/runtime/__gc_mark_roots + i32.const 2 + global.set $~lib/collector/itcm/state + br $break|0 + end + global.get $~lib/collector/itcm/iter + i32.load offset=8 + i32.const -4 + i32.and + local.tee $0 + global.get $~lib/collector/itcm/toSpace + i32.ne + if + local.get $0 + global.set $~lib/collector/itcm/iter + local.get $0 + global.get $~lib/collector/itcm/white + i32.eqz + local.get $0 + i32.load offset=8 + i32.const -4 + i32.and + i32.or + i32.store offset=8 + block $__inlined_func$~lib/runtime/__gc_mark_members + block $invalid + local.get $0 + i32.load + i32.const 1 + i32.sub + br_table $__inlined_func$~lib/runtime/__gc_mark_members $__inlined_func$~lib/runtime/__gc_mark_members $__inlined_func$~lib/runtime/__gc_mark_members $invalid + end + unreachable + end + else + call $~lib/runtime/__gc_mark_roots + global.get $~lib/collector/itcm/toSpace + global.get $~lib/collector/itcm/iter + i32.load offset=8 + i32.const -4 + i32.and + i32.eq + if + global.get $~lib/collector/itcm/fromSpace + local.set $0 + global.get $~lib/collector/itcm/toSpace + global.set $~lib/collector/itcm/fromSpace + local.get $0 + global.set $~lib/collector/itcm/toSpace + global.get $~lib/collector/itcm/white + i32.eqz + global.set $~lib/collector/itcm/white + local.get $0 + i32.load offset=8 + i32.const -4 + i32.and + global.set $~lib/collector/itcm/iter + i32.const 3 + global.set $~lib/collector/itcm/state + end + end + br $break|0 + end + global.get $~lib/collector/itcm/iter + local.tee $0 + global.get $~lib/collector/itcm/toSpace + i32.ne + if + local.get $0 + i32.load offset=8 + i32.const -4 + i32.and + global.set $~lib/collector/itcm/iter + local.get $0 + i32.const 120 + i32.ge_u + if + local.get $0 + call $~lib/allocator/tlsf/__mem_free + end + else + global.get $~lib/collector/itcm/toSpace + local.tee $0 + local.get $0 + i32.store offset=8 + local.get $0 + local.get $0 + i32.store offset=12 + i32.const 1 + global.set $~lib/collector/itcm/state + end + end + ) + (func $~lib/collector/itcm/__ref_collect (; 33 ;) (type $FUNCSIG$v) + call $~lib/collector/itcm/maybeInit + loop $continue|0 + global.get $~lib/collector/itcm/state + i32.const 1 + i32.ne + if + call $~lib/collector/itcm/step + br $continue|0 + end + end + loop $continue|1 + call $~lib/collector/itcm/step + global.get $~lib/collector/itcm/state + i32.const 1 + i32.ne + br_if $continue|1 + end + ) + (func $~lib/runtime/runtime.collect (; 34 ;) (type $FUNCSIG$v) + call $~lib/collector/itcm/__ref_collect + ) + (func $start (; 35 ;) (type $FUNCSIG$v) + i32.const 0 + call $~lib/runtime/runtime.allocate + i32.const 3 + call $~lib/runtime/runtime.register + global.set $~lib/runtime/ROOT + ) + (func $~lib/runtime/__gc_mark_roots (; 36 ;) (type $FUNCSIG$v) + (local $0 i32) + global.get $~lib/runtime/ROOT + local.tee $0 + if + call $~lib/collector/itcm/maybeInit + global.get $~lib/collector/itcm/white + local.get $0 + i32.const 16 + i32.sub + local.tee $0 + i32.load offset=8 + i32.const 3 + i32.and + i32.eq + if + local.get $0 + call $~lib/collector/itcm/ManagedObject#makeGray + end + end + ) + (func $~lib/runtime/__runtime_instanceof (; 37 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + block $nope + block $~lib/runtime/Root + block $~lib/arraybuffer/ArrayBuffer + block $~lib/string/String + local.get $0 + i32.const 1 + i32.sub + br_table $~lib/string/String $~lib/arraybuffer/ArrayBuffer $~lib/runtime/Root $nope + end + local.get $1 + i32.const 1 + i32.eq + return + end + local.get $1 + i32.const 2 + i32.eq + return + end + local.get $1 + i32.const 3 + i32.eq + return + end + i32.const 0 + ) + (func $null (; 38 ;) (type $FUNCSIG$v) + nop + ) + (func $~lib/runtime/runtime.newArray|trampoline (; 39 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + block $1of1 + block $0of1 + block $outOfRange + global.get $~lib/argc + i32.const 3 + i32.sub + br_table $0of1 $1of1 $outOfRange + end + unreachable + end + i32.const 0 + local.set $3 + end + local.get $0 + local.get $1 + local.get $2 + local.get $3 + call $~lib/runtime/runtime.newArray + ) + (func $~lib/setargc (; 40 ;) (type $FUNCSIG$vi) (param $0 i32) + local.get $0 + global.set $~lib/argc + ) ) diff --git a/tests/compiler/closure.untouched.wat b/tests/compiler/closure.untouched.wat index 413ff0e8..ae057c9d 100644 --- a/tests/compiler/closure.untouched.wat +++ b/tests/compiler/closure.untouched.wat @@ -1,13 +1,2339 @@ (module + (type $FUNCSIG$iii (func (param i32 i32) (result i32))) + (type $FUNCSIG$ii (func (param i32) (result i32))) + (type $FUNCSIG$vii (func (param i32 i32))) + (type $FUNCSIG$viii (func (param i32 i32 i32))) + (type $FUNCSIG$viiii (func (param i32 i32 i32 i32))) + (type $FUNCSIG$iiii (func (param i32 i32 i32) (result i32))) + (type $FUNCSIG$vi (func (param i32))) (type $FUNCSIG$v (func)) - (memory $0 0) + (type $FUNCSIG$iiiii (func (param i32 i32 i32 i32) (result i32))) + (import "env" "abort" (func $~lib/env/abort (param i32 i32 i32 i32))) + (memory $0 1) + (data (i32.const 8) "\01\00\00\00,\00\00\00\00\00\00\00\00\00\00\00~\00l\00i\00b\00/\00a\00l\00l\00o\00c\00a\00t\00o\00r\00/\00t\00l\00s\00f\00.\00t\00s\00") + (data (i32.const 72) "\01\00\00\00\1e\00\00\00\00\00\00\00\00\00\00\00~\00l\00i\00b\00/\00r\00u\00n\00t\00i\00m\00e\00.\00t\00s\00") (table $0 1 funcref) (elem (i32.const 0) $null) - (global $~lib/memory/HEAP_BASE i32 (i32.const 8)) + (global $~lib/util/runtime/HEADER_SIZE i32 (i32.const 16)) + (global $~lib/allocator/tlsf/ROOT (mut i32) (i32.const 0)) + (global $~lib/allocator/tlsf/Root.SL_START i32 (i32.const 4)) + (global $~lib/allocator/tlsf/SL_BITS i32 (i32.const 5)) + (global $~lib/allocator/tlsf/SB_BITS i32 (i32.const 8)) + (global $~lib/allocator/tlsf/FL_BITS i32 (i32.const 22)) + (global $~lib/allocator/tlsf/Root.SL_END i32 (i32.const 92)) + (global $~lib/allocator/tlsf/Root.HL_START i32 (i32.const 96)) + (global $~lib/allocator/tlsf/SL_SIZE i32 (i32.const 32)) + (global $~lib/allocator/tlsf/Root.HL_END i32 (i32.const 2912)) + (global $~lib/allocator/tlsf/Root.SIZE i32 (i32.const 2916)) + (global $~lib/allocator/tlsf/Block.INFO i32 (i32.const 8)) + (global $~lib/allocator/tlsf/Block.MIN_SIZE i32 (i32.const 16)) + (global $~lib/allocator/tlsf/FREE i32 (i32.const 1)) + (global $~lib/allocator/tlsf/LEFT_FREE i32 (i32.const 2)) + (global $~lib/allocator/tlsf/TAGS i32 (i32.const 3)) + (global $~lib/allocator/tlsf/Block.MAX_SIZE i32 (i32.const 1073741824)) + (global $~lib/allocator/tlsf/SB_SIZE i32 (i32.const 256)) + (global $~lib/util/runtime/HEADER_MAGIC i32 (i32.const -1520547049)) + (global $~lib/ASC_NO_ASSERT i32 (i32.const 0)) + (global $~lib/collector/itcm/state (mut i32) (i32.const 0)) + (global $~lib/collector/itcm/fromSpace (mut i32) (i32.const 0)) + (global $~lib/collector/itcm/toSpace (mut i32) (i32.const 0)) + (global $~lib/collector/itcm/iter (mut i32) (i32.const 0)) + (global $~lib/collector/itcm/white (mut i32) (i32.const 0)) + (global $~lib/runtime/ROOT (mut i32) (i32.const 0)) + (global $~lib/memory/HEAP_BASE i32 (i32.const 120)) + (global $~lib/argc (mut i32) (i32.const 0)) (global $~lib/capabilities i32 (i32.const 2)) (export "memory" (memory $0)) (export "table" (table $0)) + (export "runtime.instanceof" (func $~lib/runtime/runtime.instanceof)) + (export "runtime.allocate" (func $~lib/runtime/runtime.allocate)) + (export "runtime.discard" (func $~lib/runtime/runtime.discard)) + (export "runtime.register" (func $~lib/runtime/runtime.register)) + (export "runtime.newString" (func $~lib/runtime/runtime.newString)) + (export "runtime.newArrayBuffer" (func $~lib/runtime/runtime.newArrayBuffer)) + (export ".setargc" (func $~lib/setargc)) + (export "runtime.newArray" (func $~lib/runtime/runtime.newArray|trampoline)) + (export "runtime.retain" (func $~lib/runtime/runtime.retain)) + (export "runtime.release" (func $~lib/runtime/runtime.release)) + (export "runtime.collect" (func $~lib/runtime/runtime.collect)) (export ".capabilities" (global $~lib/capabilities)) - (func $null (; 0 ;) (type $FUNCSIG$v) + (start $start) + (func $~lib/runtime/runtime.instanceof (; 1 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + local.get $0 + if (result i32) + local.get $0 + global.get $~lib/util/runtime/HEADER_SIZE + i32.sub + i32.load + local.get $1 + call $~lib/runtime/__runtime_instanceof + else + i32.const 0 + end + ) + (func $~lib/util/runtime/adjust (; 2 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + i32.const 1 + i32.const 32 + local.get $0 + global.get $~lib/util/runtime/HEADER_SIZE + i32.add + i32.const 1 + i32.sub + i32.clz + i32.sub + i32.shl + ) + (func $~lib/allocator/tlsf/Root#set:tailRef (; 3 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + i32.const 0 + local.get $1 + i32.store offset=2912 + ) + (func $~lib/allocator/tlsf/Root#setSLMap (; 4 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + local.get $1 + global.get $~lib/allocator/tlsf/FL_BITS + i32.lt_u + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 159 + i32.const 4 + call $~lib/env/abort + unreachable + end + local.get $0 + local.get $1 + i32.const 4 + i32.mul + i32.add + local.get $2 + i32.store offset=4 + ) + (func $~lib/allocator/tlsf/Root#setHead (; 5 ;) (type $FUNCSIG$viiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) + local.get $1 + global.get $~lib/allocator/tlsf/FL_BITS + i32.lt_u + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 184 + i32.const 4 + call $~lib/env/abort + unreachable + end + local.get $2 + global.get $~lib/allocator/tlsf/SL_SIZE + i32.lt_u + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 185 + i32.const 4 + call $~lib/env/abort + unreachable + end + local.get $0 + local.get $1 + global.get $~lib/allocator/tlsf/SL_SIZE + i32.mul + local.get $2 + i32.add + i32.const 4 + i32.mul + i32.add + local.get $3 + i32.store offset=96 + ) + (func $~lib/allocator/tlsf/Root#get:tailRef (; 6 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + i32.const 0 + i32.load offset=2912 + ) + (func $~lib/allocator/tlsf/Block#get:right (; 7 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + local.get $0 + i32.load + global.get $~lib/allocator/tlsf/TAGS + i32.const -1 + i32.xor + i32.and + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 104 + i32.const 4 + call $~lib/env/abort + unreachable + end + local.get $0 + global.get $~lib/allocator/tlsf/Block.INFO + i32.add + local.get $0 + i32.load + global.get $~lib/allocator/tlsf/TAGS + i32.const -1 + i32.xor + i32.and + i32.add + local.tee $1 + i32.eqz + if (result i32) + i32.const 0 + i32.const 24 + i32.const 105 + i32.const 11 + call $~lib/env/abort + unreachable + else + local.get $1 + end + ) + (func $~lib/allocator/tlsf/fls (; 8 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + i32.const 0 + i32.ne + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 447 + i32.const 2 + call $~lib/env/abort + unreachable + end + i32.const 31 + local.get $0 + i32.clz + i32.sub + ) + (func $~lib/allocator/tlsf/Root#getHead (; 9 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + local.get $1 + global.get $~lib/allocator/tlsf/FL_BITS + i32.lt_u + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 175 + i32.const 4 + call $~lib/env/abort + unreachable + end + local.get $2 + global.get $~lib/allocator/tlsf/SL_SIZE + i32.lt_u + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 176 + i32.const 4 + call $~lib/env/abort + unreachable + end + local.get $0 + local.get $1 + global.get $~lib/allocator/tlsf/SL_SIZE + i32.mul + local.get $2 + i32.add + i32.const 4 + i32.mul + i32.add + i32.load offset=96 + ) + (func $~lib/allocator/tlsf/Root#getSLMap (; 10 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + local.get $1 + global.get $~lib/allocator/tlsf/FL_BITS + i32.lt_u + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 153 + i32.const 4 + call $~lib/env/abort + unreachable + end + local.get $0 + local.get $1 + i32.const 4 + i32.mul + i32.add + i32.load offset=4 + ) + (func $~lib/allocator/tlsf/Root#remove (; 11 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + local.get $1 + i32.load + local.set $2 + local.get $2 + global.get $~lib/allocator/tlsf/FREE + i32.and + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 277 + i32.const 4 + call $~lib/env/abort + unreachable + end + local.get $2 + global.get $~lib/allocator/tlsf/TAGS + i32.const -1 + i32.xor + i32.and + local.set $3 + local.get $3 + global.get $~lib/allocator/tlsf/Block.MIN_SIZE + i32.ge_u + local.tee $4 + if (result i32) + local.get $3 + global.get $~lib/allocator/tlsf/Block.MAX_SIZE + i32.lt_u + else + local.get $4 + end + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 279 + i32.const 4 + call $~lib/env/abort + unreachable + end + local.get $3 + global.get $~lib/allocator/tlsf/SB_SIZE + i32.lt_u + if + i32.const 0 + local.set $5 + local.get $3 + i32.const 8 + i32.div_u + local.set $6 + else + local.get $3 + call $~lib/allocator/tlsf/fls + local.set $5 + local.get $3 + local.get $5 + global.get $~lib/allocator/tlsf/SL_BITS + i32.sub + i32.shr_u + i32.const 1 + global.get $~lib/allocator/tlsf/SL_BITS + i32.shl + i32.xor + local.set $6 + local.get $5 + global.get $~lib/allocator/tlsf/SB_BITS + i32.const 1 + i32.sub + i32.sub + local.set $5 + end + local.get $1 + i32.load offset=4 + local.set $7 + local.get $1 + i32.load offset=8 + local.set $8 + local.get $7 + if + local.get $7 + local.get $8 + i32.store offset=8 + end + local.get $8 + if + local.get $8 + local.get $7 + i32.store offset=4 + end + local.get $1 + local.get $0 + local.get $5 + local.get $6 + call $~lib/allocator/tlsf/Root#getHead + i32.eq + if + local.get $0 + local.get $5 + local.get $6 + local.get $8 + call $~lib/allocator/tlsf/Root#setHead + local.get $8 + i32.eqz + if + local.get $0 + local.get $5 + call $~lib/allocator/tlsf/Root#getSLMap + local.set $4 + local.get $0 + local.get $5 + local.get $4 + i32.const 1 + local.get $6 + i32.shl + i32.const -1 + i32.xor + i32.and + local.tee $4 + call $~lib/allocator/tlsf/Root#setSLMap + local.get $4 + i32.eqz + if + local.get $0 + local.get $0 + i32.load + i32.const 1 + local.get $5 + i32.shl + i32.const -1 + i32.xor + i32.and + i32.store + end + end + end + ) + (func $~lib/allocator/tlsf/Block#get:left (; 12 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + local.get $0 + i32.load + global.get $~lib/allocator/tlsf/LEFT_FREE + i32.and + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 96 + i32.const 4 + call $~lib/env/abort + unreachable + end + local.get $0 + i32.const 4 + i32.sub + i32.load + local.tee $1 + i32.eqz + if (result i32) + i32.const 0 + i32.const 24 + i32.const 97 + i32.const 11 + call $~lib/env/abort + unreachable + else + local.get $1 + end + ) + (func $~lib/allocator/tlsf/Root#setJump (; 13 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + local.get $1 + i32.load + global.get $~lib/allocator/tlsf/FREE + i32.and + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 353 + i32.const 4 + call $~lib/env/abort + unreachable + end + local.get $1 + call $~lib/allocator/tlsf/Block#get:right + local.get $2 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 354 + i32.const 4 + call $~lib/env/abort + unreachable + end + local.get $2 + i32.load + global.get $~lib/allocator/tlsf/LEFT_FREE + i32.and + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 355 + i32.const 4 + call $~lib/env/abort + unreachable + end + local.get $2 + i32.const 4 + i32.sub + local.get $1 + i32.store + ) + (func $~lib/allocator/tlsf/Root#insert (; 14 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + (local $10 i32) + local.get $1 + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 208 + i32.const 4 + call $~lib/env/abort + unreachable + end + local.get $1 + i32.load + local.set $2 + local.get $2 + global.get $~lib/allocator/tlsf/FREE + i32.and + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 210 + i32.const 4 + call $~lib/env/abort + unreachable + end + local.get $1 + i32.load + global.get $~lib/allocator/tlsf/TAGS + i32.const -1 + i32.xor + i32.and + local.tee $3 + global.get $~lib/allocator/tlsf/Block.MIN_SIZE + i32.ge_u + local.tee $4 + if (result i32) + local.get $3 + global.get $~lib/allocator/tlsf/Block.MAX_SIZE + i32.lt_u + else + local.get $4 + end + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 212 + i32.const 4 + call $~lib/env/abort + unreachable + end + local.get $1 + call $~lib/allocator/tlsf/Block#get:right + local.tee $4 + i32.eqz + if (result i32) + i32.const 0 + i32.const 24 + i32.const 216 + i32.const 23 + call $~lib/env/abort + unreachable + else + local.get $4 + end + local.set $5 + local.get $5 + i32.load + local.set $6 + local.get $6 + global.get $~lib/allocator/tlsf/FREE + i32.and + if + local.get $0 + local.get $5 + call $~lib/allocator/tlsf/Root#remove + local.get $1 + local.get $2 + global.get $~lib/allocator/tlsf/Block.INFO + local.get $6 + global.get $~lib/allocator/tlsf/TAGS + i32.const -1 + i32.xor + i32.and + i32.add + i32.add + local.tee $2 + i32.store + local.get $1 + call $~lib/allocator/tlsf/Block#get:right + local.set $5 + local.get $5 + i32.load + local.set $6 + end + local.get $2 + global.get $~lib/allocator/tlsf/LEFT_FREE + i32.and + if + local.get $1 + call $~lib/allocator/tlsf/Block#get:left + local.tee $4 + i32.eqz + if (result i32) + i32.const 0 + i32.const 24 + i32.const 230 + i32.const 24 + call $~lib/env/abort + unreachable + else + local.get $4 + end + local.set $4 + local.get $4 + i32.load + local.set $7 + local.get $7 + global.get $~lib/allocator/tlsf/FREE + i32.and + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 232 + i32.const 6 + call $~lib/env/abort + unreachable + end + local.get $0 + local.get $4 + call $~lib/allocator/tlsf/Root#remove + local.get $4 + local.get $7 + global.get $~lib/allocator/tlsf/Block.INFO + local.get $2 + global.get $~lib/allocator/tlsf/TAGS + i32.const -1 + i32.xor + i32.and + i32.add + i32.add + local.tee $7 + i32.store + local.get $4 + local.set $1 + local.get $7 + local.set $2 + end + local.get $5 + local.get $6 + global.get $~lib/allocator/tlsf/LEFT_FREE + i32.or + i32.store + local.get $0 + local.get $1 + local.get $5 + call $~lib/allocator/tlsf/Root#setJump + local.get $2 + global.get $~lib/allocator/tlsf/TAGS + i32.const -1 + i32.xor + i32.and + local.set $3 + local.get $3 + global.get $~lib/allocator/tlsf/Block.MIN_SIZE + i32.ge_u + local.tee $7 + if (result i32) + local.get $3 + global.get $~lib/allocator/tlsf/Block.MAX_SIZE + i32.lt_u + else + local.get $7 + end + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 245 + i32.const 4 + call $~lib/env/abort + unreachable + end + local.get $3 + global.get $~lib/allocator/tlsf/SB_SIZE + i32.lt_u + if + i32.const 0 + local.set $8 + local.get $3 + i32.const 8 + i32.div_u + local.set $9 + else + local.get $3 + call $~lib/allocator/tlsf/fls + local.set $8 + local.get $3 + local.get $8 + global.get $~lib/allocator/tlsf/SL_BITS + i32.sub + i32.shr_u + i32.const 1 + global.get $~lib/allocator/tlsf/SL_BITS + i32.shl + i32.xor + local.set $9 + local.get $8 + global.get $~lib/allocator/tlsf/SB_BITS + i32.const 1 + i32.sub + i32.sub + local.set $8 + end + local.get $0 + local.get $8 + local.get $9 + call $~lib/allocator/tlsf/Root#getHead + local.set $10 + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + local.get $10 + i32.store offset=8 + local.get $10 + if + local.get $10 + local.get $1 + i32.store offset=4 + end + local.get $0 + local.get $8 + local.get $9 + local.get $1 + call $~lib/allocator/tlsf/Root#setHead + local.get $0 + local.get $0 + i32.load + i32.const 1 + local.get $8 + i32.shl + i32.or + i32.store + local.get $0 + local.get $8 + local.get $0 + local.get $8 + call $~lib/allocator/tlsf/Root#getSLMap + i32.const 1 + local.get $9 + i32.shl + i32.or + call $~lib/allocator/tlsf/Root#setSLMap + ) + (func $~lib/allocator/tlsf/Root#addMemory (; 15 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + local.get $1 + local.get $2 + i32.le_u + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 396 + i32.const 4 + call $~lib/env/abort + unreachable + end + local.get $1 + i32.const 7 + i32.and + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 397 + i32.const 4 + call $~lib/env/abort + unreachable + end + local.get $2 + i32.const 7 + i32.and + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 398 + i32.const 4 + call $~lib/env/abort + unreachable + end + local.get $0 + call $~lib/allocator/tlsf/Root#get:tailRef + local.set $3 + i32.const 0 + local.set $4 + local.get $3 + if + local.get $1 + local.get $3 + i32.const 4 + i32.add + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 403 + i32.const 6 + call $~lib/env/abort + unreachable + end + local.get $1 + global.get $~lib/allocator/tlsf/Block.INFO + i32.sub + local.get $3 + i32.eq + if + local.get $1 + global.get $~lib/allocator/tlsf/Block.INFO + i32.sub + local.set $1 + local.get $3 + i32.load + local.set $4 + end + else + local.get $1 + local.get $0 + global.get $~lib/allocator/tlsf/Root.SIZE + i32.add + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 412 + i32.const 6 + call $~lib/env/abort + unreachable + end + end + local.get $2 + local.get $1 + i32.sub + local.set $5 + local.get $5 + global.get $~lib/allocator/tlsf/Block.INFO + global.get $~lib/allocator/tlsf/Block.MIN_SIZE + i32.add + global.get $~lib/allocator/tlsf/Block.INFO + i32.add + i32.lt_u + if + i32.const 0 + return + end + local.get $5 + i32.const 2 + global.get $~lib/allocator/tlsf/Block.INFO + i32.mul + i32.sub + local.set $6 + local.get $1 + local.set $7 + local.get $7 + local.get $6 + global.get $~lib/allocator/tlsf/FREE + i32.or + local.get $4 + global.get $~lib/allocator/tlsf/LEFT_FREE + i32.and + i32.or + i32.store + local.get $7 + i32.const 0 + i32.store offset=4 + local.get $7 + i32.const 0 + i32.store offset=8 + local.get $1 + local.get $5 + i32.add + global.get $~lib/allocator/tlsf/Block.INFO + i32.sub + local.set $8 + local.get $8 + i32.const 0 + global.get $~lib/allocator/tlsf/LEFT_FREE + i32.or + i32.store + local.get $0 + local.get $8 + call $~lib/allocator/tlsf/Root#set:tailRef + local.get $0 + local.get $7 + call $~lib/allocator/tlsf/Root#insert + i32.const 1 + ) + (func $~lib/allocator/tlsf/ffs (; 16 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + i32.const 0 + i32.ne + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 441 + i32.const 2 + call $~lib/env/abort + unreachable + end + local.get $0 + i32.ctz + ) + (func $~lib/allocator/tlsf/ffs (; 17 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + i32.const 0 + i32.ne + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 441 + i32.const 2 + call $~lib/env/abort + unreachable + end + local.get $0 + i32.ctz + ) + (func $~lib/allocator/tlsf/Root#search (; 18 ;) (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) + (local $7 i32) + local.get $1 + global.get $~lib/allocator/tlsf/Block.MIN_SIZE + i32.ge_u + local.tee $2 + if (result i32) + local.get $1 + global.get $~lib/allocator/tlsf/Block.MAX_SIZE + i32.lt_u + else + local.get $2 + end + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 315 + i32.const 4 + call $~lib/env/abort + unreachable + end + local.get $1 + global.get $~lib/allocator/tlsf/SB_SIZE + i32.lt_u + if + i32.const 0 + local.set $3 + local.get $1 + i32.const 8 + i32.div_u + local.set $4 + else + local.get $1 + call $~lib/allocator/tlsf/fls + local.set $3 + local.get $1 + local.get $3 + global.get $~lib/allocator/tlsf/SL_BITS + i32.sub + i32.shr_u + i32.const 1 + global.get $~lib/allocator/tlsf/SL_BITS + i32.shl + i32.xor + local.set $4 + local.get $3 + global.get $~lib/allocator/tlsf/SB_BITS + i32.const 1 + i32.sub + i32.sub + local.set $3 + local.get $4 + global.get $~lib/allocator/tlsf/SL_SIZE + i32.const 1 + i32.sub + i32.lt_u + if + local.get $4 + i32.const 1 + i32.add + local.set $4 + else + local.get $3 + i32.const 1 + i32.add + local.set $3 + i32.const 0 + local.set $4 + end + end + local.get $0 + local.get $3 + call $~lib/allocator/tlsf/Root#getSLMap + i32.const 0 + i32.const -1 + i32.xor + local.get $4 + i32.shl + i32.and + local.set $5 + local.get $5 + i32.eqz + if + local.get $0 + i32.load + i32.const 0 + i32.const -1 + i32.xor + local.get $3 + i32.const 1 + i32.add + i32.shl + i32.and + local.set $2 + local.get $2 + i32.eqz + if + i32.const 0 + local.set $6 + else + local.get $2 + call $~lib/allocator/tlsf/ffs + local.set $3 + local.get $0 + local.get $3 + call $~lib/allocator/tlsf/Root#getSLMap + local.tee $7 + if (result i32) + local.get $7 + else + i32.const 0 + i32.const 24 + i32.const 342 + i32.const 16 + call $~lib/env/abort + unreachable + end + local.set $5 + local.get $0 + local.get $3 + local.get $5 + call $~lib/allocator/tlsf/ffs + call $~lib/allocator/tlsf/Root#getHead + local.set $6 + end + else + local.get $0 + local.get $3 + local.get $5 + call $~lib/allocator/tlsf/ffs + call $~lib/allocator/tlsf/Root#getHead + local.set $6 + end + local.get $6 + ) + (func $~lib/allocator/tlsf/Root#use (; 19 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $1 + i32.load + local.set $3 + local.get $3 + global.get $~lib/allocator/tlsf/FREE + i32.and + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 367 + i32.const 4 + call $~lib/env/abort + unreachable + end + local.get $2 + global.get $~lib/allocator/tlsf/Block.MIN_SIZE + i32.ge_u + local.tee $4 + if (result i32) + local.get $2 + global.get $~lib/allocator/tlsf/Block.MAX_SIZE + i32.lt_u + else + local.get $4 + end + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 368 + i32.const 4 + call $~lib/env/abort + unreachable + end + local.get $2 + i32.const 7 + i32.and + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 369 + i32.const 4 + call $~lib/env/abort + unreachable + end + local.get $0 + local.get $1 + call $~lib/allocator/tlsf/Root#remove + local.get $3 + global.get $~lib/allocator/tlsf/TAGS + i32.const -1 + i32.xor + i32.and + local.get $2 + i32.sub + local.set $5 + local.get $5 + global.get $~lib/allocator/tlsf/Block.INFO + global.get $~lib/allocator/tlsf/Block.MIN_SIZE + i32.add + i32.ge_u + if + local.get $1 + local.get $2 + local.get $3 + global.get $~lib/allocator/tlsf/LEFT_FREE + i32.and + i32.or + i32.store + local.get $1 + global.get $~lib/allocator/tlsf/Block.INFO + i32.add + local.get $2 + i32.add + local.set $4 + local.get $4 + local.get $5 + global.get $~lib/allocator/tlsf/Block.INFO + i32.sub + global.get $~lib/allocator/tlsf/FREE + i32.or + i32.store + local.get $0 + local.get $4 + call $~lib/allocator/tlsf/Root#insert + else + local.get $1 + local.get $3 + global.get $~lib/allocator/tlsf/FREE + i32.const -1 + i32.xor + i32.and + i32.store + local.get $1 + call $~lib/allocator/tlsf/Block#get:right + local.tee $4 + i32.eqz + if (result i32) + i32.const 0 + i32.const 24 + i32.const 387 + i32.const 25 + call $~lib/env/abort + unreachable + else + local.get $4 + end + local.set $4 + local.get $4 + local.get $4 + i32.load + global.get $~lib/allocator/tlsf/LEFT_FREE + i32.const -1 + i32.xor + i32.and + i32.store + end + local.get $1 + global.get $~lib/allocator/tlsf/Block.INFO + i32.add + ) + (func $~lib/allocator/tlsf/__mem_allocate (; 20 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + global.get $~lib/allocator/tlsf/ROOT + local.set $1 + local.get $1 + i32.eqz + if + global.get $~lib/memory/HEAP_BASE + i32.const 7 + i32.add + i32.const 7 + i32.const -1 + i32.xor + i32.and + local.set $2 + current_memory + local.set $3 + local.get $2 + global.get $~lib/allocator/tlsf/Root.SIZE + i32.add + i32.const 65535 + i32.add + i32.const 65535 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.shr_u + local.set $4 + local.get $4 + local.get $3 + i32.gt_s + local.tee $5 + if (result i32) + local.get $4 + local.get $3 + i32.sub + grow_memory + i32.const 0 + i32.lt_s + else + local.get $5 + end + if + unreachable + end + local.get $2 + local.tee $1 + global.set $~lib/allocator/tlsf/ROOT + local.get $1 + i32.const 0 + call $~lib/allocator/tlsf/Root#set:tailRef + local.get $1 + i32.const 0 + i32.store + block $break|0 + i32.const 0 + local.set $5 + loop $repeat|0 + local.get $5 + global.get $~lib/allocator/tlsf/FL_BITS + i32.lt_u + i32.eqz + br_if $break|0 + block + local.get $1 + local.get $5 + i32.const 0 + call $~lib/allocator/tlsf/Root#setSLMap + block $break|1 + i32.const 0 + local.set $6 + loop $repeat|1 + local.get $6 + global.get $~lib/allocator/tlsf/SL_SIZE + i32.lt_u + i32.eqz + br_if $break|1 + local.get $1 + local.get $5 + local.get $6 + i32.const 0 + call $~lib/allocator/tlsf/Root#setHead + local.get $6 + i32.const 1 + i32.add + local.set $6 + br $repeat|1 + unreachable + end + unreachable + end + end + local.get $5 + i32.const 1 + i32.add + local.set $5 + br $repeat|0 + unreachable + end + unreachable + end + local.get $1 + local.get $2 + global.get $~lib/allocator/tlsf/Root.SIZE + i32.add + i32.const 7 + i32.add + i32.const 7 + i32.const -1 + i32.xor + i32.and + current_memory + i32.const 16 + i32.shl + call $~lib/allocator/tlsf/Root#addMemory + drop + end + local.get $0 + global.get $~lib/allocator/tlsf/Block.MAX_SIZE + i32.gt_u + if + unreachable + end + local.get $0 + i32.const 7 + i32.add + i32.const 7 + i32.const -1 + i32.xor + i32.and + local.tee $4 + global.get $~lib/allocator/tlsf/Block.MIN_SIZE + local.tee $3 + local.get $4 + local.get $3 + i32.gt_u + select + local.set $0 + local.get $1 + local.get $0 + call $~lib/allocator/tlsf/Root#search + local.set $7 + local.get $7 + i32.eqz + if + current_memory + local.set $4 + local.get $0 + i32.const 65535 + i32.add + i32.const 65535 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.shr_u + local.set $3 + local.get $4 + local.tee $2 + local.get $3 + local.tee $5 + local.get $2 + local.get $5 + i32.gt_s + select + local.set $2 + local.get $2 + grow_memory + i32.const 0 + i32.lt_s + if + local.get $3 + grow_memory + i32.const 0 + i32.lt_s + if + unreachable + end + end + current_memory + local.set $5 + local.get $1 + local.get $4 + i32.const 16 + i32.shl + local.get $5 + i32.const 16 + i32.shl + call $~lib/allocator/tlsf/Root#addMemory + drop + local.get $1 + local.get $0 + call $~lib/allocator/tlsf/Root#search + local.tee $6 + i32.eqz + if (result i32) + i32.const 0 + i32.const 24 + i32.const 502 + i32.const 12 + call $~lib/env/abort + unreachable + else + local.get $6 + end + local.set $7 + end + local.get $7 + i32.load + global.get $~lib/allocator/tlsf/TAGS + i32.const -1 + i32.xor + i32.and + local.get $0 + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 505 + i32.const 2 + call $~lib/env/abort + unreachable + end + local.get $1 + local.get $7 + local.get $0 + call $~lib/allocator/tlsf/Root#use + ) + (func $~lib/memory/memory.allocate (; 21 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + call $~lib/allocator/tlsf/__mem_allocate + return + ) + (func $~lib/runtime/runtime.allocate (; 22 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + local.get $0 + call $~lib/util/runtime/adjust + call $~lib/memory/memory.allocate + local.set $1 + local.get $1 + global.get $~lib/util/runtime/HEADER_MAGIC + i32.store + local.get $1 + local.get $0 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.store offset=8 + local.get $1 + i32.const 0 + i32.store offset=12 + local.get $1 + global.get $~lib/util/runtime/HEADER_SIZE + i32.add + ) + (func $~lib/allocator/tlsf/__mem_free (; 23 ;) (type $FUNCSIG$vi) (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + local.get $0 + if + global.get $~lib/allocator/tlsf/ROOT + local.set $1 + local.get $1 + if + local.get $0 + global.get $~lib/allocator/tlsf/Block.INFO + i32.sub + local.set $2 + local.get $2 + i32.load + local.set $3 + local.get $3 + global.get $~lib/allocator/tlsf/FREE + i32.and + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 518 + i32.const 6 + call $~lib/env/abort + unreachable + end + local.get $2 + local.get $3 + global.get $~lib/allocator/tlsf/FREE + i32.or + i32.store + local.get $1 + local.get $0 + global.get $~lib/allocator/tlsf/Block.INFO + i32.sub + call $~lib/allocator/tlsf/Root#insert + end + end + ) + (func $~lib/memory/memory.free (; 24 ;) (type $FUNCSIG$vi) (param $0 i32) + local.get $0 + call $~lib/allocator/tlsf/__mem_free + ) + (func $~lib/runtime/runtime.discard (; 25 ;) (type $FUNCSIG$vi) (param $0 i32) + (local $1 i32) + local.get $0 + global.get $~lib/memory/HEAP_BASE + i32.gt_u + i32.eqz + if + i32.const 0 + i32.const 88 + i32.const 68 + i32.const 6 + call $~lib/env/abort + unreachable + end + local.get $0 + global.get $~lib/util/runtime/HEADER_SIZE + i32.sub + local.set $1 + local.get $1 + i32.load + global.get $~lib/util/runtime/HEADER_MAGIC + i32.eq + i32.eqz + if + i32.const 0 + i32.const 88 + i32.const 70 + i32.const 6 + call $~lib/env/abort + unreachable + end + local.get $1 + call $~lib/memory/memory.free + ) + (func $~lib/collector/itcm/ManagedObjectList#clear (; 26 ;) (type $FUNCSIG$vi) (param $0 i32) + local.get $0 + local.get $0 + i32.store offset=8 + local.get $0 + local.get $0 + i32.store offset=12 + ) + (func $~lib/collector/itcm/maybeInit (; 27 ;) (type $FUNCSIG$v) + global.get $~lib/collector/itcm/state + i32.const 0 + i32.eq + if + global.get $~lib/util/runtime/HEADER_SIZE + call $~lib/memory/memory.allocate + global.set $~lib/collector/itcm/fromSpace + global.get $~lib/collector/itcm/fromSpace + i32.const -1 + i32.store + global.get $~lib/collector/itcm/fromSpace + i32.const 0 + i32.store offset=4 + global.get $~lib/collector/itcm/fromSpace + call $~lib/collector/itcm/ManagedObjectList#clear + global.get $~lib/util/runtime/HEADER_SIZE + call $~lib/memory/memory.allocate + global.set $~lib/collector/itcm/toSpace + global.get $~lib/collector/itcm/toSpace + i32.const -1 + i32.store + global.get $~lib/collector/itcm/toSpace + i32.const 0 + i32.store offset=4 + global.get $~lib/collector/itcm/toSpace + call $~lib/collector/itcm/ManagedObjectList#clear + global.get $~lib/collector/itcm/toSpace + global.set $~lib/collector/itcm/iter + i32.const 1 + global.set $~lib/collector/itcm/state + end + ) + (func $~lib/collector/itcm/ManagedObject#set:color (; 28 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + local.get $0 + local.get $0 + i32.load offset=8 + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $1 + i32.or + i32.store offset=8 + ) + (func $~lib/collector/itcm/ManagedObject#set:next (; 29 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + local.get $0 + i32.load offset=8 + i32.const 3 + i32.and + i32.or + i32.store offset=8 + ) + (func $~lib/collector/itcm/ManagedObjectList#push (; 30 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $0 + i32.load offset=12 + local.set $2 + local.get $1 + local.get $0 + call $~lib/collector/itcm/ManagedObject#set:next + local.get $1 + local.get $2 + i32.store offset=12 + local.get $2 + local.get $1 + call $~lib/collector/itcm/ManagedObject#set:next + local.get $0 + local.get $1 + i32.store offset=12 + ) + (func $~lib/collector/itcm/__ref_register (; 31 ;) (type $FUNCSIG$vi) (param $0 i32) + (local $1 i32) + (local $2 i32) + call $~lib/collector/itcm/maybeInit + block $~lib/collector/itcm/refToObj|inlined.0 (result i32) + local.get $0 + local.set $1 + local.get $1 + global.get $~lib/util/runtime/HEADER_SIZE + i32.sub + end + local.set $2 + local.get $2 + global.get $~lib/collector/itcm/white + call $~lib/collector/itcm/ManagedObject#set:color + global.get $~lib/collector/itcm/fromSpace + local.get $2 + call $~lib/collector/itcm/ManagedObjectList#push + ) + (func $~lib/runtime/runtime.register (; 32 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $0 + global.get $~lib/memory/HEAP_BASE + i32.gt_u + i32.eqz + if + i32.const 0 + i32.const 88 + i32.const 82 + i32.const 6 + call $~lib/env/abort + unreachable + end + local.get $0 + global.get $~lib/util/runtime/HEADER_SIZE + i32.sub + local.set $2 + local.get $2 + i32.load + global.get $~lib/util/runtime/HEADER_MAGIC + i32.eq + i32.eqz + if + i32.const 0 + i32.const 88 + i32.const 84 + i32.const 6 + call $~lib/env/abort + unreachable + end + local.get $2 + local.get $1 + i32.store + local.get $0 + call $~lib/collector/itcm/__ref_register + local.get $0 + ) + (func $~lib/runtime/runtime.newString (; 33 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + i32.const 1 + i32.shl + call $~lib/runtime/runtime.allocate + i32.const 1 + call $~lib/runtime/runtime.register + ) + (func $~lib/runtime/runtime.newArrayBuffer (; 34 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + call $~lib/runtime/runtime.allocate + i32.const 2 + call $~lib/runtime/runtime.register + ) + (func $~lib/collector/itcm/ManagedObject#get:color (; 35 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + i32.load offset=8 + i32.const 3 + i32.and + ) + (func $~lib/collector/itcm/ManagedObject#get:next (; 36 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + i32.load offset=8 + i32.const 3 + i32.const -1 + i32.xor + i32.and + ) + (func $~lib/collector/itcm/ManagedObject#unlink (; 37 ;) (type $FUNCSIG$vi) (param $0 i32) + (local $1 i32) + (local $2 i32) + local.get $0 + call $~lib/collector/itcm/ManagedObject#get:next + local.set $1 + local.get $0 + i32.load offset=12 + local.set $2 + local.get $1 + local.get $2 + i32.store offset=12 + local.get $2 + local.get $1 + call $~lib/collector/itcm/ManagedObject#set:next + ) + (func $~lib/collector/itcm/ManagedObject#makeGray (; 38 ;) (type $FUNCSIG$vi) (param $0 i32) + local.get $0 + global.get $~lib/collector/itcm/iter + i32.eq + if + local.get $0 + i32.load offset=12 + global.set $~lib/collector/itcm/iter + end + local.get $0 + call $~lib/collector/itcm/ManagedObject#unlink + global.get $~lib/collector/itcm/toSpace + local.get $0 + call $~lib/collector/itcm/ManagedObjectList#push + local.get $0 + local.get $0 + i32.load offset=8 + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.const 2 + i32.or + i32.store offset=8 + ) + (func $~lib/collector/itcm/__ref_link (; 39 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + call $~lib/collector/itcm/maybeInit + block $~lib/collector/itcm/refToObj|inlined.1 (result i32) + local.get $1 + local.set $2 + local.get $2 + global.get $~lib/util/runtime/HEADER_SIZE + i32.sub + end + local.set $3 + local.get $3 + call $~lib/collector/itcm/ManagedObject#get:color + global.get $~lib/collector/itcm/white + i32.eqz + i32.eq + local.tee $2 + if (result i32) + block $~lib/collector/itcm/refToObj|inlined.3 (result i32) + local.get $0 + local.set $2 + local.get $2 + global.get $~lib/util/runtime/HEADER_SIZE + i32.sub + end + call $~lib/collector/itcm/ManagedObject#get:color + global.get $~lib/collector/itcm/white + i32.eq + else + local.get $2 + end + if + local.get $3 + call $~lib/collector/itcm/ManagedObject#makeGray + end + ) + (func $~lib/memory/memory.copy (; 40 ;) (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 $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/runtime.newArray (; 41 ;) (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) + (local $8 i32) + (local $9 i32) + i32.const 16 + call $~lib/runtime/runtime.allocate + local.get $2 + call $~lib/runtime/runtime.register + local.set $4 + local.get $0 + local.get $1 + i32.shl + local.set $5 + local.get $5 + call $~lib/runtime/runtime.allocate + i32.const 2 + call $~lib/runtime/runtime.register + local.set $6 + local.get $4 + local.tee $7 + local.get $6 + local.tee $8 + local.get $7 + i32.load + local.tee $9 + i32.ne + if (result i32) + nop + local.get $8 + local.get $7 + call $~lib/collector/itcm/__ref_link + local.get $8 + else + local.get $8 + end + 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 $3 + if + local.get $6 + local.get $3 + local.get $5 + call $~lib/memory/memory.copy + end + local.get $4 + ) + (func $~lib/runtime/Root#constructor (; 42 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + i32.eqz + if + i32.const 0 + call $~lib/runtime/runtime.allocate + i32.const 3 + call $~lib/runtime/runtime.register + local.set $0 + end + local.get $0 + ) + (func $~lib/runtime/runtime.retain (; 43 ;) (type $FUNCSIG$vi) (param $0 i32) + local.get $0 + global.get $~lib/runtime/ROOT + call $~lib/collector/itcm/__ref_link + ) + (func $~lib/runtime/runtime.release (; 44 ;) (type $FUNCSIG$vi) (param $0 i32) + nop + ) + (func $~lib/collector/itcm/step (; 45 ;) (type $FUNCSIG$v) + (local $0 i32) + (local $1 i32) + block $break|0 + block $case3|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/collector/itcm/state + local.set $1 + local.get $1 + i32.const 0 + i32.eq + br_if $case0|0 + local.get $1 + i32.const 1 + i32.eq + br_if $case1|0 + local.get $1 + i32.const 2 + i32.eq + br_if $case2|0 + local.get $1 + i32.const 3 + i32.eq + br_if $case3|0 + br $break|0 + end + unreachable + end + block + call $~lib/runtime/__gc_mark_roots + i32.const 2 + global.set $~lib/collector/itcm/state + br $break|0 + unreachable + end + unreachable + end + block + global.get $~lib/collector/itcm/iter + call $~lib/collector/itcm/ManagedObject#get:next + local.set $0 + local.get $0 + global.get $~lib/collector/itcm/toSpace + i32.ne + if + local.get $0 + global.set $~lib/collector/itcm/iter + local.get $0 + global.get $~lib/collector/itcm/white + i32.eqz + call $~lib/collector/itcm/ManagedObject#set:color + local.get $0 + i32.load + block $~lib/collector/itcm/objToRef|inlined.0 (result i32) + local.get $0 + local.set $1 + local.get $1 + global.get $~lib/util/runtime/HEADER_SIZE + i32.add + end + call $~lib/runtime/__gc_mark_members + else + call $~lib/runtime/__gc_mark_roots + global.get $~lib/collector/itcm/iter + call $~lib/collector/itcm/ManagedObject#get:next + local.set $0 + local.get $0 + global.get $~lib/collector/itcm/toSpace + i32.eq + if + global.get $~lib/collector/itcm/fromSpace + local.set $1 + global.get $~lib/collector/itcm/toSpace + global.set $~lib/collector/itcm/fromSpace + local.get $1 + global.set $~lib/collector/itcm/toSpace + global.get $~lib/collector/itcm/white + i32.eqz + global.set $~lib/collector/itcm/white + local.get $1 + call $~lib/collector/itcm/ManagedObject#get:next + global.set $~lib/collector/itcm/iter + i32.const 3 + global.set $~lib/collector/itcm/state + end + end + br $break|0 + unreachable + end + unreachable + end + block + global.get $~lib/collector/itcm/iter + local.set $0 + local.get $0 + global.get $~lib/collector/itcm/toSpace + i32.ne + if + local.get $0 + call $~lib/collector/itcm/ManagedObject#get:next + global.set $~lib/collector/itcm/iter + local.get $0 + global.get $~lib/memory/HEAP_BASE + i32.ge_u + if + local.get $0 + call $~lib/memory/memory.free + end + else + global.get $~lib/collector/itcm/toSpace + call $~lib/collector/itcm/ManagedObjectList#clear + i32.const 1 + global.set $~lib/collector/itcm/state + end + br $break|0 + unreachable + end + unreachable + end + ) + (func $~lib/collector/itcm/__ref_collect (; 46 ;) (type $FUNCSIG$v) + call $~lib/collector/itcm/maybeInit + block $break|0 + loop $continue|0 + global.get $~lib/collector/itcm/state + i32.const 1 + i32.ne + if + call $~lib/collector/itcm/step + br $continue|0 + end + end + end + block $break|1 + loop $continue|1 + call $~lib/collector/itcm/step + global.get $~lib/collector/itcm/state + i32.const 1 + i32.ne + br_if $continue|1 + end + end + ) + (func $~lib/runtime/runtime.collect (; 47 ;) (type $FUNCSIG$v) + call $~lib/collector/itcm/__ref_collect + ) + (func $~lib/runtime/runtime#constructor (; 48 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + unreachable + ) + (func $start (; 49 ;) (type $FUNCSIG$v) + i32.const 0 + call $~lib/runtime/Root#constructor + global.set $~lib/runtime/ROOT + ) + (func $~lib/collector/itcm/__ref_mark (; 50 ;) (type $FUNCSIG$vi) (param $0 i32) + (local $1 i32) + (local $2 i32) + call $~lib/collector/itcm/maybeInit + block $~lib/collector/itcm/refToObj|inlined.4 (result i32) + local.get $0 + local.set $1 + local.get $1 + global.get $~lib/util/runtime/HEADER_SIZE + i32.sub + end + local.set $2 + local.get $2 + call $~lib/collector/itcm/ManagedObject#get:color + global.get $~lib/collector/itcm/white + i32.eq + if + local.get $2 + call $~lib/collector/itcm/ManagedObject#makeGray + end + ) + (func $~lib/runtime/__gc_mark_roots (; 51 ;) (type $FUNCSIG$v) + (local $0 i32) + global.get $~lib/runtime/ROOT + local.tee $0 + if + local.get $0 + call $~lib/collector/itcm/__ref_mark + end + ) + (func $~lib/runtime/__gc_mark_members (; 52 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (local $2 i32) + block $invalid + block $~lib/runtime/Root + block $~lib/arraybuffer/ArrayBuffer + block $~lib/string/String + local.get $0 + br_table $invalid $~lib/string/String $~lib/arraybuffer/ArrayBuffer $~lib/runtime/Root $invalid + end + return + end + return + end + return + end + unreachable + ) + (func $~lib/runtime/__runtime_instanceof (; 53 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + block $nope + block $~lib/runtime/Root + block $~lib/arraybuffer/ArrayBuffer + block $~lib/string/String + local.get $0 + br_table $nope $~lib/string/String $~lib/arraybuffer/ArrayBuffer $~lib/runtime/Root $nope + end + local.get $1 + i32.const 1 + i32.eq + return + end + local.get $1 + i32.const 2 + i32.eq + return + end + local.get $1 + i32.const 3 + i32.eq + return + end + i32.const 0 + return + ) + (func $null (; 54 ;) (type $FUNCSIG$v) + ) + (func $~lib/runtime/runtime.newArray|trampoline (; 55 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + block $1of1 + block $0of1 + block $outOfRange + global.get $~lib/argc + i32.const 3 + i32.sub + br_table $0of1 $1of1 $outOfRange + end + unreachable + end + i32.const 0 + local.set $3 + end + local.get $0 + local.get $1 + local.get $2 + local.get $3 + call $~lib/runtime/runtime.newArray + ) + (func $~lib/setargc (; 56 ;) (type $FUNCSIG$vi) (param $0 i32) + local.get $0 + global.set $~lib/argc ) ) diff --git a/tests/compiler/constructor.optimized.wat b/tests/compiler/constructor.optimized.wat index cd28ee7b..4ccf88b0 100644 --- a/tests/compiler/constructor.optimized.wat +++ b/tests/compiler/constructor.optimized.wat @@ -7,6 +7,7 @@ (type $FUNCSIG$iii (func (param i32 i32) (result i32))) (type $FUNCSIG$vi (func (param i32))) (type $FUNCSIG$v (func)) + (type $FUNCSIG$iiiii (func (param i32 i32 i32 i32) (result i32))) (type $FUNCSIG$i (func (result i32))) (import "env" "abort" (func $~lib/env/abort (param i32 i32 i32 i32))) (memory $0 1) @@ -33,9 +34,22 @@ (global $constructor/ctorConditionallyReturns (mut i32) (i32.const 0)) (global $constructor/ctorAllocates (mut i32) (i32.const 0)) (global $constructor/ctorConditionallyAllocates (mut i32) (i32.const 0)) + (global $~lib/runtime/ROOT (mut i32) (i32.const 0)) + (global $~lib/argc (mut i32) (i32.const 0)) (global $~lib/capabilities i32 (i32.const 2)) (export "memory" (memory $0)) (export "table" (table $0)) + (export "runtime.instanceof" (func $~lib/runtime/runtime.instanceof)) + (export "runtime.allocate" (func $~lib/runtime/runtime.allocate)) + (export "runtime.discard" (func $~lib/runtime/runtime.discard)) + (export "runtime.register" (func $~lib/runtime/runtime.register)) + (export "runtime.newString" (func $~lib/runtime/runtime.newString)) + (export "runtime.newArrayBuffer" (func $~lib/runtime/runtime.newArrayBuffer)) + (export ".setargc" (func $~lib/setargc)) + (export "runtime.newArray" (func $~lib/runtime/runtime.newArray|trampoline)) + (export "runtime.retain" (func $~lib/runtime/runtime.retain)) + (export "runtime.release" (func $~lib/runtime/runtime.release)) + (export "runtime.collect" (func $~lib/runtime/runtime.collect)) (export ".capabilities" (global $~lib/capabilities)) (start $start) (func $~lib/allocator/tlsf/Root#setSLMap (; 1 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) @@ -1283,7 +1297,7 @@ if i32.const 0 i32.const 88 - i32.const 117 + i32.const 82 i32.const 6 call $~lib/env/abort unreachable @@ -1298,7 +1312,7 @@ if i32.const 0 i32.const 88 - i32.const 119 + i32.const 84 i32.const 6 call $~lib/env/abort unreachable @@ -1407,10 +1421,767 @@ call $constructor/CtorConditionallyAllocates#constructor global.set $constructor/ctorConditionallyAllocates ) - (func $start (; 23 ;) (type $FUNCSIG$v) - call $start:constructor + (func $~lib/runtime/runtime.instanceof (; 23 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + local.get $0 + if (result i32) + local.get $0 + i32.const 16 + i32.sub + i32.load + local.get $1 + call $~lib/runtime/__runtime_instanceof + else + i32.const 0 + end ) - (func $null (; 24 ;) (type $FUNCSIG$v) + (func $~lib/allocator/tlsf/__mem_free (; 24 ;) (type $FUNCSIG$vi) (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + local.get $0 + if + global.get $~lib/allocator/tlsf/ROOT + local.tee $1 + if + local.get $0 + i32.const 8 + i32.sub + local.tee $2 + i32.load + local.tee $3 + i32.const 1 + i32.and + if + i32.const 0 + i32.const 24 + i32.const 518 + i32.const 6 + call $~lib/env/abort + unreachable + end + local.get $2 + local.get $3 + i32.const 1 + i32.or + i32.store + local.get $1 + local.get $0 + i32.const 8 + i32.sub + call $~lib/allocator/tlsf/Root#insert + end + end + ) + (func $~lib/runtime/runtime.discard (; 25 ;) (type $FUNCSIG$vi) (param $0 i32) + local.get $0 + i32.const 120 + i32.le_u + if + i32.const 0 + i32.const 88 + i32.const 68 + i32.const 6 + call $~lib/env/abort + unreachable + end + local.get $0 + i32.const 16 + i32.sub + local.tee $0 + i32.load + i32.const -1520547049 + i32.ne + if + i32.const 0 + i32.const 88 + i32.const 70 + i32.const 6 + call $~lib/env/abort + unreachable + end + local.get $0 + call $~lib/allocator/tlsf/__mem_free + ) + (func $~lib/runtime/runtime.newString (; 26 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + i32.const 1 + i32.shl + call $~lib/runtime/runtime.allocate + i32.const 1 + call $~lib/runtime/runtime.register + ) + (func $~lib/runtime/runtime.newArrayBuffer (; 27 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + call $~lib/runtime/runtime.allocate + i32.const 11 + call $~lib/runtime/runtime.register + ) + (func $~lib/collector/itcm/ManagedObject#makeGray (; 28 ;) (type $FUNCSIG$vi) (param $0 i32) + (local $1 i32) + (local $2 i32) + global.get $~lib/collector/itcm/iter + local.get $0 + i32.eq + if + local.get $0 + i32.load offset=12 + global.set $~lib/collector/itcm/iter + end + local.get $0 + i32.load offset=8 + i32.const -4 + i32.and + local.tee $2 + local.get $0 + i32.load offset=12 + local.tee $1 + i32.store offset=12 + local.get $1 + local.get $1 + i32.load offset=8 + i32.const 3 + i32.and + local.get $2 + i32.or + i32.store offset=8 + global.get $~lib/collector/itcm/toSpace + local.get $0 + call $~lib/collector/itcm/ManagedObjectList#push + local.get $0 + local.get $0 + i32.load offset=8 + i32.const -4 + i32.and + i32.const 2 + i32.or + i32.store offset=8 + ) + (func $~lib/collector/itcm/__ref_link (; 29 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (local $2 i32) + call $~lib/collector/itcm/maybeInit + global.get $~lib/collector/itcm/white + i32.eqz + local.get $1 + i32.const 16 + i32.sub + local.tee $2 + i32.load offset=8 + i32.const 3 + i32.and + i32.eq + local.tee $1 + if (result i32) + global.get $~lib/collector/itcm/white + local.get $0 + i32.const 16 + i32.sub + i32.load offset=8 + i32.const 3 + i32.and + i32.eq + else + local.get $1 + end + if + local.get $2 + call $~lib/collector/itcm/ManagedObject#makeGray + end + ) + (func $~lib/memory/memory.copy (; 30 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local $4 i32) + block $~lib/util/memory/memmove|inlined.0 + local.get $0 + local.get $1 + i32.eq + br_if $~lib/util/memory/memmove|inlined.0 + 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 + loop $continue|0 + local.get $0 + i32.const 7 + i32.and + if + local.get $2 + i32.eqz + br_if $~lib/util/memory/memmove|inlined.0 + local.get $2 + i32.const 1 + i32.sub + local.set $2 + local.get $0 + local.tee $3 + i32.const 1 + i32.add + local.set $0 + local.get $1 + local.tee $4 + i32.const 1 + i32.add + local.set $1 + local.get $3 + local.get $4 + i32.load8_u + i32.store8 + br $continue|0 + end + end + loop $continue|1 + local.get $2 + i32.const 8 + i32.ge_u + if + 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 + br $continue|1 + end + end + end + loop $continue|2 + local.get $2 + if + local.get $0 + local.tee $3 + i32.const 1 + i32.add + local.set $0 + local.get $1 + local.tee $4 + i32.const 1 + i32.add + local.set $1 + local.get $3 + local.get $4 + i32.load8_u + i32.store8 + local.get $2 + i32.const 1 + i32.sub + local.set $2 + br $continue|2 + end + end + else + local.get $1 + i32.const 7 + i32.and + local.get $0 + i32.const 7 + i32.and + i32.eq + if + loop $continue|3 + local.get $0 + local.get $2 + i32.add + i32.const 7 + i32.and + if + local.get $2 + i32.eqz + br_if $~lib/util/memory/memmove|inlined.0 + local.get $2 + i32.const 1 + i32.sub + local.tee $2 + local.get $0 + i32.add + local.get $1 + local.get $2 + i32.add + i32.load8_u + i32.store8 + br $continue|3 + end + end + loop $continue|4 + local.get $2 + i32.const 8 + i32.ge_u + if + local.get $2 + i32.const 8 + i32.sub + local.tee $2 + local.get $0 + i32.add + local.get $1 + local.get $2 + i32.add + i64.load + i64.store + br $continue|4 + end + end + end + loop $continue|5 + local.get $2 + if + local.get $2 + i32.const 1 + i32.sub + local.tee $2 + local.get $0 + i32.add + local.get $1 + local.get $2 + i32.add + i32.load8_u + i32.store8 + br $continue|5 + end + end + end + end + ) + (func $~lib/runtime/runtime.newArray (; 31 ;) (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/runtime.allocate + local.get $2 + call $~lib/runtime/runtime.register + local.tee $2 + local.set $6 + local.get $0 + local.get $1 + i32.shl + local.tee $4 + call $~lib/runtime/runtime.allocate + i32.const 11 + call $~lib/runtime/runtime.register + local.tee $5 + local.tee $1 + local.get $2 + i32.load + i32.ne + if + local.get $1 + local.get $6 + call $~lib/collector/itcm/__ref_link + end + local.get $2 + local.get $1 + i32.store + local.get $2 + local.get $5 + i32.store offset=4 + local.get $2 + local.get $4 + i32.store offset=8 + local.get $2 + local.get $0 + i32.store offset=12 + local.get $3 + if + local.get $5 + local.get $3 + local.get $4 + call $~lib/memory/memory.copy + end + local.get $2 + ) + (func $~lib/runtime/runtime.retain (; 32 ;) (type $FUNCSIG$vi) (param $0 i32) + local.get $0 + global.get $~lib/runtime/ROOT + call $~lib/collector/itcm/__ref_link + ) + (func $~lib/runtime/runtime.release (; 33 ;) (type $FUNCSIG$vi) (param $0 i32) nop ) + (func $~lib/collector/itcm/step (; 34 ;) (type $FUNCSIG$v) + (local $0 i32) + block $break|0 + block $case3|0 + block $case2|0 + block $case1|0 + global.get $~lib/collector/itcm/state + local.tee $0 + if + local.get $0 + i32.const 1 + i32.sub + br_table $case1|0 $case2|0 $case3|0 $break|0 + end + unreachable + end + call $~lib/runtime/__gc_mark_roots + i32.const 2 + global.set $~lib/collector/itcm/state + br $break|0 + end + global.get $~lib/collector/itcm/iter + i32.load offset=8 + i32.const -4 + i32.and + local.tee $0 + global.get $~lib/collector/itcm/toSpace + i32.ne + if + local.get $0 + global.set $~lib/collector/itcm/iter + local.get $0 + global.get $~lib/collector/itcm/white + i32.eqz + local.get $0 + i32.load offset=8 + i32.const -4 + i32.and + i32.or + i32.store offset=8 + local.get $0 + i32.load + call $~lib/runtime/__gc_mark_members + else + call $~lib/runtime/__gc_mark_roots + global.get $~lib/collector/itcm/toSpace + global.get $~lib/collector/itcm/iter + i32.load offset=8 + i32.const -4 + i32.and + i32.eq + if + global.get $~lib/collector/itcm/fromSpace + local.set $0 + global.get $~lib/collector/itcm/toSpace + global.set $~lib/collector/itcm/fromSpace + local.get $0 + global.set $~lib/collector/itcm/toSpace + global.get $~lib/collector/itcm/white + i32.eqz + global.set $~lib/collector/itcm/white + local.get $0 + i32.load offset=8 + i32.const -4 + i32.and + global.set $~lib/collector/itcm/iter + i32.const 3 + global.set $~lib/collector/itcm/state + end + end + br $break|0 + end + global.get $~lib/collector/itcm/iter + local.tee $0 + global.get $~lib/collector/itcm/toSpace + i32.ne + if + local.get $0 + i32.load offset=8 + i32.const -4 + i32.and + global.set $~lib/collector/itcm/iter + local.get $0 + i32.const 120 + i32.ge_u + if + local.get $0 + call $~lib/allocator/tlsf/__mem_free + end + else + global.get $~lib/collector/itcm/toSpace + local.tee $0 + local.get $0 + i32.store offset=8 + local.get $0 + local.get $0 + i32.store offset=12 + i32.const 1 + global.set $~lib/collector/itcm/state + end + end + ) + (func $~lib/collector/itcm/__ref_collect (; 35 ;) (type $FUNCSIG$v) + call $~lib/collector/itcm/maybeInit + loop $continue|0 + global.get $~lib/collector/itcm/state + i32.const 1 + i32.ne + if + call $~lib/collector/itcm/step + br $continue|0 + end + end + loop $continue|1 + call $~lib/collector/itcm/step + global.get $~lib/collector/itcm/state + i32.const 1 + i32.ne + br_if $continue|1 + end + ) + (func $~lib/runtime/runtime.collect (; 36 ;) (type $FUNCSIG$v) + call $~lib/collector/itcm/__ref_collect + ) + (func $start (; 37 ;) (type $FUNCSIG$v) + call $start:constructor + i32.const 0 + call $~lib/runtime/runtime.allocate + i32.const 12 + call $~lib/runtime/runtime.register + global.set $~lib/runtime/ROOT + ) + (func $~lib/collector/itcm/__ref_mark (; 38 ;) (type $FUNCSIG$vi) (param $0 i32) + call $~lib/collector/itcm/maybeInit + global.get $~lib/collector/itcm/white + local.get $0 + i32.const 16 + i32.sub + local.tee $0 + i32.load offset=8 + i32.const 3 + i32.and + i32.eq + if + local.get $0 + call $~lib/collector/itcm/ManagedObject#makeGray + end + ) + (func $~lib/runtime/__gc_mark_roots (; 39 ;) (type $FUNCSIG$v) + (local $0 i32) + global.get $~lib/runtime/ROOT + local.tee $0 + if + local.get $0 + call $~lib/collector/itcm/__ref_mark + end + global.get $constructor/emptyCtor + local.tee $0 + if + local.get $0 + call $~lib/collector/itcm/__ref_mark + end + global.get $constructor/emptyCtorWithFieldInit + local.tee $0 + if + local.get $0 + call $~lib/collector/itcm/__ref_mark + end + global.get $constructor/emptyCtorWithFieldNoInit + local.tee $0 + if + local.get $0 + call $~lib/collector/itcm/__ref_mark + end + global.get $constructor/none + local.tee $0 + if + local.get $0 + call $~lib/collector/itcm/__ref_mark + end + global.get $constructor/justFieldInit + local.tee $0 + if + local.get $0 + call $~lib/collector/itcm/__ref_mark + end + global.get $constructor/justFieldNoInit + local.tee $0 + if + local.get $0 + call $~lib/collector/itcm/__ref_mark + end + global.get $constructor/ctorReturns + local.tee $0 + if + local.get $0 + call $~lib/collector/itcm/__ref_mark + end + global.get $constructor/ctorConditionallyReturns + local.tee $0 + if + local.get $0 + call $~lib/collector/itcm/__ref_mark + end + global.get $constructor/ctorAllocates + local.tee $0 + if + local.get $0 + call $~lib/collector/itcm/__ref_mark + end + global.get $constructor/ctorConditionallyAllocates + local.tee $0 + if + local.get $0 + call $~lib/collector/itcm/__ref_mark + end + ) + (func $~lib/runtime/__gc_mark_members (; 40 ;) (type $FUNCSIG$vi) (param $0 i32) + block $invalid + block $~lib/runtime/Root + block $~lib/arraybuffer/ArrayBuffer + block $constructor/CtorConditionallyAllocates + block $constructor/CtorAllocates + block $constructor/CtorConditionallyReturns + block $constructor/JustFieldNoInit + block $constructor/JustFieldInit + block $constructor/None + block $constructor/EmptyCtorWithFieldNoInit + block $constructor/EmptyCtorWithFieldInit + block $constructor/EmptyCtor + block $~lib/string/String + local.get $0 + i32.const 1 + i32.sub + br_table $~lib/string/String $constructor/EmptyCtor $constructor/EmptyCtorWithFieldInit $constructor/EmptyCtorWithFieldNoInit $constructor/None $constructor/JustFieldInit $constructor/JustFieldNoInit $constructor/CtorConditionallyReturns $constructor/CtorAllocates $constructor/CtorConditionallyAllocates $~lib/arraybuffer/ArrayBuffer $~lib/runtime/Root $invalid + end + return + end + return + end + return + end + return + end + return + end + return + end + return + end + return + end + return + end + return + end + return + end + return + end + unreachable + ) + (func $~lib/runtime/__runtime_instanceof (; 41 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + block $nope + block $~lib/runtime/Root + block $~lib/arraybuffer/ArrayBuffer + block $constructor/CtorConditionallyAllocates + block $constructor/CtorAllocates + block $constructor/CtorConditionallyReturns + block $constructor/JustFieldNoInit + block $constructor/JustFieldInit + block $constructor/None + block $constructor/EmptyCtorWithFieldNoInit + block $constructor/EmptyCtorWithFieldInit + block $constructor/EmptyCtor + block $~lib/string/String + local.get $0 + i32.const 1 + i32.sub + br_table $~lib/string/String $constructor/EmptyCtor $constructor/EmptyCtorWithFieldInit $constructor/EmptyCtorWithFieldNoInit $constructor/None $constructor/JustFieldInit $constructor/JustFieldNoInit $constructor/CtorConditionallyReturns $constructor/CtorAllocates $constructor/CtorConditionallyAllocates $~lib/arraybuffer/ArrayBuffer $~lib/runtime/Root $nope + end + local.get $1 + i32.const 1 + i32.eq + return + end + local.get $1 + i32.const 2 + i32.eq + return + end + local.get $1 + i32.const 3 + i32.eq + return + end + local.get $1 + i32.const 4 + i32.eq + return + end + local.get $1 + i32.const 5 + i32.eq + return + end + local.get $1 + i32.const 6 + i32.eq + return + end + local.get $1 + i32.const 7 + i32.eq + return + end + local.get $1 + i32.const 8 + i32.eq + return + end + local.get $1 + i32.const 9 + i32.eq + return + end + local.get $1 + i32.const 10 + i32.eq + return + end + local.get $1 + i32.const 11 + i32.eq + return + end + local.get $1 + i32.const 12 + i32.eq + return + end + i32.const 0 + ) + (func $null (; 42 ;) (type $FUNCSIG$v) + nop + ) + (func $~lib/runtime/runtime.newArray|trampoline (; 43 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + block $1of1 + block $0of1 + block $outOfRange + global.get $~lib/argc + i32.const 3 + i32.sub + br_table $0of1 $1of1 $outOfRange + end + unreachable + end + i32.const 0 + local.set $3 + end + local.get $0 + local.get $1 + local.get $2 + local.get $3 + call $~lib/runtime/runtime.newArray + ) + (func $~lib/setargc (; 44 ;) (type $FUNCSIG$vi) (param $0 i32) + local.get $0 + global.set $~lib/argc + ) ) diff --git a/tests/compiler/constructor.untouched.wat b/tests/compiler/constructor.untouched.wat index 2fc23bfa..4ee2de6e 100644 --- a/tests/compiler/constructor.untouched.wat +++ b/tests/compiler/constructor.untouched.wat @@ -7,6 +7,7 @@ (type $FUNCSIG$iii (func (param i32 i32) (result i32))) (type $FUNCSIG$vi (func (param i32))) (type $FUNCSIG$v (func)) + (type $FUNCSIG$iiiii (func (param i32 i32 i32 i32) (result i32))) (import "env" "abort" (func $~lib/env/abort (param i32 i32 i32 i32))) (memory $0 1) (data (i32.const 8) "\01\00\00\00,\00\00\00\00\00\00\00\00\00\00\00~\00l\00i\00b\00/\00a\00l\00l\00o\00c\00a\00t\00o\00r\00/\00t\00l\00s\00f\00.\00t\00s\00") @@ -49,10 +50,23 @@ (global $constructor/ctorConditionallyReturns (mut i32) (i32.const 0)) (global $constructor/ctorAllocates (mut i32) (i32.const 0)) (global $constructor/ctorConditionallyAllocates (mut i32) (i32.const 0)) + (global $~lib/runtime/ROOT (mut i32) (i32.const 0)) (global $~lib/memory/HEAP_BASE i32 (i32.const 120)) + (global $~lib/argc (mut i32) (i32.const 0)) (global $~lib/capabilities i32 (i32.const 2)) (export "memory" (memory $0)) (export "table" (table $0)) + (export "runtime.instanceof" (func $~lib/runtime/runtime.instanceof)) + (export "runtime.allocate" (func $~lib/runtime/runtime.allocate)) + (export "runtime.discard" (func $~lib/runtime/runtime.discard)) + (export "runtime.register" (func $~lib/runtime/runtime.register)) + (export "runtime.newString" (func $~lib/runtime/runtime.newString)) + (export "runtime.newArrayBuffer" (func $~lib/runtime/runtime.newArrayBuffer)) + (export ".setargc" (func $~lib/setargc)) + (export "runtime.newArray" (func $~lib/runtime/runtime.newArray|trampoline)) + (export "runtime.retain" (func $~lib/runtime/runtime.retain)) + (export "runtime.release" (func $~lib/runtime/runtime.release)) + (export "runtime.collect" (func $~lib/runtime/runtime.collect)) (export ".capabilities" (global $~lib/capabilities)) (start $start) (func $~lib/util/runtime/adjust (; 1 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) @@ -1563,7 +1577,7 @@ if i32.const 0 i32.const 88 - i32.const 117 + i32.const 82 i32.const 6 call $~lib/env/abort unreachable @@ -1580,7 +1594,7 @@ if i32.const 0 i32.const 88 - i32.const 119 + i32.const 84 i32.const 6 call $~lib/env/abort unreachable @@ -1774,9 +1788,887 @@ call $constructor/CtorConditionallyAllocates#constructor global.set $constructor/ctorConditionallyAllocates ) - (func $start (; 40 ;) (type $FUNCSIG$v) - call $start:constructor + (func $~lib/runtime/runtime.instanceof (; 40 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + local.get $0 + if (result i32) + local.get $0 + global.get $~lib/util/runtime/HEADER_SIZE + i32.sub + i32.load + local.get $1 + call $~lib/runtime/__runtime_instanceof + else + i32.const 0 + end ) - (func $null (; 41 ;) (type $FUNCSIG$v) + (func $~lib/allocator/tlsf/__mem_free (; 41 ;) (type $FUNCSIG$vi) (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + local.get $0 + if + global.get $~lib/allocator/tlsf/ROOT + local.set $1 + local.get $1 + if + local.get $0 + global.get $~lib/allocator/tlsf/Block.INFO + i32.sub + local.set $2 + local.get $2 + i32.load + local.set $3 + local.get $3 + global.get $~lib/allocator/tlsf/FREE + i32.and + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 518 + i32.const 6 + call $~lib/env/abort + unreachable + end + local.get $2 + local.get $3 + global.get $~lib/allocator/tlsf/FREE + i32.or + i32.store + local.get $1 + local.get $0 + global.get $~lib/allocator/tlsf/Block.INFO + i32.sub + call $~lib/allocator/tlsf/Root#insert + end + end + ) + (func $~lib/memory/memory.free (; 42 ;) (type $FUNCSIG$vi) (param $0 i32) + local.get $0 + call $~lib/allocator/tlsf/__mem_free + ) + (func $~lib/runtime/runtime.discard (; 43 ;) (type $FUNCSIG$vi) (param $0 i32) + (local $1 i32) + local.get $0 + global.get $~lib/memory/HEAP_BASE + i32.gt_u + i32.eqz + if + i32.const 0 + i32.const 88 + i32.const 68 + i32.const 6 + call $~lib/env/abort + unreachable + end + local.get $0 + global.get $~lib/util/runtime/HEADER_SIZE + i32.sub + local.set $1 + local.get $1 + i32.load + global.get $~lib/util/runtime/HEADER_MAGIC + i32.eq + i32.eqz + if + i32.const 0 + i32.const 88 + i32.const 70 + i32.const 6 + call $~lib/env/abort + unreachable + end + local.get $1 + call $~lib/memory/memory.free + ) + (func $~lib/runtime/runtime.newString (; 44 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + i32.const 1 + i32.shl + call $~lib/runtime/runtime.allocate + i32.const 1 + call $~lib/runtime/runtime.register + ) + (func $~lib/runtime/runtime.newArrayBuffer (; 45 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + call $~lib/runtime/runtime.allocate + i32.const 11 + call $~lib/runtime/runtime.register + ) + (func $~lib/collector/itcm/ManagedObject#get:color (; 46 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + i32.load offset=8 + i32.const 3 + i32.and + ) + (func $~lib/collector/itcm/ManagedObject#get:next (; 47 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + i32.load offset=8 + i32.const 3 + i32.const -1 + i32.xor + i32.and + ) + (func $~lib/collector/itcm/ManagedObject#unlink (; 48 ;) (type $FUNCSIG$vi) (param $0 i32) + (local $1 i32) + (local $2 i32) + local.get $0 + call $~lib/collector/itcm/ManagedObject#get:next + local.set $1 + local.get $0 + i32.load offset=12 + local.set $2 + local.get $1 + local.get $2 + i32.store offset=12 + local.get $2 + local.get $1 + call $~lib/collector/itcm/ManagedObject#set:next + ) + (func $~lib/collector/itcm/ManagedObject#makeGray (; 49 ;) (type $FUNCSIG$vi) (param $0 i32) + local.get $0 + global.get $~lib/collector/itcm/iter + i32.eq + if + local.get $0 + i32.load offset=12 + global.set $~lib/collector/itcm/iter + end + local.get $0 + call $~lib/collector/itcm/ManagedObject#unlink + global.get $~lib/collector/itcm/toSpace + local.get $0 + call $~lib/collector/itcm/ManagedObjectList#push + local.get $0 + local.get $0 + i32.load offset=8 + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.const 2 + i32.or + i32.store offset=8 + ) + (func $~lib/collector/itcm/__ref_link (; 50 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + call $~lib/collector/itcm/maybeInit + block $~lib/collector/itcm/refToObj|inlined.1 (result i32) + local.get $1 + local.set $2 + local.get $2 + global.get $~lib/util/runtime/HEADER_SIZE + i32.sub + end + local.set $3 + local.get $3 + call $~lib/collector/itcm/ManagedObject#get:color + global.get $~lib/collector/itcm/white + i32.eqz + i32.eq + local.tee $2 + if (result i32) + block $~lib/collector/itcm/refToObj|inlined.3 (result i32) + local.get $0 + local.set $2 + local.get $2 + global.get $~lib/util/runtime/HEADER_SIZE + i32.sub + end + call $~lib/collector/itcm/ManagedObject#get:color + global.get $~lib/collector/itcm/white + i32.eq + else + local.get $2 + end + if + local.get $3 + call $~lib/collector/itcm/ManagedObject#makeGray + end + ) + (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) + 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 $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/runtime.newArray (; 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) + (local $7 i32) + (local $8 i32) + (local $9 i32) + i32.const 16 + call $~lib/runtime/runtime.allocate + local.get $2 + call $~lib/runtime/runtime.register + local.set $4 + local.get $0 + local.get $1 + i32.shl + local.set $5 + local.get $5 + call $~lib/runtime/runtime.allocate + i32.const 11 + call $~lib/runtime/runtime.register + local.set $6 + local.get $4 + local.tee $7 + local.get $6 + local.tee $8 + local.get $7 + i32.load + local.tee $9 + i32.ne + if (result i32) + nop + local.get $8 + local.get $7 + call $~lib/collector/itcm/__ref_link + local.get $8 + else + local.get $8 + end + 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 $3 + if + local.get $6 + local.get $3 + local.get $5 + call $~lib/memory/memory.copy + end + local.get $4 + ) + (func $~lib/runtime/Root#constructor (; 53 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + i32.eqz + if + i32.const 0 + call $~lib/runtime/runtime.allocate + i32.const 12 + call $~lib/runtime/runtime.register + local.set $0 + end + local.get $0 + ) + (func $~lib/runtime/runtime.retain (; 54 ;) (type $FUNCSIG$vi) (param $0 i32) + local.get $0 + global.get $~lib/runtime/ROOT + call $~lib/collector/itcm/__ref_link + ) + (func $~lib/runtime/runtime.release (; 55 ;) (type $FUNCSIG$vi) (param $0 i32) + nop + ) + (func $~lib/collector/itcm/step (; 56 ;) (type $FUNCSIG$v) + (local $0 i32) + (local $1 i32) + block $break|0 + block $case3|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/collector/itcm/state + local.set $1 + local.get $1 + i32.const 0 + i32.eq + br_if $case0|0 + local.get $1 + i32.const 1 + i32.eq + br_if $case1|0 + local.get $1 + i32.const 2 + i32.eq + br_if $case2|0 + local.get $1 + i32.const 3 + i32.eq + br_if $case3|0 + br $break|0 + end + unreachable + end + block + call $~lib/runtime/__gc_mark_roots + i32.const 2 + global.set $~lib/collector/itcm/state + br $break|0 + unreachable + end + unreachable + end + block + global.get $~lib/collector/itcm/iter + call $~lib/collector/itcm/ManagedObject#get:next + local.set $0 + local.get $0 + global.get $~lib/collector/itcm/toSpace + i32.ne + if + local.get $0 + global.set $~lib/collector/itcm/iter + local.get $0 + global.get $~lib/collector/itcm/white + i32.eqz + call $~lib/collector/itcm/ManagedObject#set:color + local.get $0 + i32.load + block $~lib/collector/itcm/objToRef|inlined.0 (result i32) + local.get $0 + local.set $1 + local.get $1 + global.get $~lib/util/runtime/HEADER_SIZE + i32.add + end + call $~lib/runtime/__gc_mark_members + else + call $~lib/runtime/__gc_mark_roots + global.get $~lib/collector/itcm/iter + call $~lib/collector/itcm/ManagedObject#get:next + local.set $0 + local.get $0 + global.get $~lib/collector/itcm/toSpace + i32.eq + if + global.get $~lib/collector/itcm/fromSpace + local.set $1 + global.get $~lib/collector/itcm/toSpace + global.set $~lib/collector/itcm/fromSpace + local.get $1 + global.set $~lib/collector/itcm/toSpace + global.get $~lib/collector/itcm/white + i32.eqz + global.set $~lib/collector/itcm/white + local.get $1 + call $~lib/collector/itcm/ManagedObject#get:next + global.set $~lib/collector/itcm/iter + i32.const 3 + global.set $~lib/collector/itcm/state + end + end + br $break|0 + unreachable + end + unreachable + end + block + global.get $~lib/collector/itcm/iter + local.set $0 + local.get $0 + global.get $~lib/collector/itcm/toSpace + i32.ne + if + local.get $0 + call $~lib/collector/itcm/ManagedObject#get:next + global.set $~lib/collector/itcm/iter + local.get $0 + global.get $~lib/memory/HEAP_BASE + i32.ge_u + if + local.get $0 + call $~lib/memory/memory.free + end + else + global.get $~lib/collector/itcm/toSpace + call $~lib/collector/itcm/ManagedObjectList#clear + i32.const 1 + global.set $~lib/collector/itcm/state + end + br $break|0 + unreachable + end + unreachable + end + ) + (func $~lib/collector/itcm/__ref_collect (; 57 ;) (type $FUNCSIG$v) + call $~lib/collector/itcm/maybeInit + block $break|0 + loop $continue|0 + global.get $~lib/collector/itcm/state + i32.const 1 + i32.ne + if + call $~lib/collector/itcm/step + br $continue|0 + end + end + end + block $break|1 + loop $continue|1 + call $~lib/collector/itcm/step + global.get $~lib/collector/itcm/state + i32.const 1 + i32.ne + br_if $continue|1 + end + end + ) + (func $~lib/runtime/runtime.collect (; 58 ;) (type $FUNCSIG$v) + call $~lib/collector/itcm/__ref_collect + ) + (func $~lib/runtime/runtime#constructor (; 59 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + unreachable + ) + (func $start (; 60 ;) (type $FUNCSIG$v) + call $start:constructor + i32.const 0 + call $~lib/runtime/Root#constructor + global.set $~lib/runtime/ROOT + ) + (func $~lib/collector/itcm/__ref_mark (; 61 ;) (type $FUNCSIG$vi) (param $0 i32) + (local $1 i32) + (local $2 i32) + call $~lib/collector/itcm/maybeInit + block $~lib/collector/itcm/refToObj|inlined.4 (result i32) + local.get $0 + local.set $1 + local.get $1 + global.get $~lib/util/runtime/HEADER_SIZE + i32.sub + end + local.set $2 + local.get $2 + call $~lib/collector/itcm/ManagedObject#get:color + global.get $~lib/collector/itcm/white + i32.eq + if + local.get $2 + call $~lib/collector/itcm/ManagedObject#makeGray + end + ) + (func $~lib/runtime/__gc_mark_roots (; 62 ;) (type $FUNCSIG$v) + (local $0 i32) + global.get $~lib/runtime/ROOT + local.tee $0 + if + local.get $0 + call $~lib/collector/itcm/__ref_mark + end + global.get $constructor/emptyCtor + local.tee $0 + if + local.get $0 + call $~lib/collector/itcm/__ref_mark + end + global.get $constructor/emptyCtorWithFieldInit + local.tee $0 + if + local.get $0 + call $~lib/collector/itcm/__ref_mark + end + global.get $constructor/emptyCtorWithFieldNoInit + local.tee $0 + if + local.get $0 + call $~lib/collector/itcm/__ref_mark + end + global.get $constructor/none + local.tee $0 + if + local.get $0 + call $~lib/collector/itcm/__ref_mark + end + global.get $constructor/justFieldInit + local.tee $0 + if + local.get $0 + call $~lib/collector/itcm/__ref_mark + end + global.get $constructor/justFieldNoInit + local.tee $0 + if + local.get $0 + call $~lib/collector/itcm/__ref_mark + end + global.get $constructor/ctorReturns + local.tee $0 + if + local.get $0 + call $~lib/collector/itcm/__ref_mark + end + global.get $constructor/ctorConditionallyReturns + local.tee $0 + if + local.get $0 + call $~lib/collector/itcm/__ref_mark + end + global.get $constructor/ctorAllocates + local.tee $0 + if + local.get $0 + call $~lib/collector/itcm/__ref_mark + end + global.get $constructor/ctorConditionallyAllocates + local.tee $0 + if + local.get $0 + call $~lib/collector/itcm/__ref_mark + end + ) + (func $~lib/runtime/__gc_mark_members (; 63 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (local $2 i32) + block $invalid + block $~lib/runtime/Root + block $~lib/arraybuffer/ArrayBuffer + block $constructor/CtorConditionallyAllocates + block $constructor/CtorAllocates + block $constructor/CtorConditionallyReturns + block $constructor/JustFieldNoInit + block $constructor/JustFieldInit + block $constructor/None + block $constructor/EmptyCtorWithFieldNoInit + block $constructor/EmptyCtorWithFieldInit + block $constructor/EmptyCtor + block $~lib/string/String + local.get $0 + br_table $invalid $~lib/string/String $constructor/EmptyCtor $constructor/EmptyCtorWithFieldInit $constructor/EmptyCtorWithFieldNoInit $constructor/None $constructor/JustFieldInit $constructor/JustFieldNoInit $constructor/CtorConditionallyReturns $constructor/CtorAllocates $constructor/CtorConditionallyAllocates $~lib/arraybuffer/ArrayBuffer $~lib/runtime/Root $invalid + end + return + end + return + end + return + end + return + end + return + end + return + end + return + end + return + end + return + end + return + end + return + end + return + end + unreachable + ) + (func $~lib/runtime/__runtime_instanceof (; 64 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + block $nope + block $~lib/runtime/Root + block $~lib/arraybuffer/ArrayBuffer + block $constructor/CtorConditionallyAllocates + block $constructor/CtorAllocates + block $constructor/CtorConditionallyReturns + block $constructor/JustFieldNoInit + block $constructor/JustFieldInit + block $constructor/None + block $constructor/EmptyCtorWithFieldNoInit + block $constructor/EmptyCtorWithFieldInit + block $constructor/EmptyCtor + block $~lib/string/String + local.get $0 + br_table $nope $~lib/string/String $constructor/EmptyCtor $constructor/EmptyCtorWithFieldInit $constructor/EmptyCtorWithFieldNoInit $constructor/None $constructor/JustFieldInit $constructor/JustFieldNoInit $constructor/CtorConditionallyReturns $constructor/CtorAllocates $constructor/CtorConditionallyAllocates $~lib/arraybuffer/ArrayBuffer $~lib/runtime/Root $nope + end + local.get $1 + i32.const 1 + i32.eq + return + end + local.get $1 + i32.const 2 + i32.eq + return + end + local.get $1 + i32.const 3 + i32.eq + return + end + local.get $1 + i32.const 4 + i32.eq + return + end + local.get $1 + i32.const 5 + i32.eq + return + end + local.get $1 + i32.const 6 + i32.eq + return + end + local.get $1 + i32.const 7 + i32.eq + return + end + local.get $1 + i32.const 8 + i32.eq + return + end + local.get $1 + i32.const 9 + i32.eq + return + end + local.get $1 + i32.const 10 + i32.eq + return + end + local.get $1 + i32.const 11 + i32.eq + return + end + local.get $1 + i32.const 12 + i32.eq + return + end + i32.const 0 + return + ) + (func $null (; 65 ;) (type $FUNCSIG$v) + ) + (func $~lib/runtime/runtime.newArray|trampoline (; 66 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + block $1of1 + block $0of1 + block $outOfRange + global.get $~lib/argc + i32.const 3 + i32.sub + br_table $0of1 $1of1 $outOfRange + end + unreachable + end + i32.const 0 + local.set $3 + end + local.get $0 + local.get $1 + local.get $2 + local.get $3 + call $~lib/runtime/runtime.newArray + ) + (func $~lib/setargc (; 67 ;) (type $FUNCSIG$vi) (param $0 i32) + local.get $0 + global.set $~lib/argc ) ) diff --git a/tests/compiler/exports.optimized.wat b/tests/compiler/exports.optimized.wat index 97d6ada4..c69f10e1 100644 --- a/tests/compiler/exports.optimized.wat +++ b/tests/compiler/exports.optimized.wat @@ -150,7 +150,7 @@ if i32.const 0 i32.const 16 - i32.const 117 + i32.const 82 i32.const 6 call $~lib/env/abort unreachable @@ -165,7 +165,7 @@ if i32.const 0 i32.const 16 - i32.const 119 + i32.const 84 i32.const 6 call $~lib/env/abort unreachable diff --git a/tests/compiler/exports.untouched.wat b/tests/compiler/exports.untouched.wat index 4e9fdb95..6d21861e 100644 --- a/tests/compiler/exports.untouched.wat +++ b/tests/compiler/exports.untouched.wat @@ -196,7 +196,7 @@ if i32.const 0 i32.const 16 - i32.const 117 + i32.const 82 i32.const 6 call $~lib/env/abort unreachable @@ -213,7 +213,7 @@ if i32.const 0 i32.const 16 - i32.const 119 + i32.const 84 i32.const 6 call $~lib/env/abort unreachable diff --git a/tests/compiler/gc.optimized.wat b/tests/compiler/gc.optimized.wat index e3ab7c4f..8fc022e4 100644 --- a/tests/compiler/gc.optimized.wat +++ b/tests/compiler/gc.optimized.wat @@ -5,10 +5,7 @@ (type $FUNCSIG$viiii (func (param i32 i32 i32 i32))) (type $FUNCSIG$vi (func (param i32))) (type $FUNCSIG$viiddddd (func (param i32 i32 f64 f64 f64 f64 f64))) - (type $FUNCSIG$viii (func (param i32 i32 i32))) (type $FUNCSIG$vii (func (param i32 i32))) - (type $FUNCSIG$iiii (func (param i32 i32 i32) (result i32))) - (type $FUNCSIG$iiiii (func (param i32 i32 i32 i32) (result i32))) (type $FUNCSIG$i (func (result i32))) (import "env" "abort" (func $~lib/env/abort (param i32 i32 i32 i32))) (import "env" "trace" (func $~lib/env/trace (param i32 i32 f64 f64 f64 f64 f64))) @@ -17,16 +14,14 @@ (data (i32.const 24) "~\00l\00i\00b\00/\00r\00u\00n\00t\00i\00m\00e\00.\00t\00s") (data (i32.const 56) "\02\00\00\00\16") (data (i32.const 72) "g\00c\00.\00r\00e\00g\00i\00s\00t\00e\00r") - (data (i32.const 96) "\02\00\00\00\n") - (data (i32.const 112) "g\00c\00.\00t\00s") - (data (i32.const 128) "\02\00\00\00&") - (data (i32.const 144) "~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00b\00u\00f\00f\00e\00r\00.\00t\00s") - (data (i32.const 184) "\02\00\00\00\0e") - (data (i32.const 200) "g\00c\00.\00l\00i\00n\00k") - (data (i32.const 216) "\02\00\00\00\12") - (data (i32.const 232) "g\00c\00.\00u\00n\00l\00i\00n\00k") - (data (i32.const 256) "\02\00\00\00\14") - (data (i32.const 272) "g\00c\00.\00c\00o\00l\00l\00e\00c\00t") + (data (i32.const 96) "\02\00\00\00\0e") + (data (i32.const 112) "g\00c\00.\00l\00i\00n\00k") + (data (i32.const 128) "\02\00\00\00\n") + (data (i32.const 144) "g\00c\00.\00t\00s") + (data (i32.const 160) "\02\00\00\00\12") + (data (i32.const 176) "g\00c\00.\00u\00n\00l\00i\00n\00k") + (data (i32.const 200) "\02\00\00\00\14") + (data (i32.const 216) "g\00c\00.\00c\00o\00l\00l\00e\00c\00t") (table $0 1 funcref) (elem (i32.const 0) $null) (global $gc/_dummy/collect_count (mut i32) (i32.const 0)) @@ -40,27 +35,12 @@ (global $gc/_dummy/unlink_parentRef (mut i32) (i32.const 0)) (global $~lib/allocator/arena/startOffset (mut i32) (i32.const 0)) (global $~lib/allocator/arena/offset (mut i32) (i32.const 0)) - (global $~lib/gc/gc.implemented i32 (i32.const 1)) - (global $~lib/gc/ROOT (mut i32) (i32.const 0)) + (global $~lib/runtime/ROOT (mut i32) (i32.const 0)) (global $~lib/started (mut i32) (i32.const 0)) - (global $~lib/argc (mut i32) (i32.const 0)) (global $~lib/capabilities i32 (i32.const 2)) (export "memory" (memory $0)) (export "table" (table $0)) (export "main" (func $gc/main)) - (export "runtime.instanceof" (func $~lib/runtime/runtime.instanceof)) - (export "runtime.allocate" (func $~lib/runtime/runtime.allocate)) - (export "runtime.reallocate" (func $~lib/runtime/runtime.reallocate)) - (export "runtime.discard" (func $~lib/runtime/runtime.discard)) - (export "runtime.register" (func $~lib/runtime/runtime.register)) - (export "runtime.newString" (func $~lib/runtime/runtime.newString)) - (export "runtime.newArrayBuffer" (func $~lib/runtime/runtime.newArrayBuffer)) - (export ".setargc" (func $~lib/setargc)) - (export "runtime.newArray" (func $~lib/runtime/runtime.newArray|trampoline)) - (export "gc.implemented" (global $~lib/gc/gc.implemented)) - (export "gc.collect" (func $~lib/gc/gc.collect)) - (export "gc.retain" (func $~lib/gc/gc.retain)) - (export "gc.release" (func $~lib/gc/gc.release)) (export ".capabilities" (global $~lib/capabilities)) (func $~lib/allocator/arena/__mem_allocate (; 2 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) @@ -124,30 +104,23 @@ global.set $~lib/allocator/arena/offset local.get $1 ) - (func $~lib/runtime/runtime.allocate (; 3 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - i32.const 1 - i32.const 32 - local.get $0 - i32.const 15 - i32.add - i32.clz - i32.sub - i32.shl + (func $~lib/runtime/runtime.allocate (; 3 ;) (type $FUNCSIG$i) (result i32) + (local $0 i32) + i32.const 16 call $~lib/allocator/arena/__mem_allocate - local.tee $1 + local.tee $0 i32.const -1520547049 i32.store - local.get $1 local.get $0 + i32.const 0 i32.store offset=4 - local.get $1 + local.get $0 i32.const 0 i32.store offset=8 - local.get $1 + local.get $0 i32.const 0 i32.store offset=12 - local.get $1 + local.get $0 i32.const 16 i32.add ) @@ -171,12 +144,12 @@ (func $~lib/runtime/runtime.register (; 5 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) local.get $0 - i32.const 292 + i32.const 236 i32.le_u if i32.const 0 i32.const 24 - i32.const 117 + i32.const 82 i32.const 6 call $~lib/env/abort unreachable @@ -191,7 +164,7 @@ if i32.const 0 i32.const 24 - i32.const 119 + i32.const 84 i32.const 6 call $~lib/env/abort unreachable @@ -203,241 +176,8 @@ call $gc/_dummy/__ref_register local.get $0 ) - (func $~lib/memory/memory.fill (; 6 ;) (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 $1 - i32.sub - local.set $2 - local.get $0 - local.get $1 - i32.add - local.tee $0 - i32.const 0 - i32.store - local.get $2 - 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/arraybuffer/ArrayBuffer#constructor (; 7 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - local.get $0 - i32.const 1073741808 - i32.gt_u - if - i32.const 0 - i32.const 144 - i32.const 54 - i32.const 43 - call $~lib/env/abort - unreachable - end - local.get $0 - call $~lib/runtime/runtime.allocate - local.tee $1 - local.get $0 - call $~lib/memory/memory.fill - local.get $1 - i32.const 4 - call $~lib/runtime/runtime.register - ) - (func $gc/_dummy/__ref_link (; 8 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) - i32.const 200 + (func $gc/_dummy/__ref_link (; 6 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + i32.const 112 i32.const 2 local.get $0 f64.convert_i32_u @@ -456,8 +196,8 @@ local.get $0 global.set $gc/_dummy/link_parentRef ) - (func $gc/_dummy/__ref_unlink (; 9 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) - i32.const 232 + (func $gc/_dummy/__ref_unlink (; 7 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + i32.const 176 i32.const 2 local.get $0 f64.convert_i32_u @@ -476,491 +216,124 @@ local.get $1 global.set $gc/_dummy/unlink_parentRef ) - (func $~lib/set/Set#clear (; 10 ;) (type $FUNCSIG$vi) (param $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - local.get $0 - local.tee $2 - local.set $1 - i32.const 16 - call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $0 - local.get $1 - i32.load - local.tee $3 - i32.ne - if - local.get $3 - if - local.get $3 - local.get $2 - call $gc/_dummy/__ref_unlink - end - local.get $0 - local.get $2 - call $gc/_dummy/__ref_link - end - local.get $1 - local.get $0 - i32.store - local.get $1 - i32.const 3 - i32.store offset=4 - i32.const 32 - call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $0 - local.get $1 - local.tee $2 - i32.load offset=8 - local.tee $3 - i32.ne - if - local.get $3 - if - local.get $3 - local.get $2 - call $gc/_dummy/__ref_unlink - end - local.get $0 - local.get $2 - call $gc/_dummy/__ref_link - end - local.get $1 - local.get $0 - i32.store offset=8 - local.get $1 - i32.const 4 - i32.store offset=12 - local.get $1 - i32.const 0 - i32.store offset=16 - local.get $1 - i32.const 0 - i32.store offset=20 - ) - (func $~lib/set/Set#constructor (; 11 ;) (type $FUNCSIG$i) (result i32) + (func $gc/main (; 8 ;) (type $FUNCSIG$v) (local $0 i32) - i32.const 24 - call $~lib/runtime/runtime.allocate - i32.const 3 - call $~lib/runtime/runtime.register - local.tee $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 - i32.const 0 - i32.store offset=12 - local.get $0 - i32.const 0 - i32.store offset=16 - local.get $0 - i32.const 0 - i32.store offset=20 - local.get $0 - call $~lib/set/Set#clear - local.get $0 - ) - (func $~lib/util/hash/hash32 (; 12 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - local.get $0 - i32.const 255 - i32.and - i32.const -2128831035 - i32.xor - i32.const 16777619 - i32.mul - local.get $0 - i32.const 8 - i32.shr_u - i32.const 255 - i32.and - i32.xor - i32.const 16777619 - i32.mul - local.get $0 - i32.const 16 - i32.shr_u - i32.const 255 - i32.and - i32.xor - i32.const 16777619 - i32.mul - local.get $0 - i32.const 24 - i32.shr_u - i32.xor - i32.const 16777619 - i32.mul - ) - (func $~lib/set/Set#find (; 13 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - local.get $0 - i32.load - local.get $0 - i32.load offset=4 - local.get $2 - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $2 - loop $continue|0 - local.get $2 - if - local.get $2 - i32.load offset=4 - i32.const 1 - i32.and - i32.eqz - local.tee $0 - if - local.get $2 - i32.load - local.get $1 - i32.eq - local.set $0 - end - local.get $0 - if - local.get $2 - return - end - local.get $2 - i32.load offset=4 - i32.const -2 - i32.and - local.set $2 - br $continue|0 - end - end - i32.const 0 - ) - (func $~lib/set/Set#has (; 14 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - local.get $0 - local.get $1 - local.get $1 - call $~lib/util/hash/hash32 - call $~lib/set/Set#find - i32.const 0 - i32.ne - ) - (func $~lib/set/Set#rehash (; 15 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (local $1 i32) (local $2 i32) (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - local.get $1 - i32.const 1 - i32.add - local.tee $2 - i32.const 2 - i32.shl - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $4 - local.get $2 - f64.convert_i32_s - f64.const 2.6666666666666665 - f64.mul - i32.trunc_f64_s - local.tee $6 - i32.const 3 - i32.shl - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $5 - local.get $0 - i32.load offset=8 - local.tee $2 - local.get $0 - i32.load offset=16 - i32.const 3 - i32.shl - i32.add - local.set $7 - local.get $5 - local.set $3 - loop $continue|0 - local.get $2 - local.get $7 - i32.ne - if - local.get $2 - i32.load offset=4 - i32.const 1 - i32.and - i32.eqz - if - local.get $3 - local.get $2 - i32.load - i32.store - local.get $3 - local.get $2 - i32.load - call $~lib/util/hash/hash32 - local.get $1 - i32.and - i32.const 2 - i32.shl - local.get $4 - i32.add - local.tee $8 - i32.load - i32.store offset=4 - local.get $8 - local.get $3 - i32.store - local.get $3 - i32.const 8 - i32.add - local.set $3 - end - local.get $2 - i32.const 8 - i32.add - local.set $2 - br $continue|0 - end - end - local.get $0 - local.tee $3 - local.set $2 - local.get $4 - local.tee $0 - local.get $2 - i32.load - local.tee $4 - i32.ne - if - local.get $4 - if - local.get $4 - local.get $3 - call $gc/_dummy/__ref_unlink - end - local.get $0 - local.get $3 - call $gc/_dummy/__ref_link - end - local.get $2 - local.get $0 - i32.store - local.get $2 - local.get $1 - i32.store offset=4 - local.get $5 - local.tee $0 - local.get $2 - local.tee $1 - i32.load offset=8 - local.tee $3 - i32.ne - if - local.get $3 - if - local.get $3 - local.get $2 - call $gc/_dummy/__ref_unlink - end - local.get $0 - local.get $2 - call $gc/_dummy/__ref_link - end - local.get $1 - local.get $0 - i32.store offset=8 - local.get $1 - local.get $6 - i32.store offset=12 - local.get $1 - local.get $1 - i32.load offset=20 - i32.store offset=16 - ) - (func $~lib/set/Set#add (; 16 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - local.get $0 - local.get $1 - local.get $1 - call $~lib/util/hash/hash32 - local.tee $3 - call $~lib/set/Set#find + global.get $~lib/started i32.eqz if - local.get $0 - i32.load offset=16 - local.get $0 - i32.load offset=12 - i32.eq - if - local.get $0 - local.get $0 - i32.load offset=20 - local.get $0 - i32.load offset=12 - f64.convert_i32_s - f64.const 0.75 - f64.mul - i32.trunc_f64_s - i32.lt_s - if (result i32) - local.get $0 - i32.load offset=4 - else - local.get $0 - i32.load offset=4 - i32.const 1 - i32.shl - i32.const 1 - i32.or - end - call $~lib/set/Set#rehash - end - local.get $0 - i32.load offset=8 - local.set $2 - local.get $0 - local.get $0 - i32.load offset=16 - local.tee $4 - i32.const 1 - i32.add - i32.store offset=16 - local.get $4 + i32.const 240 + global.set $~lib/allocator/arena/startOffset + global.get $~lib/allocator/arena/startOffset + global.set $~lib/allocator/arena/offset + call $~lib/runtime/runtime.allocate i32.const 3 - i32.shl - local.get $2 - i32.add - local.tee $2 - local.get $1 - i32.store - local.get $0 - local.get $0 - i32.load offset=20 + call $~lib/runtime/runtime.register + global.set $~lib/runtime/ROOT i32.const 1 - i32.add - i32.store offset=20 - local.get $2 - local.get $0 - i32.load - local.get $0 - i32.load offset=4 - local.get $3 - i32.and - i32.const 2 - i32.shl - i32.add - local.tee $0 - i32.load - i32.store offset=4 - local.get $0 - local.get $2 - i32.store + global.set $~lib/started end - ) - (func $~lib/gc/gc.retain (; 17 ;) (type $FUNCSIG$vi) (param $0 i32) - (local $1 i32) - global.get $~lib/gc/ROOT - local.tee $1 - local.get $0 - call $~lib/set/Set#has - i32.eqz - if - local.get $1 - local.get $0 - call $~lib/set/Set#add - local.get $0 - local.get $1 - call $gc/_dummy/__ref_link - end - ) - (func $~lib/set/Set#delete (; 18 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) - (local $2 i32) - local.get $0 - local.get $1 - local.get $1 - call $~lib/util/hash/hash32 - call $~lib/set/Set#find - local.tee $1 - i32.eqz - if - return - end - local.get $1 - local.get $1 - i32.load offset=4 + call $~lib/runtime/runtime.allocate i32.const 1 - i32.or - i32.store offset=4 + call $~lib/runtime/runtime.register + local.set $2 + global.get $gc/_dummy/link_count + local.set $0 + global.get $gc/_dummy/unlink_count + local.set $1 + global.get $gc/_dummy/collect_count + local.set $3 + local.get $2 + global.get $~lib/runtime/ROOT + call $gc/_dummy/__ref_link + global.get $gc/_dummy/link_count local.get $0 - local.get $0 - i32.load offset=20 - i32.const 1 - i32.sub - i32.store offset=20 - local.get $0 - i32.load offset=4 - i32.const 1 - i32.shr_u - local.tee $2 i32.const 1 i32.add - i32.const 4 - local.get $0 - i32.load offset=20 - local.tee $1 - i32.const 4 + i32.ne + if + i32.const 0 + i32.const 144 + i32.const 14 + i32.const 2 + call $~lib/env/abort + unreachable + end + global.get $gc/_dummy/unlink_count local.get $1 - i32.gt_u - select - i32.ge_u - local.tee $1 - if (result i32) - local.get $0 - i32.load offset=20 - local.get $0 - i32.load offset=12 - f64.convert_i32_s - f64.const 0.75 - f64.mul - i32.trunc_f64_s - i32.lt_s - else - local.get $1 - end + i32.ne if - local.get $0 - local.get $2 - call $~lib/set/Set#rehash + i32.const 0 + i32.const 144 + i32.const 15 + i32.const 2 + call $~lib/env/abort + unreachable end - ) - (func $~lib/gc/gc.release (; 19 ;) (type $FUNCSIG$vi) (param $0 i32) - (local $1 i32) - global.get $~lib/gc/ROOT - local.tee $1 + global.get $gc/_dummy/collect_count + local.get $3 + i32.ne + if + i32.const 0 + i32.const 144 + i32.const 16 + i32.const 2 + call $~lib/env/abort + unreachable + end + global.get $gc/_dummy/link_count + local.set $0 + global.get $gc/_dummy/unlink_count + local.set $1 + global.get $gc/_dummy/collect_count + local.set $3 + local.get $2 + global.get $~lib/runtime/ROOT + call $gc/_dummy/__ref_unlink + global.get $gc/_dummy/link_count local.get $0 - call $~lib/set/Set#has + i32.ne if - local.get $1 - local.get $0 - call $~lib/set/Set#delete - local.get $0 - local.get $1 - call $gc/_dummy/__ref_unlink + i32.const 0 + i32.const 144 + i32.const 23 + i32.const 2 + call $~lib/env/abort + unreachable end - ) - (func $~lib/gc/gc.collect (; 20 ;) (type $FUNCSIG$v) - i32.const 272 + global.get $gc/_dummy/unlink_count + local.get $1 + i32.const 1 + i32.add + i32.ne + if + i32.const 0 + i32.const 144 + i32.const 24 + i32.const 2 + call $~lib/env/abort + unreachable + end + global.get $gc/_dummy/collect_count + local.get $3 + i32.ne + if + i32.const 0 + i32.const 144 + i32.const 25 + i32.const 2 + call $~lib/env/abort + unreachable + end + global.get $gc/_dummy/link_count + local.set $2 + global.get $gc/_dummy/unlink_count + local.set $0 + global.get $gc/_dummy/collect_count + local.set $1 + i32.const 216 i32.const 0 f64.const 0 f64.const 0 @@ -972,1472 +345,43 @@ i32.const 1 i32.add global.set $gc/_dummy/collect_count - ) - (func $gc/main (; 21 ;) (type $FUNCSIG$v) - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - global.get $~lib/started - i32.eqz - if - i32.const 296 - global.set $~lib/allocator/arena/startOffset - global.get $~lib/allocator/arena/startOffset - global.set $~lib/allocator/arena/offset - call $~lib/set/Set#constructor - global.set $~lib/gc/ROOT - i32.const 1 - global.set $~lib/started - end - i32.const 0 - call $~lib/runtime/runtime.allocate - i32.const 1 - call $~lib/runtime/runtime.register - local.set $2 global.get $gc/_dummy/link_count - local.set $3 - global.get $gc/_dummy/unlink_count - local.set $0 - global.get $gc/_dummy/collect_count - local.set $1 local.get $2 - call $~lib/gc/gc.retain - global.get $gc/_dummy/link_count - local.get $3 - i32.const 1 - i32.add i32.ne if i32.const 0 - i32.const 112 - i32.const 17 - i32.const 2 - call $~lib/env/abort - unreachable - end - global.get $gc/_dummy/unlink_count - local.get $0 - i32.ne - if - i32.const 0 - i32.const 112 - i32.const 18 - i32.const 2 - call $~lib/env/abort - unreachable - end - global.get $gc/_dummy/collect_count - local.get $1 - i32.ne - if - i32.const 0 - i32.const 112 - i32.const 19 - i32.const 2 - call $~lib/env/abort - unreachable - end - global.get $gc/_dummy/link_count - local.set $3 - global.get $gc/_dummy/unlink_count - local.set $0 - global.get $gc/_dummy/collect_count - local.set $1 - local.get $2 - call $~lib/gc/gc.release - global.get $gc/_dummy/link_count - local.get $3 - i32.ne - if - i32.const 0 - i32.const 112 - i32.const 26 - i32.const 2 - call $~lib/env/abort - unreachable - end - global.get $gc/_dummy/unlink_count - local.get $0 - i32.const 1 - i32.add - i32.ne - if - i32.const 0 - i32.const 112 - i32.const 27 - i32.const 2 - call $~lib/env/abort - unreachable - end - global.get $gc/_dummy/collect_count - local.get $1 - i32.ne - if - i32.const 0 - i32.const 112 - i32.const 28 - i32.const 2 - call $~lib/env/abort - unreachable - end - global.get $gc/_dummy/link_count - local.set $0 - global.get $gc/_dummy/unlink_count - local.set $1 - global.get $gc/_dummy/collect_count - local.set $2 - call $~lib/gc/gc.collect - global.get $gc/_dummy/link_count - local.get $0 - i32.ne - if - i32.const 0 - i32.const 112 - i32.const 35 - i32.const 2 - call $~lib/env/abort - unreachable - end - global.get $gc/_dummy/unlink_count - local.get $1 - i32.ne - if - i32.const 0 - i32.const 112 - i32.const 36 - i32.const 2 - call $~lib/env/abort - unreachable - end - global.get $gc/_dummy/collect_count - local.get $2 - i32.const 1 - i32.add - i32.ne - if - i32.const 0 - i32.const 112 - i32.const 37 - i32.const 2 - call $~lib/env/abort - unreachable - end - ) - (func $~lib/runtime/runtime.instanceof (; 22 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - local.get $0 - if (result i32) - local.get $0 - i32.const 16 - i32.sub - i32.load - local.get $1 - call $~lib/runtime/__runtime_instanceof - else - i32.const 0 - end - ) - (func $~lib/util/memory/memcpy (; 23 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - loop $continue|0 - local.get $1 - i32.const 3 - i32.and - local.get $2 - local.get $2 - select - if - local.get $0 - local.tee $3 - i32.const 1 - i32.add - local.set $0 - local.get $1 - local.tee $4 - i32.const 1 - i32.add - local.set $1 - local.get $3 - local.get $4 - i32.load8_u - i32.store8 - local.get $2 - i32.const 1 - i32.sub - local.set $2 - br $continue|0 - end - end - local.get $0 - i32.const 3 - i32.and - i32.eqz - if - loop $continue|1 - local.get $2 - i32.const 16 - i32.ge_u - 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.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 - br $continue|1 - end - end - local.get $2 - 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 $1 - i32.const 8 - i32.add - local.set $1 - local.get $0 - i32.const 8 - i32.add - local.set $0 - end - local.get $2 - i32.const 4 - i32.and - if - local.get $0 - local.get $1 - i32.load - i32.store - local.get $1 - i32.const 4 - i32.add - local.set $1 - local.get $0 - i32.const 4 - i32.add - local.set $0 - end - local.get $2 - i32.const 2 - i32.and - if - local.get $0 - local.get $1 - i32.load16_u - i32.store16 - local.get $1 - i32.const 2 - i32.add - local.set $1 - local.get $0 - i32.const 2 - i32.add - local.set $0 - end - local.get $2 - i32.const 1 - i32.and - if - local.get $0 - local.get $1 - i32.load8_u - i32.store8 - end - return - end - local.get $2 - i32.const 32 - i32.ge_u - if - block $break|2 - block $case2|2 - block $case1|2 - local.get $0 - i32.const 3 - i32.and - local.tee $3 - i32.const 1 - i32.ne - if - local.get $3 - i32.const 2 - i32.eq - br_if $case1|2 - local.get $3 - i32.const 3 - i32.eq - br_if $case2|2 - br $break|2 - end - local.get $1 - i32.load - local.set $5 - local.get $0 - local.get $1 - i32.load8_u - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.tee $0 - local.get $1 - i32.const 1 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.tee $3 - i32.const 1 - i32.add - local.set $0 - local.get $1 - i32.const 1 - i32.add - local.tee $4 - i32.const 1 - i32.add - local.set $1 - local.get $3 - local.get $4 - i32.load8_u - i32.store8 - local.get $2 - i32.const 3 - i32.sub - local.set $2 - loop $continue|3 - local.get $2 - i32.const 17 - i32.ge_u - if - local.get $0 - local.get $1 - i32.const 1 - i32.add - i32.load - local.tee $3 - i32.const 8 - i32.shl - local.get $5 - i32.const 24 - i32.shr_u - i32.or - i32.store - local.get $0 - i32.const 4 - i32.add - local.get $3 - i32.const 24 - i32.shr_u - local.get $1 - i32.const 5 - i32.add - i32.load - local.tee $3 - i32.const 8 - i32.shl - i32.or - i32.store - local.get $0 - i32.const 8 - i32.add - local.get $3 - i32.const 24 - i32.shr_u - local.get $1 - i32.const 9 - i32.add - i32.load - local.tee $3 - i32.const 8 - i32.shl - i32.or - i32.store - local.get $0 - i32.const 12 - i32.add - local.get $1 - i32.const 13 - i32.add - i32.load - local.tee $5 - i32.const 8 - i32.shl - local.get $3 - i32.const 24 - i32.shr_u - 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 - br $continue|3 - end - end - br $break|2 - end - local.get $1 - i32.load - local.set $5 - local.get $0 - local.get $1 - i32.load8_u - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.tee $3 - i32.const 1 - i32.add - local.set $0 - local.get $1 - i32.const 1 - i32.add - local.tee $4 - i32.const 1 - i32.add - local.set $1 - local.get $3 - local.get $4 - i32.load8_u - i32.store8 - local.get $2 - i32.const 2 - i32.sub - local.set $2 - loop $continue|4 - local.get $2 - i32.const 18 - i32.ge_u - if - local.get $0 - local.get $1 - i32.const 2 - i32.add - i32.load - local.tee $3 - i32.const 16 - i32.shl - local.get $5 - i32.const 16 - i32.shr_u - i32.or - i32.store - local.get $0 - i32.const 4 - i32.add - local.get $3 - i32.const 16 - i32.shr_u - local.get $1 - i32.const 6 - i32.add - i32.load - local.tee $3 - i32.const 16 - i32.shl - i32.or - i32.store - local.get $0 - i32.const 8 - i32.add - local.get $3 - i32.const 16 - i32.shr_u - local.get $1 - i32.const 10 - i32.add - i32.load - local.tee $3 - i32.const 16 - i32.shl - i32.or - i32.store - local.get $0 - i32.const 12 - i32.add - local.get $1 - i32.const 14 - i32.add - i32.load - local.tee $5 - i32.const 16 - i32.shl - local.get $3 - i32.const 16 - i32.shr_u - 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 - br $continue|4 - end - end - br $break|2 - end - local.get $1 - i32.load - local.set $5 - local.get $0 - local.tee $3 - i32.const 1 - i32.add - local.set $0 - local.get $1 - local.tee $4 - i32.const 1 - i32.add - local.set $1 - local.get $3 - local.get $4 - i32.load8_u - i32.store8 - local.get $2 - i32.const 1 - i32.sub - local.set $2 - loop $continue|5 - local.get $2 - i32.const 19 - i32.ge_u - if - local.get $0 - local.get $1 - i32.const 3 - i32.add - i32.load - local.tee $3 - i32.const 24 - i32.shl - local.get $5 - i32.const 8 - i32.shr_u - i32.or - i32.store - local.get $0 - i32.const 4 - i32.add - local.get $3 - i32.const 8 - i32.shr_u - local.get $1 - i32.const 7 - i32.add - i32.load - local.tee $3 - i32.const 24 - i32.shl - i32.or - i32.store - local.get $0 - i32.const 8 - i32.add - local.get $3 - i32.const 8 - i32.shr_u - local.get $1 - i32.const 11 - i32.add - i32.load - local.tee $3 - i32.const 24 - i32.shl - i32.or - i32.store - local.get $0 - i32.const 12 - i32.add - local.get $1 - i32.const 15 - i32.add - i32.load - local.tee $5 - i32.const 24 - i32.shl - local.get $3 - i32.const 8 - i32.shr_u - 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 - br $continue|5 - end - end - end - end - local.get $2 - i32.const 16 - i32.and - if - local.get $0 - local.get $1 - i32.load8_u - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.tee $0 - local.get $1 - i32.const 1 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.tee $0 - local.get $1 - i32.const 1 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.tee $0 - local.get $1 - i32.const 1 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.tee $0 - local.get $1 - i32.const 1 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.tee $0 - local.get $1 - i32.const 1 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.tee $0 - local.get $1 - i32.const 1 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.tee $0 - local.get $1 - i32.const 1 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.tee $0 - local.get $1 - i32.const 1 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.tee $0 - local.get $1 - i32.const 1 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.tee $0 - local.get $1 - i32.const 1 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.tee $0 - local.get $1 - i32.const 1 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.tee $0 - local.get $1 - i32.const 1 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.tee $0 - local.get $1 - i32.const 1 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.tee $0 - local.get $1 - i32.const 1 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.tee $3 - i32.const 1 - i32.add - local.set $0 - local.get $1 - i32.const 1 - i32.add - local.tee $4 - i32.const 1 - i32.add - local.set $1 - local.get $3 - local.get $4 - i32.load8_u - i32.store8 - end - local.get $2 - i32.const 8 - i32.and - if - local.get $0 - local.get $1 - i32.load8_u - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.tee $0 - local.get $1 - i32.const 1 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.tee $0 - local.get $1 - i32.const 1 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.tee $0 - local.get $1 - i32.const 1 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.tee $0 - local.get $1 - i32.const 1 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.tee $0 - local.get $1 - i32.const 1 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.tee $0 - local.get $1 - i32.const 1 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.tee $3 - i32.const 1 - i32.add - local.set $0 - local.get $1 - i32.const 1 - i32.add - local.tee $4 - i32.const 1 - i32.add - local.set $1 - local.get $3 - local.get $4 - i32.load8_u - i32.store8 - end - local.get $2 - i32.const 4 - i32.and - if - local.get $0 - local.get $1 - i32.load8_u - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.tee $0 - local.get $1 - i32.const 1 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.tee $0 - local.get $1 - i32.const 1 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.tee $3 - i32.const 1 - i32.add - local.set $0 - local.get $1 - i32.const 1 - i32.add - local.tee $4 - i32.const 1 - i32.add - local.set $1 - local.get $3 - local.get $4 - i32.load8_u - i32.store8 - end - local.get $2 - i32.const 2 - i32.and - if - local.get $0 - local.get $1 - i32.load8_u - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.tee $3 - i32.const 1 - i32.add - local.set $0 - local.get $1 - i32.const 1 - i32.add - local.tee $4 - i32.const 1 - i32.add - local.set $1 - local.get $3 - local.get $4 - i32.load8_u - i32.store8 - end - local.get $2 - i32.const 1 - i32.and - if - local.get $0 - local.get $1 - i32.load8_u - i32.store8 - end - ) - (func $~lib/memory/memory.copy (; 24 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - block $~lib/util/memory/memmove|inlined.0 - local.get $0 - local.get $1 - i32.eq - br_if $~lib/util/memory/memmove|inlined.0 - local.get $1 - local.get $2 - i32.add - local.get $0 - i32.le_u - local.tee $3 - i32.eqz - if - local.get $0 - local.get $2 - i32.add - local.get $1 - i32.le_u - local.set $3 - end - local.get $3 - 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 - loop $continue|0 - local.get $0 - i32.const 7 - i32.and - if - local.get $2 - i32.eqz - br_if $~lib/util/memory/memmove|inlined.0 - local.get $2 - i32.const 1 - i32.sub - local.set $2 - local.get $0 - local.tee $3 - i32.const 1 - i32.add - local.set $0 - local.get $1 - local.tee $4 - i32.const 1 - i32.add - local.set $1 - local.get $3 - local.get $4 - i32.load8_u - i32.store8 - br $continue|0 - end - end - loop $continue|1 - local.get $2 - i32.const 8 - i32.ge_u - if - 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 - br $continue|1 - end - end - end - loop $continue|2 - local.get $2 - if - local.get $0 - local.tee $3 - i32.const 1 - i32.add - local.set $0 - local.get $1 - local.tee $4 - i32.const 1 - i32.add - local.set $1 - local.get $3 - local.get $4 - i32.load8_u - i32.store8 - local.get $2 - i32.const 1 - i32.sub - local.set $2 - br $continue|2 - end - end - else - local.get $1 - i32.const 7 - i32.and - local.get $0 - i32.const 7 - i32.and - i32.eq - if - loop $continue|3 - local.get $0 - local.get $2 - i32.add - i32.const 7 - i32.and - if - local.get $2 - i32.eqz - br_if $~lib/util/memory/memmove|inlined.0 - local.get $2 - i32.const 1 - i32.sub - local.tee $2 - local.get $0 - i32.add - local.get $1 - local.get $2 - i32.add - i32.load8_u - i32.store8 - br $continue|3 - end - end - loop $continue|4 - local.get $2 - i32.const 8 - i32.ge_u - if - local.get $2 - i32.const 8 - i32.sub - local.tee $2 - local.get $0 - i32.add - local.get $1 - local.get $2 - i32.add - i64.load - i64.store - br $continue|4 - end - end - end - loop $continue|5 - local.get $2 - if - local.get $2 - i32.const 1 - i32.sub - local.tee $2 - local.get $0 - i32.add - local.get $1 - local.get $2 - i32.add - i32.load8_u - i32.store8 - br $continue|5 - end - end - end - end - ) - (func $~lib/runtime/runtime.reallocate (; 25 ;) (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 - i32.const 16 - i32.sub - local.tee $4 - i32.load offset=4 - local.tee $2 - local.get $1 - i32.lt_u - if - i32.const 1 + i32.const 144 i32.const 32 - local.get $1 - i32.const 15 - i32.add - i32.clz - i32.sub - i32.shl - local.tee $3 - local.set $5 - i32.const 1 - i32.const 32 - local.get $2 - i32.const 15 - i32.add - i32.clz - i32.sub - i32.shl - i32.const 0 - local.get $0 - i32.const 292 - i32.gt_u - select - local.get $3 - i32.lt_u - if - local.get $5 - call $~lib/allocator/arena/__mem_allocate - local.tee $3 - local.get $4 - i32.load - i32.store - local.get $3 - i32.const 0 - i32.store offset=8 - local.get $3 - i32.const 0 - i32.store offset=12 - local.get $3 - i32.const 16 - i32.add - local.tee $5 - local.get $0 - local.get $2 - call $~lib/memory/memory.copy - local.get $2 - local.get $5 - i32.add - local.get $1 - local.get $2 - i32.sub - call $~lib/memory/memory.fill - local.get $4 - i32.load - i32.const -1520547049 - i32.eq - if - local.get $0 - i32.const 292 - i32.le_u - if - i32.const 0 - i32.const 24 - i32.const 77 - i32.const 10 - call $~lib/env/abort - unreachable - end - else - local.get $0 - call $gc/_dummy/__ref_register - end - local.get $3 - local.set $4 - local.get $5 - local.set $0 - else - local.get $0 - local.get $2 - i32.add - local.get $1 - local.get $2 - i32.sub - call $~lib/memory/memory.fill - end - end - local.get $4 - local.get $1 - i32.store offset=4 - local.get $0 - ) - (func $~lib/runtime/runtime.discard (; 26 ;) (type $FUNCSIG$vi) (param $0 i32) - local.get $0 - i32.const 292 - i32.le_u - if - i32.const 0 - i32.const 24 - i32.const 103 - i32.const 6 + i32.const 2 call $~lib/env/abort unreachable end + global.get $gc/_dummy/unlink_count local.get $0 - i32.const 16 - i32.sub - i32.load - i32.const -1520547049 i32.ne if i32.const 0 - i32.const 24 - i32.const 105 - i32.const 6 + i32.const 144 + i32.const 33 + i32.const 2 call $~lib/env/abort unreachable end - ) - (func $~lib/runtime/runtime.newString (; 27 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - local.get $0 + global.get $gc/_dummy/collect_count + local.get $1 i32.const 1 - i32.shl - call $~lib/runtime/runtime.allocate - i32.const 2 - call $~lib/runtime/runtime.register - ) - (func $~lib/runtime/runtime.newArrayBuffer (; 28 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - local.get $0 - call $~lib/runtime/runtime.allocate - i32.const 4 - call $~lib/runtime/runtime.register - ) - (func $~lib/runtime/runtime.newArray (; 29 ;) (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/runtime.allocate - local.get $2 - call $~lib/runtime/runtime.register - local.tee $2 - local.set $4 - local.get $0 - local.get $1 - i32.shl - local.tee $5 - call $~lib/runtime/runtime.allocate - i32.const 4 - call $~lib/runtime/runtime.register - local.tee $6 - local.tee $1 - local.get $2 - i32.load - local.tee $7 + i32.add i32.ne if - local.get $7 - if - local.get $7 - local.get $4 - call $gc/_dummy/__ref_unlink - end - local.get $1 - local.get $4 - call $gc/_dummy/__ref_link + i32.const 0 + i32.const 144 + i32.const 34 + i32.const 2 + call $~lib/env/abort + unreachable end - local.get $2 - local.get $1 - i32.store - local.get $2 - local.get $6 - i32.store offset=4 - local.get $2 - local.get $5 - i32.store offset=8 - local.get $2 - local.get $0 - i32.store offset=12 - local.get $3 - if - local.get $6 - local.get $3 - local.get $5 - call $~lib/memory/memory.copy - end - local.get $2 ) - (func $~lib/runtime/__runtime_instanceof (; 30 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - block $nope - block $~lib/arraybuffer/ArrayBuffer - block $~lib/set/Set - block $~lib/string/String - block $gc/Ref - local.get $0 - i32.const 1 - i32.sub - br_table $gc/Ref $~lib/string/String $~lib/set/Set $~lib/arraybuffer/ArrayBuffer $nope - end - local.get $1 - i32.const 1 - i32.eq - return - end - local.get $1 - i32.const 2 - i32.eq - return - end - local.get $1 - i32.const 3 - i32.eq - return - end - local.get $1 - i32.const 4 - i32.eq - return - end - i32.const 0 - ) - (func $null (; 31 ;) (type $FUNCSIG$v) + (func $null (; 9 ;) (type $FUNCSIG$v) nop ) - (func $~lib/runtime/runtime.newArray|trampoline (; 32 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) - block $1of1 - block $0of1 - block $outOfRange - global.get $~lib/argc - i32.const 3 - i32.sub - br_table $0of1 $1of1 $outOfRange - end - unreachable - end - i32.const 0 - local.set $3 - end - local.get $0 - local.get $1 - local.get $2 - local.get $3 - call $~lib/runtime/runtime.newArray - ) - (func $~lib/setargc (; 33 ;) (type $FUNCSIG$vi) (param $0 i32) - local.get $0 - global.set $~lib/argc - ) ) diff --git a/tests/compiler/gc.ts b/tests/compiler/gc.ts index 7be2ec77..3242df9c 100644 --- a/tests/compiler/gc.ts +++ b/tests/compiler/gc.ts @@ -1,18 +1,15 @@ import { link_count, unlink_count, collect_count } from "./gc/_dummy"; -export { runtime, gc }; class Ref {} @start export function main(): void { var ref = new Ref(); - assert(gc.implemented); - var previous_link_count = link_count; var previous_unlink_count = unlink_count; var previous_collect_count = collect_count; - gc.retain(changetype(ref)); + runtime.retain(changetype(ref)); assert(link_count == previous_link_count + 1); assert(unlink_count == previous_unlink_count); @@ -21,7 +18,7 @@ class Ref {} previous_unlink_count = unlink_count; previous_collect_count = collect_count; - gc.release(changetype(ref)); + runtime.release(changetype(ref)); assert(link_count == previous_link_count); assert(unlink_count == previous_unlink_count + 1); @@ -30,7 +27,7 @@ class Ref {} previous_unlink_count = unlink_count; previous_collect_count = collect_count; - gc.collect(); + runtime.collect(); assert(link_count == previous_link_count); assert(unlink_count == previous_unlink_count); diff --git a/tests/compiler/gc.untouched.wat b/tests/compiler/gc.untouched.wat index 8ce0dac7..852a8628 100644 --- a/tests/compiler/gc.untouched.wat +++ b/tests/compiler/gc.untouched.wat @@ -5,20 +5,16 @@ (type $FUNCSIG$viiii (func (param i32 i32 i32 i32))) (type $FUNCSIG$vi (func (param i32))) (type $FUNCSIG$viiddddd (func (param i32 i32 f64 f64 f64 f64 f64))) - (type $FUNCSIG$viii (func (param i32 i32 i32))) (type $FUNCSIG$vii (func (param i32 i32))) - (type $FUNCSIG$iiii (func (param i32 i32 i32) (result i32))) - (type $FUNCSIG$iiiii (func (param i32 i32 i32 i32) (result i32))) (import "env" "abort" (func $~lib/env/abort (param i32 i32 i32 i32))) (import "env" "trace" (func $~lib/env/trace (param i32 i32 f64 f64 f64 f64 f64))) (memory $0 1) (data (i32.const 8) "\02\00\00\00\1e\00\00\00\00\00\00\00\00\00\00\00~\00l\00i\00b\00/\00r\00u\00n\00t\00i\00m\00e\00.\00t\00s\00") (data (i32.const 56) "\02\00\00\00\16\00\00\00\00\00\00\00\00\00\00\00g\00c\00.\00r\00e\00g\00i\00s\00t\00e\00r\00") - (data (i32.const 96) "\02\00\00\00\n\00\00\00\00\00\00\00\00\00\00\00g\00c\00.\00t\00s\00") - (data (i32.const 128) "\02\00\00\00&\00\00\00\00\00\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 184) "\02\00\00\00\0e\00\00\00\00\00\00\00\00\00\00\00g\00c\00.\00l\00i\00n\00k\00") - (data (i32.const 216) "\02\00\00\00\12\00\00\00\00\00\00\00\00\00\00\00g\00c\00.\00u\00n\00l\00i\00n\00k\00") - (data (i32.const 256) "\02\00\00\00\14\00\00\00\00\00\00\00\00\00\00\00g\00c\00.\00c\00o\00l\00l\00e\00c\00t\00") + (data (i32.const 96) "\02\00\00\00\0e\00\00\00\00\00\00\00\00\00\00\00g\00c\00.\00l\00i\00n\00k\00") + (data (i32.const 128) "\02\00\00\00\n\00\00\00\00\00\00\00\00\00\00\00g\00c\00.\00t\00s\00") + (data (i32.const 160) "\02\00\00\00\12\00\00\00\00\00\00\00\00\00\00\00g\00c\00.\00u\00n\00l\00i\00n\00k\00") + (data (i32.const 200) "\02\00\00\00\14\00\00\00\00\00\00\00\00\00\00\00g\00c\00.\00c\00o\00l\00l\00e\00c\00t\00") (table $0 1 funcref) (elem (i32.const 0) $null) (global $gc/_dummy/collect_count (mut i32) (i32.const 0)) @@ -37,29 +33,13 @@ (global $~lib/allocator/arena/offset (mut i32) (i32.const 0)) (global $~lib/util/runtime/HEADER_MAGIC i32 (i32.const -1520547049)) (global $~lib/ASC_NO_ASSERT i32 (i32.const 0)) - (global $~lib/gc/gc.implemented i32 (i32.const 1)) - (global $~lib/util/runtime/MAX_BYTELENGTH i32 (i32.const 1073741808)) - (global $~lib/gc/ROOT (mut i32) (i32.const 0)) + (global $~lib/runtime/ROOT (mut i32) (i32.const 0)) (global $~lib/started (mut i32) (i32.const 0)) - (global $~lib/memory/HEAP_BASE i32 (i32.const 292)) - (global $~lib/argc (mut i32) (i32.const 0)) + (global $~lib/memory/HEAP_BASE i32 (i32.const 236)) (global $~lib/capabilities i32 (i32.const 2)) (export "memory" (memory $0)) (export "table" (table $0)) (export "main" (func $gc/main)) - (export "runtime.instanceof" (func $~lib/runtime/runtime.instanceof)) - (export "runtime.allocate" (func $~lib/runtime/runtime.allocate)) - (export "runtime.reallocate" (func $~lib/runtime/runtime.reallocate)) - (export "runtime.discard" (func $~lib/runtime/runtime.discard)) - (export "runtime.register" (func $~lib/runtime/runtime.register)) - (export "runtime.newString" (func $~lib/runtime/runtime.newString)) - (export "runtime.newArrayBuffer" (func $~lib/runtime/runtime.newArrayBuffer)) - (export ".setargc" (func $~lib/setargc)) - (export "runtime.newArray" (func $~lib/runtime/runtime.newArray|trampoline)) - (export "gc.implemented" (global $~lib/gc/gc.implemented)) - (export "gc.collect" (func $~lib/gc/gc.collect)) - (export "gc.retain" (func $~lib/gc/gc.retain)) - (export "gc.release" (func $~lib/gc/gc.release)) (export ".capabilities" (global $~lib/capabilities)) (func $~lib/util/runtime/adjust (; 2 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) i32.const 1 @@ -205,7 +185,7 @@ if i32.const 0 i32.const 24 - i32.const 117 + i32.const 82 i32.const 6 call $~lib/env/abort unreachable @@ -222,7 +202,7 @@ if i32.const 0 i32.const 24 - i32.const 119 + i32.const 84 i32.const 6 call $~lib/env/abort unreachable @@ -246,289 +226,20 @@ end local.get $0 ) - (func $~lib/memory/memory.fill (; 9 ;) (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/arraybuffer/ArrayBuffer#constructor (; 10 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $1 - global.get $~lib/util/runtime/MAX_BYTELENGTH - i32.gt_u + (func $~lib/runtime/Root#constructor (; 9 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + i32.eqz if i32.const 0 - i32.const 144 - i32.const 54 - i32.const 43 - call $~lib/env/abort - unreachable + call $~lib/runtime/runtime.allocate + i32.const 3 + call $~lib/runtime/runtime.register + local.set $0 end - local.get $1 - call $~lib/runtime/runtime.allocate - local.set $2 - local.get $2 - i32.const 0 - local.get $1 - call $~lib/memory/memory.fill - local.get $2 - i32.const 4 - call $~lib/runtime/runtime.register + local.get $0 ) - (func $gc/_dummy/__ref_link (; 11 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) - i32.const 200 + (func $gc/_dummy/__ref_link (; 10 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + i32.const 112 i32.const 2 local.get $0 f64.convert_i32_u @@ -547,8 +258,13 @@ local.get $0 global.set $gc/_dummy/link_parentRef ) + (func $~lib/runtime/runtime.retain (; 11 ;) (type $FUNCSIG$vi) (param $0 i32) + local.get $0 + global.get $~lib/runtime/ROOT + call $gc/_dummy/__ref_link + ) (func $gc/_dummy/__ref_unlink (; 12 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) - i32.const 232 + i32.const 176 i32.const 2 local.get $0 f64.convert_i32_u @@ -567,594 +283,13 @@ local.get $1 global.set $gc/_dummy/unlink_parentRef ) - (func $~lib/set/Set#clear (; 13 ;) (type $FUNCSIG$vi) (param $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) + (func $~lib/runtime/runtime.release (; 13 ;) (type $FUNCSIG$vi) (param $0 i32) local.get $0 - local.tee $1 - i32.const 0 - i32.const 16 - call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $2 - local.get $1 - i32.load - local.tee $3 - i32.ne - if (result i32) - local.get $3 - if - local.get $3 - local.get $1 - call $gc/_dummy/__ref_unlink - end - local.get $2 - local.get $1 - call $gc/_dummy/__ref_link - local.get $2 - else - local.get $2 - end - i32.store - local.get $0 - i32.const 4 - i32.const 1 - i32.sub - i32.store offset=4 - local.get $0 - local.tee $1 - i32.const 0 - i32.const 32 - call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $3 - local.get $1 - i32.load offset=8 - local.tee $2 - i32.ne - if (result i32) - local.get $2 - if - local.get $2 - local.get $1 - call $gc/_dummy/__ref_unlink - end - local.get $3 - local.get $1 - call $gc/_dummy/__ref_link - local.get $3 - else - local.get $3 - end - i32.store offset=8 - local.get $0 - i32.const 4 - i32.store offset=12 - local.get $0 - i32.const 0 - i32.store offset=16 - local.get $0 - i32.const 0 - i32.store offset=20 + global.get $~lib/runtime/ROOT + call $gc/_dummy/__ref_unlink ) - (func $~lib/set/Set#constructor (; 14 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - block (result i32) - local.get $0 - i32.eqz - if - i32.const 24 - call $~lib/runtime/runtime.allocate - i32.const 3 - call $~lib/runtime/runtime.register - 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 - i32.const 0 - i32.store offset=12 - local.get $0 - i32.const 0 - i32.store offset=16 - local.get $0 - i32.const 0 - i32.store offset=20 - local.get $0 - end - call $~lib/set/Set#clear - local.get $0 - ) - (func $~lib/util/hash/hash32 (; 15 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - i32.const -2128831035 - local.set $1 - local.get $1 - local.get $0 - i32.const 255 - i32.and - i32.xor - i32.const 16777619 - i32.mul - local.set $1 - local.get $1 - local.get $0 - i32.const 8 - i32.shr_u - i32.const 255 - i32.and - i32.xor - i32.const 16777619 - i32.mul - local.set $1 - local.get $1 - local.get $0 - i32.const 16 - i32.shr_u - i32.const 255 - i32.and - i32.xor - i32.const 16777619 - i32.mul - local.set $1 - local.get $1 - local.get $0 - i32.const 24 - i32.shr_u - i32.xor - i32.const 16777619 - i32.mul - local.set $1 - local.get $1 - ) - (func $~lib/set/Set#find (; 16 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - local.get $0 - i32.load - local.get $2 - local.get $0 - i32.load offset=4 - i32.and - i32.const 4 - i32.mul - i32.add - i32.load - local.set $3 - block $break|0 - loop $continue|0 - local.get $3 - if - block - local.get $3 - i32.load offset=4 - i32.const 1 - i32.and - i32.eqz - local.tee $4 - if (result i32) - local.get $3 - i32.load - local.get $1 - i32.eq - else - local.get $4 - end - if - local.get $3 - return - end - local.get $3 - i32.load offset=4 - i32.const 1 - i32.const -1 - i32.xor - i32.and - local.set $3 - end - br $continue|0 - end - end - end - i32.const 0 - ) - (func $~lib/set/Set#has (; 17 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $0 - local.get $1 - block $~lib/util/hash/HASH|inlined.0 (result i32) - local.get $1 - local.set $2 - local.get $2 - call $~lib/util/hash/hash32 - br $~lib/util/hash/HASH|inlined.0 - end - call $~lib/set/Set#find - i32.const 0 - i32.ne - ) - (func $~lib/set/Set#rehash (; 18 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (local $10 i32) - (local $11 i32) - (local $12 i32) - local.get $1 - i32.const 1 - i32.add - local.set $2 - i32.const 0 - local.get $2 - i32.const 4 - i32.mul - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $3 - local.get $2 - f64.convert_i32_s - f64.const 2.6666666666666665 - f64.mul - i32.trunc_f64_s - local.set $4 - i32.const 0 - local.get $4 - block $~lib/set/ENTRY_SIZE|inlined.1 (result i32) - i32.const 8 - end - i32.mul - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $5 - local.get $0 - i32.load offset=8 - local.set $6 - local.get $6 - local.get $0 - i32.load offset=16 - block $~lib/set/ENTRY_SIZE|inlined.2 (result i32) - i32.const 8 - end - i32.mul - i32.add - local.set $7 - local.get $5 - local.set $8 - block $break|0 - loop $continue|0 - local.get $6 - local.get $7 - i32.ne - if - block - local.get $6 - local.set $9 - local.get $9 - i32.load offset=4 - i32.const 1 - i32.and - i32.eqz - if - local.get $8 - local.set $10 - local.get $10 - local.get $9 - i32.load - i32.store - block $~lib/util/hash/HASH|inlined.2 (result i32) - local.get $9 - i32.load - local.set $11 - local.get $11 - call $~lib/util/hash/hash32 - br $~lib/util/hash/HASH|inlined.2 - end - local.get $1 - i32.and - local.set $11 - local.get $3 - local.get $11 - i32.const 4 - i32.mul - i32.add - local.set $12 - local.get $10 - local.get $12 - i32.load - i32.store offset=4 - local.get $12 - local.get $8 - i32.store - local.get $8 - block $~lib/set/ENTRY_SIZE|inlined.3 (result i32) - i32.const 8 - end - i32.add - local.set $8 - end - local.get $6 - block $~lib/set/ENTRY_SIZE|inlined.4 (result i32) - i32.const 8 - end - i32.add - local.set $6 - end - br $continue|0 - end - end - end - local.get $0 - local.tee $9 - local.get $3 - local.tee $12 - local.get $9 - i32.load - local.tee $11 - i32.ne - if (result i32) - local.get $11 - if - local.get $11 - local.get $9 - call $gc/_dummy/__ref_unlink - end - local.get $12 - local.get $9 - call $gc/_dummy/__ref_link - local.get $12 - else - local.get $12 - end - i32.store - local.get $0 - local.get $1 - i32.store offset=4 - local.get $0 - local.tee $9 - local.get $5 - local.tee $11 - local.get $9 - i32.load offset=8 - local.tee $12 - i32.ne - if (result i32) - local.get $12 - if - local.get $12 - local.get $9 - call $gc/_dummy/__ref_unlink - end - local.get $11 - local.get $9 - call $gc/_dummy/__ref_link - local.get $11 - else - local.get $11 - end - i32.store offset=8 - local.get $0 - local.get $4 - i32.store offset=12 - local.get $0 - local.get $0 - i32.load offset=20 - i32.store offset=16 - ) - (func $~lib/set/Set#add (; 19 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - block $~lib/util/hash/HASH|inlined.1 (result i32) - local.get $1 - local.set $2 - local.get $2 - call $~lib/util/hash/hash32 - br $~lib/util/hash/HASH|inlined.1 - end - local.set $3 - local.get $0 - local.get $1 - local.get $3 - call $~lib/set/Set#find - local.set $4 - local.get $4 - i32.eqz - if - local.get $0 - i32.load offset=16 - local.get $0 - i32.load offset=12 - i32.eq - if - local.get $0 - local.get $0 - i32.load offset=20 - local.get $0 - i32.load offset=12 - f64.convert_i32_s - f64.const 0.75 - f64.mul - i32.trunc_f64_s - i32.lt_s - if (result i32) - local.get $0 - i32.load offset=4 - else - local.get $0 - i32.load offset=4 - i32.const 1 - i32.shl - i32.const 1 - i32.or - end - call $~lib/set/Set#rehash - end - local.get $0 - i32.load offset=8 - local.set $2 - local.get $2 - block (result i32) - local.get $0 - local.get $0 - i32.load offset=16 - local.tee $5 - i32.const 1 - i32.add - i32.store offset=16 - local.get $5 - end - block $~lib/set/ENTRY_SIZE|inlined.5 (result i32) - i32.const 8 - end - i32.mul - i32.add - local.set $4 - local.get $4 - local.get $1 - i32.store - local.get $0 - local.get $0 - i32.load offset=20 - i32.const 1 - i32.add - i32.store offset=20 - local.get $0 - i32.load - local.get $3 - local.get $0 - i32.load offset=4 - i32.and - i32.const 4 - i32.mul - i32.add - local.set $5 - local.get $4 - local.get $5 - i32.load - i32.store offset=4 - local.get $5 - local.get $4 - i32.store - end - ) - (func $~lib/gc/gc.retain (; 20 ;) (type $FUNCSIG$vi) (param $0 i32) - (local $1 i32) - global.get $~lib/gc/ROOT - local.set $1 - local.get $1 - local.get $0 - call $~lib/set/Set#has - i32.eqz - if - local.get $1 - local.get $0 - call $~lib/set/Set#add - local.get $0 - local.get $1 - call $gc/_dummy/__ref_link - end - ) - (func $~lib/set/Set#delete (; 21 ;) (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 - local.get $1 - block $~lib/util/hash/HASH|inlined.3 (result i32) - local.get $1 - local.set $2 - local.get $2 - call $~lib/util/hash/hash32 - br $~lib/util/hash/HASH|inlined.3 - end - call $~lib/set/Set#find - local.set $3 - local.get $3 - i32.eqz - if - i32.const 0 - return - end - local.get $3 - local.get $3 - i32.load offset=4 - i32.const 1 - i32.or - i32.store offset=4 - local.get $0 - local.get $0 - i32.load offset=20 - i32.const 1 - i32.sub - i32.store offset=20 - local.get $0 - i32.load offset=4 - i32.const 1 - i32.shr_u - local.set $4 - local.get $4 - i32.const 1 - i32.add - i32.const 4 - local.tee $2 - local.get $0 - i32.load offset=20 - local.tee $5 - local.get $2 - local.get $5 - i32.gt_u - select - i32.ge_u - local.tee $2 - if (result i32) - local.get $0 - i32.load offset=20 - local.get $0 - i32.load offset=12 - f64.convert_i32_s - f64.const 0.75 - f64.mul - i32.trunc_f64_s - i32.lt_s - else - local.get $2 - end - if - local.get $0 - local.get $4 - call $~lib/set/Set#rehash - end - i32.const 1 - ) - (func $~lib/gc/gc.release (; 22 ;) (type $FUNCSIG$vi) (param $0 i32) - (local $1 i32) - global.get $~lib/gc/ROOT - local.set $1 - local.get $1 - local.get $0 - call $~lib/set/Set#has - if - local.get $1 - local.get $0 - call $~lib/set/Set#delete - drop - local.get $0 - local.get $1 - call $gc/_dummy/__ref_unlink - end - ) - (func $gc/_dummy/__ref_collect (; 23 ;) (type $FUNCSIG$v) - i32.const 272 + (func $gc/_dummy/__ref_collect (; 14 ;) (type $FUNCSIG$v) + i32.const 216 i32.const 0 f64.const 0 f64.const 0 @@ -1167,10 +302,10 @@ i32.add global.set $gc/_dummy/collect_count ) - (func $~lib/gc/gc.collect (; 24 ;) (type $FUNCSIG$v) + (func $~lib/runtime/runtime.collect (; 15 ;) (type $FUNCSIG$v) call $gc/_dummy/__ref_collect ) - (func $gc/main (; 25 ;) (type $FUNCSIG$v) + (func $gc/main (; 16 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -1185,16 +320,6 @@ i32.const 0 call $gc/Ref#constructor local.set $0 - global.get $~lib/gc/gc.implemented - i32.eqz - if - i32.const 0 - i32.const 112 - i32.const 9 - i32.const 2 - call $~lib/env/abort - unreachable - end global.get $gc/_dummy/link_count local.set $1 global.get $gc/_dummy/unlink_count @@ -1202,7 +327,7 @@ global.get $gc/_dummy/collect_count local.set $3 local.get $0 - call $~lib/gc/gc.retain + call $~lib/runtime/runtime.retain global.get $gc/_dummy/link_count local.get $1 i32.const 1 @@ -1211,8 +336,8 @@ i32.eqz if i32.const 0 - i32.const 112 - i32.const 17 + i32.const 144 + i32.const 14 i32.const 2 call $~lib/env/abort unreachable @@ -1223,8 +348,8 @@ i32.eqz if i32.const 0 - i32.const 112 - i32.const 18 + i32.const 144 + i32.const 15 i32.const 2 call $~lib/env/abort unreachable @@ -1235,8 +360,8 @@ i32.eqz if i32.const 0 - i32.const 112 - i32.const 19 + i32.const 144 + i32.const 16 i32.const 2 call $~lib/env/abort unreachable @@ -1248,15 +373,15 @@ global.get $gc/_dummy/collect_count local.set $3 local.get $0 - call $~lib/gc/gc.release + call $~lib/runtime/runtime.release global.get $gc/_dummy/link_count local.get $1 i32.eq i32.eqz if i32.const 0 - i32.const 112 - i32.const 26 + i32.const 144 + i32.const 23 i32.const 2 call $~lib/env/abort unreachable @@ -1269,1740 +394,71 @@ i32.eqz if i32.const 0 - i32.const 112 - i32.const 27 - i32.const 2 - call $~lib/env/abort - unreachable - end - global.get $gc/_dummy/collect_count - local.get $3 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 112 - i32.const 28 - i32.const 2 - call $~lib/env/abort - unreachable - end - global.get $gc/_dummy/link_count - local.set $1 - global.get $gc/_dummy/unlink_count - local.set $2 - global.get $gc/_dummy/collect_count - local.set $3 - call $~lib/gc/gc.collect - global.get $gc/_dummy/link_count - local.get $1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 112 - i32.const 35 - i32.const 2 - call $~lib/env/abort - unreachable - end - global.get $gc/_dummy/unlink_count - local.get $2 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 112 - i32.const 36 - i32.const 2 - call $~lib/env/abort - unreachable - end - global.get $gc/_dummy/collect_count - local.get $3 - i32.const 1 - i32.add - i32.eq - i32.eqz - if - i32.const 0 - i32.const 112 - i32.const 37 - i32.const 2 - call $~lib/env/abort - unreachable - end - ) - (func $~lib/runtime/runtime.instanceof (; 26 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - local.get $0 - if (result i32) - local.get $0 - global.get $~lib/util/runtime/HEADER_SIZE - i32.sub - i32.load - local.get $1 - call $~lib/runtime/__runtime_instanceof - else - i32.const 0 - end - ) - (func $~lib/util/memory/memcpy (; 27 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (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 - end - end - local.get $0 - 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.get $2 - 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.get $2 - i32.const 4 - 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 $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 - 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 $~lib/memory/memory.copy (; 28 ;) (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/allocator/arena/__mem_free (; 29 ;) (type $FUNCSIG$vi) (param $0 i32) - nop - ) - (func $~lib/memory/memory.free (; 30 ;) (type $FUNCSIG$vi) (param $0 i32) - local.get $0 - call $~lib/allocator/arena/__mem_free - ) - (func $~lib/runtime/runtime.reallocate (; 31 ;) (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) - local.get $0 - global.get $~lib/util/runtime/HEADER_SIZE - i32.sub - local.set $2 - local.get $2 - i32.load offset=4 - local.set $3 - local.get $3 - local.get $1 - i32.lt_u - if - local.get $1 - call $~lib/util/runtime/adjust - local.set $4 - local.get $3 - call $~lib/util/runtime/adjust - i32.const 0 - local.get $0 - global.get $~lib/memory/HEAP_BASE - i32.gt_u - select - local.get $4 - i32.lt_u - if - local.get $4 - call $~lib/memory/memory.allocate - local.set $5 - local.get $5 - local.get $2 - i32.load - i32.store - local.get $5 - i32.const 0 - i32.store offset=8 - local.get $5 - i32.const 0 - i32.store offset=12 - local.get $5 - global.get $~lib/util/runtime/HEADER_SIZE - i32.add - local.set $6 - local.get $6 - local.get $0 - local.get $3 - call $~lib/memory/memory.copy - local.get $6 - local.get $3 - i32.add - i32.const 0 - local.get $1 - local.get $3 - i32.sub - call $~lib/memory/memory.fill - local.get $2 - i32.load - global.get $~lib/util/runtime/HEADER_MAGIC - i32.eq - if - local.get $0 - global.get $~lib/memory/HEAP_BASE - i32.gt_u - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 77 - i32.const 10 - call $~lib/env/abort - unreachable - end - local.get $2 - call $~lib/memory/memory.free - else - local.get $0 - call $gc/_dummy/__ref_register - end - local.get $5 - local.set $2 - local.get $6 - local.set $0 - else - local.get $0 - local.get $3 - i32.add - i32.const 0 - local.get $1 - local.get $3 - i32.sub - call $~lib/memory/memory.fill - end - else - nop - end - local.get $2 - local.get $1 - i32.store offset=4 - local.get $0 - ) - (func $~lib/runtime/runtime.discard (; 32 ;) (type $FUNCSIG$vi) (param $0 i32) - (local $1 i32) - local.get $0 - global.get $~lib/memory/HEAP_BASE - i32.gt_u - i32.eqz - if - i32.const 0 + i32.const 144 i32.const 24 - i32.const 103 - i32.const 6 + i32.const 2 call $~lib/env/abort unreachable end - local.get $0 - global.get $~lib/util/runtime/HEADER_SIZE - i32.sub - local.set $1 - local.get $1 - i32.load - global.get $~lib/util/runtime/HEADER_MAGIC + global.get $gc/_dummy/collect_count + local.get $3 i32.eq i32.eqz if i32.const 0 - i32.const 24 - i32.const 105 - i32.const 6 + i32.const 144 + i32.const 25 + i32.const 2 call $~lib/env/abort unreachable end + global.get $gc/_dummy/link_count + local.set $1 + global.get $gc/_dummy/unlink_count + local.set $2 + global.get $gc/_dummy/collect_count + local.set $3 + call $~lib/runtime/runtime.collect + global.get $gc/_dummy/link_count local.get $1 - call $~lib/memory/memory.free - ) - (func $~lib/runtime/runtime.newString (; 33 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - local.get $0 - i32.const 1 - i32.shl - call $~lib/runtime/runtime.allocate - i32.const 2 - call $~lib/runtime/runtime.register - ) - (func $~lib/runtime/runtime.newArrayBuffer (; 34 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - local.get $0 - call $~lib/runtime/runtime.allocate - i32.const 4 - call $~lib/runtime/runtime.register - ) - (func $~lib/runtime/runtime.newArray (; 35 ;) (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) - (local $8 i32) - (local $9 i32) - i32.const 16 - call $~lib/runtime/runtime.allocate - local.get $2 - call $~lib/runtime/runtime.register - local.set $4 - local.get $0 - local.get $1 - i32.shl - local.set $5 - local.get $5 - call $~lib/runtime/runtime.allocate - i32.const 4 - call $~lib/runtime/runtime.register - local.set $6 - local.get $4 - local.tee $7 - local.get $6 - local.tee $8 - local.get $7 - i32.load - local.tee $9 - i32.ne - if (result i32) - local.get $9 - if - local.get $9 - local.get $7 - call $gc/_dummy/__ref_unlink - end - local.get $8 - local.get $7 - call $gc/_dummy/__ref_link - local.get $8 - else - local.get $8 - end - 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 $3 + i32.eq + i32.eqz if - local.get $6 - local.get $3 - local.get $5 - call $~lib/memory/memory.copy + i32.const 0 + i32.const 144 + i32.const 32 + i32.const 2 + call $~lib/env/abort + unreachable + end + global.get $gc/_dummy/unlink_count + local.get $2 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 144 + i32.const 33 + i32.const 2 + call $~lib/env/abort + unreachable + end + global.get $gc/_dummy/collect_count + local.get $3 + i32.const 1 + i32.add + i32.eq + i32.eqz + if + i32.const 0 + i32.const 144 + i32.const 34 + i32.const 2 + call $~lib/env/abort + unreachable end - local.get $4 ) - (func $~lib/runtime/runtime#constructor (; 36 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - unreachable - ) - (func $start (; 37 ;) (type $FUNCSIG$v) + (func $start (; 17 ;) (type $FUNCSIG$v) global.get $~lib/memory/HEAP_BASE i32.const 7 i32.add @@ -3014,65 +470,9 @@ global.get $~lib/allocator/arena/startOffset global.set $~lib/allocator/arena/offset i32.const 0 - call $~lib/set/Set#constructor - global.set $~lib/gc/ROOT + call $~lib/runtime/Root#constructor + global.set $~lib/runtime/ROOT ) - (func $~lib/runtime/__runtime_instanceof (; 38 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - block $nope - block $~lib/arraybuffer/ArrayBuffer - block $~lib/set/Set - block $~lib/string/String - block $gc/Ref - local.get $0 - br_table $nope $gc/Ref $~lib/string/String $~lib/set/Set $~lib/arraybuffer/ArrayBuffer $nope - end - local.get $1 - i32.const 1 - i32.eq - return - end - local.get $1 - i32.const 2 - i32.eq - return - end - local.get $1 - i32.const 3 - i32.eq - return - end - local.get $1 - i32.const 4 - i32.eq - return - end - i32.const 0 - return - ) - (func $null (; 39 ;) (type $FUNCSIG$v) - ) - (func $~lib/runtime/runtime.newArray|trampoline (; 40 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) - block $1of1 - block $0of1 - block $outOfRange - global.get $~lib/argc - i32.const 3 - i32.sub - br_table $0of1 $1of1 $outOfRange - end - unreachable - end - i32.const 0 - local.set $3 - end - local.get $0 - local.get $1 - local.get $2 - local.get $3 - call $~lib/runtime/runtime.newArray - ) - (func $~lib/setargc (; 41 ;) (type $FUNCSIG$vi) (param $0 i32) - local.get $0 - global.set $~lib/argc + (func $null (; 18 ;) (type $FUNCSIG$v) ) ) diff --git a/tests/compiler/gc/global-assign.optimized.wat b/tests/compiler/gc/global-assign.optimized.wat index 1a400cab..d3cbfae5 100644 --- a/tests/compiler/gc/global-assign.optimized.wat +++ b/tests/compiler/gc/global-assign.optimized.wat @@ -137,7 +137,7 @@ if i32.const 0 i32.const 24 - i32.const 117 + i32.const 82 i32.const 6 call $~lib/env/abort unreachable @@ -152,7 +152,7 @@ if i32.const 0 i32.const 24 - i32.const 119 + i32.const 84 i32.const 6 call $~lib/env/abort unreachable diff --git a/tests/compiler/gc/global-assign.untouched.wat b/tests/compiler/gc/global-assign.untouched.wat index 4500c3b9..c85ab402 100644 --- a/tests/compiler/gc/global-assign.untouched.wat +++ b/tests/compiler/gc/global-assign.untouched.wat @@ -182,7 +182,7 @@ if i32.const 0 i32.const 24 - i32.const 117 + i32.const 82 i32.const 6 call $~lib/env/abort unreachable @@ -199,7 +199,7 @@ if i32.const 0 i32.const 24 - i32.const 119 + i32.const 84 i32.const 6 call $~lib/env/abort unreachable diff --git a/tests/compiler/gc/global-init.optimized.wat b/tests/compiler/gc/global-init.optimized.wat index c4844bf6..544170fb 100644 --- a/tests/compiler/gc/global-init.optimized.wat +++ b/tests/compiler/gc/global-init.optimized.wat @@ -136,7 +136,7 @@ if i32.const 0 i32.const 24 - i32.const 117 + i32.const 82 i32.const 6 call $~lib/env/abort unreachable @@ -151,7 +151,7 @@ if i32.const 0 i32.const 24 - i32.const 119 + i32.const 84 i32.const 6 call $~lib/env/abort unreachable diff --git a/tests/compiler/gc/global-init.untouched.wat b/tests/compiler/gc/global-init.untouched.wat index d23c9b56..7f3ce6d2 100644 --- a/tests/compiler/gc/global-init.untouched.wat +++ b/tests/compiler/gc/global-init.untouched.wat @@ -181,7 +181,7 @@ if i32.const 0 i32.const 24 - i32.const 117 + i32.const 82 i32.const 6 call $~lib/env/abort unreachable @@ -198,7 +198,7 @@ if i32.const 0 i32.const 24 - i32.const 119 + i32.const 84 i32.const 6 call $~lib/env/abort unreachable diff --git a/tests/compiler/gc/itcm/trace.optimized.wat b/tests/compiler/gc/itcm/trace.optimized.wat index b758331a..9284bdd4 100644 --- a/tests/compiler/gc/itcm/trace.optimized.wat +++ b/tests/compiler/gc/itcm/trace.optimized.wat @@ -45,28 +45,30 @@ (data (i32.const 808) "#\00 \00a\00r\00r\00[\000\00]\00 \00=\00 \00r\00e\00f") (data (i32.const 840) "\01\00\00\00\1a") (data (i32.const 856) "~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s") - (data (i32.const 888) "\01\00\00\00\1e") - (data (i32.const 904) "#\00 \00a\00r\00r\00[\000\00]\00 \00=\00 \00n\00u\00l\00l") - (data (i32.const 936) "\01\00\00\00\16") - (data (i32.const 952) "#\00 \00n\00e\00w\00 \00R\00e\00f\00(\00)") - (data (i32.const 976) "\01\00\00\00\18") - (data (i32.const 992) "i\00t\00c\00m\00.\00c\00o\00l\00l\00e\00c\00t") - (data (i32.const 1016) "\01\00\00\00\1c") - (data (i32.const 1032) "i\00t\00c\00m\00~\00s\00t\00e\00p\00/\00I\00D\00L\00E") - (data (i32.const 1064) "\01\00\00\00\"") - (data (i32.const 1080) "i\00t\00c\00m\00~\00s\00t\00a\00t\00e\00 \00=\00 \00M\00A\00R\00K") - (data (i32.const 1120) "\01\00\00\00\1c") - (data (i32.const 1136) "i\00t\00c\00m\00~\00s\00t\00e\00p\00/\00M\00A\00R\00K") - (data (i32.const 1168) "\01\00\00\00*") - (data (i32.const 1184) "i\00t\00c\00m\00~\00s\00t\00e\00p\00/\00M\00A\00R\00K\00 \00f\00i\00n\00i\00s\00h") - (data (i32.const 1232) "\01\00\00\00$") - (data (i32.const 1248) "i\00t\00c\00m\00~\00s\00t\00a\00t\00e\00 \00=\00 \00S\00W\00E\00E\00P") - (data (i32.const 1288) "\01\00\00\00(") - (data (i32.const 1304) "i\00t\00c\00m\00~\00s\00t\00e\00p\00/\00S\00W\00E\00E\00P\00 \00f\00r\00e\00e") - (data (i32.const 1344) "\01\00\00\00,") - (data (i32.const 1360) "i\00t\00c\00m\00~\00s\00t\00e\00p\00/\00S\00W\00E\00E\00P\00 \00f\00i\00n\00i\00s\00h") - (data (i32.const 1408) "\01\00\00\00\12") - (data (i32.const 1424) "i\00t\00c\00m\00.\00m\00a\00r\00k") + (data (i32.const 888) "\01\00\00\00(") + (data (i32.const 904) "~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00r\00u\00n\00t\00i\00m\00e\00.\00t\00s") + (data (i32.const 944) "\01\00\00\00\1e") + (data (i32.const 960) "#\00 \00a\00r\00r\00[\000\00]\00 \00=\00 \00n\00u\00l\00l") + (data (i32.const 992) "\01\00\00\00\16") + (data (i32.const 1008) "#\00 \00n\00e\00w\00 \00R\00e\00f\00(\00)") + (data (i32.const 1032) "\01\00\00\00\18") + (data (i32.const 1048) "i\00t\00c\00m\00.\00c\00o\00l\00l\00e\00c\00t") + (data (i32.const 1072) "\01\00\00\00\1c") + (data (i32.const 1088) "i\00t\00c\00m\00~\00s\00t\00e\00p\00/\00I\00D\00L\00E") + (data (i32.const 1120) "\01\00\00\00\"") + (data (i32.const 1136) "i\00t\00c\00m\00~\00s\00t\00a\00t\00e\00 \00=\00 \00M\00A\00R\00K") + (data (i32.const 1176) "\01\00\00\00\1c") + (data (i32.const 1192) "i\00t\00c\00m\00~\00s\00t\00e\00p\00/\00M\00A\00R\00K") + (data (i32.const 1224) "\01\00\00\00*") + (data (i32.const 1240) "i\00t\00c\00m\00~\00s\00t\00e\00p\00/\00M\00A\00R\00K\00 \00f\00i\00n\00i\00s\00h") + (data (i32.const 1288) "\01\00\00\00$") + (data (i32.const 1304) "i\00t\00c\00m\00~\00s\00t\00a\00t\00e\00 \00=\00 \00S\00W\00E\00E\00P") + (data (i32.const 1344) "\01\00\00\00(") + (data (i32.const 1360) "i\00t\00c\00m\00~\00s\00t\00e\00p\00/\00S\00W\00E\00E\00P\00 \00f\00r\00e\00e") + (data (i32.const 1400) "\01\00\00\00,") + (data (i32.const 1416) "i\00t\00c\00m\00~\00s\00t\00e\00p\00/\00S\00W\00E\00E\00P\00 \00f\00i\00n\00i\00s\00h") + (data (i32.const 1464) "\01\00\00\00\12") + (data (i32.const 1480) "i\00t\00c\00m\00.\00m\00a\00r\00k") (table $0 1 funcref) (elem (i32.const 0) $null) (global $~lib/allocator/arena/startOffset (mut i32) (i32.const 0)) @@ -336,12 +338,12 @@ (func $~lib/runtime/runtime.register (; 8 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) local.get $0 - i32.const 1444 + i32.const 1500 i32.le_u if i32.const 0 i32.const 128 - i32.const 117 + i32.const 82 i32.const 6 call $~lib/env/abort unreachable @@ -356,7 +358,7 @@ if i32.const 0 i32.const 128 - i32.const 119 + i32.const 84 i32.const 6 call $~lib/env/abort unreachable @@ -751,854 +753,7 @@ i32.store offset=8 local.get $0 ) - (func $~lib/util/memory/memcpy (; 15 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - loop $continue|0 - local.get $1 - i32.const 3 - i32.and - local.get $2 - local.get $2 - select - if - local.get $0 - local.tee $3 - i32.const 1 - i32.add - local.set $0 - local.get $1 - local.tee $4 - i32.const 1 - i32.add - local.set $1 - local.get $3 - local.get $4 - i32.load8_u - i32.store8 - local.get $2 - i32.const 1 - i32.sub - local.set $2 - br $continue|0 - end - end - local.get $0 - i32.const 3 - i32.and - i32.eqz - if - loop $continue|1 - local.get $2 - i32.const 16 - i32.ge_u - 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.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 - br $continue|1 - end - end - local.get $2 - 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 $1 - i32.const 8 - i32.add - local.set $1 - local.get $0 - i32.const 8 - i32.add - local.set $0 - end - local.get $2 - i32.const 4 - i32.and - if - local.get $0 - local.get $1 - i32.load - i32.store - local.get $1 - i32.const 4 - i32.add - local.set $1 - local.get $0 - i32.const 4 - i32.add - local.set $0 - end - local.get $2 - i32.const 2 - i32.and - if - local.get $0 - local.get $1 - i32.load16_u - i32.store16 - local.get $1 - i32.const 2 - i32.add - local.set $1 - local.get $0 - i32.const 2 - i32.add - local.set $0 - end - local.get $2 - i32.const 1 - i32.and - if - local.get $0 - local.get $1 - i32.load8_u - i32.store8 - end - return - end - local.get $2 - i32.const 32 - i32.ge_u - if - block $break|2 - block $case2|2 - block $case1|2 - local.get $0 - i32.const 3 - i32.and - local.tee $3 - i32.const 1 - i32.ne - if - local.get $3 - i32.const 2 - i32.eq - br_if $case1|2 - local.get $3 - i32.const 3 - i32.eq - br_if $case2|2 - br $break|2 - end - local.get $1 - i32.load - local.set $5 - local.get $0 - local.get $1 - i32.load8_u - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.tee $0 - local.get $1 - i32.const 1 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.tee $3 - i32.const 1 - i32.add - local.set $0 - local.get $1 - i32.const 1 - i32.add - local.tee $4 - i32.const 1 - i32.add - local.set $1 - local.get $3 - local.get $4 - i32.load8_u - i32.store8 - local.get $2 - i32.const 3 - i32.sub - local.set $2 - loop $continue|3 - local.get $2 - i32.const 17 - i32.ge_u - if - local.get $0 - local.get $1 - i32.const 1 - i32.add - i32.load - local.tee $3 - i32.const 8 - i32.shl - local.get $5 - i32.const 24 - i32.shr_u - i32.or - i32.store - local.get $0 - i32.const 4 - i32.add - local.get $3 - i32.const 24 - i32.shr_u - local.get $1 - i32.const 5 - i32.add - i32.load - local.tee $3 - i32.const 8 - i32.shl - i32.or - i32.store - local.get $0 - i32.const 8 - i32.add - local.get $3 - i32.const 24 - i32.shr_u - local.get $1 - i32.const 9 - i32.add - i32.load - local.tee $3 - i32.const 8 - i32.shl - i32.or - i32.store - local.get $0 - i32.const 12 - i32.add - local.get $1 - i32.const 13 - i32.add - i32.load - local.tee $5 - i32.const 8 - i32.shl - local.get $3 - i32.const 24 - i32.shr_u - 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 - br $continue|3 - end - end - br $break|2 - end - local.get $1 - i32.load - local.set $5 - local.get $0 - local.get $1 - i32.load8_u - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.tee $3 - i32.const 1 - i32.add - local.set $0 - local.get $1 - i32.const 1 - i32.add - local.tee $4 - i32.const 1 - i32.add - local.set $1 - local.get $3 - local.get $4 - i32.load8_u - i32.store8 - local.get $2 - i32.const 2 - i32.sub - local.set $2 - loop $continue|4 - local.get $2 - i32.const 18 - i32.ge_u - if - local.get $0 - local.get $1 - i32.const 2 - i32.add - i32.load - local.tee $3 - i32.const 16 - i32.shl - local.get $5 - i32.const 16 - i32.shr_u - i32.or - i32.store - local.get $0 - i32.const 4 - i32.add - local.get $3 - i32.const 16 - i32.shr_u - local.get $1 - i32.const 6 - i32.add - i32.load - local.tee $3 - i32.const 16 - i32.shl - i32.or - i32.store - local.get $0 - i32.const 8 - i32.add - local.get $3 - i32.const 16 - i32.shr_u - local.get $1 - i32.const 10 - i32.add - i32.load - local.tee $3 - i32.const 16 - i32.shl - i32.or - i32.store - local.get $0 - i32.const 12 - i32.add - local.get $1 - i32.const 14 - i32.add - i32.load - local.tee $5 - i32.const 16 - i32.shl - local.get $3 - i32.const 16 - i32.shr_u - 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 - br $continue|4 - end - end - br $break|2 - end - local.get $1 - i32.load - local.set $5 - local.get $0 - local.tee $3 - i32.const 1 - i32.add - local.set $0 - local.get $1 - local.tee $4 - i32.const 1 - i32.add - local.set $1 - local.get $3 - local.get $4 - i32.load8_u - i32.store8 - local.get $2 - i32.const 1 - i32.sub - local.set $2 - loop $continue|5 - local.get $2 - i32.const 19 - i32.ge_u - if - local.get $0 - local.get $1 - i32.const 3 - i32.add - i32.load - local.tee $3 - i32.const 24 - i32.shl - local.get $5 - i32.const 8 - i32.shr_u - i32.or - i32.store - local.get $0 - i32.const 4 - i32.add - local.get $3 - i32.const 8 - i32.shr_u - local.get $1 - i32.const 7 - i32.add - i32.load - local.tee $3 - i32.const 24 - i32.shl - i32.or - i32.store - local.get $0 - i32.const 8 - i32.add - local.get $3 - i32.const 8 - i32.shr_u - local.get $1 - i32.const 11 - i32.add - i32.load - local.tee $3 - i32.const 24 - i32.shl - i32.or - i32.store - local.get $0 - i32.const 12 - i32.add - local.get $1 - i32.const 15 - i32.add - i32.load - local.tee $5 - i32.const 24 - i32.shl - local.get $3 - i32.const 8 - i32.shr_u - 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 - br $continue|5 - end - end - end - end - local.get $2 - i32.const 16 - i32.and - if - local.get $0 - local.get $1 - i32.load8_u - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.tee $0 - local.get $1 - i32.const 1 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.tee $0 - local.get $1 - i32.const 1 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.tee $0 - local.get $1 - i32.const 1 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.tee $0 - local.get $1 - i32.const 1 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.tee $0 - local.get $1 - i32.const 1 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.tee $0 - local.get $1 - i32.const 1 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.tee $0 - local.get $1 - i32.const 1 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.tee $0 - local.get $1 - i32.const 1 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.tee $0 - local.get $1 - i32.const 1 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.tee $0 - local.get $1 - i32.const 1 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.tee $0 - local.get $1 - i32.const 1 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.tee $0 - local.get $1 - i32.const 1 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.tee $0 - local.get $1 - i32.const 1 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.tee $0 - local.get $1 - i32.const 1 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.tee $3 - i32.const 1 - i32.add - local.set $0 - local.get $1 - i32.const 1 - i32.add - local.tee $4 - i32.const 1 - i32.add - local.set $1 - local.get $3 - local.get $4 - i32.load8_u - i32.store8 - end - local.get $2 - i32.const 8 - i32.and - if - local.get $0 - local.get $1 - i32.load8_u - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.tee $0 - local.get $1 - i32.const 1 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.tee $0 - local.get $1 - i32.const 1 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.tee $0 - local.get $1 - i32.const 1 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.tee $0 - local.get $1 - i32.const 1 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.tee $0 - local.get $1 - i32.const 1 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.tee $0 - local.get $1 - i32.const 1 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.tee $3 - i32.const 1 - i32.add - local.set $0 - local.get $1 - i32.const 1 - i32.add - local.tee $4 - i32.const 1 - i32.add - local.set $1 - local.get $3 - local.get $4 - i32.load8_u - i32.store8 - end - local.get $2 - i32.const 4 - i32.and - if - local.get $0 - local.get $1 - i32.load8_u - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.tee $0 - local.get $1 - i32.const 1 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.tee $0 - local.get $1 - i32.const 1 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.tee $3 - i32.const 1 - i32.add - local.set $0 - local.get $1 - i32.const 1 - i32.add - local.tee $4 - i32.const 1 - i32.add - local.set $1 - local.get $3 - local.get $4 - i32.load8_u - i32.store8 - end - local.get $2 - i32.const 2 - i32.and - if - local.get $0 - local.get $1 - i32.load8_u - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.tee $3 - i32.const 1 - i32.add - local.set $0 - local.get $1 - i32.const 1 - i32.add - local.tee $4 - i32.const 1 - i32.add - local.set $1 - local.get $3 - local.get $4 - i32.load8_u - i32.store8 - end - local.get $2 - i32.const 1 - i32.and - if - local.get $0 - local.get $1 - i32.load8_u - i32.store8 - end - ) - (func $~lib/memory/memory.copy (; 16 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/memory/memory.copy (; 15 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) block $~lib/util/memory/memmove|inlined.0 @@ -1606,29 +761,6 @@ local.get $1 i32.eq br_if $~lib/util/memory/memmove|inlined.0 - local.get $1 - local.get $2 - i32.add - local.get $0 - i32.le_u - local.tee $3 - i32.eqz - if - local.get $0 - local.get $2 - i32.add - local.get $1 - i32.le_u - local.set $3 - end - local.get $3 - 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 @@ -1792,7 +924,7 @@ end end ) - (func $~lib/runtime/runtime.reallocate (; 17 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/util/runtime/reallocate (; 16 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -1816,7 +948,7 @@ i32.shl i32.const 0 local.get $0 - i32.const 1444 + i32.const 1500 i32.gt_u select i32.const 32 @@ -1854,13 +986,13 @@ i32.eq if local.get $0 - i32.const 1444 + i32.const 1500 i32.le_u if i32.const 0 - i32.const 128 - i32.const 77 - i32.const 10 + i32.const 904 + i32.const 74 + i32.const 8 call $~lib/env/abort unreachable end @@ -1887,7 +1019,7 @@ i32.store offset=4 local.get $0 ) - (func $~lib/array/ensureCapacity (; 18 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/array/ensureCapacity (; 17 ;) (type $FUNCSIG$vi) (param $0 i32) (local $1 i32) (local $2 i32) i32.const 1 @@ -1900,7 +1032,7 @@ local.get $0 i32.load local.tee $2 - call $~lib/runtime/runtime.reallocate + call $~lib/util/runtime/reallocate local.set $1 local.get $1 local.get $2 @@ -1927,7 +1059,7 @@ i32.store offset=8 end ) - (func $~lib/array/Array#__unchecked_set (; 19 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/array/Array#__unchecked_set (; 18 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) local.get $0 i32.load offset=4 @@ -1947,7 +1079,7 @@ end end ) - (func $~lib/array/Array#__set (; 20 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/array/Array#__set (; 19 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) local.get $0 i32.load offset=12 @@ -1966,7 +1098,7 @@ i32.store offset=12 end ) - (func $gc/itcm/trace/makeGarbage (; 21 ;) (type $FUNCSIG$v) + (func $gc/itcm/trace/makeGarbage (; 20 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) i32.const 72 @@ -2009,7 +1141,7 @@ local.get $0 local.get $1 call $~lib/array/Array#__set - i32.const 904 + i32.const 960 i32.const 0 f64.const 0 f64.const 0 @@ -2020,7 +1152,7 @@ local.get $0 i32.const 0 call $~lib/array/Array#__set - i32.const 952 + i32.const 1008 i32.const 0 f64.const 0 f64.const 0 @@ -2031,7 +1163,7 @@ call $gc/itcm/trace/Ref#constructor drop ) - (func $~lib/collector/itcm/step (; 22 ;) (type $FUNCSIG$v) + (func $~lib/collector/itcm/step (; 21 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) block $break|0 @@ -2048,7 +1180,7 @@ end unreachable end - i32.const 1032 + i32.const 1088 i32.const 0 f64.const 0 f64.const 0 @@ -2058,7 +1190,7 @@ call $~lib/env/trace i32.const 2 global.set $~lib/collector/itcm/state - i32.const 1080 + i32.const 1136 i32.const 0 f64.const 0 f64.const 0 @@ -2076,7 +1208,7 @@ global.get $~lib/collector/itcm/toSpace i32.ne if - i32.const 1136 + i32.const 1192 i32.const 1 local.get $0 i32.const 16 @@ -2102,9 +1234,9 @@ local.get $0 i32.load local.get $1 - call $~lib/gc/__gc_mark_members + call $~lib/runtime/__gc_mark_members else - i32.const 1184 + i32.const 1240 i32.const 0 f64.const 0 f64.const 0 @@ -2135,7 +1267,7 @@ global.set $~lib/collector/itcm/iter i32.const 3 global.set $~lib/collector/itcm/state - i32.const 1248 + i32.const 1304 i32.const 0 f64.const 0 f64.const 0 @@ -2152,7 +1284,7 @@ global.get $~lib/collector/itcm/toSpace i32.ne if - i32.const 1304 + i32.const 1360 i32.const 1 local.get $0 i32.const 16 @@ -2169,7 +1301,7 @@ i32.and global.set $~lib/collector/itcm/iter else - i32.const 1360 + i32.const 1416 i32.const 0 f64.const 0 f64.const 0 @@ -2192,8 +1324,8 @@ end end ) - (func $~lib/collector/itcm/__ref_collect (; 23 ;) (type $FUNCSIG$v) - i32.const 992 + (func $~lib/collector/itcm/__ref_collect (; 22 ;) (type $FUNCSIG$v) + i32.const 1048 i32.const 0 f64.const 0 f64.const 0 @@ -2219,11 +1351,11 @@ br_if $continue|1 end ) - (func $gc/itcm/trace/main (; 24 ;) (type $FUNCSIG$v) + (func $gc/itcm/trace/main (; 23 ;) (type $FUNCSIG$v) global.get $~lib/started i32.eqz if - i32.const 1448 + i32.const 1504 global.set $~lib/allocator/arena/startOffset global.get $~lib/allocator/arena/startOffset global.set $~lib/allocator/arena/offset @@ -2233,8 +1365,8 @@ global.set $~lib/started end ) - (func $~lib/collector/itcm/__ref_mark (; 25 ;) (type $FUNCSIG$vi) (param $0 i32) - i32.const 1424 + (func $~lib/collector/itcm/__ref_mark (; 24 ;) (type $FUNCSIG$vi) (param $0 i32) + i32.const 1480 i32.const 1 local.get $0 f64.convert_i32_u @@ -2258,7 +1390,7 @@ call $~lib/collector/itcm/ManagedObject#makeGray end ) - (func $~lib/array/Array#__traverse (; 26 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/array/Array#__traverse (; 25 ;) (type $FUNCSIG$vi) (param $0 i32) (local $1 i32) (local $2 i32) local.get $0 @@ -2284,7 +1416,7 @@ call $~lib/collector/itcm/__ref_mark i32.const 2 local.get $0 - call $~lib/gc/__gc_mark_members + call $~lib/runtime/__gc_mark_members end local.get $1 i32.const 4 @@ -2294,7 +1426,7 @@ end end ) - (func $~lib/gc/__gc_mark_members (; 27 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/runtime/__gc_mark_members (; 26 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) block $invalid block $~lib/array/Array block $~lib/arraybuffer/ArrayBufferView @@ -2316,7 +1448,7 @@ call $~lib/collector/itcm/__ref_mark i32.const 2 local.get $0 - call $~lib/gc/__gc_mark_members + call $~lib/runtime/__gc_mark_members end return end @@ -2330,7 +1462,7 @@ call $~lib/collector/itcm/__ref_mark i32.const 3 local.get $0 - call $~lib/gc/__gc_mark_members + call $~lib/runtime/__gc_mark_members end return end @@ -2340,7 +1472,7 @@ end unreachable ) - (func $null (; 28 ;) (type $FUNCSIG$v) + (func $null (; 27 ;) (type $FUNCSIG$v) nop ) ) diff --git a/tests/compiler/gc/itcm/trace.ts b/tests/compiler/gc/itcm/trace.ts index d3c15120..95969563 100644 --- a/tests/compiler/gc/itcm/trace.ts +++ b/tests/compiler/gc/itcm/trace.ts @@ -4,7 +4,6 @@ import "collector/itcm"; import { HEADER_SIZE } from "util/runtime"; assert(HEADER_SIZE == 16); -assert(gc.implemented); class Ref { inner: Ref; @@ -24,7 +23,7 @@ function makeGarbage(): void { } makeGarbage(); -gc.collect(); +runtime.collect(); // should have sweeped four objects (incl. arr.buffer) diff --git a/tests/compiler/gc/itcm/trace.untouched.wat b/tests/compiler/gc/itcm/trace.untouched.wat index 2db214ef..9dd9bb57 100644 --- a/tests/compiler/gc/itcm/trace.untouched.wat +++ b/tests/compiler/gc/itcm/trace.untouched.wat @@ -28,22 +28,22 @@ (data (i32.const 712) "\01\00\00\00:\00\00\00\00\00\00\00\00\00\00\00 \00 \00 \00 \00 \00u\00n\00l\00i\00n\00k\00 \00[\00p\00r\00e\00f\00,\00 \00r\00e\00f\00,\00 \00n\00e\00x\00t\00]\00") (data (i32.const 792) "\01\00\00\00\1c\00\00\00\00\00\00\00\00\00\00\00#\00 \00a\00r\00r\00[\000\00]\00 \00=\00 \00r\00e\00f\00") (data (i32.const 840) "\01\00\00\00\1a\00\00\00\00\00\00\00\00\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s\00") - (data (i32.const 888) "\01\00\00\00\1e\00\00\00\00\00\00\00\00\00\00\00#\00 \00a\00r\00r\00[\000\00]\00 \00=\00 \00n\00u\00l\00l\00") - (data (i32.const 936) "\01\00\00\00\16\00\00\00\00\00\00\00\00\00\00\00#\00 \00n\00e\00w\00 \00R\00e\00f\00(\00)\00") - (data (i32.const 976) "\01\00\00\00\18\00\00\00\00\00\00\00\00\00\00\00i\00t\00c\00m\00.\00c\00o\00l\00l\00e\00c\00t\00") - (data (i32.const 1016) "\01\00\00\00\1c\00\00\00\00\00\00\00\00\00\00\00i\00t\00c\00m\00~\00s\00t\00e\00p\00/\00I\00D\00L\00E\00") - (data (i32.const 1064) "\01\00\00\00\"\00\00\00\00\00\00\00\00\00\00\00i\00t\00c\00m\00~\00s\00t\00a\00t\00e\00 \00=\00 \00M\00A\00R\00K\00") - (data (i32.const 1120) "\01\00\00\00\1c\00\00\00\00\00\00\00\00\00\00\00i\00t\00c\00m\00~\00s\00t\00e\00p\00/\00M\00A\00R\00K\00") - (data (i32.const 1168) "\01\00\00\00*\00\00\00\00\00\00\00\00\00\00\00i\00t\00c\00m\00~\00s\00t\00e\00p\00/\00M\00A\00R\00K\00 \00f\00i\00n\00i\00s\00h\00") - (data (i32.const 1232) "\01\00\00\00$\00\00\00\00\00\00\00\00\00\00\00i\00t\00c\00m\00~\00s\00t\00a\00t\00e\00 \00=\00 \00S\00W\00E\00E\00P\00") - (data (i32.const 1288) "\01\00\00\00(\00\00\00\00\00\00\00\00\00\00\00i\00t\00c\00m\00~\00s\00t\00e\00p\00/\00S\00W\00E\00E\00P\00 \00f\00r\00e\00e\00") - (data (i32.const 1344) "\01\00\00\00,\00\00\00\00\00\00\00\00\00\00\00i\00t\00c\00m\00~\00s\00t\00e\00p\00/\00S\00W\00E\00E\00P\00 \00f\00i\00n\00i\00s\00h\00") - (data (i32.const 1408) "\01\00\00\00\12\00\00\00\00\00\00\00\00\00\00\00i\00t\00c\00m\00.\00m\00a\00r\00k\00") + (data (i32.const 888) "\01\00\00\00(\00\00\00\00\00\00\00\00\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00r\00u\00n\00t\00i\00m\00e\00.\00t\00s\00") + (data (i32.const 944) "\01\00\00\00\1e\00\00\00\00\00\00\00\00\00\00\00#\00 \00a\00r\00r\00[\000\00]\00 \00=\00 \00n\00u\00l\00l\00") + (data (i32.const 992) "\01\00\00\00\16\00\00\00\00\00\00\00\00\00\00\00#\00 \00n\00e\00w\00 \00R\00e\00f\00(\00)\00") + (data (i32.const 1032) "\01\00\00\00\18\00\00\00\00\00\00\00\00\00\00\00i\00t\00c\00m\00.\00c\00o\00l\00l\00e\00c\00t\00") + (data (i32.const 1072) "\01\00\00\00\1c\00\00\00\00\00\00\00\00\00\00\00i\00t\00c\00m\00~\00s\00t\00e\00p\00/\00I\00D\00L\00E\00") + (data (i32.const 1120) "\01\00\00\00\"\00\00\00\00\00\00\00\00\00\00\00i\00t\00c\00m\00~\00s\00t\00a\00t\00e\00 \00=\00 \00M\00A\00R\00K\00") + (data (i32.const 1176) "\01\00\00\00\1c\00\00\00\00\00\00\00\00\00\00\00i\00t\00c\00m\00~\00s\00t\00e\00p\00/\00M\00A\00R\00K\00") + (data (i32.const 1224) "\01\00\00\00*\00\00\00\00\00\00\00\00\00\00\00i\00t\00c\00m\00~\00s\00t\00e\00p\00/\00M\00A\00R\00K\00 \00f\00i\00n\00i\00s\00h\00") + (data (i32.const 1288) "\01\00\00\00$\00\00\00\00\00\00\00\00\00\00\00i\00t\00c\00m\00~\00s\00t\00a\00t\00e\00 \00=\00 \00S\00W\00E\00E\00P\00") + (data (i32.const 1344) "\01\00\00\00(\00\00\00\00\00\00\00\00\00\00\00i\00t\00c\00m\00~\00s\00t\00e\00p\00/\00S\00W\00E\00E\00P\00 \00f\00r\00e\00e\00") + (data (i32.const 1400) "\01\00\00\00,\00\00\00\00\00\00\00\00\00\00\00i\00t\00c\00m\00~\00s\00t\00e\00p\00/\00S\00W\00E\00E\00P\00 \00f\00i\00n\00i\00s\00h\00") + (data (i32.const 1464) "\01\00\00\00\12\00\00\00\00\00\00\00\00\00\00\00i\00t\00c\00m\00.\00m\00a\00r\00k\00") (table $0 1 funcref) (elem (i32.const 0) $null) (global $gc/itcm/trace/GC_TRACE i32 (i32.const 1)) (global $~lib/util/runtime/HEADER_SIZE i32 (i32.const 16)) - (global $~lib/gc/gc.implemented i32 (i32.const 1)) (global $~lib/allocator/arena/startOffset (mut i32) (i32.const 0)) (global $~lib/allocator/arena/offset (mut i32) (i32.const 0)) (global $~lib/util/runtime/HEADER_MAGIC i32 (i32.const -1520547049)) @@ -55,7 +55,7 @@ (global $~lib/collector/itcm/white (mut i32) (i32.const 0)) (global $~lib/util/runtime/MAX_BYTELENGTH i32 (i32.const 1073741808)) (global $~lib/started (mut i32) (i32.const 0)) - (global $~lib/memory/HEAP_BASE i32 (i32.const 1444)) + (global $~lib/memory/HEAP_BASE i32 (i32.const 1500)) (global $~lib/capabilities i32 (i32.const 2)) (export "memory" (memory $0)) (export "table" (table $0)) @@ -390,7 +390,7 @@ if i32.const 0 i32.const 128 - i32.const 117 + i32.const 82 i32.const 6 call $~lib/env/abort unreachable @@ -407,7 +407,7 @@ if i32.const 0 i32.const 128 - i32.const 119 + i32.const 84 i32.const 6 call $~lib/env/abort unreachable @@ -956,1208 +956,7 @@ i32.store offset=12 local.get $0 ) - (func $~lib/util/memory/memcpy (; 23 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (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 - end - end - local.get $0 - 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.get $2 - 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.get $2 - i32.const 4 - 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 $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 - 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 $~lib/memory/memory.copy (; 24 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/memory/memory.copy (; 23 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -2168,28 +967,6 @@ 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 @@ -2388,14 +1165,14 @@ end end ) - (func $~lib/allocator/arena/__mem_free (; 25 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/allocator/arena/__mem_free (; 24 ;) (type $FUNCSIG$vi) (param $0 i32) nop ) - (func $~lib/memory/memory.free (; 26 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/memory/memory.free (; 25 ;) (type $FUNCSIG$vi) (param $0 i32) local.get $0 call $~lib/allocator/arena/__mem_free ) - (func $~lib/runtime/runtime.reallocate (; 27 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/util/runtime/reallocate (; 26 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -2465,9 +1242,9 @@ i32.eqz if i32.const 0 - i32.const 128 - i32.const 77 - i32.const 10 + i32.const 904 + i32.const 74 + i32.const 8 call $~lib/env/abort unreachable end @@ -2499,7 +1276,7 @@ i32.store offset=4 local.get $0 ) - (func $~lib/array/ensureCapacity (; 28 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/array/ensureCapacity (; 27 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -2521,7 +1298,7 @@ if i32.const 0 i32.const 856 - i32.const 15 + i32.const 14 i32.const 64 call $~lib/env/abort unreachable @@ -2535,7 +1312,7 @@ local.set $4 local.get $3 local.get $4 - call $~lib/runtime/runtime.reallocate + call $~lib/util/runtime/reallocate local.set $5 local.get $5 local.get $3 @@ -2568,7 +1345,7 @@ i32.store offset=8 end ) - (func $~lib/array/Array#__unchecked_set (; 29 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/array/Array#__unchecked_set (; 28 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) local.get $0 @@ -2598,7 +1375,7 @@ end end ) - (func $~lib/array/Array#__set (; 30 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/array/Array#__set (; 29 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) local.get $0 i32.load offset=12 @@ -2624,7 +1401,7 @@ i32.store offset=12 end ) - (func $gc/itcm/trace/makeGarbage (; 31 ;) (type $FUNCSIG$v) + (func $gc/itcm/trace/makeGarbage (; 30 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) i32.const 72 @@ -2662,7 +1439,7 @@ i32.const 0 local.get $0 call $~lib/array/Array#__set - i32.const 904 + i32.const 960 i32.const 0 f64.const 0 f64.const 0 @@ -2674,7 +1451,7 @@ i32.const 0 i32.const 0 call $~lib/array/Array#__set - i32.const 952 + i32.const 1008 i32.const 0 f64.const 0 f64.const 0 @@ -2686,7 +1463,7 @@ call $gc/itcm/trace/Ref#constructor drop ) - (func $~lib/collector/itcm/step (; 32 ;) (type $FUNCSIG$v) + (func $~lib/collector/itcm/step (; 31 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) block $break|0 @@ -2717,7 +1494,7 @@ unreachable end block - i32.const 1032 + i32.const 1088 i32.const 0 f64.const 0 f64.const 0 @@ -2725,10 +1502,10 @@ f64.const 0 f64.const 0 call $~lib/env/trace - call $~lib/gc/__gc_mark_roots + call $~lib/runtime/__gc_mark_roots i32.const 2 global.set $~lib/collector/itcm/state - i32.const 1080 + i32.const 1136 i32.const 0 f64.const 0 f64.const 0 @@ -2749,7 +1526,7 @@ global.get $~lib/collector/itcm/toSpace i32.ne if - i32.const 1136 + i32.const 1192 i32.const 1 block $~lib/collector/itcm/objToRef|inlined.10 (result i32) local.get $0 @@ -2779,10 +1556,10 @@ global.get $~lib/util/runtime/HEADER_SIZE i32.add end - call $~lib/gc/__gc_mark_members + call $~lib/runtime/__gc_mark_members else - call $~lib/gc/__gc_mark_roots - i32.const 1184 + call $~lib/runtime/__gc_mark_roots + i32.const 1240 i32.const 0 f64.const 0 f64.const 0 @@ -2811,7 +1588,7 @@ global.set $~lib/collector/itcm/iter i32.const 3 global.set $~lib/collector/itcm/state - i32.const 1248 + i32.const 1304 i32.const 0 f64.const 0 f64.const 0 @@ -2833,7 +1610,7 @@ global.get $~lib/collector/itcm/toSpace i32.ne if - i32.const 1304 + i32.const 1360 i32.const 1 block $~lib/collector/itcm/objToRef|inlined.12 (result i32) local.get $0 @@ -2859,7 +1636,7 @@ call $~lib/memory/memory.free end else - i32.const 1360 + i32.const 1416 i32.const 0 f64.const 0 f64.const 0 @@ -2886,8 +1663,8 @@ unreachable end ) - (func $~lib/collector/itcm/__ref_collect (; 33 ;) (type $FUNCSIG$v) - i32.const 992 + (func $~lib/collector/itcm/__ref_collect (; 32 ;) (type $FUNCSIG$v) + i32.const 1048 i32.const 0 f64.const 0 f64.const 0 @@ -2917,10 +1694,10 @@ end end ) - (func $~lib/gc/gc.collect (; 34 ;) (type $FUNCSIG$v) + (func $~lib/runtime/runtime.collect (; 33 ;) (type $FUNCSIG$v) call $~lib/collector/itcm/__ref_collect ) - (func $start:gc/itcm/trace (; 35 ;) (type $FUNCSIG$v) + (func $start:gc/itcm/trace (; 34 ;) (type $FUNCSIG$v) global.get $~lib/util/runtime/HEADER_SIZE i32.const 16 i32.eq @@ -2933,16 +1710,6 @@ call $~lib/env/abort unreachable end - global.get $~lib/gc/gc.implemented - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 7 - i32.const 0 - call $~lib/env/abort - unreachable - end global.get $~lib/memory/HEAP_BASE i32.const 7 i32.add @@ -2954,9 +1721,9 @@ global.get $~lib/allocator/arena/startOffset global.set $~lib/allocator/arena/offset call $gc/itcm/trace/makeGarbage - call $~lib/gc/gc.collect + call $~lib/runtime/runtime.collect ) - (func $gc/itcm/trace/main (; 36 ;) (type $FUNCSIG$v) + (func $gc/itcm/trace/main (; 35 ;) (type $FUNCSIG$v) global.get $~lib/started i32.eqz if @@ -2965,13 +1732,13 @@ global.set $~lib/started end ) - (func $start (; 37 ;) (type $FUNCSIG$v) + (func $start (; 36 ;) (type $FUNCSIG$v) call $start:gc/itcm/trace ) - (func $~lib/collector/itcm/__ref_mark (; 38 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/collector/itcm/__ref_mark (; 37 ;) (type $FUNCSIG$vi) (param $0 i32) (local $1 i32) (local $2 i32) - i32.const 1424 + i32.const 1480 i32.const 1 local.get $0 f64.convert_i32_u @@ -2998,11 +1765,11 @@ call $~lib/collector/itcm/ManagedObject#makeGray end ) - (func $~lib/gc/__gc_mark_roots (; 39 ;) (type $FUNCSIG$v) + (func $~lib/runtime/__gc_mark_roots (; 38 ;) (type $FUNCSIG$v) (local $0 i32) nop ) - (func $~lib/array/Array#__traverse (; 40 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/array/Array#__traverse (; 39 ;) (type $FUNCSIG$vi) (param $0 i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -3033,7 +1800,7 @@ call $~lib/collector/itcm/__ref_mark i32.const 2 local.get $3 - call $~lib/gc/__gc_mark_members + call $~lib/runtime/__gc_mark_members end local.get $1 i32.const 4 @@ -3045,7 +1812,7 @@ end end ) - (func $~lib/gc/__gc_mark_members (; 41 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/runtime/__gc_mark_members (; 40 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) block $invalid block $~lib/array/Array @@ -3066,7 +1833,7 @@ call $~lib/collector/itcm/__ref_mark i32.const 2 local.get $2 - call $~lib/gc/__gc_mark_members + call $~lib/runtime/__gc_mark_members end return end @@ -3080,7 +1847,7 @@ call $~lib/collector/itcm/__ref_mark i32.const 3 local.get $2 - call $~lib/gc/__gc_mark_members + call $~lib/runtime/__gc_mark_members end return end @@ -3090,6 +1857,6 @@ end unreachable ) - (func $null (; 42 ;) (type $FUNCSIG$v) + (func $null (; 41 ;) (type $FUNCSIG$v) ) ) diff --git a/tests/compiler/gc/rc/global-assign.optimized.wat b/tests/compiler/gc/rc/global-assign.optimized.wat index 08203d35..5540b9bb 100644 --- a/tests/compiler/gc/rc/global-assign.optimized.wat +++ b/tests/compiler/gc/rc/global-assign.optimized.wat @@ -143,7 +143,7 @@ if i32.const 0 i32.const 24 - i32.const 117 + i32.const 82 i32.const 6 call $~lib/env/abort unreachable @@ -158,7 +158,7 @@ if i32.const 0 i32.const 24 - i32.const 119 + i32.const 84 i32.const 6 call $~lib/env/abort unreachable diff --git a/tests/compiler/gc/rc/global-assign.untouched.wat b/tests/compiler/gc/rc/global-assign.untouched.wat index 68508f9d..77583c5e 100644 --- a/tests/compiler/gc/rc/global-assign.untouched.wat +++ b/tests/compiler/gc/rc/global-assign.untouched.wat @@ -180,7 +180,7 @@ if i32.const 0 i32.const 24 - i32.const 117 + i32.const 82 i32.const 6 call $~lib/env/abort unreachable @@ -197,7 +197,7 @@ if i32.const 0 i32.const 24 - i32.const 119 + i32.const 84 i32.const 6 call $~lib/env/abort unreachable diff --git a/tests/compiler/gc/rc/global-init.optimized.wat b/tests/compiler/gc/rc/global-init.optimized.wat index e2283700..e1d5cc9b 100644 --- a/tests/compiler/gc/rc/global-init.optimized.wat +++ b/tests/compiler/gc/rc/global-init.optimized.wat @@ -139,7 +139,7 @@ if i32.const 0 i32.const 24 - i32.const 117 + i32.const 82 i32.const 6 call $~lib/env/abort unreachable @@ -154,7 +154,7 @@ if i32.const 0 i32.const 24 - i32.const 119 + i32.const 84 i32.const 6 call $~lib/env/abort unreachable diff --git a/tests/compiler/gc/rc/global-init.untouched.wat b/tests/compiler/gc/rc/global-init.untouched.wat index d960f976..f81bb65e 100644 --- a/tests/compiler/gc/rc/global-init.untouched.wat +++ b/tests/compiler/gc/rc/global-init.untouched.wat @@ -178,7 +178,7 @@ if i32.const 0 i32.const 24 - i32.const 117 + i32.const 82 i32.const 6 call $~lib/env/abort unreachable @@ -195,7 +195,7 @@ if i32.const 0 i32.const 24 - i32.const 119 + i32.const 84 i32.const 6 call $~lib/env/abort unreachable diff --git a/tests/compiler/getter-call.optimized.wat b/tests/compiler/getter-call.optimized.wat index da6cab35..addde4de 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 117 + i32.const 82 i32.const 6 call $~lib/env/abort unreachable @@ -100,7 +100,7 @@ if i32.const 0 i32.const 16 - i32.const 119 + i32.const 84 i32.const 6 call $~lib/env/abort unreachable diff --git a/tests/compiler/getter-call.untouched.wat b/tests/compiler/getter-call.untouched.wat index cccd911f..016b0dda 100644 --- a/tests/compiler/getter-call.untouched.wat +++ b/tests/compiler/getter-call.untouched.wat @@ -141,7 +141,7 @@ if i32.const 0 i32.const 16 - i32.const 117 + i32.const 82 i32.const 6 call $~lib/env/abort unreachable @@ -158,7 +158,7 @@ if i32.const 0 i32.const 16 - i32.const 119 + i32.const 84 i32.const 6 call $~lib/env/abort unreachable diff --git a/tests/compiler/inlining.optimized.wat b/tests/compiler/inlining.optimized.wat index ca0bc716..428f93cf 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 117 + i32.const 82 i32.const 6 call $~lib/env/abort unreachable @@ -146,7 +146,7 @@ if i32.const 0 i32.const 48 - i32.const 119 + i32.const 84 i32.const 6 call $~lib/env/abort unreachable diff --git a/tests/compiler/inlining.untouched.wat b/tests/compiler/inlining.untouched.wat index 22a9c236..cd470d1c 100644 --- a/tests/compiler/inlining.untouched.wat +++ b/tests/compiler/inlining.untouched.wat @@ -405,7 +405,7 @@ if i32.const 0 i32.const 48 - i32.const 117 + i32.const 82 i32.const 6 call $~lib/env/abort unreachable @@ -422,7 +422,7 @@ if i32.const 0 i32.const 48 - i32.const 119 + i32.const 84 i32.const 6 call $~lib/env/abort unreachable diff --git a/tests/compiler/number.optimized.wat b/tests/compiler/number.optimized.wat index fc6baa07..6b8a9e92 100644 --- a/tests/compiler/number.optimized.wat +++ b/tests/compiler/number.optimized.wat @@ -303,7 +303,7 @@ if i32.const 0 i32.const 464 - i32.const 117 + i32.const 82 i32.const 6 call $~lib/env/abort unreachable @@ -318,7 +318,7 @@ if i32.const 0 i32.const 464 - i32.const 119 + i32.const 84 i32.const 6 call $~lib/env/abort unreachable @@ -872,854 +872,7 @@ i32.store16 local.get $2 ) - (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 $5 i32) - loop $continue|0 - local.get $1 - i32.const 3 - i32.and - local.get $2 - local.get $2 - select - if - local.get $0 - local.tee $3 - i32.const 1 - i32.add - local.set $0 - local.get $1 - local.tee $4 - i32.const 1 - i32.add - local.set $1 - local.get $3 - local.get $4 - i32.load8_u - i32.store8 - local.get $2 - i32.const 1 - i32.sub - local.set $2 - br $continue|0 - end - end - local.get $0 - i32.const 3 - i32.and - i32.eqz - if - loop $continue|1 - local.get $2 - i32.const 16 - i32.ge_u - 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.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 - br $continue|1 - end - end - local.get $2 - 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 $1 - i32.const 8 - i32.add - local.set $1 - local.get $0 - i32.const 8 - i32.add - local.set $0 - end - local.get $2 - i32.const 4 - i32.and - if - local.get $0 - local.get $1 - i32.load - i32.store - local.get $1 - i32.const 4 - i32.add - local.set $1 - local.get $0 - i32.const 4 - i32.add - local.set $0 - end - local.get $2 - i32.const 2 - i32.and - if - local.get $0 - local.get $1 - i32.load16_u - i32.store16 - local.get $1 - i32.const 2 - i32.add - local.set $1 - local.get $0 - i32.const 2 - i32.add - local.set $0 - end - local.get $2 - i32.const 1 - i32.and - if - local.get $0 - local.get $1 - i32.load8_u - i32.store8 - end - return - end - local.get $2 - i32.const 32 - i32.ge_u - if - block $break|2 - block $case2|2 - block $case1|2 - local.get $0 - i32.const 3 - i32.and - local.tee $3 - i32.const 1 - i32.ne - if - local.get $3 - i32.const 2 - i32.eq - br_if $case1|2 - local.get $3 - i32.const 3 - i32.eq - br_if $case2|2 - br $break|2 - end - local.get $1 - i32.load - local.set $5 - local.get $0 - local.get $1 - i32.load8_u - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.tee $0 - local.get $1 - i32.const 1 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.tee $3 - i32.const 1 - i32.add - local.set $0 - local.get $1 - i32.const 1 - i32.add - local.tee $4 - i32.const 1 - i32.add - local.set $1 - local.get $3 - local.get $4 - i32.load8_u - i32.store8 - local.get $2 - i32.const 3 - i32.sub - local.set $2 - loop $continue|3 - local.get $2 - i32.const 17 - i32.ge_u - if - local.get $0 - local.get $1 - i32.const 1 - i32.add - i32.load - local.tee $3 - i32.const 8 - i32.shl - local.get $5 - i32.const 24 - i32.shr_u - i32.or - i32.store - local.get $0 - i32.const 4 - i32.add - local.get $3 - i32.const 24 - i32.shr_u - local.get $1 - i32.const 5 - i32.add - i32.load - local.tee $3 - i32.const 8 - i32.shl - i32.or - i32.store - local.get $0 - i32.const 8 - i32.add - local.get $3 - i32.const 24 - i32.shr_u - local.get $1 - i32.const 9 - i32.add - i32.load - local.tee $3 - i32.const 8 - i32.shl - i32.or - i32.store - local.get $0 - i32.const 12 - i32.add - local.get $1 - i32.const 13 - i32.add - i32.load - local.tee $5 - i32.const 8 - i32.shl - local.get $3 - i32.const 24 - i32.shr_u - 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 - br $continue|3 - end - end - br $break|2 - end - local.get $1 - i32.load - local.set $5 - local.get $0 - local.get $1 - i32.load8_u - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.tee $3 - i32.const 1 - i32.add - local.set $0 - local.get $1 - i32.const 1 - i32.add - local.tee $4 - i32.const 1 - i32.add - local.set $1 - local.get $3 - local.get $4 - i32.load8_u - i32.store8 - local.get $2 - i32.const 2 - i32.sub - local.set $2 - loop $continue|4 - local.get $2 - i32.const 18 - i32.ge_u - if - local.get $0 - local.get $1 - i32.const 2 - i32.add - i32.load - local.tee $3 - i32.const 16 - i32.shl - local.get $5 - i32.const 16 - i32.shr_u - i32.or - i32.store - local.get $0 - i32.const 4 - i32.add - local.get $3 - i32.const 16 - i32.shr_u - local.get $1 - i32.const 6 - i32.add - i32.load - local.tee $3 - i32.const 16 - i32.shl - i32.or - i32.store - local.get $0 - i32.const 8 - i32.add - local.get $3 - i32.const 16 - i32.shr_u - local.get $1 - i32.const 10 - i32.add - i32.load - local.tee $3 - i32.const 16 - i32.shl - i32.or - i32.store - local.get $0 - i32.const 12 - i32.add - local.get $1 - i32.const 14 - i32.add - i32.load - local.tee $5 - i32.const 16 - i32.shl - local.get $3 - i32.const 16 - i32.shr_u - 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 - br $continue|4 - end - end - br $break|2 - end - local.get $1 - i32.load - local.set $5 - local.get $0 - local.tee $3 - i32.const 1 - i32.add - local.set $0 - local.get $1 - local.tee $4 - i32.const 1 - i32.add - local.set $1 - local.get $3 - local.get $4 - i32.load8_u - i32.store8 - local.get $2 - i32.const 1 - i32.sub - local.set $2 - loop $continue|5 - local.get $2 - i32.const 19 - i32.ge_u - if - local.get $0 - local.get $1 - i32.const 3 - i32.add - i32.load - local.tee $3 - i32.const 24 - i32.shl - local.get $5 - i32.const 8 - i32.shr_u - i32.or - i32.store - local.get $0 - i32.const 4 - i32.add - local.get $3 - i32.const 8 - i32.shr_u - local.get $1 - i32.const 7 - i32.add - i32.load - local.tee $3 - i32.const 24 - i32.shl - i32.or - i32.store - local.get $0 - i32.const 8 - i32.add - local.get $3 - i32.const 8 - i32.shr_u - local.get $1 - i32.const 11 - i32.add - i32.load - local.tee $3 - i32.const 24 - i32.shl - i32.or - i32.store - local.get $0 - i32.const 12 - i32.add - local.get $1 - i32.const 15 - i32.add - i32.load - local.tee $5 - i32.const 24 - i32.shl - local.get $3 - i32.const 8 - i32.shr_u - 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 - br $continue|5 - end - end - end - end - local.get $2 - i32.const 16 - i32.and - if - local.get $0 - local.get $1 - i32.load8_u - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.tee $0 - local.get $1 - i32.const 1 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.tee $0 - local.get $1 - i32.const 1 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.tee $0 - local.get $1 - i32.const 1 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.tee $0 - local.get $1 - i32.const 1 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.tee $0 - local.get $1 - i32.const 1 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.tee $0 - local.get $1 - i32.const 1 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.tee $0 - local.get $1 - i32.const 1 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.tee $0 - local.get $1 - i32.const 1 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.tee $0 - local.get $1 - i32.const 1 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.tee $0 - local.get $1 - i32.const 1 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.tee $0 - local.get $1 - i32.const 1 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.tee $0 - local.get $1 - i32.const 1 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.tee $0 - local.get $1 - i32.const 1 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.tee $0 - local.get $1 - i32.const 1 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.tee $3 - i32.const 1 - i32.add - local.set $0 - local.get $1 - i32.const 1 - i32.add - local.tee $4 - i32.const 1 - i32.add - local.set $1 - local.get $3 - local.get $4 - i32.load8_u - i32.store8 - end - local.get $2 - i32.const 8 - i32.and - if - local.get $0 - local.get $1 - i32.load8_u - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.tee $0 - local.get $1 - i32.const 1 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.tee $0 - local.get $1 - i32.const 1 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.tee $0 - local.get $1 - i32.const 1 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.tee $0 - local.get $1 - i32.const 1 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.tee $0 - local.get $1 - i32.const 1 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.tee $0 - local.get $1 - i32.const 1 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.tee $3 - i32.const 1 - i32.add - local.set $0 - local.get $1 - i32.const 1 - i32.add - local.tee $4 - i32.const 1 - i32.add - local.set $1 - local.get $3 - local.get $4 - i32.load8_u - i32.store8 - end - local.get $2 - i32.const 4 - i32.and - if - local.get $0 - local.get $1 - i32.load8_u - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.tee $0 - local.get $1 - i32.const 1 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.tee $0 - local.get $1 - i32.const 1 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.tee $3 - i32.const 1 - i32.add - local.set $0 - local.get $1 - i32.const 1 - i32.add - local.tee $4 - i32.const 1 - i32.add - local.set $1 - local.get $3 - local.get $4 - i32.load8_u - i32.store8 - end - local.get $2 - i32.const 2 - i32.and - if - local.get $0 - local.get $1 - i32.load8_u - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.tee $3 - i32.const 1 - i32.add - local.set $0 - local.get $1 - i32.const 1 - i32.add - local.tee $4 - i32.const 1 - i32.add - local.set $1 - local.get $3 - local.get $4 - i32.load8_u - i32.store8 - end - local.get $2 - i32.const 1 - i32.and - if - local.get $0 - local.get $1 - i32.load8_u - i32.store8 - end - ) - (func $~lib/memory/memory.copy (; 11 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/memory/memory.copy (; 10 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) block $~lib/util/memory/memmove|inlined.0 @@ -1727,29 +880,6 @@ local.get $1 i32.eq br_if $~lib/util/memory/memmove|inlined.0 - local.get $1 - local.get $2 - i32.add - local.get $0 - i32.le_u - local.tee $3 - i32.eqz - if - local.get $0 - local.get $2 - i32.add - local.get $1 - i32.le_u - local.set $3 - end - local.get $3 - 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 @@ -1913,7 +1043,7 @@ end end ) - (func $~lib/util/number/prettify (; 12 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/util/number/prettify (; 11 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) local.get $2 @@ -2172,7 +1302,7 @@ end end ) - (func $~lib/util/number/dtoa_core (; 13 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/util/number/dtoa_core (; 12 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i64) (local $2 i64) (local $3 i64) @@ -2349,7 +1479,7 @@ global.get $~lib/util/number/_K call $~lib/util/number/prettify ) - (func $~lib/string/String#substring (; 14 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/string/String#substring (; 13 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -2444,14 +1574,14 @@ local.get $1 call $~lib/runtime/runtime.register ) - (func $~lib/runtime/runtime.discard (; 15 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/runtime/runtime.discard (; 14 ;) (type $FUNCSIG$vi) (param $0 i32) local.get $0 i32.const 1804 i32.le_u if i32.const 0 i32.const 464 - i32.const 103 + i32.const 68 i32.const 6 call $~lib/env/abort unreachable @@ -2465,13 +1595,13 @@ if i32.const 0 i32.const 464 - i32.const 105 + i32.const 70 i32.const 6 call $~lib/env/abort unreachable end ) - (func $start:number (; 16 ;) (type $FUNCSIG$v) + (func $start:number (; 15 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) i32.const 1808 @@ -2650,10 +1780,10 @@ unreachable end ) - (func $start (; 17 ;) (type $FUNCSIG$v) + (func $start (; 16 ;) (type $FUNCSIG$v) call $start:number ) - (func $null (; 18 ;) (type $FUNCSIG$v) + (func $null (; 17 ;) (type $FUNCSIG$v) nop ) ) diff --git a/tests/compiler/number.untouched.wat b/tests/compiler/number.untouched.wat index 258c73fa..06b0c9fa 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 117 + i32.const 82 i32.const 6 call $~lib/env/abort unreachable @@ -416,7 +416,7 @@ if i32.const 0 i32.const 464 - i32.const 119 + i32.const 84 i32.const 6 call $~lib/env/abort unreachable @@ -1197,1208 +1197,7 @@ end local.get $15 ) - (func $~lib/util/memory/memcpy (; 19 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (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 - end - end - local.get $0 - 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.get $2 - 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.get $2 - i32.const 4 - 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 $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 - 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 $~lib/memory/memory.copy (; 20 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/memory/memory.copy (; 19 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -2409,28 +1208,6 @@ 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 @@ -2629,7 +1406,7 @@ end end ) - (func $~lib/util/number/prettify (; 21 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/util/number/prettify (; 20 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -2962,7 +1739,7 @@ unreachable unreachable ) - (func $~lib/util/number/dtoa_core (; 22 ;) (type $FUNCSIG$iid) (param $0 i32) (param $1 f64) (result i32) + (func $~lib/util/number/dtoa_core (; 21 ;) (type $FUNCSIG$iid) (param $0 i32) (param $1 f64) (result i32) (local $2 i32) (local $3 f64) (local $4 i32) @@ -3400,7 +2177,7 @@ local.get $2 i32.add ) - (func $~lib/string/String#substring (; 23 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/string/String#substring (; 22 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -3518,14 +2295,14 @@ i32.const 1 call $~lib/runtime/runtime.register ) - (func $~lib/allocator/arena/__mem_free (; 24 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/allocator/arena/__mem_free (; 23 ;) (type $FUNCSIG$vi) (param $0 i32) nop ) - (func $~lib/memory/memory.free (; 25 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/memory/memory.free (; 24 ;) (type $FUNCSIG$vi) (param $0 i32) local.get $0 call $~lib/allocator/arena/__mem_free ) - (func $~lib/runtime/runtime.discard (; 26 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/runtime/runtime.discard (; 25 ;) (type $FUNCSIG$vi) (param $0 i32) (local $1 i32) local.get $0 global.get $~lib/memory/HEAP_BASE @@ -3534,7 +2311,7 @@ if i32.const 0 i32.const 464 - i32.const 103 + i32.const 68 i32.const 6 call $~lib/env/abort unreachable @@ -3551,7 +2328,7 @@ if i32.const 0 i32.const 464 - i32.const 105 + i32.const 70 i32.const 6 call $~lib/env/abort unreachable @@ -3559,7 +2336,7 @@ local.get $1 call $~lib/memory/memory.free ) - (func $~lib/util/number/dtoa (; 27 ;) (type $FUNCSIG$id) (param $0 f64) (result i32) + (func $~lib/util/number/dtoa (; 26 ;) (type $FUNCSIG$id) (param $0 f64) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -3606,11 +2383,11 @@ call $~lib/runtime/runtime.discard local.get $3 ) - (func $~lib/number/F64#toString (; 28 ;) (type $FUNCSIG$id) (param $0 f64) (result i32) + (func $~lib/number/F64#toString (; 27 ;) (type $FUNCSIG$id) (param $0 f64) (result i32) local.get $0 call $~lib/util/number/dtoa ) - (func $~lib/number/Bool#toString (; 29 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/number/Bool#toString (; 28 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.const 0 i32.ne @@ -3620,12 +2397,12 @@ i32.const 1792 end ) - (func $~lib/builtins/isNaN (; 30 ;) (type $FUNCSIG$if) (param $0 f32) (result i32) + (func $~lib/builtins/isNaN (; 29 ;) (type $FUNCSIG$if) (param $0 f32) (result i32) local.get $0 local.get $0 f32.ne ) - (func $~lib/number/F32.isSafeInteger (; 31 ;) (type $FUNCSIG$if) (param $0 f32) (result i32) + (func $~lib/number/F32.isSafeInteger (; 30 ;) (type $FUNCSIG$if) (param $0 f32) (result i32) (local $1 i32) local.get $0 f32.abs @@ -3641,14 +2418,14 @@ local.get $1 end ) - (func $~lib/builtins/isFinite (; 32 ;) (type $FUNCSIG$if) (param $0 f32) (result i32) + (func $~lib/builtins/isFinite (; 31 ;) (type $FUNCSIG$if) (param $0 f32) (result i32) local.get $0 local.get $0 f32.sub f32.const 0 f32.eq ) - (func $~lib/number/F32.isInteger (; 33 ;) (type $FUNCSIG$if) (param $0 f32) (result i32) + (func $~lib/number/F32.isInteger (; 32 ;) (type $FUNCSIG$if) (param $0 f32) (result i32) (local $1 i32) local.get $0 call $~lib/builtins/isFinite @@ -3662,7 +2439,7 @@ local.get $1 end ) - (func $~lib/number/F64.isSafeInteger (; 34 ;) (type $FUNCSIG$id) (param $0 f64) (result i32) + (func $~lib/number/F64.isSafeInteger (; 33 ;) (type $FUNCSIG$id) (param $0 f64) (result i32) (local $1 i32) local.get $0 f64.abs @@ -3678,7 +2455,7 @@ local.get $1 end ) - (func $~lib/number/F64.isInteger (; 35 ;) (type $FUNCSIG$id) (param $0 f64) (result i32) + (func $~lib/number/F64.isInteger (; 34 ;) (type $FUNCSIG$id) (param $0 f64) (result i32) (local $1 i32) local.get $0 call $~lib/builtins/isFinite @@ -3692,7 +2469,7 @@ local.get $1 end ) - (func $start:number (; 36 ;) (type $FUNCSIG$v) + (func $start:number (; 35 ;) (type $FUNCSIG$v) (local $0 i32) global.get $~lib/memory/HEAP_BASE i32.const 7 @@ -4428,9 +3205,9 @@ unreachable end ) - (func $start (; 37 ;) (type $FUNCSIG$v) + (func $start (; 36 ;) (type $FUNCSIG$v) call $start:number ) - (func $null (; 38 ;) (type $FUNCSIG$v) + (func $null (; 37 ;) (type $FUNCSIG$v) ) ) diff --git a/tests/compiler/optional-typeparameters.optimized.wat b/tests/compiler/optional-typeparameters.optimized.wat index 428e2993..a7d57418 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 117 + i32.const 82 i32.const 6 call $~lib/env/abort unreachable @@ -115,7 +115,7 @@ if i32.const 0 i32.const 16 - i32.const 119 + i32.const 84 i32.const 6 call $~lib/env/abort unreachable diff --git a/tests/compiler/optional-typeparameters.untouched.wat b/tests/compiler/optional-typeparameters.untouched.wat index f7956494..3fcf3614 100644 --- a/tests/compiler/optional-typeparameters.untouched.wat +++ b/tests/compiler/optional-typeparameters.untouched.wat @@ -148,7 +148,7 @@ if i32.const 0 i32.const 16 - i32.const 117 + i32.const 82 i32.const 6 call $~lib/env/abort unreachable @@ -165,7 +165,7 @@ if i32.const 0 i32.const 16 - i32.const 119 + i32.const 84 i32.const 6 call $~lib/env/abort unreachable diff --git a/tests/compiler/runtime-default.optimized.wat b/tests/compiler/runtime-default.optimized.wat index 13be3a5f..845cbc1e 100644 --- a/tests/compiler/runtime-default.optimized.wat +++ b/tests/compiler/runtime-default.optimized.wat @@ -1,13 +1,1923 @@ (module + (type $FUNCSIG$iii (func (param i32 i32) (result i32))) + (type $FUNCSIG$ii (func (param i32) (result i32))) + (type $FUNCSIG$vii (func (param i32 i32))) + (type $FUNCSIG$viii (func (param i32 i32 i32))) + (type $FUNCSIG$viiii (func (param i32 i32 i32 i32))) + (type $FUNCSIG$iiii (func (param i32 i32 i32) (result i32))) + (type $FUNCSIG$vi (func (param i32))) (type $FUNCSIG$v (func)) - (memory $0 0) + (type $FUNCSIG$iiiii (func (param i32 i32 i32 i32) (result i32))) + (import "env" "abort" (func $~lib/env/abort (param i32 i32 i32 i32))) + (memory $0 1) + (data (i32.const 8) "\01\00\00\00,") + (data (i32.const 24) "~\00l\00i\00b\00/\00a\00l\00l\00o\00c\00a\00t\00o\00r\00/\00t\00l\00s\00f\00.\00t\00s") + (data (i32.const 72) "\01\00\00\00\1e") + (data (i32.const 88) "~\00l\00i\00b\00/\00r\00u\00n\00t\00i\00m\00e\00.\00t\00s") (table $0 1 funcref) (elem (i32.const 0) $null) + (global $~lib/allocator/tlsf/ROOT (mut i32) (i32.const 0)) + (global $~lib/collector/itcm/state (mut i32) (i32.const 0)) + (global $~lib/collector/itcm/fromSpace (mut i32) (i32.const 0)) + (global $~lib/collector/itcm/toSpace (mut i32) (i32.const 0)) + (global $~lib/collector/itcm/iter (mut i32) (i32.const 0)) + (global $~lib/collector/itcm/white (mut i32) (i32.const 0)) + (global $~lib/runtime/ROOT (mut i32) (i32.const 0)) + (global $~lib/argc (mut i32) (i32.const 0)) (global $~lib/capabilities i32 (i32.const 2)) (export "memory" (memory $0)) (export "table" (table $0)) + (export "runtime.instanceof" (func $~lib/runtime/runtime.instanceof)) + (export "runtime.allocate" (func $~lib/runtime/runtime.allocate)) + (export "runtime.discard" (func $~lib/runtime/runtime.discard)) + (export "runtime.register" (func $~lib/runtime/runtime.register)) + (export "runtime.newString" (func $~lib/runtime/runtime.newString)) + (export "runtime.newArrayBuffer" (func $~lib/runtime/runtime.newArrayBuffer)) + (export ".setargc" (func $~lib/setargc)) + (export "runtime.newArray" (func $~lib/runtime/runtime.newArray|trampoline)) + (export "runtime.retain" (func $~lib/runtime/runtime.retain)) + (export "runtime.release" (func $~lib/runtime/runtime.release)) + (export "runtime.collect" (func $~lib/runtime/runtime.collect)) (export ".capabilities" (global $~lib/capabilities)) - (func $null (; 0 ;) (type $FUNCSIG$v) + (start $start) + (func $~lib/runtime/runtime.instanceof (; 1 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + local.get $0 + if (result i32) + local.get $0 + i32.const 16 + i32.sub + i32.load + local.get $1 + call $~lib/runtime/__runtime_instanceof + else + i32.const 0 + end + ) + (func $~lib/allocator/tlsf/Root#setSLMap (; 2 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + local.get $1 + i32.const 22 + i32.ge_u + if + i32.const 0 + i32.const 24 + i32.const 159 + i32.const 4 + call $~lib/env/abort + unreachable + end + local.get $1 + i32.const 2 + i32.shl + local.get $0 + i32.add + local.get $2 + i32.store offset=4 + ) + (func $~lib/allocator/tlsf/Root#setHead (; 3 ;) (type $FUNCSIG$viiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) + local.get $1 + i32.const 22 + i32.ge_u + if + i32.const 0 + i32.const 24 + i32.const 184 + i32.const 4 + call $~lib/env/abort + unreachable + end + local.get $2 + i32.const 32 + i32.ge_u + if + i32.const 0 + i32.const 24 + i32.const 185 + i32.const 4 + call $~lib/env/abort + unreachable + end + local.get $1 + i32.const 5 + i32.shl + local.get $2 + i32.add + i32.const 2 + i32.shl + local.get $0 + i32.add + local.get $3 + i32.store offset=96 + ) + (func $~lib/allocator/tlsf/Block#get:right (; 4 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + i32.load + i32.const -4 + i32.and + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 104 + i32.const 4 + call $~lib/env/abort + unreachable + end + local.get $0 + i32.const 8 + i32.add + local.get $0 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $0 + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 105 + i32.const 11 + call $~lib/env/abort + unreachable + end + local.get $0 + ) + (func $~lib/allocator/tlsf/fls (; 5 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 447 + i32.const 2 + call $~lib/env/abort + unreachable + end + i32.const 31 + local.get $0 + i32.clz + i32.sub + ) + (func $~lib/allocator/tlsf/Root#getHead (; 6 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + local.get $1 + i32.const 22 + i32.ge_u + if + i32.const 0 + i32.const 24 + i32.const 175 + i32.const 4 + call $~lib/env/abort + unreachable + end + local.get $2 + i32.const 32 + i32.ge_u + if + i32.const 0 + i32.const 24 + i32.const 176 + i32.const 4 + call $~lib/env/abort + unreachable + end + local.get $1 + i32.const 5 + i32.shl + local.get $2 + i32.add + i32.const 2 + i32.shl + local.get $0 + i32.add + i32.load offset=96 + ) + (func $~lib/allocator/tlsf/Root#getSLMap (; 7 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + local.get $1 + i32.const 22 + i32.ge_u + if + i32.const 0 + i32.const 24 + i32.const 153 + i32.const 4 + call $~lib/env/abort + unreachable + end + local.get $1 + i32.const 2 + i32.shl + local.get $0 + i32.add + i32.load offset=4 + ) + (func $~lib/allocator/tlsf/Root#remove (; 8 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $1 + i32.load + local.tee $2 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 277 + i32.const 4 + call $~lib/env/abort + unreachable + end + local.get $2 + i32.const -4 + i32.and + local.tee $3 + i32.const 16 + i32.ge_u + local.tee $2 + if + local.get $3 + i32.const 1073741824 + i32.lt_u + local.set $2 + end + local.get $2 + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 279 + i32.const 4 + call $~lib/env/abort + unreachable + end + local.get $3 + i32.const 256 + i32.lt_u + if (result i32) + local.get $3 + i32.const 8 + i32.div_u + local.set $4 + i32.const 0 + else + local.get $3 + local.get $3 + call $~lib/allocator/tlsf/fls + local.tee $2 + i32.const 5 + i32.sub + i32.shr_u + i32.const 32 + i32.xor + local.set $4 + local.get $2 + i32.const 7 + i32.sub + end + local.set $2 + local.get $1 + i32.load offset=8 + local.set $3 + local.get $1 + i32.load offset=4 + local.tee $5 + if + local.get $5 + local.get $3 + i32.store offset=8 + end + local.get $3 + if + local.get $3 + local.get $5 + i32.store offset=4 + end + local.get $0 + local.get $2 + local.get $4 + call $~lib/allocator/tlsf/Root#getHead + local.get $1 + i32.eq + if + local.get $0 + local.get $2 + local.get $4 + local.get $3 + call $~lib/allocator/tlsf/Root#setHead + local.get $3 + i32.eqz + if + local.get $0 + local.get $2 + local.get $0 + local.get $2 + call $~lib/allocator/tlsf/Root#getSLMap + i32.const 1 + local.get $4 + i32.shl + i32.const -1 + i32.xor + i32.and + local.tee $1 + call $~lib/allocator/tlsf/Root#setSLMap + local.get $1 + i32.eqz + if + local.get $0 + local.get $0 + i32.load + i32.const 1 + local.get $2 + i32.shl + i32.const -1 + i32.xor + i32.and + i32.store + end + end + end + ) + (func $~lib/allocator/tlsf/Block#get:left (; 9 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + i32.load + i32.const 2 + i32.and + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 96 + i32.const 4 + call $~lib/env/abort + unreachable + end + local.get $0 + i32.const 4 + i32.sub + i32.load + local.tee $0 + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 97 + i32.const 11 + call $~lib/env/abort + unreachable + end + local.get $0 + ) + (func $~lib/allocator/tlsf/Root#setJump (; 10 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + local.get $0 + i32.load + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 353 + i32.const 4 + call $~lib/env/abort + unreachable + end + local.get $0 + call $~lib/allocator/tlsf/Block#get:right + local.get $1 + i32.ne + if + i32.const 0 + i32.const 24 + i32.const 354 + i32.const 4 + call $~lib/env/abort + unreachable + end + local.get $1 + i32.load + i32.const 2 + i32.and + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 355 + i32.const 4 + call $~lib/env/abort + unreachable + end + local.get $1 + i32.const 4 + i32.sub + local.get $0 + i32.store + ) + (func $~lib/allocator/tlsf/Root#insert (; 11 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $1 + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 208 + i32.const 4 + call $~lib/env/abort + unreachable + end + local.get $1 + i32.load + local.tee $3 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 210 + i32.const 4 + call $~lib/env/abort + unreachable + end + local.get $1 + i32.load + i32.const -4 + i32.and + local.tee $4 + i32.const 16 + i32.ge_u + local.tee $2 + if + local.get $4 + i32.const 1073741824 + i32.lt_u + local.set $2 + end + local.get $2 + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 212 + i32.const 4 + call $~lib/env/abort + unreachable + end + local.get $1 + call $~lib/allocator/tlsf/Block#get:right + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 216 + i32.const 23 + call $~lib/env/abort + unreachable + end + local.get $2 + i32.load + local.tee $4 + i32.const 1 + i32.and + if + local.get $0 + local.get $2 + call $~lib/allocator/tlsf/Root#remove + local.get $1 + local.get $4 + i32.const -4 + i32.and + i32.const 8 + i32.add + local.get $3 + i32.add + local.tee $3 + i32.store + local.get $1 + call $~lib/allocator/tlsf/Block#get:right + local.tee $2 + i32.load + local.set $4 + end + local.get $3 + i32.const 2 + i32.and + if + local.get $1 + call $~lib/allocator/tlsf/Block#get:left + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 230 + i32.const 24 + call $~lib/env/abort + unreachable + end + local.get $1 + i32.load + local.tee $5 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 232 + i32.const 6 + call $~lib/env/abort + unreachable + end + local.get $0 + local.get $1 + call $~lib/allocator/tlsf/Root#remove + local.get $1 + local.get $3 + i32.const -4 + i32.and + i32.const 8 + i32.add + local.get $5 + i32.add + local.tee $3 + i32.store + end + local.get $2 + local.get $4 + i32.const 2 + i32.or + i32.store + local.get $1 + local.get $2 + call $~lib/allocator/tlsf/Root#setJump + local.get $3 + i32.const -4 + i32.and + local.tee $3 + i32.const 16 + i32.ge_u + local.tee $2 + if + local.get $3 + i32.const 1073741824 + i32.lt_u + local.set $2 + end + local.get $2 + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 245 + i32.const 4 + call $~lib/env/abort + unreachable + end + local.get $0 + local.get $3 + i32.const 256 + i32.lt_u + if (result i32) + local.get $3 + i32.const 8 + i32.div_u + local.set $3 + i32.const 0 + else + local.get $3 + local.get $3 + call $~lib/allocator/tlsf/fls + local.tee $2 + i32.const 5 + i32.sub + i32.shr_u + i32.const 32 + i32.xor + local.set $3 + local.get $2 + i32.const 7 + i32.sub + end + local.tee $2 + local.get $3 + call $~lib/allocator/tlsf/Root#getHead + local.set $4 + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + local.get $4 + i32.store offset=8 + local.get $4 + if + local.get $4 + local.get $1 + i32.store offset=4 + end + local.get $0 + local.get $2 + local.get $3 + local.get $1 + call $~lib/allocator/tlsf/Root#setHead + local.get $0 + local.get $0 + i32.load + i32.const 1 + local.get $2 + i32.shl + i32.or + i32.store + local.get $0 + local.get $2 + local.get $0 + local.get $2 + call $~lib/allocator/tlsf/Root#getSLMap + i32.const 1 + local.get $3 + i32.shl + i32.or + call $~lib/allocator/tlsf/Root#setSLMap + ) + (func $~lib/allocator/tlsf/Root#addMemory (; 12 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local $4 i32) + local.get $1 + local.get $2 + i32.gt_u + if + i32.const 0 + i32.const 24 + i32.const 396 + i32.const 4 + call $~lib/env/abort + unreachable + end + local.get $1 + i32.const 7 + i32.and + if + i32.const 0 + i32.const 24 + i32.const 397 + i32.const 4 + call $~lib/env/abort + unreachable + end + local.get $2 + i32.const 7 + i32.and + if + i32.const 0 + i32.const 24 + i32.const 398 + i32.const 4 + call $~lib/env/abort + unreachable + end + i32.const 2912 + i32.load + local.tee $3 + if + local.get $1 + local.get $3 + i32.const 4 + i32.add + i32.lt_u + if + i32.const 0 + i32.const 24 + i32.const 403 + i32.const 6 + call $~lib/env/abort + unreachable + end + local.get $1 + i32.const 8 + i32.sub + local.get $3 + i32.eq + if + local.get $3 + i32.load + local.set $4 + local.get $1 + i32.const 8 + i32.sub + local.set $1 + end + else + local.get $1 + local.get $0 + i32.const 2916 + i32.add + i32.lt_u + if + i32.const 0 + i32.const 24 + i32.const 412 + i32.const 6 + call $~lib/env/abort + unreachable + end + end + local.get $2 + local.get $1 + i32.sub + local.tee $2 + i32.const 32 + i32.lt_u + if + return + end + local.get $1 + local.get $4 + i32.const 2 + i32.and + local.get $2 + i32.const 16 + i32.sub + i32.const 1 + i32.or + i32.or + i32.store + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.store offset=8 + local.get $1 + local.get $2 + i32.add + i32.const 8 + i32.sub + local.tee $2 + i32.const 2 + i32.store + i32.const 2912 + local.get $2 + i32.store + local.get $0 + local.get $1 + call $~lib/allocator/tlsf/Root#insert + ) + (func $~lib/allocator/tlsf/ffs (; 13 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 441 + i32.const 2 + call $~lib/env/abort + unreachable + end + local.get $0 + i32.ctz + ) + (func $~lib/allocator/tlsf/Root#search (; 14 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + local.get $1 + i32.const 16 + i32.ge_u + local.tee $2 + if + local.get $1 + i32.const 1073741824 + i32.lt_u + local.set $2 + end + local.get $2 + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 315 + i32.const 4 + call $~lib/env/abort + unreachable + end + local.get $1 + i32.const 256 + i32.lt_u + if (result i32) + i32.const 0 + local.set $2 + local.get $1 + i32.const 8 + i32.div_u + else + local.get $1 + call $~lib/allocator/tlsf/fls + local.tee $3 + i32.const 7 + i32.sub + local.set $2 + local.get $1 + local.get $3 + i32.const 5 + i32.sub + i32.shr_u + i32.const 32 + i32.xor + local.tee $1 + i32.const 31 + i32.lt_u + if (result i32) + local.get $1 + i32.const 1 + i32.add + else + local.get $2 + i32.const 1 + i32.add + local.set $2 + i32.const 0 + end + end + local.set $1 + local.get $0 + local.get $2 + call $~lib/allocator/tlsf/Root#getSLMap + i32.const -1 + local.get $1 + i32.shl + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $2 + local.get $1 + call $~lib/allocator/tlsf/ffs + call $~lib/allocator/tlsf/Root#getHead + else + local.get $0 + i32.load + i32.const -1 + local.get $2 + i32.const 1 + i32.add + i32.shl + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + call $~lib/allocator/tlsf/ffs + local.tee $2 + call $~lib/allocator/tlsf/Root#getSLMap + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 342 + i32.const 16 + call $~lib/env/abort + unreachable + end + local.get $0 + local.get $2 + local.get $1 + call $~lib/allocator/tlsf/ffs + call $~lib/allocator/tlsf/Root#getHead + else + i32.const 0 + end + end + ) + (func $~lib/allocator/tlsf/Root#use (; 15 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + (local $4 i32) + local.get $1 + i32.load + local.tee $4 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 367 + i32.const 4 + call $~lib/env/abort + unreachable + end + local.get $2 + i32.const 16 + i32.ge_u + local.tee $3 + if + local.get $2 + i32.const 1073741824 + i32.lt_u + local.set $3 + end + local.get $3 + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 368 + i32.const 4 + call $~lib/env/abort + unreachable + end + local.get $2 + i32.const 7 + i32.and + if + i32.const 0 + i32.const 24 + i32.const 369 + i32.const 4 + call $~lib/env/abort + unreachable + end + local.get $0 + local.get $1 + call $~lib/allocator/tlsf/Root#remove + local.get $4 + i32.const -4 + i32.and + local.get $2 + i32.sub + local.tee $3 + i32.const 24 + i32.ge_u + if + local.get $1 + local.get $4 + i32.const 2 + i32.and + local.get $2 + i32.or + i32.store + local.get $1 + i32.const 8 + i32.add + local.get $2 + i32.add + local.tee $2 + local.get $3 + i32.const 8 + i32.sub + i32.const 1 + i32.or + i32.store + local.get $0 + local.get $2 + call $~lib/allocator/tlsf/Root#insert + else + local.get $1 + local.get $4 + i32.const -2 + i32.and + i32.store + local.get $1 + call $~lib/allocator/tlsf/Block#get:right + local.tee $0 + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 387 + i32.const 25 + call $~lib/env/abort + unreachable + end + local.get $0 + local.get $0 + i32.load + i32.const -3 + i32.and + i32.store + end + local.get $1 + i32.const 8 + i32.add + ) + (func $~lib/allocator/tlsf/__mem_allocate (; 16 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + global.get $~lib/allocator/tlsf/ROOT + local.tee $2 + i32.eqz + if + i32.const 1 + current_memory + local.tee $1 + i32.gt_s + local.tee $2 + if (result i32) + i32.const 1 + local.get $1 + i32.sub + grow_memory + i32.const 0 + i32.lt_s + else + local.get $2 + end + if + unreachable + end + i32.const 120 + local.set $2 + i32.const 120 + global.set $~lib/allocator/tlsf/ROOT + i32.const 2912 + i32.const 0 + i32.store + i32.const 120 + i32.const 0 + i32.store + i32.const 0 + local.set $1 + loop $repeat|0 + local.get $1 + i32.const 22 + i32.lt_u + if + i32.const 120 + local.get $1 + i32.const 0 + call $~lib/allocator/tlsf/Root#setSLMap + i32.const 0 + local.set $3 + loop $repeat|1 + local.get $3 + i32.const 32 + i32.lt_u + if + i32.const 120 + local.get $1 + local.get $3 + i32.const 0 + call $~lib/allocator/tlsf/Root#setHead + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $repeat|1 + end + end + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $repeat|0 + end + end + i32.const 120 + i32.const 3040 + current_memory + i32.const 16 + i32.shl + call $~lib/allocator/tlsf/Root#addMemory + end + local.get $0 + i32.const 1073741824 + i32.gt_u + if + unreachable + end + local.get $2 + local.get $0 + i32.const 7 + i32.add + i32.const -8 + i32.and + local.tee $0 + i32.const 16 + local.get $0 + i32.const 16 + i32.gt_u + select + local.tee $1 + call $~lib/allocator/tlsf/Root#search + local.tee $0 + i32.eqz + if + current_memory + local.tee $0 + local.get $1 + i32.const 65535 + i32.add + i32.const -65536 + i32.and + i32.const 16 + i32.shr_u + local.tee $3 + local.get $0 + local.get $3 + i32.gt_s + select + grow_memory + i32.const 0 + i32.lt_s + if + local.get $3 + grow_memory + i32.const 0 + i32.lt_s + if + unreachable + end + end + local.get $2 + local.get $0 + i32.const 16 + i32.shl + current_memory + i32.const 16 + i32.shl + call $~lib/allocator/tlsf/Root#addMemory + local.get $2 + local.get $1 + call $~lib/allocator/tlsf/Root#search + local.tee $0 + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 502 + i32.const 12 + call $~lib/env/abort + unreachable + end + end + local.get $0 + i32.load + i32.const -4 + i32.and + local.get $1 + i32.lt_u + if + i32.const 0 + i32.const 24 + i32.const 505 + i32.const 2 + call $~lib/env/abort + unreachable + end + local.get $2 + local.get $0 + local.get $1 + call $~lib/allocator/tlsf/Root#use + ) + (func $~lib/runtime/runtime.allocate (; 17 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + i32.const 1 + i32.const 32 + local.get $0 + i32.const 15 + i32.add + i32.clz + i32.sub + i32.shl + call $~lib/allocator/tlsf/__mem_allocate + local.tee $1 + i32.const -1520547049 + i32.store + local.get $1 + local.get $0 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.store offset=8 + local.get $1 + i32.const 0 + i32.store offset=12 + local.get $1 + i32.const 16 + i32.add + ) + (func $~lib/allocator/tlsf/__mem_free (; 18 ;) (type $FUNCSIG$vi) (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + local.get $0 + if + global.get $~lib/allocator/tlsf/ROOT + local.tee $1 + if + local.get $0 + i32.const 8 + i32.sub + local.tee $2 + i32.load + local.tee $3 + i32.const 1 + i32.and + if + i32.const 0 + i32.const 24 + i32.const 518 + i32.const 6 + call $~lib/env/abort + unreachable + end + local.get $2 + local.get $3 + i32.const 1 + i32.or + i32.store + local.get $1 + local.get $0 + i32.const 8 + i32.sub + call $~lib/allocator/tlsf/Root#insert + end + end + ) + (func $~lib/runtime/runtime.discard (; 19 ;) (type $FUNCSIG$vi) (param $0 i32) + local.get $0 + i32.const 120 + i32.le_u + if + i32.const 0 + i32.const 88 + i32.const 68 + i32.const 6 + call $~lib/env/abort + unreachable + end + local.get $0 + i32.const 16 + i32.sub + local.tee $0 + i32.load + i32.const -1520547049 + i32.ne + if + i32.const 0 + i32.const 88 + i32.const 70 + i32.const 6 + call $~lib/env/abort + unreachable + end + local.get $0 + call $~lib/allocator/tlsf/__mem_free + ) + (func $~lib/collector/itcm/maybeInit (; 20 ;) (type $FUNCSIG$v) + (local $0 i32) + global.get $~lib/collector/itcm/state + i32.eqz + if + i32.const 16 + call $~lib/allocator/tlsf/__mem_allocate + global.set $~lib/collector/itcm/fromSpace + global.get $~lib/collector/itcm/fromSpace + local.tee $0 + i32.const -1 + i32.store + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + local.get $0 + i32.store offset=8 + local.get $0 + local.get $0 + i32.store offset=12 + i32.const 16 + call $~lib/allocator/tlsf/__mem_allocate + global.set $~lib/collector/itcm/toSpace + global.get $~lib/collector/itcm/toSpace + local.tee $0 + i32.const -1 + i32.store + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + local.get $0 + i32.store offset=8 + local.get $0 + local.get $0 + i32.store offset=12 + global.get $~lib/collector/itcm/toSpace + global.set $~lib/collector/itcm/iter + i32.const 1 + global.set $~lib/collector/itcm/state + end + ) + (func $~lib/collector/itcm/ManagedObjectList#push (; 21 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $0 + i32.load offset=12 + local.set $2 + local.get $1 + local.get $1 + i32.load offset=8 + i32.const 3 + i32.and + local.get $0 + i32.or + i32.store offset=8 + local.get $1 + local.get $2 + i32.store offset=12 + local.get $2 + local.get $2 + i32.load offset=8 + i32.const 3 + i32.and + local.get $1 + i32.or + i32.store offset=8 + local.get $0 + local.get $1 + i32.store offset=12 + ) + (func $~lib/collector/itcm/__ref_register (; 22 ;) (type $FUNCSIG$vi) (param $0 i32) + call $~lib/collector/itcm/maybeInit + local.get $0 + i32.const 16 + i32.sub + local.tee $0 + global.get $~lib/collector/itcm/white + local.get $0 + i32.load offset=8 + i32.const -4 + i32.and + i32.or + i32.store offset=8 + global.get $~lib/collector/itcm/fromSpace + local.get $0 + call $~lib/collector/itcm/ManagedObjectList#push + ) + (func $~lib/runtime/runtime.register (; 23 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $0 + i32.const 120 + i32.le_u + if + i32.const 0 + i32.const 88 + i32.const 82 + i32.const 6 + call $~lib/env/abort + unreachable + end + local.get $0 + i32.const 16 + i32.sub + local.tee $2 + i32.load + i32.const -1520547049 + i32.ne + if + i32.const 0 + i32.const 88 + i32.const 84 + i32.const 6 + call $~lib/env/abort + unreachable + end + local.get $2 + local.get $1 + i32.store + block + local.get $0 + call $~lib/collector/itcm/__ref_register + end + local.get $0 + ) + (func $~lib/runtime/runtime.newString (; 24 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + i32.const 1 + i32.shl + call $~lib/runtime/runtime.allocate + i32.const 1 + call $~lib/runtime/runtime.register + ) + (func $~lib/runtime/runtime.newArrayBuffer (; 25 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + call $~lib/runtime/runtime.allocate + i32.const 2 + call $~lib/runtime/runtime.register + ) + (func $~lib/collector/itcm/ManagedObject#makeGray (; 26 ;) (type $FUNCSIG$vi) (param $0 i32) + (local $1 i32) + (local $2 i32) + global.get $~lib/collector/itcm/iter + local.get $0 + i32.eq + if + local.get $0 + i32.load offset=12 + global.set $~lib/collector/itcm/iter + end + local.get $0 + i32.load offset=8 + i32.const -4 + i32.and + local.tee $2 + local.get $0 + i32.load offset=12 + local.tee $1 + i32.store offset=12 + local.get $1 + local.get $1 + i32.load offset=8 + i32.const 3 + i32.and + local.get $2 + i32.or + i32.store offset=8 + global.get $~lib/collector/itcm/toSpace + local.get $0 + call $~lib/collector/itcm/ManagedObjectList#push + local.get $0 + local.get $0 + i32.load offset=8 + i32.const -4 + i32.and + i32.const 2 + i32.or + i32.store offset=8 + ) + (func $~lib/collector/itcm/__ref_link (; 27 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (local $2 i32) + call $~lib/collector/itcm/maybeInit + global.get $~lib/collector/itcm/white + i32.eqz + local.get $1 + i32.const 16 + i32.sub + local.tee $2 + i32.load offset=8 + i32.const 3 + i32.and + i32.eq + local.tee $1 + if (result i32) + global.get $~lib/collector/itcm/white + local.get $0 + i32.const 16 + i32.sub + i32.load offset=8 + i32.const 3 + i32.and + i32.eq + else + local.get $1 + end + if + local.get $2 + call $~lib/collector/itcm/ManagedObject#makeGray + end + ) + (func $~lib/memory/memory.copy (; 28 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local $4 i32) + block $~lib/util/memory/memmove|inlined.0 + local.get $0 + local.get $1 + i32.eq + br_if $~lib/util/memory/memmove|inlined.0 + 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 + loop $continue|0 + local.get $0 + i32.const 7 + i32.and + if + local.get $2 + i32.eqz + br_if $~lib/util/memory/memmove|inlined.0 + local.get $2 + i32.const 1 + i32.sub + local.set $2 + local.get $0 + local.tee $3 + i32.const 1 + i32.add + local.set $0 + local.get $1 + local.tee $4 + i32.const 1 + i32.add + local.set $1 + local.get $3 + local.get $4 + i32.load8_u + i32.store8 + br $continue|0 + end + end + loop $continue|1 + local.get $2 + i32.const 8 + i32.ge_u + if + 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 + br $continue|1 + end + end + end + loop $continue|2 + local.get $2 + if + local.get $0 + local.tee $3 + i32.const 1 + i32.add + local.set $0 + local.get $1 + local.tee $4 + i32.const 1 + i32.add + local.set $1 + local.get $3 + local.get $4 + i32.load8_u + i32.store8 + local.get $2 + i32.const 1 + i32.sub + local.set $2 + br $continue|2 + end + end + else + local.get $1 + i32.const 7 + i32.and + local.get $0 + i32.const 7 + i32.and + i32.eq + if + loop $continue|3 + local.get $0 + local.get $2 + i32.add + i32.const 7 + i32.and + if + local.get $2 + i32.eqz + br_if $~lib/util/memory/memmove|inlined.0 + local.get $2 + i32.const 1 + i32.sub + local.tee $2 + local.get $0 + i32.add + local.get $1 + local.get $2 + i32.add + i32.load8_u + i32.store8 + br $continue|3 + end + end + loop $continue|4 + local.get $2 + i32.const 8 + i32.ge_u + if + local.get $2 + i32.const 8 + i32.sub + local.tee $2 + local.get $0 + i32.add + local.get $1 + local.get $2 + i32.add + i64.load + i64.store + br $continue|4 + end + end + end + loop $continue|5 + local.get $2 + if + local.get $2 + i32.const 1 + i32.sub + local.tee $2 + local.get $0 + i32.add + local.get $1 + local.get $2 + i32.add + i32.load8_u + i32.store8 + br $continue|5 + end + end + end + end + ) + (func $~lib/runtime/runtime.newArray (; 29 ;) (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/runtime.allocate + local.get $2 + call $~lib/runtime/runtime.register + local.tee $2 + local.set $6 + local.get $0 + local.get $1 + i32.shl + local.tee $4 + call $~lib/runtime/runtime.allocate + i32.const 2 + call $~lib/runtime/runtime.register + local.tee $5 + local.tee $1 + local.get $2 + i32.load + i32.ne + if + local.get $1 + local.get $6 + call $~lib/collector/itcm/__ref_link + end + local.get $2 + local.get $1 + i32.store + local.get $2 + local.get $5 + i32.store offset=4 + local.get $2 + local.get $4 + i32.store offset=8 + local.get $2 + local.get $0 + i32.store offset=12 + local.get $3 + if + local.get $5 + local.get $3 + local.get $4 + call $~lib/memory/memory.copy + end + local.get $2 + ) + (func $~lib/runtime/runtime.retain (; 30 ;) (type $FUNCSIG$vi) (param $0 i32) + local.get $0 + global.get $~lib/runtime/ROOT + call $~lib/collector/itcm/__ref_link + ) + (func $~lib/runtime/runtime.release (; 31 ;) (type $FUNCSIG$vi) (param $0 i32) nop ) + (func $~lib/collector/itcm/step (; 32 ;) (type $FUNCSIG$v) + (local $0 i32) + block $break|0 + block $case3|0 + block $case2|0 + block $case1|0 + global.get $~lib/collector/itcm/state + local.tee $0 + if + local.get $0 + i32.const 1 + i32.sub + br_table $case1|0 $case2|0 $case3|0 $break|0 + end + unreachable + end + call $~lib/runtime/__gc_mark_roots + i32.const 2 + global.set $~lib/collector/itcm/state + br $break|0 + end + global.get $~lib/collector/itcm/iter + i32.load offset=8 + i32.const -4 + i32.and + local.tee $0 + global.get $~lib/collector/itcm/toSpace + i32.ne + if + local.get $0 + global.set $~lib/collector/itcm/iter + local.get $0 + global.get $~lib/collector/itcm/white + i32.eqz + local.get $0 + i32.load offset=8 + i32.const -4 + i32.and + i32.or + i32.store offset=8 + block $__inlined_func$~lib/runtime/__gc_mark_members + block $invalid + local.get $0 + i32.load + i32.const 1 + i32.sub + br_table $__inlined_func$~lib/runtime/__gc_mark_members $__inlined_func$~lib/runtime/__gc_mark_members $__inlined_func$~lib/runtime/__gc_mark_members $invalid + end + unreachable + end + else + call $~lib/runtime/__gc_mark_roots + global.get $~lib/collector/itcm/toSpace + global.get $~lib/collector/itcm/iter + i32.load offset=8 + i32.const -4 + i32.and + i32.eq + if + global.get $~lib/collector/itcm/fromSpace + local.set $0 + global.get $~lib/collector/itcm/toSpace + global.set $~lib/collector/itcm/fromSpace + local.get $0 + global.set $~lib/collector/itcm/toSpace + global.get $~lib/collector/itcm/white + i32.eqz + global.set $~lib/collector/itcm/white + local.get $0 + i32.load offset=8 + i32.const -4 + i32.and + global.set $~lib/collector/itcm/iter + i32.const 3 + global.set $~lib/collector/itcm/state + end + end + br $break|0 + end + global.get $~lib/collector/itcm/iter + local.tee $0 + global.get $~lib/collector/itcm/toSpace + i32.ne + if + local.get $0 + i32.load offset=8 + i32.const -4 + i32.and + global.set $~lib/collector/itcm/iter + local.get $0 + i32.const 120 + i32.ge_u + if + local.get $0 + call $~lib/allocator/tlsf/__mem_free + end + else + global.get $~lib/collector/itcm/toSpace + local.tee $0 + local.get $0 + i32.store offset=8 + local.get $0 + local.get $0 + i32.store offset=12 + i32.const 1 + global.set $~lib/collector/itcm/state + end + end + ) + (func $~lib/collector/itcm/__ref_collect (; 33 ;) (type $FUNCSIG$v) + call $~lib/collector/itcm/maybeInit + loop $continue|0 + global.get $~lib/collector/itcm/state + i32.const 1 + i32.ne + if + call $~lib/collector/itcm/step + br $continue|0 + end + end + loop $continue|1 + call $~lib/collector/itcm/step + global.get $~lib/collector/itcm/state + i32.const 1 + i32.ne + br_if $continue|1 + end + ) + (func $~lib/runtime/runtime.collect (; 34 ;) (type $FUNCSIG$v) + call $~lib/collector/itcm/__ref_collect + ) + (func $start (; 35 ;) (type $FUNCSIG$v) + i32.const 0 + call $~lib/runtime/runtime.allocate + i32.const 3 + call $~lib/runtime/runtime.register + global.set $~lib/runtime/ROOT + ) + (func $~lib/runtime/__gc_mark_roots (; 36 ;) (type $FUNCSIG$v) + (local $0 i32) + global.get $~lib/runtime/ROOT + local.tee $0 + if + call $~lib/collector/itcm/maybeInit + global.get $~lib/collector/itcm/white + local.get $0 + i32.const 16 + i32.sub + local.tee $0 + i32.load offset=8 + i32.const 3 + i32.and + i32.eq + if + local.get $0 + call $~lib/collector/itcm/ManagedObject#makeGray + end + end + ) + (func $~lib/runtime/__runtime_instanceof (; 37 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + block $nope + block $~lib/runtime/Root + block $~lib/arraybuffer/ArrayBuffer + block $~lib/string/String + local.get $0 + i32.const 1 + i32.sub + br_table $~lib/string/String $~lib/arraybuffer/ArrayBuffer $~lib/runtime/Root $nope + end + local.get $1 + i32.const 1 + i32.eq + return + end + local.get $1 + i32.const 2 + i32.eq + return + end + local.get $1 + i32.const 3 + i32.eq + return + end + i32.const 0 + ) + (func $null (; 38 ;) (type $FUNCSIG$v) + nop + ) + (func $~lib/runtime/runtime.newArray|trampoline (; 39 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + block $1of1 + block $0of1 + block $outOfRange + global.get $~lib/argc + i32.const 3 + i32.sub + br_table $0of1 $1of1 $outOfRange + end + unreachable + end + i32.const 0 + local.set $3 + end + local.get $0 + local.get $1 + local.get $2 + local.get $3 + call $~lib/runtime/runtime.newArray + ) + (func $~lib/setargc (; 40 ;) (type $FUNCSIG$vi) (param $0 i32) + local.get $0 + global.set $~lib/argc + ) ) diff --git a/tests/compiler/runtime-default.untouched.wat b/tests/compiler/runtime-default.untouched.wat index 413ff0e8..ae057c9d 100644 --- a/tests/compiler/runtime-default.untouched.wat +++ b/tests/compiler/runtime-default.untouched.wat @@ -1,13 +1,2339 @@ (module + (type $FUNCSIG$iii (func (param i32 i32) (result i32))) + (type $FUNCSIG$ii (func (param i32) (result i32))) + (type $FUNCSIG$vii (func (param i32 i32))) + (type $FUNCSIG$viii (func (param i32 i32 i32))) + (type $FUNCSIG$viiii (func (param i32 i32 i32 i32))) + (type $FUNCSIG$iiii (func (param i32 i32 i32) (result i32))) + (type $FUNCSIG$vi (func (param i32))) (type $FUNCSIG$v (func)) - (memory $0 0) + (type $FUNCSIG$iiiii (func (param i32 i32 i32 i32) (result i32))) + (import "env" "abort" (func $~lib/env/abort (param i32 i32 i32 i32))) + (memory $0 1) + (data (i32.const 8) "\01\00\00\00,\00\00\00\00\00\00\00\00\00\00\00~\00l\00i\00b\00/\00a\00l\00l\00o\00c\00a\00t\00o\00r\00/\00t\00l\00s\00f\00.\00t\00s\00") + (data (i32.const 72) "\01\00\00\00\1e\00\00\00\00\00\00\00\00\00\00\00~\00l\00i\00b\00/\00r\00u\00n\00t\00i\00m\00e\00.\00t\00s\00") (table $0 1 funcref) (elem (i32.const 0) $null) - (global $~lib/memory/HEAP_BASE i32 (i32.const 8)) + (global $~lib/util/runtime/HEADER_SIZE i32 (i32.const 16)) + (global $~lib/allocator/tlsf/ROOT (mut i32) (i32.const 0)) + (global $~lib/allocator/tlsf/Root.SL_START i32 (i32.const 4)) + (global $~lib/allocator/tlsf/SL_BITS i32 (i32.const 5)) + (global $~lib/allocator/tlsf/SB_BITS i32 (i32.const 8)) + (global $~lib/allocator/tlsf/FL_BITS i32 (i32.const 22)) + (global $~lib/allocator/tlsf/Root.SL_END i32 (i32.const 92)) + (global $~lib/allocator/tlsf/Root.HL_START i32 (i32.const 96)) + (global $~lib/allocator/tlsf/SL_SIZE i32 (i32.const 32)) + (global $~lib/allocator/tlsf/Root.HL_END i32 (i32.const 2912)) + (global $~lib/allocator/tlsf/Root.SIZE i32 (i32.const 2916)) + (global $~lib/allocator/tlsf/Block.INFO i32 (i32.const 8)) + (global $~lib/allocator/tlsf/Block.MIN_SIZE i32 (i32.const 16)) + (global $~lib/allocator/tlsf/FREE i32 (i32.const 1)) + (global $~lib/allocator/tlsf/LEFT_FREE i32 (i32.const 2)) + (global $~lib/allocator/tlsf/TAGS i32 (i32.const 3)) + (global $~lib/allocator/tlsf/Block.MAX_SIZE i32 (i32.const 1073741824)) + (global $~lib/allocator/tlsf/SB_SIZE i32 (i32.const 256)) + (global $~lib/util/runtime/HEADER_MAGIC i32 (i32.const -1520547049)) + (global $~lib/ASC_NO_ASSERT i32 (i32.const 0)) + (global $~lib/collector/itcm/state (mut i32) (i32.const 0)) + (global $~lib/collector/itcm/fromSpace (mut i32) (i32.const 0)) + (global $~lib/collector/itcm/toSpace (mut i32) (i32.const 0)) + (global $~lib/collector/itcm/iter (mut i32) (i32.const 0)) + (global $~lib/collector/itcm/white (mut i32) (i32.const 0)) + (global $~lib/runtime/ROOT (mut i32) (i32.const 0)) + (global $~lib/memory/HEAP_BASE i32 (i32.const 120)) + (global $~lib/argc (mut i32) (i32.const 0)) (global $~lib/capabilities i32 (i32.const 2)) (export "memory" (memory $0)) (export "table" (table $0)) + (export "runtime.instanceof" (func $~lib/runtime/runtime.instanceof)) + (export "runtime.allocate" (func $~lib/runtime/runtime.allocate)) + (export "runtime.discard" (func $~lib/runtime/runtime.discard)) + (export "runtime.register" (func $~lib/runtime/runtime.register)) + (export "runtime.newString" (func $~lib/runtime/runtime.newString)) + (export "runtime.newArrayBuffer" (func $~lib/runtime/runtime.newArrayBuffer)) + (export ".setargc" (func $~lib/setargc)) + (export "runtime.newArray" (func $~lib/runtime/runtime.newArray|trampoline)) + (export "runtime.retain" (func $~lib/runtime/runtime.retain)) + (export "runtime.release" (func $~lib/runtime/runtime.release)) + (export "runtime.collect" (func $~lib/runtime/runtime.collect)) (export ".capabilities" (global $~lib/capabilities)) - (func $null (; 0 ;) (type $FUNCSIG$v) + (start $start) + (func $~lib/runtime/runtime.instanceof (; 1 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + local.get $0 + if (result i32) + local.get $0 + global.get $~lib/util/runtime/HEADER_SIZE + i32.sub + i32.load + local.get $1 + call $~lib/runtime/__runtime_instanceof + else + i32.const 0 + end + ) + (func $~lib/util/runtime/adjust (; 2 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + i32.const 1 + i32.const 32 + local.get $0 + global.get $~lib/util/runtime/HEADER_SIZE + i32.add + i32.const 1 + i32.sub + i32.clz + i32.sub + i32.shl + ) + (func $~lib/allocator/tlsf/Root#set:tailRef (; 3 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + i32.const 0 + local.get $1 + i32.store offset=2912 + ) + (func $~lib/allocator/tlsf/Root#setSLMap (; 4 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + local.get $1 + global.get $~lib/allocator/tlsf/FL_BITS + i32.lt_u + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 159 + i32.const 4 + call $~lib/env/abort + unreachable + end + local.get $0 + local.get $1 + i32.const 4 + i32.mul + i32.add + local.get $2 + i32.store offset=4 + ) + (func $~lib/allocator/tlsf/Root#setHead (; 5 ;) (type $FUNCSIG$viiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) + local.get $1 + global.get $~lib/allocator/tlsf/FL_BITS + i32.lt_u + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 184 + i32.const 4 + call $~lib/env/abort + unreachable + end + local.get $2 + global.get $~lib/allocator/tlsf/SL_SIZE + i32.lt_u + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 185 + i32.const 4 + call $~lib/env/abort + unreachable + end + local.get $0 + local.get $1 + global.get $~lib/allocator/tlsf/SL_SIZE + i32.mul + local.get $2 + i32.add + i32.const 4 + i32.mul + i32.add + local.get $3 + i32.store offset=96 + ) + (func $~lib/allocator/tlsf/Root#get:tailRef (; 6 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + i32.const 0 + i32.load offset=2912 + ) + (func $~lib/allocator/tlsf/Block#get:right (; 7 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + local.get $0 + i32.load + global.get $~lib/allocator/tlsf/TAGS + i32.const -1 + i32.xor + i32.and + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 104 + i32.const 4 + call $~lib/env/abort + unreachable + end + local.get $0 + global.get $~lib/allocator/tlsf/Block.INFO + i32.add + local.get $0 + i32.load + global.get $~lib/allocator/tlsf/TAGS + i32.const -1 + i32.xor + i32.and + i32.add + local.tee $1 + i32.eqz + if (result i32) + i32.const 0 + i32.const 24 + i32.const 105 + i32.const 11 + call $~lib/env/abort + unreachable + else + local.get $1 + end + ) + (func $~lib/allocator/tlsf/fls (; 8 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + i32.const 0 + i32.ne + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 447 + i32.const 2 + call $~lib/env/abort + unreachable + end + i32.const 31 + local.get $0 + i32.clz + i32.sub + ) + (func $~lib/allocator/tlsf/Root#getHead (; 9 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + local.get $1 + global.get $~lib/allocator/tlsf/FL_BITS + i32.lt_u + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 175 + i32.const 4 + call $~lib/env/abort + unreachable + end + local.get $2 + global.get $~lib/allocator/tlsf/SL_SIZE + i32.lt_u + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 176 + i32.const 4 + call $~lib/env/abort + unreachable + end + local.get $0 + local.get $1 + global.get $~lib/allocator/tlsf/SL_SIZE + i32.mul + local.get $2 + i32.add + i32.const 4 + i32.mul + i32.add + i32.load offset=96 + ) + (func $~lib/allocator/tlsf/Root#getSLMap (; 10 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + local.get $1 + global.get $~lib/allocator/tlsf/FL_BITS + i32.lt_u + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 153 + i32.const 4 + call $~lib/env/abort + unreachable + end + local.get $0 + local.get $1 + i32.const 4 + i32.mul + i32.add + i32.load offset=4 + ) + (func $~lib/allocator/tlsf/Root#remove (; 11 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + local.get $1 + i32.load + local.set $2 + local.get $2 + global.get $~lib/allocator/tlsf/FREE + i32.and + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 277 + i32.const 4 + call $~lib/env/abort + unreachable + end + local.get $2 + global.get $~lib/allocator/tlsf/TAGS + i32.const -1 + i32.xor + i32.and + local.set $3 + local.get $3 + global.get $~lib/allocator/tlsf/Block.MIN_SIZE + i32.ge_u + local.tee $4 + if (result i32) + local.get $3 + global.get $~lib/allocator/tlsf/Block.MAX_SIZE + i32.lt_u + else + local.get $4 + end + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 279 + i32.const 4 + call $~lib/env/abort + unreachable + end + local.get $3 + global.get $~lib/allocator/tlsf/SB_SIZE + i32.lt_u + if + i32.const 0 + local.set $5 + local.get $3 + i32.const 8 + i32.div_u + local.set $6 + else + local.get $3 + call $~lib/allocator/tlsf/fls + local.set $5 + local.get $3 + local.get $5 + global.get $~lib/allocator/tlsf/SL_BITS + i32.sub + i32.shr_u + i32.const 1 + global.get $~lib/allocator/tlsf/SL_BITS + i32.shl + i32.xor + local.set $6 + local.get $5 + global.get $~lib/allocator/tlsf/SB_BITS + i32.const 1 + i32.sub + i32.sub + local.set $5 + end + local.get $1 + i32.load offset=4 + local.set $7 + local.get $1 + i32.load offset=8 + local.set $8 + local.get $7 + if + local.get $7 + local.get $8 + i32.store offset=8 + end + local.get $8 + if + local.get $8 + local.get $7 + i32.store offset=4 + end + local.get $1 + local.get $0 + local.get $5 + local.get $6 + call $~lib/allocator/tlsf/Root#getHead + i32.eq + if + local.get $0 + local.get $5 + local.get $6 + local.get $8 + call $~lib/allocator/tlsf/Root#setHead + local.get $8 + i32.eqz + if + local.get $0 + local.get $5 + call $~lib/allocator/tlsf/Root#getSLMap + local.set $4 + local.get $0 + local.get $5 + local.get $4 + i32.const 1 + local.get $6 + i32.shl + i32.const -1 + i32.xor + i32.and + local.tee $4 + call $~lib/allocator/tlsf/Root#setSLMap + local.get $4 + i32.eqz + if + local.get $0 + local.get $0 + i32.load + i32.const 1 + local.get $5 + i32.shl + i32.const -1 + i32.xor + i32.and + i32.store + end + end + end + ) + (func $~lib/allocator/tlsf/Block#get:left (; 12 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + local.get $0 + i32.load + global.get $~lib/allocator/tlsf/LEFT_FREE + i32.and + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 96 + i32.const 4 + call $~lib/env/abort + unreachable + end + local.get $0 + i32.const 4 + i32.sub + i32.load + local.tee $1 + i32.eqz + if (result i32) + i32.const 0 + i32.const 24 + i32.const 97 + i32.const 11 + call $~lib/env/abort + unreachable + else + local.get $1 + end + ) + (func $~lib/allocator/tlsf/Root#setJump (; 13 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + local.get $1 + i32.load + global.get $~lib/allocator/tlsf/FREE + i32.and + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 353 + i32.const 4 + call $~lib/env/abort + unreachable + end + local.get $1 + call $~lib/allocator/tlsf/Block#get:right + local.get $2 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 354 + i32.const 4 + call $~lib/env/abort + unreachable + end + local.get $2 + i32.load + global.get $~lib/allocator/tlsf/LEFT_FREE + i32.and + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 355 + i32.const 4 + call $~lib/env/abort + unreachable + end + local.get $2 + i32.const 4 + i32.sub + local.get $1 + i32.store + ) + (func $~lib/allocator/tlsf/Root#insert (; 14 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + (local $10 i32) + local.get $1 + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 208 + i32.const 4 + call $~lib/env/abort + unreachable + end + local.get $1 + i32.load + local.set $2 + local.get $2 + global.get $~lib/allocator/tlsf/FREE + i32.and + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 210 + i32.const 4 + call $~lib/env/abort + unreachable + end + local.get $1 + i32.load + global.get $~lib/allocator/tlsf/TAGS + i32.const -1 + i32.xor + i32.and + local.tee $3 + global.get $~lib/allocator/tlsf/Block.MIN_SIZE + i32.ge_u + local.tee $4 + if (result i32) + local.get $3 + global.get $~lib/allocator/tlsf/Block.MAX_SIZE + i32.lt_u + else + local.get $4 + end + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 212 + i32.const 4 + call $~lib/env/abort + unreachable + end + local.get $1 + call $~lib/allocator/tlsf/Block#get:right + local.tee $4 + i32.eqz + if (result i32) + i32.const 0 + i32.const 24 + i32.const 216 + i32.const 23 + call $~lib/env/abort + unreachable + else + local.get $4 + end + local.set $5 + local.get $5 + i32.load + local.set $6 + local.get $6 + global.get $~lib/allocator/tlsf/FREE + i32.and + if + local.get $0 + local.get $5 + call $~lib/allocator/tlsf/Root#remove + local.get $1 + local.get $2 + global.get $~lib/allocator/tlsf/Block.INFO + local.get $6 + global.get $~lib/allocator/tlsf/TAGS + i32.const -1 + i32.xor + i32.and + i32.add + i32.add + local.tee $2 + i32.store + local.get $1 + call $~lib/allocator/tlsf/Block#get:right + local.set $5 + local.get $5 + i32.load + local.set $6 + end + local.get $2 + global.get $~lib/allocator/tlsf/LEFT_FREE + i32.and + if + local.get $1 + call $~lib/allocator/tlsf/Block#get:left + local.tee $4 + i32.eqz + if (result i32) + i32.const 0 + i32.const 24 + i32.const 230 + i32.const 24 + call $~lib/env/abort + unreachable + else + local.get $4 + end + local.set $4 + local.get $4 + i32.load + local.set $7 + local.get $7 + global.get $~lib/allocator/tlsf/FREE + i32.and + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 232 + i32.const 6 + call $~lib/env/abort + unreachable + end + local.get $0 + local.get $4 + call $~lib/allocator/tlsf/Root#remove + local.get $4 + local.get $7 + global.get $~lib/allocator/tlsf/Block.INFO + local.get $2 + global.get $~lib/allocator/tlsf/TAGS + i32.const -1 + i32.xor + i32.and + i32.add + i32.add + local.tee $7 + i32.store + local.get $4 + local.set $1 + local.get $7 + local.set $2 + end + local.get $5 + local.get $6 + global.get $~lib/allocator/tlsf/LEFT_FREE + i32.or + i32.store + local.get $0 + local.get $1 + local.get $5 + call $~lib/allocator/tlsf/Root#setJump + local.get $2 + global.get $~lib/allocator/tlsf/TAGS + i32.const -1 + i32.xor + i32.and + local.set $3 + local.get $3 + global.get $~lib/allocator/tlsf/Block.MIN_SIZE + i32.ge_u + local.tee $7 + if (result i32) + local.get $3 + global.get $~lib/allocator/tlsf/Block.MAX_SIZE + i32.lt_u + else + local.get $7 + end + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 245 + i32.const 4 + call $~lib/env/abort + unreachable + end + local.get $3 + global.get $~lib/allocator/tlsf/SB_SIZE + i32.lt_u + if + i32.const 0 + local.set $8 + local.get $3 + i32.const 8 + i32.div_u + local.set $9 + else + local.get $3 + call $~lib/allocator/tlsf/fls + local.set $8 + local.get $3 + local.get $8 + global.get $~lib/allocator/tlsf/SL_BITS + i32.sub + i32.shr_u + i32.const 1 + global.get $~lib/allocator/tlsf/SL_BITS + i32.shl + i32.xor + local.set $9 + local.get $8 + global.get $~lib/allocator/tlsf/SB_BITS + i32.const 1 + i32.sub + i32.sub + local.set $8 + end + local.get $0 + local.get $8 + local.get $9 + call $~lib/allocator/tlsf/Root#getHead + local.set $10 + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + local.get $10 + i32.store offset=8 + local.get $10 + if + local.get $10 + local.get $1 + i32.store offset=4 + end + local.get $0 + local.get $8 + local.get $9 + local.get $1 + call $~lib/allocator/tlsf/Root#setHead + local.get $0 + local.get $0 + i32.load + i32.const 1 + local.get $8 + i32.shl + i32.or + i32.store + local.get $0 + local.get $8 + local.get $0 + local.get $8 + call $~lib/allocator/tlsf/Root#getSLMap + i32.const 1 + local.get $9 + i32.shl + i32.or + call $~lib/allocator/tlsf/Root#setSLMap + ) + (func $~lib/allocator/tlsf/Root#addMemory (; 15 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + local.get $1 + local.get $2 + i32.le_u + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 396 + i32.const 4 + call $~lib/env/abort + unreachable + end + local.get $1 + i32.const 7 + i32.and + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 397 + i32.const 4 + call $~lib/env/abort + unreachable + end + local.get $2 + i32.const 7 + i32.and + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 398 + i32.const 4 + call $~lib/env/abort + unreachable + end + local.get $0 + call $~lib/allocator/tlsf/Root#get:tailRef + local.set $3 + i32.const 0 + local.set $4 + local.get $3 + if + local.get $1 + local.get $3 + i32.const 4 + i32.add + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 403 + i32.const 6 + call $~lib/env/abort + unreachable + end + local.get $1 + global.get $~lib/allocator/tlsf/Block.INFO + i32.sub + local.get $3 + i32.eq + if + local.get $1 + global.get $~lib/allocator/tlsf/Block.INFO + i32.sub + local.set $1 + local.get $3 + i32.load + local.set $4 + end + else + local.get $1 + local.get $0 + global.get $~lib/allocator/tlsf/Root.SIZE + i32.add + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 412 + i32.const 6 + call $~lib/env/abort + unreachable + end + end + local.get $2 + local.get $1 + i32.sub + local.set $5 + local.get $5 + global.get $~lib/allocator/tlsf/Block.INFO + global.get $~lib/allocator/tlsf/Block.MIN_SIZE + i32.add + global.get $~lib/allocator/tlsf/Block.INFO + i32.add + i32.lt_u + if + i32.const 0 + return + end + local.get $5 + i32.const 2 + global.get $~lib/allocator/tlsf/Block.INFO + i32.mul + i32.sub + local.set $6 + local.get $1 + local.set $7 + local.get $7 + local.get $6 + global.get $~lib/allocator/tlsf/FREE + i32.or + local.get $4 + global.get $~lib/allocator/tlsf/LEFT_FREE + i32.and + i32.or + i32.store + local.get $7 + i32.const 0 + i32.store offset=4 + local.get $7 + i32.const 0 + i32.store offset=8 + local.get $1 + local.get $5 + i32.add + global.get $~lib/allocator/tlsf/Block.INFO + i32.sub + local.set $8 + local.get $8 + i32.const 0 + global.get $~lib/allocator/tlsf/LEFT_FREE + i32.or + i32.store + local.get $0 + local.get $8 + call $~lib/allocator/tlsf/Root#set:tailRef + local.get $0 + local.get $7 + call $~lib/allocator/tlsf/Root#insert + i32.const 1 + ) + (func $~lib/allocator/tlsf/ffs (; 16 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + i32.const 0 + i32.ne + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 441 + i32.const 2 + call $~lib/env/abort + unreachable + end + local.get $0 + i32.ctz + ) + (func $~lib/allocator/tlsf/ffs (; 17 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + i32.const 0 + i32.ne + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 441 + i32.const 2 + call $~lib/env/abort + unreachable + end + local.get $0 + i32.ctz + ) + (func $~lib/allocator/tlsf/Root#search (; 18 ;) (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) + (local $7 i32) + local.get $1 + global.get $~lib/allocator/tlsf/Block.MIN_SIZE + i32.ge_u + local.tee $2 + if (result i32) + local.get $1 + global.get $~lib/allocator/tlsf/Block.MAX_SIZE + i32.lt_u + else + local.get $2 + end + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 315 + i32.const 4 + call $~lib/env/abort + unreachable + end + local.get $1 + global.get $~lib/allocator/tlsf/SB_SIZE + i32.lt_u + if + i32.const 0 + local.set $3 + local.get $1 + i32.const 8 + i32.div_u + local.set $4 + else + local.get $1 + call $~lib/allocator/tlsf/fls + local.set $3 + local.get $1 + local.get $3 + global.get $~lib/allocator/tlsf/SL_BITS + i32.sub + i32.shr_u + i32.const 1 + global.get $~lib/allocator/tlsf/SL_BITS + i32.shl + i32.xor + local.set $4 + local.get $3 + global.get $~lib/allocator/tlsf/SB_BITS + i32.const 1 + i32.sub + i32.sub + local.set $3 + local.get $4 + global.get $~lib/allocator/tlsf/SL_SIZE + i32.const 1 + i32.sub + i32.lt_u + if + local.get $4 + i32.const 1 + i32.add + local.set $4 + else + local.get $3 + i32.const 1 + i32.add + local.set $3 + i32.const 0 + local.set $4 + end + end + local.get $0 + local.get $3 + call $~lib/allocator/tlsf/Root#getSLMap + i32.const 0 + i32.const -1 + i32.xor + local.get $4 + i32.shl + i32.and + local.set $5 + local.get $5 + i32.eqz + if + local.get $0 + i32.load + i32.const 0 + i32.const -1 + i32.xor + local.get $3 + i32.const 1 + i32.add + i32.shl + i32.and + local.set $2 + local.get $2 + i32.eqz + if + i32.const 0 + local.set $6 + else + local.get $2 + call $~lib/allocator/tlsf/ffs + local.set $3 + local.get $0 + local.get $3 + call $~lib/allocator/tlsf/Root#getSLMap + local.tee $7 + if (result i32) + local.get $7 + else + i32.const 0 + i32.const 24 + i32.const 342 + i32.const 16 + call $~lib/env/abort + unreachable + end + local.set $5 + local.get $0 + local.get $3 + local.get $5 + call $~lib/allocator/tlsf/ffs + call $~lib/allocator/tlsf/Root#getHead + local.set $6 + end + else + local.get $0 + local.get $3 + local.get $5 + call $~lib/allocator/tlsf/ffs + call $~lib/allocator/tlsf/Root#getHead + local.set $6 + end + local.get $6 + ) + (func $~lib/allocator/tlsf/Root#use (; 19 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $1 + i32.load + local.set $3 + local.get $3 + global.get $~lib/allocator/tlsf/FREE + i32.and + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 367 + i32.const 4 + call $~lib/env/abort + unreachable + end + local.get $2 + global.get $~lib/allocator/tlsf/Block.MIN_SIZE + i32.ge_u + local.tee $4 + if (result i32) + local.get $2 + global.get $~lib/allocator/tlsf/Block.MAX_SIZE + i32.lt_u + else + local.get $4 + end + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 368 + i32.const 4 + call $~lib/env/abort + unreachable + end + local.get $2 + i32.const 7 + i32.and + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 369 + i32.const 4 + call $~lib/env/abort + unreachable + end + local.get $0 + local.get $1 + call $~lib/allocator/tlsf/Root#remove + local.get $3 + global.get $~lib/allocator/tlsf/TAGS + i32.const -1 + i32.xor + i32.and + local.get $2 + i32.sub + local.set $5 + local.get $5 + global.get $~lib/allocator/tlsf/Block.INFO + global.get $~lib/allocator/tlsf/Block.MIN_SIZE + i32.add + i32.ge_u + if + local.get $1 + local.get $2 + local.get $3 + global.get $~lib/allocator/tlsf/LEFT_FREE + i32.and + i32.or + i32.store + local.get $1 + global.get $~lib/allocator/tlsf/Block.INFO + i32.add + local.get $2 + i32.add + local.set $4 + local.get $4 + local.get $5 + global.get $~lib/allocator/tlsf/Block.INFO + i32.sub + global.get $~lib/allocator/tlsf/FREE + i32.or + i32.store + local.get $0 + local.get $4 + call $~lib/allocator/tlsf/Root#insert + else + local.get $1 + local.get $3 + global.get $~lib/allocator/tlsf/FREE + i32.const -1 + i32.xor + i32.and + i32.store + local.get $1 + call $~lib/allocator/tlsf/Block#get:right + local.tee $4 + i32.eqz + if (result i32) + i32.const 0 + i32.const 24 + i32.const 387 + i32.const 25 + call $~lib/env/abort + unreachable + else + local.get $4 + end + local.set $4 + local.get $4 + local.get $4 + i32.load + global.get $~lib/allocator/tlsf/LEFT_FREE + i32.const -1 + i32.xor + i32.and + i32.store + end + local.get $1 + global.get $~lib/allocator/tlsf/Block.INFO + i32.add + ) + (func $~lib/allocator/tlsf/__mem_allocate (; 20 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + global.get $~lib/allocator/tlsf/ROOT + local.set $1 + local.get $1 + i32.eqz + if + global.get $~lib/memory/HEAP_BASE + i32.const 7 + i32.add + i32.const 7 + i32.const -1 + i32.xor + i32.and + local.set $2 + current_memory + local.set $3 + local.get $2 + global.get $~lib/allocator/tlsf/Root.SIZE + i32.add + i32.const 65535 + i32.add + i32.const 65535 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.shr_u + local.set $4 + local.get $4 + local.get $3 + i32.gt_s + local.tee $5 + if (result i32) + local.get $4 + local.get $3 + i32.sub + grow_memory + i32.const 0 + i32.lt_s + else + local.get $5 + end + if + unreachable + end + local.get $2 + local.tee $1 + global.set $~lib/allocator/tlsf/ROOT + local.get $1 + i32.const 0 + call $~lib/allocator/tlsf/Root#set:tailRef + local.get $1 + i32.const 0 + i32.store + block $break|0 + i32.const 0 + local.set $5 + loop $repeat|0 + local.get $5 + global.get $~lib/allocator/tlsf/FL_BITS + i32.lt_u + i32.eqz + br_if $break|0 + block + local.get $1 + local.get $5 + i32.const 0 + call $~lib/allocator/tlsf/Root#setSLMap + block $break|1 + i32.const 0 + local.set $6 + loop $repeat|1 + local.get $6 + global.get $~lib/allocator/tlsf/SL_SIZE + i32.lt_u + i32.eqz + br_if $break|1 + local.get $1 + local.get $5 + local.get $6 + i32.const 0 + call $~lib/allocator/tlsf/Root#setHead + local.get $6 + i32.const 1 + i32.add + local.set $6 + br $repeat|1 + unreachable + end + unreachable + end + end + local.get $5 + i32.const 1 + i32.add + local.set $5 + br $repeat|0 + unreachable + end + unreachable + end + local.get $1 + local.get $2 + global.get $~lib/allocator/tlsf/Root.SIZE + i32.add + i32.const 7 + i32.add + i32.const 7 + i32.const -1 + i32.xor + i32.and + current_memory + i32.const 16 + i32.shl + call $~lib/allocator/tlsf/Root#addMemory + drop + end + local.get $0 + global.get $~lib/allocator/tlsf/Block.MAX_SIZE + i32.gt_u + if + unreachable + end + local.get $0 + i32.const 7 + i32.add + i32.const 7 + i32.const -1 + i32.xor + i32.and + local.tee $4 + global.get $~lib/allocator/tlsf/Block.MIN_SIZE + local.tee $3 + local.get $4 + local.get $3 + i32.gt_u + select + local.set $0 + local.get $1 + local.get $0 + call $~lib/allocator/tlsf/Root#search + local.set $7 + local.get $7 + i32.eqz + if + current_memory + local.set $4 + local.get $0 + i32.const 65535 + i32.add + i32.const 65535 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.shr_u + local.set $3 + local.get $4 + local.tee $2 + local.get $3 + local.tee $5 + local.get $2 + local.get $5 + i32.gt_s + select + local.set $2 + local.get $2 + grow_memory + i32.const 0 + i32.lt_s + if + local.get $3 + grow_memory + i32.const 0 + i32.lt_s + if + unreachable + end + end + current_memory + local.set $5 + local.get $1 + local.get $4 + i32.const 16 + i32.shl + local.get $5 + i32.const 16 + i32.shl + call $~lib/allocator/tlsf/Root#addMemory + drop + local.get $1 + local.get $0 + call $~lib/allocator/tlsf/Root#search + local.tee $6 + i32.eqz + if (result i32) + i32.const 0 + i32.const 24 + i32.const 502 + i32.const 12 + call $~lib/env/abort + unreachable + else + local.get $6 + end + local.set $7 + end + local.get $7 + i32.load + global.get $~lib/allocator/tlsf/TAGS + i32.const -1 + i32.xor + i32.and + local.get $0 + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 505 + i32.const 2 + call $~lib/env/abort + unreachable + end + local.get $1 + local.get $7 + local.get $0 + call $~lib/allocator/tlsf/Root#use + ) + (func $~lib/memory/memory.allocate (; 21 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + call $~lib/allocator/tlsf/__mem_allocate + return + ) + (func $~lib/runtime/runtime.allocate (; 22 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + local.get $0 + call $~lib/util/runtime/adjust + call $~lib/memory/memory.allocate + local.set $1 + local.get $1 + global.get $~lib/util/runtime/HEADER_MAGIC + i32.store + local.get $1 + local.get $0 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.store offset=8 + local.get $1 + i32.const 0 + i32.store offset=12 + local.get $1 + global.get $~lib/util/runtime/HEADER_SIZE + i32.add + ) + (func $~lib/allocator/tlsf/__mem_free (; 23 ;) (type $FUNCSIG$vi) (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + local.get $0 + if + global.get $~lib/allocator/tlsf/ROOT + local.set $1 + local.get $1 + if + local.get $0 + global.get $~lib/allocator/tlsf/Block.INFO + i32.sub + local.set $2 + local.get $2 + i32.load + local.set $3 + local.get $3 + global.get $~lib/allocator/tlsf/FREE + i32.and + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 518 + i32.const 6 + call $~lib/env/abort + unreachable + end + local.get $2 + local.get $3 + global.get $~lib/allocator/tlsf/FREE + i32.or + i32.store + local.get $1 + local.get $0 + global.get $~lib/allocator/tlsf/Block.INFO + i32.sub + call $~lib/allocator/tlsf/Root#insert + end + end + ) + (func $~lib/memory/memory.free (; 24 ;) (type $FUNCSIG$vi) (param $0 i32) + local.get $0 + call $~lib/allocator/tlsf/__mem_free + ) + (func $~lib/runtime/runtime.discard (; 25 ;) (type $FUNCSIG$vi) (param $0 i32) + (local $1 i32) + local.get $0 + global.get $~lib/memory/HEAP_BASE + i32.gt_u + i32.eqz + if + i32.const 0 + i32.const 88 + i32.const 68 + i32.const 6 + call $~lib/env/abort + unreachable + end + local.get $0 + global.get $~lib/util/runtime/HEADER_SIZE + i32.sub + local.set $1 + local.get $1 + i32.load + global.get $~lib/util/runtime/HEADER_MAGIC + i32.eq + i32.eqz + if + i32.const 0 + i32.const 88 + i32.const 70 + i32.const 6 + call $~lib/env/abort + unreachable + end + local.get $1 + call $~lib/memory/memory.free + ) + (func $~lib/collector/itcm/ManagedObjectList#clear (; 26 ;) (type $FUNCSIG$vi) (param $0 i32) + local.get $0 + local.get $0 + i32.store offset=8 + local.get $0 + local.get $0 + i32.store offset=12 + ) + (func $~lib/collector/itcm/maybeInit (; 27 ;) (type $FUNCSIG$v) + global.get $~lib/collector/itcm/state + i32.const 0 + i32.eq + if + global.get $~lib/util/runtime/HEADER_SIZE + call $~lib/memory/memory.allocate + global.set $~lib/collector/itcm/fromSpace + global.get $~lib/collector/itcm/fromSpace + i32.const -1 + i32.store + global.get $~lib/collector/itcm/fromSpace + i32.const 0 + i32.store offset=4 + global.get $~lib/collector/itcm/fromSpace + call $~lib/collector/itcm/ManagedObjectList#clear + global.get $~lib/util/runtime/HEADER_SIZE + call $~lib/memory/memory.allocate + global.set $~lib/collector/itcm/toSpace + global.get $~lib/collector/itcm/toSpace + i32.const -1 + i32.store + global.get $~lib/collector/itcm/toSpace + i32.const 0 + i32.store offset=4 + global.get $~lib/collector/itcm/toSpace + call $~lib/collector/itcm/ManagedObjectList#clear + global.get $~lib/collector/itcm/toSpace + global.set $~lib/collector/itcm/iter + i32.const 1 + global.set $~lib/collector/itcm/state + end + ) + (func $~lib/collector/itcm/ManagedObject#set:color (; 28 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + local.get $0 + local.get $0 + i32.load offset=8 + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $1 + i32.or + i32.store offset=8 + ) + (func $~lib/collector/itcm/ManagedObject#set:next (; 29 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + local.get $0 + i32.load offset=8 + i32.const 3 + i32.and + i32.or + i32.store offset=8 + ) + (func $~lib/collector/itcm/ManagedObjectList#push (; 30 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $0 + i32.load offset=12 + local.set $2 + local.get $1 + local.get $0 + call $~lib/collector/itcm/ManagedObject#set:next + local.get $1 + local.get $2 + i32.store offset=12 + local.get $2 + local.get $1 + call $~lib/collector/itcm/ManagedObject#set:next + local.get $0 + local.get $1 + i32.store offset=12 + ) + (func $~lib/collector/itcm/__ref_register (; 31 ;) (type $FUNCSIG$vi) (param $0 i32) + (local $1 i32) + (local $2 i32) + call $~lib/collector/itcm/maybeInit + block $~lib/collector/itcm/refToObj|inlined.0 (result i32) + local.get $0 + local.set $1 + local.get $1 + global.get $~lib/util/runtime/HEADER_SIZE + i32.sub + end + local.set $2 + local.get $2 + global.get $~lib/collector/itcm/white + call $~lib/collector/itcm/ManagedObject#set:color + global.get $~lib/collector/itcm/fromSpace + local.get $2 + call $~lib/collector/itcm/ManagedObjectList#push + ) + (func $~lib/runtime/runtime.register (; 32 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $0 + global.get $~lib/memory/HEAP_BASE + i32.gt_u + i32.eqz + if + i32.const 0 + i32.const 88 + i32.const 82 + i32.const 6 + call $~lib/env/abort + unreachable + end + local.get $0 + global.get $~lib/util/runtime/HEADER_SIZE + i32.sub + local.set $2 + local.get $2 + i32.load + global.get $~lib/util/runtime/HEADER_MAGIC + i32.eq + i32.eqz + if + i32.const 0 + i32.const 88 + i32.const 84 + i32.const 6 + call $~lib/env/abort + unreachable + end + local.get $2 + local.get $1 + i32.store + local.get $0 + call $~lib/collector/itcm/__ref_register + local.get $0 + ) + (func $~lib/runtime/runtime.newString (; 33 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + i32.const 1 + i32.shl + call $~lib/runtime/runtime.allocate + i32.const 1 + call $~lib/runtime/runtime.register + ) + (func $~lib/runtime/runtime.newArrayBuffer (; 34 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + call $~lib/runtime/runtime.allocate + i32.const 2 + call $~lib/runtime/runtime.register + ) + (func $~lib/collector/itcm/ManagedObject#get:color (; 35 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + i32.load offset=8 + i32.const 3 + i32.and + ) + (func $~lib/collector/itcm/ManagedObject#get:next (; 36 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + i32.load offset=8 + i32.const 3 + i32.const -1 + i32.xor + i32.and + ) + (func $~lib/collector/itcm/ManagedObject#unlink (; 37 ;) (type $FUNCSIG$vi) (param $0 i32) + (local $1 i32) + (local $2 i32) + local.get $0 + call $~lib/collector/itcm/ManagedObject#get:next + local.set $1 + local.get $0 + i32.load offset=12 + local.set $2 + local.get $1 + local.get $2 + i32.store offset=12 + local.get $2 + local.get $1 + call $~lib/collector/itcm/ManagedObject#set:next + ) + (func $~lib/collector/itcm/ManagedObject#makeGray (; 38 ;) (type $FUNCSIG$vi) (param $0 i32) + local.get $0 + global.get $~lib/collector/itcm/iter + i32.eq + if + local.get $0 + i32.load offset=12 + global.set $~lib/collector/itcm/iter + end + local.get $0 + call $~lib/collector/itcm/ManagedObject#unlink + global.get $~lib/collector/itcm/toSpace + local.get $0 + call $~lib/collector/itcm/ManagedObjectList#push + local.get $0 + local.get $0 + i32.load offset=8 + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.const 2 + i32.or + i32.store offset=8 + ) + (func $~lib/collector/itcm/__ref_link (; 39 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + call $~lib/collector/itcm/maybeInit + block $~lib/collector/itcm/refToObj|inlined.1 (result i32) + local.get $1 + local.set $2 + local.get $2 + global.get $~lib/util/runtime/HEADER_SIZE + i32.sub + end + local.set $3 + local.get $3 + call $~lib/collector/itcm/ManagedObject#get:color + global.get $~lib/collector/itcm/white + i32.eqz + i32.eq + local.tee $2 + if (result i32) + block $~lib/collector/itcm/refToObj|inlined.3 (result i32) + local.get $0 + local.set $2 + local.get $2 + global.get $~lib/util/runtime/HEADER_SIZE + i32.sub + end + call $~lib/collector/itcm/ManagedObject#get:color + global.get $~lib/collector/itcm/white + i32.eq + else + local.get $2 + end + if + local.get $3 + call $~lib/collector/itcm/ManagedObject#makeGray + end + ) + (func $~lib/memory/memory.copy (; 40 ;) (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 $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/runtime.newArray (; 41 ;) (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) + (local $8 i32) + (local $9 i32) + i32.const 16 + call $~lib/runtime/runtime.allocate + local.get $2 + call $~lib/runtime/runtime.register + local.set $4 + local.get $0 + local.get $1 + i32.shl + local.set $5 + local.get $5 + call $~lib/runtime/runtime.allocate + i32.const 2 + call $~lib/runtime/runtime.register + local.set $6 + local.get $4 + local.tee $7 + local.get $6 + local.tee $8 + local.get $7 + i32.load + local.tee $9 + i32.ne + if (result i32) + nop + local.get $8 + local.get $7 + call $~lib/collector/itcm/__ref_link + local.get $8 + else + local.get $8 + end + 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 $3 + if + local.get $6 + local.get $3 + local.get $5 + call $~lib/memory/memory.copy + end + local.get $4 + ) + (func $~lib/runtime/Root#constructor (; 42 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + i32.eqz + if + i32.const 0 + call $~lib/runtime/runtime.allocate + i32.const 3 + call $~lib/runtime/runtime.register + local.set $0 + end + local.get $0 + ) + (func $~lib/runtime/runtime.retain (; 43 ;) (type $FUNCSIG$vi) (param $0 i32) + local.get $0 + global.get $~lib/runtime/ROOT + call $~lib/collector/itcm/__ref_link + ) + (func $~lib/runtime/runtime.release (; 44 ;) (type $FUNCSIG$vi) (param $0 i32) + nop + ) + (func $~lib/collector/itcm/step (; 45 ;) (type $FUNCSIG$v) + (local $0 i32) + (local $1 i32) + block $break|0 + block $case3|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/collector/itcm/state + local.set $1 + local.get $1 + i32.const 0 + i32.eq + br_if $case0|0 + local.get $1 + i32.const 1 + i32.eq + br_if $case1|0 + local.get $1 + i32.const 2 + i32.eq + br_if $case2|0 + local.get $1 + i32.const 3 + i32.eq + br_if $case3|0 + br $break|0 + end + unreachable + end + block + call $~lib/runtime/__gc_mark_roots + i32.const 2 + global.set $~lib/collector/itcm/state + br $break|0 + unreachable + end + unreachable + end + block + global.get $~lib/collector/itcm/iter + call $~lib/collector/itcm/ManagedObject#get:next + local.set $0 + local.get $0 + global.get $~lib/collector/itcm/toSpace + i32.ne + if + local.get $0 + global.set $~lib/collector/itcm/iter + local.get $0 + global.get $~lib/collector/itcm/white + i32.eqz + call $~lib/collector/itcm/ManagedObject#set:color + local.get $0 + i32.load + block $~lib/collector/itcm/objToRef|inlined.0 (result i32) + local.get $0 + local.set $1 + local.get $1 + global.get $~lib/util/runtime/HEADER_SIZE + i32.add + end + call $~lib/runtime/__gc_mark_members + else + call $~lib/runtime/__gc_mark_roots + global.get $~lib/collector/itcm/iter + call $~lib/collector/itcm/ManagedObject#get:next + local.set $0 + local.get $0 + global.get $~lib/collector/itcm/toSpace + i32.eq + if + global.get $~lib/collector/itcm/fromSpace + local.set $1 + global.get $~lib/collector/itcm/toSpace + global.set $~lib/collector/itcm/fromSpace + local.get $1 + global.set $~lib/collector/itcm/toSpace + global.get $~lib/collector/itcm/white + i32.eqz + global.set $~lib/collector/itcm/white + local.get $1 + call $~lib/collector/itcm/ManagedObject#get:next + global.set $~lib/collector/itcm/iter + i32.const 3 + global.set $~lib/collector/itcm/state + end + end + br $break|0 + unreachable + end + unreachable + end + block + global.get $~lib/collector/itcm/iter + local.set $0 + local.get $0 + global.get $~lib/collector/itcm/toSpace + i32.ne + if + local.get $0 + call $~lib/collector/itcm/ManagedObject#get:next + global.set $~lib/collector/itcm/iter + local.get $0 + global.get $~lib/memory/HEAP_BASE + i32.ge_u + if + local.get $0 + call $~lib/memory/memory.free + end + else + global.get $~lib/collector/itcm/toSpace + call $~lib/collector/itcm/ManagedObjectList#clear + i32.const 1 + global.set $~lib/collector/itcm/state + end + br $break|0 + unreachable + end + unreachable + end + ) + (func $~lib/collector/itcm/__ref_collect (; 46 ;) (type $FUNCSIG$v) + call $~lib/collector/itcm/maybeInit + block $break|0 + loop $continue|0 + global.get $~lib/collector/itcm/state + i32.const 1 + i32.ne + if + call $~lib/collector/itcm/step + br $continue|0 + end + end + end + block $break|1 + loop $continue|1 + call $~lib/collector/itcm/step + global.get $~lib/collector/itcm/state + i32.const 1 + i32.ne + br_if $continue|1 + end + end + ) + (func $~lib/runtime/runtime.collect (; 47 ;) (type $FUNCSIG$v) + call $~lib/collector/itcm/__ref_collect + ) + (func $~lib/runtime/runtime#constructor (; 48 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + unreachable + ) + (func $start (; 49 ;) (type $FUNCSIG$v) + i32.const 0 + call $~lib/runtime/Root#constructor + global.set $~lib/runtime/ROOT + ) + (func $~lib/collector/itcm/__ref_mark (; 50 ;) (type $FUNCSIG$vi) (param $0 i32) + (local $1 i32) + (local $2 i32) + call $~lib/collector/itcm/maybeInit + block $~lib/collector/itcm/refToObj|inlined.4 (result i32) + local.get $0 + local.set $1 + local.get $1 + global.get $~lib/util/runtime/HEADER_SIZE + i32.sub + end + local.set $2 + local.get $2 + call $~lib/collector/itcm/ManagedObject#get:color + global.get $~lib/collector/itcm/white + i32.eq + if + local.get $2 + call $~lib/collector/itcm/ManagedObject#makeGray + end + ) + (func $~lib/runtime/__gc_mark_roots (; 51 ;) (type $FUNCSIG$v) + (local $0 i32) + global.get $~lib/runtime/ROOT + local.tee $0 + if + local.get $0 + call $~lib/collector/itcm/__ref_mark + end + ) + (func $~lib/runtime/__gc_mark_members (; 52 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (local $2 i32) + block $invalid + block $~lib/runtime/Root + block $~lib/arraybuffer/ArrayBuffer + block $~lib/string/String + local.get $0 + br_table $invalid $~lib/string/String $~lib/arraybuffer/ArrayBuffer $~lib/runtime/Root $invalid + end + return + end + return + end + return + end + unreachable + ) + (func $~lib/runtime/__runtime_instanceof (; 53 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + block $nope + block $~lib/runtime/Root + block $~lib/arraybuffer/ArrayBuffer + block $~lib/string/String + local.get $0 + br_table $nope $~lib/string/String $~lib/arraybuffer/ArrayBuffer $~lib/runtime/Root $nope + end + local.get $1 + i32.const 1 + i32.eq + return + end + local.get $1 + i32.const 2 + i32.eq + return + end + local.get $1 + i32.const 3 + i32.eq + return + end + i32.const 0 + return + ) + (func $null (; 54 ;) (type $FUNCSIG$v) + ) + (func $~lib/runtime/runtime.newArray|trampoline (; 55 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + block $1of1 + block $0of1 + block $outOfRange + global.get $~lib/argc + i32.const 3 + i32.sub + br_table $0of1 $1of1 $outOfRange + end + unreachable + end + i32.const 0 + local.set $3 + end + local.get $0 + local.get $1 + local.get $2 + local.get $3 + call $~lib/runtime/runtime.newArray + ) + (func $~lib/setargc (; 56 ;) (type $FUNCSIG$vi) (param $0 i32) + local.get $0 + global.set $~lib/argc ) ) diff --git a/tests/compiler/runtime/instanceof.optimized.wat b/tests/compiler/runtime/instanceof.optimized.wat index 4a8c6066..ab75a982 100644 --- a/tests/compiler/runtime/instanceof.optimized.wat +++ b/tests/compiler/runtime/instanceof.optimized.wat @@ -143,7 +143,7 @@ if i32.const 0 i32.const 88 - i32.const 117 + i32.const 82 i32.const 6 call $~lib/env/abort unreachable @@ -158,7 +158,7 @@ if i32.const 0 i32.const 88 - i32.const 119 + i32.const 84 i32.const 6 call $~lib/env/abort unreachable diff --git a/tests/compiler/runtime/instanceof.untouched.wat b/tests/compiler/runtime/instanceof.untouched.wat index f88df697..844c5735 100644 --- a/tests/compiler/runtime/instanceof.untouched.wat +++ b/tests/compiler/runtime/instanceof.untouched.wat @@ -189,7 +189,7 @@ if i32.const 0 i32.const 88 - i32.const 117 + i32.const 82 i32.const 6 call $~lib/env/abort unreachable @@ -206,7 +206,7 @@ if i32.const 0 i32.const 88 - i32.const 119 + i32.const 84 i32.const 6 call $~lib/env/abort unreachable diff --git a/tests/compiler/std/allocator_arena.optimized.wat b/tests/compiler/std/allocator_arena.optimized.wat index f14cd0cd..02735832 100644 --- a/tests/compiler/std/allocator_arena.optimized.wat +++ b/tests/compiler/std/allocator_arena.optimized.wat @@ -260,857 +260,7 @@ end end ) - (func $~lib/util/memory/memcpy (; 3 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - i32.const 42 - local.set $3 - loop $continue|0 - local.get $1 - i32.const 3 - i32.and - local.get $3 - local.get $3 - select - if - local.get $0 - local.tee $2 - i32.const 1 - i32.add - local.set $0 - local.get $1 - local.tee $4 - i32.const 1 - i32.add - local.set $1 - local.get $2 - local.get $4 - i32.load8_u - i32.store8 - local.get $3 - i32.const 1 - i32.sub - local.set $3 - br $continue|0 - end - end - local.get $0 - i32.const 3 - i32.and - i32.eqz - if - loop $continue|1 - local.get $3 - i32.const 16 - i32.ge_u - 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.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 $3 - i32.const 16 - i32.sub - local.set $3 - br $continue|1 - end - end - local.get $3 - 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 $1 - i32.const 8 - i32.add - local.set $1 - local.get $0 - i32.const 8 - i32.add - local.set $0 - end - local.get $3 - i32.const 4 - i32.and - if - local.get $0 - local.get $1 - i32.load - i32.store - local.get $1 - i32.const 4 - i32.add - local.set $1 - local.get $0 - i32.const 4 - i32.add - local.set $0 - end - local.get $3 - i32.const 2 - i32.and - if - local.get $0 - local.get $1 - i32.load16_u - i32.store16 - local.get $1 - i32.const 2 - i32.add - local.set $1 - local.get $0 - i32.const 2 - i32.add - local.set $0 - end - local.get $3 - i32.const 1 - i32.and - if - local.get $0 - local.get $1 - i32.load8_u - i32.store8 - end - return - end - local.get $3 - i32.const 32 - i32.ge_u - if - block $break|2 - block $case2|2 - block $case1|2 - local.get $0 - i32.const 3 - i32.and - local.tee $2 - i32.const 1 - i32.ne - if - local.get $2 - i32.const 2 - i32.eq - br_if $case1|2 - local.get $2 - i32.const 3 - i32.eq - br_if $case2|2 - br $break|2 - end - local.get $1 - i32.load - local.set $5 - local.get $0 - local.get $1 - i32.load8_u - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.tee $0 - local.get $1 - i32.const 1 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.tee $2 - i32.const 1 - i32.add - local.set $0 - local.get $1 - i32.const 1 - i32.add - local.tee $4 - i32.const 1 - i32.add - local.set $1 - local.get $2 - local.get $4 - i32.load8_u - i32.store8 - local.get $3 - i32.const 3 - i32.sub - local.set $3 - loop $continue|3 - local.get $3 - i32.const 17 - i32.ge_u - if - local.get $0 - local.get $1 - i32.const 1 - i32.add - i32.load - local.tee $2 - i32.const 8 - i32.shl - local.get $5 - i32.const 24 - i32.shr_u - i32.or - i32.store - local.get $0 - i32.const 4 - i32.add - local.get $2 - i32.const 24 - i32.shr_u - local.get $1 - i32.const 5 - i32.add - i32.load - local.tee $2 - i32.const 8 - i32.shl - i32.or - i32.store - local.get $0 - i32.const 8 - i32.add - local.get $2 - i32.const 24 - i32.shr_u - local.get $1 - i32.const 9 - i32.add - i32.load - local.tee $2 - i32.const 8 - i32.shl - i32.or - i32.store - local.get $0 - i32.const 12 - i32.add - local.get $1 - i32.const 13 - i32.add - i32.load - local.tee $5 - i32.const 8 - i32.shl - local.get $2 - i32.const 24 - i32.shr_u - 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 $3 - i32.const 16 - i32.sub - local.set $3 - br $continue|3 - end - end - br $break|2 - end - local.get $1 - i32.load - local.set $5 - local.get $0 - local.get $1 - i32.load8_u - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.tee $2 - i32.const 1 - i32.add - local.set $0 - local.get $1 - i32.const 1 - i32.add - local.tee $4 - i32.const 1 - i32.add - local.set $1 - local.get $2 - local.get $4 - i32.load8_u - i32.store8 - local.get $3 - i32.const 2 - i32.sub - local.set $3 - loop $continue|4 - local.get $3 - i32.const 18 - i32.ge_u - if - local.get $0 - local.get $1 - i32.const 2 - i32.add - i32.load - local.tee $2 - i32.const 16 - i32.shl - local.get $5 - i32.const 16 - i32.shr_u - i32.or - i32.store - local.get $0 - i32.const 4 - i32.add - local.get $2 - i32.const 16 - i32.shr_u - local.get $1 - i32.const 6 - i32.add - i32.load - local.tee $2 - i32.const 16 - i32.shl - i32.or - i32.store - local.get $0 - i32.const 8 - i32.add - local.get $2 - i32.const 16 - i32.shr_u - local.get $1 - i32.const 10 - i32.add - i32.load - local.tee $2 - i32.const 16 - i32.shl - i32.or - i32.store - local.get $0 - i32.const 12 - i32.add - local.get $1 - i32.const 14 - i32.add - i32.load - local.tee $5 - i32.const 16 - i32.shl - local.get $2 - i32.const 16 - i32.shr_u - 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 $3 - i32.const 16 - i32.sub - local.set $3 - br $continue|4 - end - end - br $break|2 - end - local.get $1 - i32.load - local.set $5 - local.get $0 - local.tee $2 - i32.const 1 - i32.add - local.set $0 - local.get $1 - local.tee $4 - i32.const 1 - i32.add - local.set $1 - local.get $2 - local.get $4 - i32.load8_u - i32.store8 - local.get $3 - i32.const 1 - i32.sub - local.set $3 - loop $continue|5 - local.get $3 - i32.const 19 - i32.ge_u - if - local.get $0 - local.get $1 - i32.const 3 - i32.add - i32.load - local.tee $2 - i32.const 24 - i32.shl - local.get $5 - i32.const 8 - i32.shr_u - i32.or - i32.store - local.get $0 - i32.const 4 - i32.add - local.get $2 - i32.const 8 - i32.shr_u - local.get $1 - i32.const 7 - i32.add - i32.load - local.tee $2 - i32.const 24 - i32.shl - i32.or - i32.store - local.get $0 - i32.const 8 - i32.add - local.get $2 - i32.const 8 - i32.shr_u - local.get $1 - i32.const 11 - i32.add - i32.load - local.tee $2 - i32.const 24 - i32.shl - i32.or - i32.store - local.get $0 - i32.const 12 - i32.add - local.get $1 - i32.const 15 - i32.add - i32.load - local.tee $5 - i32.const 24 - i32.shl - local.get $2 - i32.const 8 - i32.shr_u - 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 $3 - i32.const 16 - i32.sub - local.set $3 - br $continue|5 - end - end - end - end - local.get $3 - i32.const 16 - i32.and - if - local.get $0 - local.get $1 - i32.load8_u - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.tee $0 - local.get $1 - i32.const 1 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.tee $0 - local.get $1 - i32.const 1 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.tee $0 - local.get $1 - i32.const 1 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.tee $0 - local.get $1 - i32.const 1 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.tee $0 - local.get $1 - i32.const 1 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.tee $0 - local.get $1 - i32.const 1 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.tee $0 - local.get $1 - i32.const 1 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.tee $0 - local.get $1 - i32.const 1 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.tee $0 - local.get $1 - i32.const 1 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.tee $0 - local.get $1 - i32.const 1 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.tee $0 - local.get $1 - i32.const 1 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.tee $0 - local.get $1 - i32.const 1 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.tee $0 - local.get $1 - i32.const 1 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.tee $0 - local.get $1 - i32.const 1 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.tee $2 - i32.const 1 - i32.add - local.set $0 - local.get $1 - i32.const 1 - i32.add - local.tee $4 - i32.const 1 - i32.add - local.set $1 - local.get $2 - local.get $4 - i32.load8_u - i32.store8 - end - local.get $3 - i32.const 8 - i32.and - if - local.get $0 - local.get $1 - i32.load8_u - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.tee $0 - local.get $1 - i32.const 1 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.tee $0 - local.get $1 - i32.const 1 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.tee $0 - local.get $1 - i32.const 1 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.tee $0 - local.get $1 - i32.const 1 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.tee $0 - local.get $1 - i32.const 1 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.tee $0 - local.get $1 - i32.const 1 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.tee $2 - i32.const 1 - i32.add - local.set $0 - local.get $1 - i32.const 1 - i32.add - local.tee $4 - i32.const 1 - i32.add - local.set $1 - local.get $2 - local.get $4 - i32.load8_u - i32.store8 - end - local.get $3 - i32.const 4 - i32.and - if - local.get $0 - local.get $1 - i32.load8_u - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.tee $0 - local.get $1 - i32.const 1 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.tee $0 - local.get $1 - i32.const 1 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.tee $2 - i32.const 1 - i32.add - local.set $0 - local.get $1 - i32.const 1 - i32.add - local.tee $4 - i32.const 1 - i32.add - local.set $1 - local.get $2 - local.get $4 - i32.load8_u - i32.store8 - end - local.get $3 - i32.const 2 - i32.and - if - local.get $0 - local.get $1 - i32.load8_u - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.tee $2 - i32.const 1 - i32.add - local.set $0 - local.get $1 - i32.const 1 - i32.add - local.tee $4 - i32.const 1 - i32.add - local.set $1 - local.get $2 - local.get $4 - i32.load8_u - i32.store8 - end - local.get $3 - i32.const 1 - i32.and - if - local.get $0 - local.get $1 - i32.load8_u - i32.store8 - end - ) - (func $~lib/memory/memory.copy (; 4 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/memory/memory.copy (; 3 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -1121,27 +271,6 @@ local.get $1 i32.eq br_if $~lib/util/memory/memmove|inlined.0 - local.get $1 - i32.const 42 - i32.add - local.get $0 - i32.le_u - local.tee $3 - if (result i32) - local.get $3 - else - local.get $0 - i32.const 42 - i32.add - local.get $1 - i32.le_u - end - if - local.get $0 - local.get $1 - call $~lib/util/memory/memcpy - br $~lib/util/memory/memmove|inlined.0 - end local.get $0 local.get $1 i32.lt_u @@ -1305,7 +434,7 @@ end end ) - (func $start:std/allocator_arena (; 5 ;) (type $FUNCSIG$v) + (func $start:std/allocator_arena (; 4 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -1470,10 +599,10 @@ unreachable end ) - (func $start (; 6 ;) (type $FUNCSIG$v) + (func $start (; 5 ;) (type $FUNCSIG$v) call $start:std/allocator_arena ) - (func $null (; 7 ;) (type $FUNCSIG$v) + (func $null (; 6 ;) (type $FUNCSIG$v) nop ) ) diff --git a/tests/compiler/std/allocator_arena.untouched.wat b/tests/compiler/std/allocator_arena.untouched.wat index 2ad5b256..f8b3ac26 100644 --- a/tests/compiler/std/allocator_arena.untouched.wat +++ b/tests/compiler/std/allocator_arena.untouched.wat @@ -360,1208 +360,7 @@ end end ) - (func $~lib/util/memory/memcpy (; 4 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (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 - end - end - local.get $0 - 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.get $2 - 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.get $2 - i32.const 4 - 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 $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 - 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 $~lib/memory/memory.copy (; 5 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/memory/memory.copy (; 4 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -1572,28 +371,6 @@ 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 @@ -1792,21 +569,21 @@ end end ) - (func $~lib/allocator/arena/__mem_free (; 6 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/allocator/arena/__mem_free (; 5 ;) (type $FUNCSIG$vi) (param $0 i32) nop ) - (func $~lib/memory/memory.free (; 7 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/memory/memory.free (; 6 ;) (type $FUNCSIG$vi) (param $0 i32) local.get $0 call $~lib/allocator/arena/__mem_free ) - (func $~lib/allocator/arena/__mem_reset (; 8 ;) (type $FUNCSIG$v) + (func $~lib/allocator/arena/__mem_reset (; 7 ;) (type $FUNCSIG$v) global.get $~lib/allocator/arena/startOffset global.set $~lib/allocator/arena/offset ) - (func $~lib/memory/memory.reset (; 9 ;) (type $FUNCSIG$v) + (func $~lib/memory/memory.reset (; 8 ;) (type $FUNCSIG$v) call $~lib/allocator/arena/__mem_reset ) - (func $start:std/allocator_arena (; 10 ;) (type $FUNCSIG$v) + (func $start:std/allocator_arena (; 9 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -2021,9 +798,9 @@ unreachable end ) - (func $start (; 11 ;) (type $FUNCSIG$v) + (func $start (; 10 ;) (type $FUNCSIG$v) call $start:std/allocator_arena ) - (func $null (; 12 ;) (type $FUNCSIG$v) + (func $null (; 11 ;) (type $FUNCSIG$v) ) ) diff --git a/tests/compiler/std/array-access.optimized.wat b/tests/compiler/std/array-access.optimized.wat index 4a7de97b..191b024f 100644 --- a/tests/compiler/std/array-access.optimized.wat +++ b/tests/compiler/std/array-access.optimized.wat @@ -27,7 +27,7 @@ if i32.const 0 i32.const 16 - i32.const 97 + i32.const 96 i32.const 45 call $~lib/env/abort unreachable @@ -41,7 +41,7 @@ if i32.const 0 i32.const 16 - i32.const 100 + i32.const 99 i32.const 61 call $~lib/env/abort unreachable @@ -64,7 +64,7 @@ if i32.const 0 i32.const 16 - i32.const 100 + i32.const 99 i32.const 61 call $~lib/env/abort unreachable diff --git a/tests/compiler/std/array-access.untouched.wat b/tests/compiler/std/array-access.untouched.wat index 39ecd801..90a4ecc6 100644 --- a/tests/compiler/std/array-access.untouched.wat +++ b/tests/compiler/std/array-access.untouched.wat @@ -39,7 +39,7 @@ if i32.const 0 i32.const 16 - i32.const 97 + i32.const 96 i32.const 45 call $~lib/env/abort unreachable @@ -53,7 +53,7 @@ if i32.const 0 i32.const 16 - i32.const 100 + i32.const 99 i32.const 61 call $~lib/env/abort unreachable @@ -81,7 +81,7 @@ if i32.const 0 i32.const 16 - i32.const 100 + i32.const 99 i32.const 61 call $~lib/env/abort unreachable @@ -114,7 +114,7 @@ if i32.const 0 i32.const 16 - i32.const 97 + i32.const 96 i32.const 45 call $~lib/env/abort unreachable @@ -128,7 +128,7 @@ if i32.const 0 i32.const 16 - i32.const 100 + i32.const 99 i32.const 61 call $~lib/env/abort unreachable @@ -296,7 +296,7 @@ if i32.const 0 i32.const 16 - i32.const 97 + i32.const 96 i32.const 45 call $~lib/env/abort unreachable @@ -310,7 +310,7 @@ if i32.const 0 i32.const 16 - i32.const 100 + i32.const 99 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 d63addae..a59a5bd0 100644 --- a/tests/compiler/std/array-literal.optimized.wat +++ b/tests/compiler/std/array-literal.optimized.wat @@ -46,7 +46,7 @@ if i32.const 0 i32.const 136 - i32.const 100 + i32.const 99 i32.const 61 call $~lib/env/abort unreachable @@ -67,7 +67,7 @@ if i32.const 0 i32.const 136 - i32.const 100 + i32.const 99 i32.const 61 call $~lib/env/abort unreachable @@ -177,7 +177,7 @@ if i32.const 0 i32.const 296 - i32.const 117 + i32.const 82 i32.const 6 call $~lib/env/abort unreachable @@ -192,7 +192,7 @@ if i32.const 0 i32.const 296 - i32.const 119 + i32.const 84 i32.const 6 call $~lib/env/abort unreachable diff --git a/tests/compiler/std/array-literal.untouched.wat b/tests/compiler/std/array-literal.untouched.wat index 192f819e..49292eda 100644 --- a/tests/compiler/std/array-literal.untouched.wat +++ b/tests/compiler/std/array-literal.untouched.wat @@ -62,7 +62,7 @@ if i32.const 0 i32.const 136 - i32.const 100 + i32.const 99 i32.const 61 call $~lib/env/abort unreachable @@ -94,7 +94,7 @@ if i32.const 0 i32.const 136 - i32.const 100 + i32.const 99 i32.const 61 call $~lib/env/abort unreachable @@ -233,7 +233,7 @@ if i32.const 0 i32.const 296 - i32.const 117 + i32.const 82 i32.const 6 call $~lib/env/abort unreachable @@ -250,7 +250,7 @@ if i32.const 0 i32.const 296 - i32.const 119 + i32.const 84 i32.const 6 call $~lib/env/abort unreachable @@ -268,1208 +268,7 @@ (func $~lib/collector/dummy/__ref_unlink (; 14 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) nop ) - (func $~lib/util/memory/memcpy (; 15 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (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 - end - end - local.get $0 - 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.get $2 - 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.get $2 - i32.const 4 - 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 $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 - 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 $~lib/memory/memory.copy (; 16 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/memory/memory.copy (; 15 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -1480,28 +279,6 @@ 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 @@ -1700,7 +477,7 @@ end end ) - (func $~lib/runtime/runtime.newArray (; 17 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (func $~lib/runtime/runtime.newArray (; 16 ;) (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) @@ -1762,7 +539,7 @@ end local.get $4 ) - (func $std/array-literal/Ref#constructor (; 18 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $std/array-literal/Ref#constructor (; 17 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.eqz if @@ -1774,11 +551,11 @@ end local.get $0 ) - (func $~lib/array/Array#get:length (; 19 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/array/Array#get:length (; 18 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.load offset=12 ) - (func $std/array-literal/RefWithCtor#constructor (; 20 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $std/array-literal/RefWithCtor#constructor (; 19 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.eqz if @@ -1790,11 +567,11 @@ end local.get $0 ) - (func $~lib/array/Array#get:length (; 21 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/array/Array#get:length (; 20 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.load offset=12 ) - (func $start:std/array-literal (; 22 ;) (type $FUNCSIG$v) + (func $start:std/array-literal (; 21 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -2234,9 +1011,9 @@ unreachable end ) - (func $start (; 23 ;) (type $FUNCSIG$v) + (func $start (; 22 ;) (type $FUNCSIG$v) call $start:std/array-literal ) - (func $null (; 24 ;) (type $FUNCSIG$v) + (func $null (; 23 ;) (type $FUNCSIG$v) ) ) diff --git a/tests/compiler/std/array.optimized.wat b/tests/compiler/std/array.optimized.wat index aca7f14f..ec41dcb5 100644 --- a/tests/compiler/std/array.optimized.wat +++ b/tests/compiler/std/array.optimized.wat @@ -62,346 +62,348 @@ (data (i32.const 608) "\01\00\00\00\01\00\00\00\00\00\00\00\02\00\00\00\02") (data (i32.const 632) "\02\00\00\00\14") (data (i32.const 648) "\01\00\00\00\01\00\00\00\00\00\00\00\02\00\00\00\02") - (data (i32.const 672) "\02") - (data (i32.const 688) "\02") - (data (i32.const 704) "\04\00\00\00\10") - (data (i32.const 720) "\c0\02\00\00\c0\02") - (data (i32.const 736) "\02\00\00\00\14") - (data (i32.const 752) "\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") - (data (i32.const 776) "\02\00\00\00\14") - (data (i32.const 792) "\04\00\00\00\05\00\00\00\03\00\00\00\04\00\00\00\05") - (data (i32.const 816) "\02\00\00\00\14") - (data (i32.const 832) "\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") - (data (i32.const 856) "\02\00\00\00\14") - (data (i32.const 872) "\01\00\00\00\04\00\00\00\05\00\00\00\04\00\00\00\05") - (data (i32.const 896) "\02\00\00\00\14") - (data (i32.const 912) "\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") - (data (i32.const 936) "\02\00\00\00\14") - (data (i32.const 952) "\01\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00\05") - (data (i32.const 976) "\02\00\00\00\14") - (data (i32.const 992) "\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") - (data (i32.const 1016) "\02\00\00\00\14") - (data (i32.const 1032) "\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") - (data (i32.const 1056) "\02\00\00\00\14") - (data (i32.const 1072) "\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") - (data (i32.const 1096) "\02\00\00\00\14") - (data (i32.const 1112) "\04\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") - (data (i32.const 1136) "\02\00\00\00\14") - (data (i32.const 1152) "\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") - (data (i32.const 1176) "\02\00\00\00\14") - (data (i32.const 1192) "\01\00\00\00\04\00\00\00\03\00\00\00\04\00\00\00\05") - (data (i32.const 1216) "\02\00\00\00\14") - (data (i32.const 1232) "\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") - (data (i32.const 1256) "\02\00\00\00\14") - (data (i32.const 1272) "\01\00\00\00\03\00\00\00\04\00\00\00\04\00\00\00\05") - (data (i32.const 1296) "\02\00\00\00\14") - (data (i32.const 1312) "\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") - (data (i32.const 1336) "\02\00\00\00\14") - (data (i32.const 1352) "\04\00\00\00\05\00\00\00\03\00\00\00\04\00\00\00\05") - (data (i32.const 1376) "\02\00\00\00\14") - (data (i32.const 1392) "\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") - (data (i32.const 1416) "\02\00\00\00\14") - (data (i32.const 1432) "\04\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") - (data (i32.const 1456) "\02\00\00\00\14") - (data (i32.const 1472) "\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") - (data (i32.const 1496) "\02\00\00\00\14") - (data (i32.const 1512) "\01\00\00\00\03\00\00\00\03\00\00\00\04\00\00\00\05") - (data (i32.const 1536) "\02\00\00\00\14") - (data (i32.const 1552) "\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") - (data (i32.const 1576) "\02\00\00\00\14") - (data (i32.const 1592) "\01\00\00\00\03\00\00\00\04\00\00\00\04\00\00\00\05") - (data (i32.const 1616) "\02\00\00\00\14") - (data (i32.const 1632) "\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") - (data (i32.const 1656) "\02\00\00\00\14") - (data (i32.const 1672) "\01\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00\05") - (data (i32.const 1696) "\02\00\00\00\14") - (data (i32.const 1712) "\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") - (data (i32.const 1736) "\04\00\00\00\10") - (data (i32.const 1752) "\b0\06\00\00\b0\06\00\00\14\00\00\00\05") - (data (i32.const 1768) "\02\00\00\00\14") - (data (i32.const 1784) "\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") - (data (i32.const 1808) "\02") + (data (i32.const 672) "\01\00\00\00(") + (data (i32.const 688) "~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00r\00u\00n\00t\00i\00m\00e\00.\00t\00s") + (data (i32.const 728) "\02") + (data (i32.const 744) "\02") + (data (i32.const 760) "\04\00\00\00\10") + (data (i32.const 776) "\f8\02\00\00\f8\02") + (data (i32.const 792) "\02\00\00\00\14") + (data (i32.const 808) "\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") + (data (i32.const 832) "\02\00\00\00\14") + (data (i32.const 848) "\04\00\00\00\05\00\00\00\03\00\00\00\04\00\00\00\05") + (data (i32.const 872) "\02\00\00\00\14") + (data (i32.const 888) "\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") + (data (i32.const 912) "\02\00\00\00\14") + (data (i32.const 928) "\01\00\00\00\04\00\00\00\05\00\00\00\04\00\00\00\05") + (data (i32.const 952) "\02\00\00\00\14") + (data (i32.const 968) "\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") + (data (i32.const 992) "\02\00\00\00\14") + (data (i32.const 1008) "\01\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00\05") + (data (i32.const 1032) "\02\00\00\00\14") + (data (i32.const 1048) "\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") + (data (i32.const 1072) "\02\00\00\00\14") + (data (i32.const 1088) "\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") + (data (i32.const 1112) "\02\00\00\00\14") + (data (i32.const 1128) "\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") + (data (i32.const 1152) "\02\00\00\00\14") + (data (i32.const 1168) "\04\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") + (data (i32.const 1192) "\02\00\00\00\14") + (data (i32.const 1208) "\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") + (data (i32.const 1232) "\02\00\00\00\14") + (data (i32.const 1248) "\01\00\00\00\04\00\00\00\03\00\00\00\04\00\00\00\05") + (data (i32.const 1272) "\02\00\00\00\14") + (data (i32.const 1288) "\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") + (data (i32.const 1312) "\02\00\00\00\14") + (data (i32.const 1328) "\01\00\00\00\03\00\00\00\04\00\00\00\04\00\00\00\05") + (data (i32.const 1352) "\02\00\00\00\14") + (data (i32.const 1368) "\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") + (data (i32.const 1392) "\02\00\00\00\14") + (data (i32.const 1408) "\04\00\00\00\05\00\00\00\03\00\00\00\04\00\00\00\05") + (data (i32.const 1432) "\02\00\00\00\14") + (data (i32.const 1448) "\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") + (data (i32.const 1472) "\02\00\00\00\14") + (data (i32.const 1488) "\04\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") + (data (i32.const 1512) "\02\00\00\00\14") + (data (i32.const 1528) "\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") + (data (i32.const 1552) "\02\00\00\00\14") + (data (i32.const 1568) "\01\00\00\00\03\00\00\00\03\00\00\00\04\00\00\00\05") + (data (i32.const 1592) "\02\00\00\00\14") + (data (i32.const 1608) "\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") + (data (i32.const 1632) "\02\00\00\00\14") + (data (i32.const 1648) "\01\00\00\00\03\00\00\00\04\00\00\00\04\00\00\00\05") + (data (i32.const 1672) "\02\00\00\00\14") + (data (i32.const 1688) "\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") + (data (i32.const 1712) "\02\00\00\00\14") + (data (i32.const 1728) "\01\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00\05") + (data (i32.const 1752) "\02\00\00\00\14") + (data (i32.const 1768) "\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") + (data (i32.const 1792) "\04\00\00\00\10") + (data (i32.const 1808) "\e8\06\00\00\e8\06\00\00\14\00\00\00\05") (data (i32.const 1824) "\02\00\00\00\14") (data (i32.const 1840) "\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") - (data (i32.const 1864) "\02\00\00\00\0c") - (data (i32.const 1880) "\03\00\00\00\04\00\00\00\05") - (data (i32.const 1896) "\02\00\00\00\08") - (data (i32.const 1912) "\01\00\00\00\02") - (data (i32.const 1920) "\02\00\00\00\14") - (data (i32.const 1936) "\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") - (data (i32.const 1960) "\02\00\00\00\08") - (data (i32.const 1976) "\03\00\00\00\04") - (data (i32.const 1984) "\02\00\00\00\0c") - (data (i32.const 2000) "\01\00\00\00\02\00\00\00\05") - (data (i32.const 2016) "\02\00\00\00\14") - (data (i32.const 2032) "\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") - (data (i32.const 2056) "\02\00\00\00\04") - (data (i32.const 2072) "\01") - (data (i32.const 2080) "\02\00\00\00\10") - (data (i32.const 2096) "\02\00\00\00\03\00\00\00\04\00\00\00\05") - (data (i32.const 2112) "\02\00\00\00\14") - (data (i32.const 2128) "\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") - (data (i32.const 2152) "\02\00\00\00\04") - (data (i32.const 2168) "\05") - (data (i32.const 2176) "\02\00\00\00\10") - (data (i32.const 2192) "\01\00\00\00\02\00\00\00\03\00\00\00\04") - (data (i32.const 2208) "\02\00\00\00\14") - (data (i32.const 2224) "\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") - (data (i32.const 2248) "\02\00\00\00\08") - (data (i32.const 2264) "\04\00\00\00\05") - (data (i32.const 2272) "\02\00\00\00\0c") - (data (i32.const 2288) "\01\00\00\00\02\00\00\00\03") - (data (i32.const 2304) "\02\00\00\00\14") - (data (i32.const 2320) "\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") - (data (i32.const 2344) "\02\00\00\00\04") - (data (i32.const 2360) "\04") - (data (i32.const 2368) "\02\00\00\00\10") - (data (i32.const 2384) "\01\00\00\00\02\00\00\00\03\00\00\00\05") - (data (i32.const 2400) "\02\00\00\00\14") - (data (i32.const 2416) "\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") - (data (i32.const 2440) "\02\00\00\00\04") - (data (i32.const 2456) "\01") - (data (i32.const 2464) "\02\00\00\00\10") - (data (i32.const 2480) "\02\00\00\00\03\00\00\00\04\00\00\00\05") - (data (i32.const 2496) "\02\00\00\00\14") - (data (i32.const 2512) "\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") - (data (i32.const 2536) "\02") + (data (i32.const 1864) "\02") + (data (i32.const 1880) "\02\00\00\00\14") + (data (i32.const 1896) "\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") + (data (i32.const 1920) "\02\00\00\00\0c") + (data (i32.const 1936) "\03\00\00\00\04\00\00\00\05") + (data (i32.const 1952) "\02\00\00\00\08") + (data (i32.const 1968) "\01\00\00\00\02") + (data (i32.const 1976) "\02\00\00\00\14") + (data (i32.const 1992) "\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") + (data (i32.const 2016) "\02\00\00\00\08") + (data (i32.const 2032) "\03\00\00\00\04") + (data (i32.const 2040) "\02\00\00\00\0c") + (data (i32.const 2056) "\01\00\00\00\02\00\00\00\05") + (data (i32.const 2072) "\02\00\00\00\14") + (data (i32.const 2088) "\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") + (data (i32.const 2112) "\02\00\00\00\04") + (data (i32.const 2128) "\01") + (data (i32.const 2136) "\02\00\00\00\10") + (data (i32.const 2152) "\02\00\00\00\03\00\00\00\04\00\00\00\05") + (data (i32.const 2168) "\02\00\00\00\14") + (data (i32.const 2184) "\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") + (data (i32.const 2208) "\02\00\00\00\04") + (data (i32.const 2224) "\05") + (data (i32.const 2232) "\02\00\00\00\10") + (data (i32.const 2248) "\01\00\00\00\02\00\00\00\03\00\00\00\04") + (data (i32.const 2264) "\02\00\00\00\14") + (data (i32.const 2280) "\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") + (data (i32.const 2304) "\02\00\00\00\08") + (data (i32.const 2320) "\04\00\00\00\05") + (data (i32.const 2328) "\02\00\00\00\0c") + (data (i32.const 2344) "\01\00\00\00\02\00\00\00\03") + (data (i32.const 2360) "\02\00\00\00\14") + (data (i32.const 2376) "\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") + (data (i32.const 2400) "\02\00\00\00\04") + (data (i32.const 2416) "\04") + (data (i32.const 2424) "\02\00\00\00\10") + (data (i32.const 2440) "\01\00\00\00\02\00\00\00\03\00\00\00\05") + (data (i32.const 2456) "\02\00\00\00\14") + (data (i32.const 2472) "\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") + (data (i32.const 2496) "\02\00\00\00\04") + (data (i32.const 2512) "\01") + (data (i32.const 2520) "\02\00\00\00\10") + (data (i32.const 2536) "\02\00\00\00\03\00\00\00\04\00\00\00\05") (data (i32.const 2552) "\02\00\00\00\14") (data (i32.const 2568) "\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") - (data (i32.const 2592) "\02\00\00\00\14") - (data (i32.const 2608) "\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") - (data (i32.const 2632) "\02") + (data (i32.const 2592) "\02") + (data (i32.const 2608) "\02\00\00\00\14") + (data (i32.const 2624) "\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") (data (i32.const 2648) "\02\00\00\00\14") (data (i32.const 2664) "\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") - (data (i32.const 2688) "\02\00\00\00\14") - (data (i32.const 2704) "\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") - (data (i32.const 2728) "\02") + (data (i32.const 2688) "\02") + (data (i32.const 2704) "\02\00\00\00\14") + (data (i32.const 2720) "\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") (data (i32.const 2744) "\02\00\00\00\14") (data (i32.const 2760) "\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") - (data (i32.const 2784) "\02\00\00\00\14") - (data (i32.const 2800) "\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") - (data (i32.const 2824) "\02") + (data (i32.const 2784) "\02") + (data (i32.const 2800) "\02\00\00\00\14") + (data (i32.const 2816) "\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") (data (i32.const 2840) "\02\00\00\00\14") (data (i32.const 2856) "\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") - (data (i32.const 2880) "\02\00\00\00\14") - (data (i32.const 2896) "\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") - (data (i32.const 2920) "\02") + (data (i32.const 2880) "\02") + (data (i32.const 2896) "\02\00\00\00\14") + (data (i32.const 2912) "\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") (data (i32.const 2936) "\02\00\00\00\14") (data (i32.const 2952) "\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") - (data (i32.const 2976) "\01\00\00\00\18") - (data (i32.const 2992) "~\00l\00i\00b\00/\00m\00a\00t\00h\00.\00t\00s") - (data (i32.const 3016) "\01\00\00\00\ac") - (data (i32.const 3032) "A\00B\00C\00D\00E\00F\00G\00H\00I\00J\00K\00L\00M\00N\00O\00P\00Q\00R\00S\00T\00U\00V\00W\00X\00Y\00Z\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z\000\001\002\003\004\005\006\007\008\009\00_\00-\00,\00.\00+\00/\00\\\00[\00]\00{\00}\00(\00)\00<\00>\00*\00&\00$\00%\00^\00@\00#\00!\00?") - (data (i32.const 3208) "\02\00\00\00 ") - (data (i32.const 3226) "\80?\00\00\c0\7f\00\00\80\ff\00\00\80?\00\00\00\00\00\00\80\bf\00\00\00\c0\00\00\80\7f") - (data (i32.const 3256) "\t\00\00\00\10") - (data (i32.const 3272) "\98\0c\00\00\98\0c\00\00 \00\00\00\08") - (data (i32.const 3288) "\02\00\00\00 ") - (data (i32.const 3306) "\80\ff\00\00\00\c0\00\00\80\bf\00\00\00\00\00\00\80?\00\00\80?\00\00\80\7f\00\00\c0\7f") - (data (i32.const 3336) "\02\00\00\00@") - (data (i32.const 3358) "\f0?\00\00\00\00\00\00\f8\7f\00\00\00\00\00\00\f0\ff\05\00\00\00\00\00\f0?") - (data (i32.const 3398) "\f0\bf\00\00\00\00\00\00\00\c0\00\00\00\00\00\00\f0\7f") - (data (i32.const 3416) "\n\00\00\00\10") - (data (i32.const 3432) "\18\0d\00\00\18\0d\00\00@\00\00\00\08") - (data (i32.const 3448) "\02\00\00\00@") - (data (i32.const 3470) "\f0\ff\00\00\00\00\00\00\00\c0\00\00\00\00\00\00\f0\bf") - (data (i32.const 3502) "\f0?\05\00\00\00\00\00\f0?\00\00\00\00\00\00\f0\7f\00\00\00\00\00\00\f8\7f") - (data (i32.const 3528) "\02\00\00\00\14") - (data (i32.const 3544) "\01\00\00\00\fe\ff\ff\ff\ff\ff\ff\ff\00\00\00\00\02") - (data (i32.const 3568) "\04\00\00\00\10") - (data (i32.const 3584) "\d8\0d\00\00\d8\0d\00\00\14\00\00\00\05") - (data (i32.const 3600) "\02\00\00\00\14") - (data (i32.const 3616) "\fe\ff\ff\ff\ff\ff\ff\ff\00\00\00\00\01\00\00\00\02") - (data (i32.const 3640) "\02\00\00\00\14") - (data (i32.const 3656) "\01\00\00\00\ff\ff\ff\ff\fe\ff\ff\ff\00\00\00\00\02") - (data (i32.const 3680) "\08\00\00\00\10") - (data (i32.const 3696) "H\0e\00\00H\0e\00\00\14\00\00\00\05") - (data (i32.const 3712) "\02\00\00\00\14") - (data (i32.const 3732) "\01\00\00\00\02\00\00\00\fe\ff\ff\ff\ff\ff\ff\ff") - (data (i32.const 3752) "\02") - (data (i32.const 3768) "\04\00\00\00\10") - (data (i32.const 3784) "\b8\0e\00\00\b8\0e") - (data (i32.const 3800) "\02\00\00\00\04") - (data (i32.const 3816) "\01") + (data (i32.const 2976) "\02") + (data (i32.const 2992) "\02\00\00\00\14") + (data (i32.const 3008) "\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") + (data (i32.const 3032) "\01\00\00\00\18") + (data (i32.const 3048) "~\00l\00i\00b\00/\00m\00a\00t\00h\00.\00t\00s") + (data (i32.const 3072) "\01\00\00\00\ac") + (data (i32.const 3088) "A\00B\00C\00D\00E\00F\00G\00H\00I\00J\00K\00L\00M\00N\00O\00P\00Q\00R\00S\00T\00U\00V\00W\00X\00Y\00Z\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z\000\001\002\003\004\005\006\007\008\009\00_\00-\00,\00.\00+\00/\00\\\00[\00]\00{\00}\00(\00)\00<\00>\00*\00&\00$\00%\00^\00@\00#\00!\00?") + (data (i32.const 3264) "\02\00\00\00 ") + (data (i32.const 3282) "\80?\00\00\c0\7f\00\00\80\ff\00\00\80?\00\00\00\00\00\00\80\bf\00\00\00\c0\00\00\80\7f") + (data (i32.const 3312) "\t\00\00\00\10") + (data (i32.const 3328) "\d0\0c\00\00\d0\0c\00\00 \00\00\00\08") + (data (i32.const 3344) "\02\00\00\00 ") + (data (i32.const 3362) "\80\ff\00\00\00\c0\00\00\80\bf\00\00\00\00\00\00\80?\00\00\80?\00\00\80\7f\00\00\c0\7f") + (data (i32.const 3392) "\02\00\00\00@") + (data (i32.const 3414) "\f0?\00\00\00\00\00\00\f8\7f\00\00\00\00\00\00\f0\ff\05\00\00\00\00\00\f0?") + (data (i32.const 3454) "\f0\bf\00\00\00\00\00\00\00\c0\00\00\00\00\00\00\f0\7f") + (data (i32.const 3472) "\n\00\00\00\10") + (data (i32.const 3488) "P\0d\00\00P\0d\00\00@\00\00\00\08") + (data (i32.const 3504) "\02\00\00\00@") + (data (i32.const 3526) "\f0\ff\00\00\00\00\00\00\00\c0\00\00\00\00\00\00\f0\bf") + (data (i32.const 3558) "\f0?\05\00\00\00\00\00\f0?\00\00\00\00\00\00\f0\7f\00\00\00\00\00\00\f8\7f") + (data (i32.const 3584) "\02\00\00\00\14") + (data (i32.const 3600) "\01\00\00\00\fe\ff\ff\ff\ff\ff\ff\ff\00\00\00\00\02") + (data (i32.const 3624) "\04\00\00\00\10") + (data (i32.const 3640) "\10\0e\00\00\10\0e\00\00\14\00\00\00\05") + (data (i32.const 3656) "\02\00\00\00\14") + (data (i32.const 3672) "\fe\ff\ff\ff\ff\ff\ff\ff\00\00\00\00\01\00\00\00\02") + (data (i32.const 3696) "\02\00\00\00\14") + (data (i32.const 3712) "\01\00\00\00\ff\ff\ff\ff\fe\ff\ff\ff\00\00\00\00\02") + (data (i32.const 3736) "\08\00\00\00\10") + (data (i32.const 3752) "\80\0e\00\00\80\0e\00\00\14\00\00\00\05") + (data (i32.const 3768) "\02\00\00\00\14") + (data (i32.const 3788) "\01\00\00\00\02\00\00\00\fe\ff\ff\ff\ff\ff\ff\ff") + (data (i32.const 3808) "\02") (data (i32.const 3824) "\04\00\00\00\10") - (data (i32.const 3840) "\e8\0e\00\00\e8\0e\00\00\04\00\00\00\01") - (data (i32.const 3856) "\02\00\00\00\08") - (data (i32.const 3872) "\02\00\00\00\01") + (data (i32.const 3840) "\f0\0e\00\00\f0\0e") + (data (i32.const 3856) "\02\00\00\00\04") + (data (i32.const 3872) "\01") (data (i32.const 3880) "\04\00\00\00\10") - (data (i32.const 3896) " \0f\00\00 \0f\00\00\08\00\00\00\02") - (data (i32.const 3912) "\02\00\00\00\10") - (data (i32.const 3928) "\03\00\00\00\02\00\00\00\01") - (data (i32.const 3944) "\04\00\00\00\10") - (data (i32.const 3960) "X\0f\00\00X\0f\00\00\10\00\00\00\04") - (data (i32.const 3976) "\02\00\00\00\10") - (data (i32.const 3996) "\01\00\00\00\02\00\00\00\03") - (data (i32.const 4008) "\04\00\00\00\10") - (data (i32.const 4024) "\98\0f\00\00\98\0f\00\00\10\00\00\00\04") - (data (i32.const 4040) "\02\00\00\00\04") - (data (i32.const 4056) "\01") - (data (i32.const 4064) "\02\00\00\00\08") - (data (i32.const 4080) "\01\00\00\00\02") - (data (i32.const 4088) "\01\00\00\00\02") - (data (i32.const 4104) "a") - (data (i32.const 4112) "\01\00\00\00\02") - (data (i32.const 4128) "b") - (data (i32.const 4136) "\01\00\00\00\04") - (data (i32.const 4152) "a\00b") - (data (i32.const 4160) "\01\00\00\00\04") - (data (i32.const 4176) "b\00a") - (data (i32.const 4184) "\01") - (data (i32.const 4200) "\02\00\00\00\1c") - (data (i32.const 4216) "\08\10\00\00 \10\00\00\08\10\00\008\10\00\00P\10\00\00h\10") - (data (i32.const 4248) "\0e\00\00\00\10") - (data (i32.const 4264) "x\10\00\00x\10\00\00\1c\00\00\00\07") - (data (i32.const 4280) "\02\00\00\00\1c") - (data (i32.const 4296) "h\10\00\00\08\10\00\00\08\10\00\008\10\00\00 \10\00\00P\10") - (data (i32.const 4328) "\0e\00\00\00\10") - (data (i32.const 4344) "\c8\10\00\00\c8\10\00\00\1c\00\00\00\07") - (data (i32.const 4360) "\01\00\00\00\1c") - (data (i32.const 4376) "~\00l\00i\00b\00/\00s\00t\00r\00i\00n\00g\00.\00t\00s") - (data (i32.const 4408) "\01\00\00\00\08") - (data (i32.const 4424) "n\00u\00l\00l") - (data (i32.const 4432) "\02\00\00\00\02") - (data (i32.const 4448) "\01") - (data (i32.const 4456) "\01\00\00\00\08") - (data (i32.const 4472) "t\00r\00u\00e") - (data (i32.const 4480) "\01\00\00\00\n") - (data (i32.const 4496) "f\00a\00l\00s\00e") - (data (i32.const 4512) "\01\00\00\00\02") - (data (i32.const 4528) ",") - (data (i32.const 4536) "\02\00\00\00\02") - (data (i32.const 4552) "\01") - (data (i32.const 4560) "\01\00\00\00\14") - (data (i32.const 4576) "t\00r\00u\00e\00,\00f\00a\00l\00s\00e") - (data (i32.const 4600) "\02\00\00\00\0c") - (data (i32.const 4616) "\01\00\00\00\fe\ff\ff\ff\fd\ff\ff\ff") - (data (i32.const 4632) "\01\00\00\00\02") - (data (i32.const 4648) "0") - (data (i32.const 4656) "\02\00\00\00\90\01") - (data (i32.const 4672) "0\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 5072) "\08\00\00\00\10") - (data (i32.const 5088) "@\12\00\00@\12\00\00\90\01\00\00d") - (data (i32.const 5104) "\02\00\00\00\0c") - (data (i32.const 5120) "\01\00\00\00\fe\ff\ff\ff\fd\ff\ff\ff") - (data (i32.const 5136) "\01\00\00\00\n") - (data (i32.const 5152) "1\00-\002\00-\003") - (data (i32.const 5168) "\02\00\00\00\0c") - (data (i32.const 5184) "\01\00\00\00\02\00\00\00\03") - (data (i32.const 5200) "\01\00\00\00\02") - (data (i32.const 5216) "-") + (data (i32.const 3896) " \0f\00\00 \0f\00\00\04\00\00\00\01") + (data (i32.const 3912) "\02\00\00\00\08") + (data (i32.const 3928) "\02\00\00\00\01") + (data (i32.const 3936) "\04\00\00\00\10") + (data (i32.const 3952) "X\0f\00\00X\0f\00\00\08\00\00\00\02") + (data (i32.const 3968) "\02\00\00\00\10") + (data (i32.const 3984) "\03\00\00\00\02\00\00\00\01") + (data (i32.const 4000) "\04\00\00\00\10") + (data (i32.const 4016) "\90\0f\00\00\90\0f\00\00\10\00\00\00\04") + (data (i32.const 4032) "\02\00\00\00\10") + (data (i32.const 4052) "\01\00\00\00\02\00\00\00\03") + (data (i32.const 4064) "\04\00\00\00\10") + (data (i32.const 4080) "\d0\0f\00\00\d0\0f\00\00\10\00\00\00\04") + (data (i32.const 4096) "\02\00\00\00\04") + (data (i32.const 4112) "\01") + (data (i32.const 4120) "\02\00\00\00\08") + (data (i32.const 4136) "\01\00\00\00\02") + (data (i32.const 4144) "\01\00\00\00\02") + (data (i32.const 4160) "a") + (data (i32.const 4168) "\01\00\00\00\02") + (data (i32.const 4184) "b") + (data (i32.const 4192) "\01\00\00\00\04") + (data (i32.const 4208) "a\00b") + (data (i32.const 4216) "\01\00\00\00\04") + (data (i32.const 4232) "b\00a") + (data (i32.const 4240) "\01") + (data (i32.const 4256) "\02\00\00\00\1c") + (data (i32.const 4272) "@\10\00\00X\10\00\00@\10\00\00p\10\00\00\88\10\00\00\a0\10") + (data (i32.const 4304) "\0e\00\00\00\10") + (data (i32.const 4320) "\b0\10\00\00\b0\10\00\00\1c\00\00\00\07") + (data (i32.const 4336) "\02\00\00\00\1c") + (data (i32.const 4352) "\a0\10\00\00@\10\00\00@\10\00\00p\10\00\00X\10\00\00\88\10") + (data (i32.const 4384) "\0e\00\00\00\10") + (data (i32.const 4401) "\11\00\00\00\11\00\00\1c\00\00\00\07") + (data (i32.const 4416) "\01\00\00\00\1c") + (data (i32.const 4432) "~\00l\00i\00b\00/\00s\00t\00r\00i\00n\00g\00.\00t\00s") + (data (i32.const 4464) "\01\00\00\00\08") + (data (i32.const 4480) "n\00u\00l\00l") + (data (i32.const 4488) "\02\00\00\00\02") + (data (i32.const 4504) "\01") + (data (i32.const 4512) "\01\00\00\00\08") + (data (i32.const 4528) "t\00r\00u\00e") + (data (i32.const 4536) "\01\00\00\00\n") + (data (i32.const 4552) "f\00a\00l\00s\00e") + (data (i32.const 4568) "\01\00\00\00\02") + (data (i32.const 4584) ",") + (data (i32.const 4592) "\02\00\00\00\02") + (data (i32.const 4608) "\01") + (data (i32.const 4616) "\01\00\00\00\14") + (data (i32.const 4632) "t\00r\00u\00e\00,\00f\00a\00l\00s\00e") + (data (i32.const 4656) "\02\00\00\00\0c") + (data (i32.const 4672) "\01\00\00\00\fe\ff\ff\ff\fd\ff\ff\ff") + (data (i32.const 4688) "\01\00\00\00\02") + (data (i32.const 4704) "0") + (data (i32.const 4712) "\02\00\00\00\90\01") + (data (i32.const 4728) "0\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 5128) "\08\00\00\00\10") + (data (i32.const 5144) "x\12\00\00x\12\00\00\90\01\00\00d") + (data (i32.const 5160) "\02\00\00\00\0c") + (data (i32.const 5176) "\01\00\00\00\fe\ff\ff\ff\fd\ff\ff\ff") + (data (i32.const 5192) "\01\00\00\00\n") + (data (i32.const 5208) "1\00-\002\00-\003") (data (i32.const 5224) "\02\00\00\00\0c") (data (i32.const 5240) "\01\00\00\00\02\00\00\00\03") - (data (i32.const 5256) "\02\00\00\00\08") - (data (i32.const 5275) "\80\00\00\00\80") - (data (i32.const 5280) "\01\00\00\00\04") - (data (i32.const 5296) "_\00_") - (data (i32.const 5304) "\02\00\00\00\08") - (data (i32.const 5323) "\80\00\00\00\80") - (data (i32.const 5328) "\01\00\00\000") - (data (i32.const 5344) "-\002\001\004\007\004\008\003\006\004\008\00_\00_\00-\002\001\004\007\004\008\003\006\004\008") - (data (i32.const 5392) "\02\00\00\000") - (data (i32.const 5422) "\f0?\00\00\00\00\00\00\00\c0\00\00\00\00\00\00\f8\7f\00\00\00\00\00\00\f0\ff\00\00\00\00\00\00\f0\7f") - (data (i32.const 5456) "\01\00\00\00\04") - (data (i32.const 5472) ",\00 ") - (data (i32.const 5480) "\01\00\00\00\06") - (data (i32.const 5496) "0\00.\000") - (data (i32.const 5504) "\01\00\00\00\06") - (data (i32.const 5520) "N\00a\00N") - (data (i32.const 5528) "\01\00\00\00\12") - (data (i32.const 5544) "-\00I\00n\00f\00i\00n\00i\00t\00y") - (data (i32.const 5568) "\01\00\00\00\10") - (data (i32.const 5584) "I\00n\00f\00i\00n\00i\00t\00y") - (data (i32.const 5600) "\02\00\00\00\b8\02") - (data (i32.const 5616) "\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~anonymous|0 $~lib/util/sort/COMPARATOR~anonymous|0 $~lib/util/sort/COMPARATOR~anonymous|0 $~lib/util/sort/COMPARATOR~anonymous|0 $~lib/util/sort/COMPARATOR~anonymous|0 $~lib/util/sort/COMPARATOR~anonymous|0 $start:std/array~anonymous|44 $~lib/util/sort/COMPARATOR~anonymous|0 $start:std/array~anonymous|44 $start:std/array~anonymous|47 $start:std/array~anonymous|48 $~lib/util/sort/COMPARATOR<~lib/string/String | null>~anonymous|0 $~lib/util/sort/COMPARATOR<~lib/string/String | null>~anonymous|0) (global $~lib/allocator/arena/startOffset (mut i32) (i32.const 0)) @@ -413,10 +415,10 @@ (global $std/array/i (mut i32) (i32.const 0)) (global $std/array/other (mut i32) (i32.const 0)) (global $std/array/out (mut i32) (i32.const 0)) - (global $std/array/source (mut i32) (i32.const 720)) + (global $std/array/source (mut i32) (i32.const 776)) (global $std/array/cwArr (mut i32) (i32.const 0)) (global $std/array/includes (mut i32) (i32.const 0)) - (global $std/array/sarr (mut i32) (i32.const 1752)) + (global $std/array/sarr (mut i32) (i32.const 1808)) (global $~lib/argc (mut i32) (i32.const 0)) (global $std/array/every (mut i32) (i32.const 0)) (global $std/array/some (mut i32) (i32.const 0)) @@ -428,15 +430,15 @@ (global $~lib/math/random_state1_64 (mut i64) (i64.const 0)) (global $~lib/math/random_state0_32 (mut i32) (i32.const 0)) (global $~lib/math/random_state1_32 (mut i32) (i32.const 0)) - (global $std/array/f32ArrayTyped (mut i32) (i32.const 3272)) - (global $std/array/f64ArrayTyped (mut i32) (i32.const 3432)) - (global $std/array/i32ArrayTyped (mut i32) (i32.const 3584)) - (global $std/array/u32ArrayTyped (mut i32) (i32.const 3696)) - (global $std/array/reversed0 (mut i32) (i32.const 3784)) - (global $std/array/reversed1 (mut i32) (i32.const 3840)) - (global $std/array/reversed2 (mut i32) (i32.const 3896)) - (global $std/array/reversed4 (mut i32) (i32.const 3960)) - (global $std/array/expected4 (mut i32) (i32.const 4024)) + (global $std/array/f32ArrayTyped (mut i32) (i32.const 3328)) + (global $std/array/f64ArrayTyped (mut i32) (i32.const 3488)) + (global $std/array/i32ArrayTyped (mut i32) (i32.const 3640)) + (global $std/array/u32ArrayTyped (mut i32) (i32.const 3752)) + (global $std/array/reversed0 (mut i32) (i32.const 3840)) + (global $std/array/reversed1 (mut i32) (i32.const 3896)) + (global $std/array/reversed2 (mut i32) (i32.const 3952)) + (global $std/array/reversed4 (mut i32) (i32.const 4016)) + (global $std/array/expected4 (mut i32) (i32.const 4080)) (global $std/array/reversed64 (mut i32) (i32.const 0)) (global $std/array/reversed128 (mut i32) (i32.const 0)) (global $std/array/reversed1024 (mut i32) (i32.const 0)) @@ -446,8 +448,8 @@ (global $std/array/randomized257 (mut i32) (i32.const 0)) (global $std/array/reversedNested512 (mut i32) (i32.const 0)) (global $std/array/reversedElements512 (mut i32) (i32.const 0)) - (global $std/array/randomStringsActual (mut i32) (i32.const 4264)) - (global $std/array/randomStringsExpected (mut i32) (i32.const 4344)) + (global $std/array/randomStringsActual (mut i32) (i32.const 4320)) + (global $std/array/randomStringsExpected (mut i32) (i32.const 4400)) (global $std/array/randomStrings400 (mut i32) (i32.const 0)) (global $~lib/util/number/_frc_plus (mut i64) (i64.const 0)) (global $~lib/util/number/_frc_minus (mut i64) (i64.const 0)) @@ -782,12 +784,12 @@ (func $~lib/runtime/runtime.register (; 5 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) local.get $0 - i32.const 8060 + i32.const 8116 i32.le_u if i32.const 0 i32.const 80 - i32.const 117 + i32.const 82 i32.const 6 call $~lib/env/abort unreachable @@ -802,7 +804,7 @@ if i32.const 0 i32.const 80 - i32.const 119 + i32.const 84 i32.const 6 call $~lib/env/abort unreachable @@ -969,854 +971,7 @@ call $~lib/memory/memory.fill end ) - (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 $5 i32) - loop $continue|0 - local.get $1 - i32.const 3 - i32.and - local.get $2 - local.get $2 - select - if - local.get $0 - local.tee $3 - i32.const 1 - i32.add - local.set $0 - local.get $1 - local.tee $4 - i32.const 1 - i32.add - local.set $1 - local.get $3 - local.get $4 - i32.load8_u - i32.store8 - local.get $2 - i32.const 1 - i32.sub - local.set $2 - br $continue|0 - end - end - local.get $0 - i32.const 3 - i32.and - i32.eqz - if - loop $continue|1 - local.get $2 - i32.const 16 - i32.ge_u - 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.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 - br $continue|1 - end - end - local.get $2 - 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 $1 - i32.const 8 - i32.add - local.set $1 - local.get $0 - i32.const 8 - i32.add - local.set $0 - end - local.get $2 - i32.const 4 - i32.and - if - local.get $0 - local.get $1 - i32.load - i32.store - local.get $1 - i32.const 4 - i32.add - local.set $1 - local.get $0 - i32.const 4 - i32.add - local.set $0 - end - local.get $2 - i32.const 2 - i32.and - if - local.get $0 - local.get $1 - i32.load16_u - i32.store16 - local.get $1 - i32.const 2 - i32.add - local.set $1 - local.get $0 - i32.const 2 - i32.add - local.set $0 - end - local.get $2 - i32.const 1 - i32.and - if - local.get $0 - local.get $1 - i32.load8_u - i32.store8 - end - return - end - local.get $2 - i32.const 32 - i32.ge_u - if - block $break|2 - block $case2|2 - block $case1|2 - local.get $0 - i32.const 3 - i32.and - local.tee $3 - i32.const 1 - i32.ne - if - local.get $3 - i32.const 2 - i32.eq - br_if $case1|2 - local.get $3 - i32.const 3 - i32.eq - br_if $case2|2 - br $break|2 - end - local.get $1 - i32.load - local.set $5 - local.get $0 - local.get $1 - i32.load8_u - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.tee $0 - local.get $1 - i32.const 1 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.tee $3 - i32.const 1 - i32.add - local.set $0 - local.get $1 - i32.const 1 - i32.add - local.tee $4 - i32.const 1 - i32.add - local.set $1 - local.get $3 - local.get $4 - i32.load8_u - i32.store8 - local.get $2 - i32.const 3 - i32.sub - local.set $2 - loop $continue|3 - local.get $2 - i32.const 17 - i32.ge_u - if - local.get $0 - local.get $1 - i32.const 1 - i32.add - i32.load - local.tee $3 - i32.const 8 - i32.shl - local.get $5 - i32.const 24 - i32.shr_u - i32.or - i32.store - local.get $0 - i32.const 4 - i32.add - local.get $3 - i32.const 24 - i32.shr_u - local.get $1 - i32.const 5 - i32.add - i32.load - local.tee $3 - i32.const 8 - i32.shl - i32.or - i32.store - local.get $0 - i32.const 8 - i32.add - local.get $3 - i32.const 24 - i32.shr_u - local.get $1 - i32.const 9 - i32.add - i32.load - local.tee $3 - i32.const 8 - i32.shl - i32.or - i32.store - local.get $0 - i32.const 12 - i32.add - local.get $1 - i32.const 13 - i32.add - i32.load - local.tee $5 - i32.const 8 - i32.shl - local.get $3 - i32.const 24 - i32.shr_u - 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 - br $continue|3 - end - end - br $break|2 - end - local.get $1 - i32.load - local.set $5 - local.get $0 - local.get $1 - i32.load8_u - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.tee $3 - i32.const 1 - i32.add - local.set $0 - local.get $1 - i32.const 1 - i32.add - local.tee $4 - i32.const 1 - i32.add - local.set $1 - local.get $3 - local.get $4 - i32.load8_u - i32.store8 - local.get $2 - i32.const 2 - i32.sub - local.set $2 - loop $continue|4 - local.get $2 - i32.const 18 - i32.ge_u - if - local.get $0 - local.get $1 - i32.const 2 - i32.add - i32.load - local.tee $3 - i32.const 16 - i32.shl - local.get $5 - i32.const 16 - i32.shr_u - i32.or - i32.store - local.get $0 - i32.const 4 - i32.add - local.get $3 - i32.const 16 - i32.shr_u - local.get $1 - i32.const 6 - i32.add - i32.load - local.tee $3 - i32.const 16 - i32.shl - i32.or - i32.store - local.get $0 - i32.const 8 - i32.add - local.get $3 - i32.const 16 - i32.shr_u - local.get $1 - i32.const 10 - i32.add - i32.load - local.tee $3 - i32.const 16 - i32.shl - i32.or - i32.store - local.get $0 - i32.const 12 - i32.add - local.get $1 - i32.const 14 - i32.add - i32.load - local.tee $5 - i32.const 16 - i32.shl - local.get $3 - i32.const 16 - i32.shr_u - 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 - br $continue|4 - end - end - br $break|2 - end - local.get $1 - i32.load - local.set $5 - local.get $0 - local.tee $3 - i32.const 1 - i32.add - local.set $0 - local.get $1 - local.tee $4 - i32.const 1 - i32.add - local.set $1 - local.get $3 - local.get $4 - i32.load8_u - i32.store8 - local.get $2 - i32.const 1 - i32.sub - local.set $2 - loop $continue|5 - local.get $2 - i32.const 19 - i32.ge_u - if - local.get $0 - local.get $1 - i32.const 3 - i32.add - i32.load - local.tee $3 - i32.const 24 - i32.shl - local.get $5 - i32.const 8 - i32.shr_u - i32.or - i32.store - local.get $0 - i32.const 4 - i32.add - local.get $3 - i32.const 8 - i32.shr_u - local.get $1 - i32.const 7 - i32.add - i32.load - local.tee $3 - i32.const 24 - i32.shl - i32.or - i32.store - local.get $0 - i32.const 8 - i32.add - local.get $3 - i32.const 8 - i32.shr_u - local.get $1 - i32.const 11 - i32.add - i32.load - local.tee $3 - i32.const 24 - i32.shl - i32.or - i32.store - local.get $0 - i32.const 12 - i32.add - local.get $1 - i32.const 15 - i32.add - i32.load - local.tee $5 - i32.const 24 - i32.shl - local.get $3 - i32.const 8 - i32.shr_u - 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 - br $continue|5 - end - end - end - end - local.get $2 - i32.const 16 - i32.and - if - local.get $0 - local.get $1 - i32.load8_u - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.tee $0 - local.get $1 - i32.const 1 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.tee $0 - local.get $1 - i32.const 1 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.tee $0 - local.get $1 - i32.const 1 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.tee $0 - local.get $1 - i32.const 1 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.tee $0 - local.get $1 - i32.const 1 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.tee $0 - local.get $1 - i32.const 1 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.tee $0 - local.get $1 - i32.const 1 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.tee $0 - local.get $1 - i32.const 1 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.tee $0 - local.get $1 - i32.const 1 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.tee $0 - local.get $1 - i32.const 1 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.tee $0 - local.get $1 - i32.const 1 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.tee $0 - local.get $1 - i32.const 1 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.tee $0 - local.get $1 - i32.const 1 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.tee $0 - local.get $1 - i32.const 1 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.tee $3 - i32.const 1 - i32.add - local.set $0 - local.get $1 - i32.const 1 - i32.add - local.tee $4 - i32.const 1 - i32.add - local.set $1 - local.get $3 - local.get $4 - i32.load8_u - i32.store8 - end - local.get $2 - i32.const 8 - i32.and - if - local.get $0 - local.get $1 - i32.load8_u - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.tee $0 - local.get $1 - i32.const 1 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.tee $0 - local.get $1 - i32.const 1 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.tee $0 - local.get $1 - i32.const 1 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.tee $0 - local.get $1 - i32.const 1 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.tee $0 - local.get $1 - i32.const 1 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.tee $0 - local.get $1 - i32.const 1 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.tee $3 - i32.const 1 - i32.add - local.set $0 - local.get $1 - i32.const 1 - i32.add - local.tee $4 - i32.const 1 - i32.add - local.set $1 - local.get $3 - local.get $4 - i32.load8_u - i32.store8 - end - local.get $2 - i32.const 4 - i32.and - if - local.get $0 - local.get $1 - i32.load8_u - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.tee $0 - local.get $1 - i32.const 1 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.tee $0 - local.get $1 - i32.const 1 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.tee $3 - i32.const 1 - i32.add - local.set $0 - local.get $1 - i32.const 1 - i32.add - local.tee $4 - i32.const 1 - i32.add - local.set $1 - local.get $3 - local.get $4 - i32.load8_u - i32.store8 - end - local.get $2 - i32.const 2 - i32.and - if - local.get $0 - local.get $1 - i32.load8_u - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.tee $3 - i32.const 1 - i32.add - local.set $0 - local.get $1 - i32.const 1 - i32.add - local.tee $4 - i32.const 1 - i32.add - local.set $1 - local.get $3 - local.get $4 - i32.load8_u - i32.store8 - end - local.get $2 - i32.const 1 - i32.and - if - local.get $0 - local.get $1 - i32.load8_u - i32.store8 - end - ) - (func $~lib/memory/memory.copy (; 11 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/memory/memory.copy (; 10 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) block $~lib/util/memory/memmove|inlined.0 @@ -1824,29 +979,6 @@ local.get $1 i32.eq br_if $~lib/util/memory/memmove|inlined.0 - local.get $1 - local.get $2 - i32.add - local.get $0 - i32.le_u - local.tee $3 - i32.eqz - if - local.get $0 - local.get $2 - i32.add - local.get $1 - i32.le_u - local.set $3 - end - local.get $3 - 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 @@ -2010,7 +1142,7 @@ end end ) - (func $~lib/runtime/runtime.newArray (; 12 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (func $~lib/runtime/runtime.newArray (; 11 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) (local $4 i32) (local $5 i32) i32.const 16 @@ -2051,7 +1183,7 @@ end local.get $2 ) - (func $~lib/array/Array#__get (; 13 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#__get (; 12 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $1 local.get $0 i32.load offset=8 @@ -2059,7 +1191,7 @@ if i32.const 0 i32.const 272 - i32.const 100 + i32.const 99 i32.const 61 call $~lib/env/abort unreachable @@ -2070,7 +1202,7 @@ i32.add i32.load8_u ) - (func $std/array/isArraysEqual (; 14 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $std/array/isArraysEqual (; 13 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) local.get $0 @@ -2117,7 +1249,7 @@ end i32.const 1 ) - (func $~lib/array/Array#fill (; 15 ;) (type $FUNCSIG$viiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) + (func $~lib/array/Array#fill (; 14 ;) (type $FUNCSIG$viiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (local $4 i32) local.get $0 i32.load offset=4 @@ -2189,7 +1321,7 @@ end end ) - (func $~lib/array/Array#__get (; 16 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#__get (; 15 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $1 local.get $0 i32.load offset=8 @@ -2199,7 +1331,7 @@ if i32.const 0 i32.const 272 - i32.const 100 + i32.const 99 i32.const 61 call $~lib/env/abort unreachable @@ -2212,7 +1344,7 @@ i32.add i32.load ) - (func $std/array/isArraysEqual (; 17 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/array/isArraysEqual (; 16 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $2 i32.eqz @@ -2262,7 +1394,7 @@ end i32.const 1 ) - (func $~lib/runtime/runtime.reallocate (; 18 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/util/runtime/reallocate (; 17 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -2296,7 +1428,7 @@ i32.shl i32.const 0 local.get $0 - i32.const 8060 + i32.const 8116 i32.gt_u select local.get $3 @@ -2335,13 +1467,13 @@ i32.eq if local.get $0 - i32.const 8060 + i32.const 8116 i32.le_u if i32.const 0 - i32.const 80 - i32.const 77 - i32.const 10 + i32.const 688 + i32.const 74 + i32.const 8 call $~lib/env/abort unreachable end @@ -2366,7 +1498,7 @@ i32.store offset=4 local.get $0 ) - (func $~lib/array/ensureCapacity (; 19 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/array/ensureCapacity (; 18 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) local.get $1 @@ -2382,7 +1514,7 @@ if i32.const 0 i32.const 272 - i32.const 15 + i32.const 14 i32.const 64 call $~lib/env/abort unreachable @@ -2394,7 +1526,7 @@ i32.const 2 i32.shl local.tee $3 - call $~lib/runtime/runtime.reallocate + call $~lib/util/runtime/reallocate local.set $1 local.get $1 local.get $2 @@ -2415,7 +1547,7 @@ i32.store offset=8 end ) - (func $~lib/array/Array#push (; 20 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/array/Array#push (; 19 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) local.get $0 @@ -2438,7 +1570,7 @@ local.get $3 i32.store offset=12 ) - (func $~lib/array/Array#pop (; 21 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/array/Array#pop (; 20 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) local.get $0 @@ -2449,7 +1581,7 @@ if i32.const 0 i32.const 272 - i32.const 310 + i32.const 309 i32.const 20 call $~lib/env/abort unreachable @@ -2470,7 +1602,7 @@ i32.store offset=12 local.get $2 ) - (func $~lib/array/Array#concat (; 22 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#concat (; 21 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -2510,7 +1642,7 @@ call $~lib/memory/memory.copy local.get $4 ) - (func $~lib/array/Array#copyWithin (; 23 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (func $~lib/array/Array#copyWithin (; 22 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) (local $4 i32) (local $5 i32) local.get $0 @@ -2675,7 +1807,7 @@ end local.get $0 ) - (func $~lib/array/Array#unshift (; 24 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/array/Array#unshift (; 23 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) local.get $0 @@ -2704,7 +1836,7 @@ local.get $2 i32.store offset=12 ) - (func $~lib/array/Array#shift (; 25 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/array/Array#shift (; 24 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -2717,7 +1849,7 @@ if i32.const 0 i32.const 272 - i32.const 382 + i32.const 381 i32.const 20 call $~lib/env/abort unreachable @@ -2749,7 +1881,7 @@ i32.store offset=12 local.get $3 ) - (func $~lib/array/Array#reverse (; 26 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/array/Array#reverse (; 25 ;) (type $FUNCSIG$vi) (param $0 i32) (local $1 i32) (local $2 i32) local.get $0 @@ -2796,7 +1928,7 @@ end end ) - (func $~lib/array/Array#indexOf (; 27 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/array/Array#indexOf (; 26 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) local.get $0 @@ -2860,7 +1992,7 @@ end i32.const -1 ) - (func $~lib/array/Array#includes (; 28 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/array/Array#includes (; 27 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 local.get $1 local.get $2 @@ -2868,7 +2000,7 @@ i32.const 0 i32.ge_s ) - (func $~lib/array/Array#splice (; 29 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/array/Array#splice (; 28 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -2960,7 +2092,7 @@ i32.store offset=12 local.get $4 ) - (func $~lib/array/Array#__set (; 30 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/array/Array#__set (; 29 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) local.get $0 i32.load offset=12 @@ -2989,11 +2121,11 @@ i32.store offset=12 end ) - (func $start:std/array~anonymous|0 (; 31 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $start:std/array~anonymous|0 (; 30 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 i32.eqz ) - (func $~lib/array/Array#findIndex (; 32 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#findIndex (; 31 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -3041,17 +2173,17 @@ end i32.const -1 ) - (func $start:std/array~anonymous|1 (; 33 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $start:std/array~anonymous|1 (; 32 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 i32.const 1 i32.eq ) - (func $start:std/array~anonymous|2 (; 34 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $start:std/array~anonymous|2 (; 33 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 i32.const 100 i32.eq ) - (func $start:std/array~anonymous|3 (; 35 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $start:std/array~anonymous|3 (; 34 ;) (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 @@ -3059,7 +2191,7 @@ i32.const 100 i32.eq ) - (func $start:std/array~anonymous|5 (; 36 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $start:std/array~anonymous|5 (; 35 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $2 call $~lib/array/Array#pop drop @@ -3067,12 +2199,12 @@ i32.const 100 i32.eq ) - (func $start:std/array~anonymous|6 (; 37 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $start:std/array~anonymous|6 (; 36 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 i32.const 0 i32.ge_s ) - (func $~lib/array/Array#every (; 38 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#every (; 37 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -3120,12 +2252,12 @@ end i32.const 1 ) - (func $start:std/array~anonymous|7 (; 39 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $start:std/array~anonymous|7 (; 38 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 i32.const 0 i32.le_s ) - (func $start:std/array~anonymous|8 (; 40 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $start:std/array~anonymous|8 (; 39 ;) (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 @@ -3133,12 +2265,12 @@ i32.const 10 i32.lt_s ) - (func $start:std/array~anonymous|9 (; 41 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $start:std/array~anonymous|9 (; 40 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 i32.const 10 i32.lt_s ) - (func $start:std/array~anonymous|10 (; 42 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $start:std/array~anonymous|10 (; 41 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $2 call $~lib/array/Array#pop drop @@ -3146,12 +2278,12 @@ i32.const 3 i32.lt_s ) - (func $start:std/array~anonymous|11 (; 43 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $start:std/array~anonymous|11 (; 42 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 i32.const 3 i32.ge_s ) - (func $~lib/array/Array#some (; 44 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#some (; 43 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -3199,12 +2331,12 @@ end i32.const 0 ) - (func $start:std/array~anonymous|12 (; 45 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $start:std/array~anonymous|12 (; 44 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 i32.const -1 i32.le_s ) - (func $start:std/array~anonymous|13 (; 46 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $start:std/array~anonymous|13 (; 45 ;) (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 @@ -3212,12 +2344,12 @@ i32.const 10 i32.gt_s ) - (func $start:std/array~anonymous|14 (; 47 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $start:std/array~anonymous|14 (; 46 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 i32.const 10 i32.gt_s ) - (func $start:std/array~anonymous|15 (; 48 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $start:std/array~anonymous|15 (; 47 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $2 call $~lib/array/Array#pop drop @@ -3225,13 +2357,13 @@ i32.const 3 i32.gt_s ) - (func $start:std/array~anonymous|16 (; 49 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $start:std/array~anonymous|16 (; 48 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) global.get $std/array/i local.get $0 i32.add global.set $std/array/i ) - (func $~lib/array/Array#forEach (; 50 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/array/Array#forEach (; 49 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -3274,7 +2406,7 @@ unreachable end ) - (func $start:std/array~anonymous|17 (; 51 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $start:std/array~anonymous|17 (; 50 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) local.get $2 i32.const 100 call $~lib/array/Array#push @@ -3283,7 +2415,7 @@ i32.add global.set $std/array/i ) - (func $start:std/array~anonymous|19 (; 52 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $start:std/array~anonymous|19 (; 51 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) local.get $2 call $~lib/array/Array#pop drop @@ -3292,7 +2424,7 @@ i32.add global.set $std/array/i ) - (func $start:std/array~anonymous|20 (; 53 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $start:std/array~anonymous|20 (; 52 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) local.get $1 i32.eqz @@ -3389,11 +2521,11 @@ end end ) - (func $start:std/array~anonymous|21 (; 54 ;) (type $FUNCSIG$fiii) (param $0 i32) (param $1 i32) (param $2 i32) (result f32) + (func $start:std/array~anonymous|21 (; 53 ;) (type $FUNCSIG$fiii) (param $0 i32) (param $1 i32) (param $2 i32) (result f32) local.get $0 f32.convert_i32_s ) - (func $~lib/array/Array#map (; 55 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/array/Array#map (; 54 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -3451,7 +2583,7 @@ end local.get $4 ) - (func $~lib/array/Array#__get (; 56 ;) (type $FUNCSIG$fii) (param $0 i32) (param $1 i32) (result f32) + (func $~lib/array/Array#__get (; 55 ;) (type $FUNCSIG$fii) (param $0 i32) (param $1 i32) (result f32) local.get $1 local.get $0 i32.load offset=8 @@ -3461,7 +2593,7 @@ if i32.const 0 i32.const 272 - i32.const 100 + i32.const 99 i32.const 61 call $~lib/env/abort unreachable @@ -3474,7 +2606,7 @@ i32.add f32.load ) - (func $start:std/array~anonymous|22 (; 57 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $start:std/array~anonymous|22 (; 56 ;) (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 @@ -3484,7 +2616,7 @@ global.set $std/array/i local.get $0 ) - (func $~lib/array/Array#map (; 58 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/array/Array#map (; 57 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -3539,14 +2671,14 @@ end end ) - (func $start:std/array~anonymous|23 (; 59 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $start:std/array~anonymous|23 (; 58 ;) (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 (; 60 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $start:std/array~anonymous|24 (; 59 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $2 call $~lib/array/Array#pop drop @@ -3556,12 +2688,12 @@ global.set $std/array/i local.get $0 ) - (func $start:std/array~anonymous|25 (; 61 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $start:std/array~anonymous|25 (; 60 ;) (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 (; 62 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#filter (; 61 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -3617,7 +2749,7 @@ end local.get $4 ) - (func $start:std/array~anonymous|26 (; 63 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $start:std/array~anonymous|26 (; 62 ;) (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 @@ -3629,7 +2761,7 @@ i32.const 2 i32.ge_s ) - (func $start:std/array~anonymous|27 (; 64 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $start:std/array~anonymous|27 (; 63 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) global.get $std/array/i local.get $0 i32.add @@ -3638,7 +2770,7 @@ i32.const 2 i32.ge_s ) - (func $start:std/array~anonymous|28 (; 65 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $start:std/array~anonymous|28 (; 64 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $2 call $~lib/array/Array#pop drop @@ -3650,12 +2782,12 @@ i32.const 2 i32.ge_s ) - (func $start:std/array~anonymous|29 (; 66 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (func $start:std/array~anonymous|29 (; 65 ;) (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 (; 67 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/array/Array#reduce (; 66 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -3699,7 +2831,7 @@ end local.get $2 ) - (func $start:std/array~anonymous|31 (; 68 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (func $start:std/array~anonymous|31 (; 67 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) local.get $0 i32.eqz if @@ -3710,7 +2842,7 @@ end local.get $0 ) - (func $start:std/array~anonymous|32 (; 69 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (func $start:std/array~anonymous|32 (; 68 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) local.get $0 i32.eqz if @@ -3721,7 +2853,7 @@ end local.get $0 ) - (func $start:std/array~anonymous|33 (; 70 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (func $start:std/array~anonymous|33 (; 69 ;) (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 @@ -3729,7 +2861,7 @@ local.get $1 i32.add ) - (func $start:std/array~anonymous|35 (; 71 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (func $start:std/array~anonymous|35 (; 70 ;) (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 @@ -3737,7 +2869,7 @@ local.get $1 i32.add ) - (func $~lib/array/Array#reduceRight (; 72 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/array/Array#reduceRight (; 71 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $0 i32.load offset=12 @@ -3774,7 +2906,7 @@ end local.get $2 ) - (func $~lib/math/splitMix32 (; 73 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/math/splitMix32 (; 72 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.const 1831565813 i32.add @@ -3806,13 +2938,13 @@ i32.shr_u i32.xor ) - (func $~lib/math/NativeMath.seedRandom (; 74 ;) (type $FUNCSIG$vj) (param $0 i64) + (func $~lib/math/NativeMath.seedRandom (; 73 ;) (type $FUNCSIG$vj) (param $0 i64) (local $1 i64) local.get $0 i64.eqz if i32.const 0 - i32.const 2992 + i32.const 3048 i32.const 1021 i32.const 4 call $~lib/env/abort @@ -3871,7 +3003,7 @@ call $~lib/math/splitMix32 global.set $~lib/math/random_state1_32 ) - (func $~lib/util/sort/insertionSort (; 75 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/util/sort/insertionSort (; 74 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 f32) @@ -3953,7 +3085,7 @@ unreachable end ) - (func $~lib/util/sort/weakHeapSort (; 76 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/util/sort/weakHeapSort (; 75 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 f32) @@ -4209,7 +3341,7 @@ local.get $5 f32.store ) - (func $~lib/array/Array#sort (; 77 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/array/Array#sort (; 76 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 f32) (local $4 f32) @@ -4218,7 +3350,7 @@ if i32.const 0 i32.const 272 - i32.const 527 + i32.const 526 i32.const 4 call $~lib/env/abort unreachable @@ -4277,7 +3409,7 @@ call $~lib/util/sort/weakHeapSort end ) - (func $~lib/util/sort/COMPARATOR~anonymous|0 (; 78 ;) (type $FUNCSIG$iff) (param $0 f32) (param $1 f32) (result i32) + (func $~lib/util/sort/COMPARATOR~anonymous|0 (; 77 ;) (type $FUNCSIG$iff) (param $0 f32) (param $1 f32) (result i32) (local $2 i32) (local $3 i32) local.get $0 @@ -4306,7 +3438,7 @@ i32.lt_s i32.sub ) - (func $std/array/isArraysEqual (; 79 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $std/array/isArraysEqual (; 78 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 f32) (local $4 i32) @@ -4367,7 +3499,7 @@ end i32.const 1 ) - (func $~lib/util/sort/insertionSort (; 80 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/util/sort/insertionSort (; 79 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 f64) @@ -4449,7 +3581,7 @@ unreachable end ) - (func $~lib/util/sort/weakHeapSort (; 81 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/util/sort/weakHeapSort (; 80 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 f64) @@ -4705,7 +3837,7 @@ local.get $5 f64.store ) - (func $~lib/array/Array#sort (; 82 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/array/Array#sort (; 81 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 f64) (local $4 f64) @@ -4714,7 +3846,7 @@ if i32.const 0 i32.const 272 - i32.const 527 + i32.const 526 i32.const 4 call $~lib/env/abort unreachable @@ -4773,7 +3905,7 @@ call $~lib/util/sort/weakHeapSort end ) - (func $~lib/util/sort/COMPARATOR~anonymous|0 (; 83 ;) (type $FUNCSIG$idd) (param $0 f64) (param $1 f64) (result i32) + (func $~lib/util/sort/COMPARATOR~anonymous|0 (; 82 ;) (type $FUNCSIG$idd) (param $0 f64) (param $1 f64) (result i32) (local $2 i64) (local $3 i64) local.get $0 @@ -4802,7 +3934,7 @@ i64.lt_s i32.sub ) - (func $~lib/array/Array#__get (; 84 ;) (type $FUNCSIG$dii) (param $0 i32) (param $1 i32) (result f64) + (func $~lib/array/Array#__get (; 83 ;) (type $FUNCSIG$dii) (param $0 i32) (param $1 i32) (result f64) local.get $1 local.get $0 i32.load offset=8 @@ -4812,7 +3944,7 @@ if i32.const 0 i32.const 272 - i32.const 100 + i32.const 99 i32.const 61 call $~lib/env/abort unreachable @@ -4825,7 +3957,7 @@ i32.add f64.load ) - (func $std/array/isArraysEqual (; 85 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $std/array/isArraysEqual (; 84 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 f64) (local $4 i32) @@ -4886,7 +4018,7 @@ end i32.const 1 ) - (func $~lib/util/sort/insertionSort (; 86 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/util/sort/insertionSort (; 85 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -4968,7 +4100,7 @@ unreachable end ) - (func $~lib/util/sort/weakHeapSort (; 87 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/util/sort/weakHeapSort (; 86 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -5224,7 +4356,7 @@ local.get $1 i32.store ) - (func $~lib/array/Array#sort (; 88 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#sort (; 87 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -5233,7 +4365,7 @@ if i32.const 0 i32.const 272 - i32.const 527 + i32.const 526 i32.const 4 call $~lib/env/abort unreachable @@ -5295,12 +4427,12 @@ end local.get $0 ) - (func $~lib/util/sort/COMPARATOR~anonymous|0 (; 89 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/util/sort/COMPARATOR~anonymous|0 (; 88 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $0 local.get $1 i32.sub ) - (func $~lib/util/sort/COMPARATOR~anonymous|0 (; 90 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/util/sort/COMPARATOR~anonymous|0 (; 89 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $0 local.get $1 i32.gt_u @@ -5309,14 +4441,14 @@ i32.lt_u i32.sub ) - (func $~lib/array/Array.create (; 91 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/array/Array.create (; 90 ;) (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 45 + i32.const 44 i32.const 62 call $~lib/env/abort unreachable @@ -5337,7 +4469,7 @@ i32.store offset=12 local.get $0 ) - (func $std/array/createReverseOrderedArray (; 92 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $std/array/createReverseOrderedArray (; 91 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) local.get $0 @@ -5366,14 +4498,14 @@ end local.get $2 ) - (func $~lib/math/NativeMath.random (; 93 ;) (type $FUNCSIG$d) (result f64) + (func $~lib/math/NativeMath.random (; 92 ;) (type $FUNCSIG$d) (result f64) (local $0 i64) (local $1 i64) global.get $~lib/math/random_seeded i32.eqz if i32.const 0 - i32.const 2992 + i32.const 3048 i32.const 1030 i32.const 24 call $~lib/env/abort @@ -5413,7 +4545,7 @@ f64.const 1 f64.sub ) - (func $std/array/createRandomOrderedArray (; 94 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $std/array/createRandomOrderedArray (; 93 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) local.get $0 @@ -5442,7 +4574,7 @@ end local.get $2 ) - (func $std/array/isSorted (; 95 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $std/array/isSorted (; 94 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) i32.const 1 @@ -5484,7 +4616,7 @@ end i32.const 1 ) - (func $std/array/assertSorted (; 96 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $std/array/assertSorted (; 95 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) local.get $0 local.get $1 call $~lib/array/Array#sort @@ -5500,17 +4632,17 @@ unreachable end ) - (func $std/array/assertSortedDefault (; 97 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $std/array/assertSortedDefault (; 96 ;) (type $FUNCSIG$vi) (param $0 i32) local.get $0 i32.const 48 call $std/array/assertSorted ) - (func $start:std/array~anonymous|44 (; 98 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $start:std/array~anonymous|44 (; 97 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $1 local.get $0 i32.sub ) - (func $~lib/array/Array.create<~lib/array/Array> (; 99 ;) (type $FUNCSIG$i) (result i32) + (func $~lib/array/Array.create<~lib/array/Array> (; 98 ;) (type $FUNCSIG$i) (result i32) (local $0 i32) i32.const 512 i32.const 2 @@ -5528,7 +4660,7 @@ i32.store offset=12 local.get $0 ) - (func $~lib/array/Array<~lib/array/Array>#__set (; 100 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/array/Array<~lib/array/Array>#__set (; 99 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) local.get $1 @@ -5539,7 +4671,7 @@ if i32.const 0 i32.const 272 - i32.const 112 + i32.const 111 i32.const 38 call $~lib/env/abort unreachable @@ -5575,7 +4707,7 @@ i32.store offset=12 end ) - (func $std/array/createReverseOrderedNestedArray (; 101 ;) (type $FUNCSIG$i) (result i32) + (func $std/array/createReverseOrderedNestedArray (; 100 ;) (type $FUNCSIG$i) (result i32) (local $0 i32) (local $1 i32) (local $2 i32) @@ -5607,7 +4739,7 @@ end local.get $1 ) - (func $start:std/array~anonymous|47 (; 102 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $start:std/array~anonymous|47 (; 101 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $0 i32.const 0 call $~lib/array/Array#__get @@ -5616,7 +4748,7 @@ call $~lib/array/Array#__get i32.sub ) - (func $~lib/array/Array<~lib/array/Array>#sort (; 103 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array<~lib/array/Array>#sort (; 102 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -5625,7 +4757,7 @@ if i32.const 0 i32.const 272 - i32.const 527 + i32.const 526 i32.const 4 call $~lib/env/abort unreachable @@ -5677,7 +4809,7 @@ call $~lib/util/sort/insertionSort local.get $0 ) - (func $~lib/array/Array<~lib/array/Array>#__get (; 104 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array<~lib/array/Array>#__get (; 103 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $1 local.get $0 i32.load offset=12 @@ -5685,7 +4817,7 @@ if i32.const 0 i32.const 272 - i32.const 97 + i32.const 96 i32.const 45 call $~lib/env/abort unreachable @@ -5699,7 +4831,7 @@ if i32.const 0 i32.const 272 - i32.const 100 + i32.const 99 i32.const 61 call $~lib/env/abort unreachable @@ -5712,7 +4844,7 @@ i32.add i32.load ) - (func $std/array/isSorted<~lib/array/Array> (; 105 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $std/array/isSorted<~lib/array/Array> (; 104 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) i32.const 1 @@ -5754,7 +4886,7 @@ end i32.const 1 ) - (func $std/array/assertSorted<~lib/array/Array> (; 106 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $std/array/assertSorted<~lib/array/Array> (; 105 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) local.get $0 local.get $1 call $~lib/array/Array<~lib/array/Array>#sort @@ -5770,7 +4902,7 @@ unreachable end ) - (func $~lib/array/Array.create> (; 107 ;) (type $FUNCSIG$i) (result i32) + (func $~lib/array/Array.create> (; 106 ;) (type $FUNCSIG$i) (result i32) (local $0 i32) i32.const 512 i32.const 2 @@ -5788,7 +4920,7 @@ i32.store offset=12 local.get $0 ) - (func $std/array/createReverseOrderedElementsArray (; 108 ;) (type $FUNCSIG$i) (result i32) + (func $std/array/createReverseOrderedElementsArray (; 107 ;) (type $FUNCSIG$i) (result i32) (local $0 i32) (local $1 i32) (local $2 i32) @@ -5821,14 +4953,14 @@ end local.get $1 ) - (func $start:std/array~anonymous|48 (; 109 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $start:std/array~anonymous|48 (; 108 ;) (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 (; 110 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/util/string/compareImpl (; 109 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) loop $continue|0 local.get $2 @@ -5861,7 +4993,7 @@ end local.get $3 ) - (func $~lib/util/sort/COMPARATOR<~lib/string/String | null>~anonymous|0 (; 111 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/util/sort/COMPARATOR<~lib/string/String | null>~anonymous|0 (; 110 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -5937,7 +5069,7 @@ select call $~lib/util/string/compareImpl ) - (func $std/array/assertSorted<~lib/string/String | null>|trampoline (; 112 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $std/array/assertSorted<~lib/string/String | null>|trampoline (; 111 ;) (type $FUNCSIG$vi) (param $0 i32) (local $1 i32) block $1of1 block $0of1 @@ -5967,7 +5099,7 @@ unreachable end ) - (func $~lib/string/String.__eq (; 113 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/string/String.__eq (; 112 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) local.get $0 local.get $1 @@ -6013,7 +5145,7 @@ call $~lib/util/string/compareImpl i32.eqz ) - (func $std/array/isArraysEqual<~lib/string/String | null> (; 114 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $std/array/isArraysEqual<~lib/string/String | null> (; 113 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) local.get $0 @@ -6060,7 +5192,7 @@ end i32.const 1 ) - (func $~lib/array/Array.create<~lib/string/String> (; 115 ;) (type $FUNCSIG$i) (result i32) + (func $~lib/array/Array.create<~lib/string/String> (; 114 ;) (type $FUNCSIG$i) (result i32) (local $0 i32) i32.const 400 i32.const 2 @@ -6078,16 +5210,16 @@ i32.store offset=12 local.get $0 ) - (func $~lib/string/String#charAt (; 116 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/string/String#charAt (; 115 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) local.get $0 - i32.const 3020 + i32.const 3076 i32.load i32.const 1 i32.shr_u i32.ge_u if - i32.const 4200 + i32.const 4256 return end i32.const 2 @@ -6096,7 +5228,7 @@ local.get $0 i32.const 1 i32.shl - i32.const 3032 + i32.const 3088 i32.add i32.load16_u i32.store16 @@ -6104,12 +5236,12 @@ i32.const 1 call $~lib/runtime/runtime.register ) - (func $~lib/string/String#concat (; 117 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/string/String#concat (; 116 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) local.get $1 - i32.const 4424 + i32.const 4480 local.get $1 select local.tee $3 @@ -6134,7 +5266,7 @@ local.tee $2 i32.eqz if - i32.const 4200 + i32.const 4256 return end local.get $2 @@ -6153,18 +5285,18 @@ i32.const 1 call $~lib/runtime/runtime.register ) - (func $~lib/string/String.__concat (; 118 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/string/String.__concat (; 117 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $0 - i32.const 4424 + i32.const 4480 local.get $0 select local.get $1 call $~lib/string/String#concat ) - (func $std/array/createRandomString (; 119 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $std/array/createRandomString (; 118 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) - i32.const 4200 + i32.const 4256 local.set $1 loop $repeat|0 local.get $2 @@ -6173,7 +5305,7 @@ if local.get $1 call $~lib/math/NativeMath.random - i32.const 3020 + i32.const 3076 i32.load i32.const 1 i32.shr_u @@ -6193,7 +5325,7 @@ end local.get $1 ) - (func $std/array/createRandomStringArray (; 120 ;) (type $FUNCSIG$i) (result i32) + (func $std/array/createRandomStringArray (; 119 ;) (type $FUNCSIG$i) (result i32) (local $0 i32) (local $1 i32) call $~lib/array/Array.create<~lib/string/String> @@ -6220,7 +5352,7 @@ end local.get $1 ) - (func $~lib/string/String#substring (; 121 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/string/String#substring (; 120 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -6228,7 +5360,7 @@ i32.eqz if i32.const 0 - i32.const 4376 + i32.const 4432 i32.const 197 i32.const 4 call $~lib/env/abort @@ -6280,7 +5412,7 @@ local.tee $3 i32.eqz if - i32.const 4200 + i32.const 4256 return end local.get $2 @@ -6316,14 +5448,14 @@ i32.const 1 call $~lib/runtime/runtime.register ) - (func $~lib/runtime/runtime.discard (; 122 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/runtime/runtime.discard (; 121 ;) (type $FUNCSIG$vi) (param $0 i32) local.get $0 - i32.const 8060 + i32.const 8116 i32.le_u if i32.const 0 i32.const 80 - i32.const 103 + i32.const 68 i32.const 6 call $~lib/env/abort unreachable @@ -6337,13 +5469,13 @@ if i32.const 0 i32.const 80 - i32.const 105 + i32.const 70 i32.const 6 call $~lib/env/abort unreachable end ) - (func $~lib/array/Array#join_bool (; 123 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/array/Array#join_bool (; 122 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -6360,7 +5492,7 @@ i32.const 0 i32.lt_s if - i32.const 4200 + i32.const 4256 return end local.get $0 @@ -6369,14 +5501,14 @@ local.get $1 i32.eqz if - i32.const 4472 - i32.const 4496 + i32.const 4528 + i32.const 4552 local.get $3 i32.load8_u select return end - i32.const 4516 + i32.const 4572 i32.load i32.const 1 i32.shr_u @@ -6415,8 +5547,8 @@ i32.shl local.get $2 i32.add - i32.const 4472 - i32.const 4496 + i32.const 4528 + i32.const 4552 local.get $8 select local.get $6 @@ -6434,7 +5566,7 @@ i32.shl local.get $2 i32.add - i32.const 4528 + i32.const 4584 local.get $4 i32.const 1 i32.shl @@ -6467,8 +5599,8 @@ i32.shl local.get $2 i32.add - i32.const 4472 - i32.const 4496 + i32.const 4528 + i32.const 4552 local.get $3 select local.get $1 @@ -6495,7 +5627,7 @@ i32.const 1 call $~lib/runtime/runtime.register ) - (func $~lib/util/number/decimalCount32 (; 124 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/util/number/decimalCount32 (; 123 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.const 100000 i32.lt_u @@ -6549,10 +5681,10 @@ 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 (; 124 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) - i32.const 5092 + i32.const 5148 i32.load local.set $3 loop $continue|0 @@ -6659,14 +5791,14 @@ i32.store16 end ) - (func $~lib/util/number/itoa32 (; 126 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/util/number/itoa32 (; 125 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) local.get $0 i32.eqz if - i32.const 4648 + i32.const 4704 return end local.get $0 @@ -6701,7 +5833,7 @@ i32.const 1 call $~lib/runtime/runtime.register ) - (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 (; 126 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $1 i32.const 1 i32.shl @@ -6745,7 +5877,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 (; 127 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -6760,7 +5892,7 @@ i32.const 0 i32.lt_s if - i32.const 4200 + i32.const 4256 return end local.get $0 @@ -6863,18 +5995,18 @@ i32.const 1 call $~lib/runtime/runtime.register ) - (func $~lib/array/Array#join (; 129 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#join (; 128 ;) (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 (; 129 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) local.get $0 i32.eqz if - i32.const 4648 + i32.const 4704 return end local.get $0 @@ -6891,7 +6023,7 @@ i32.const 1 call $~lib/runtime/runtime.register ) - (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 (; 130 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $1 i32.const 1 i32.shl @@ -6915,7 +6047,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 (; 131 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -6930,7 +6062,7 @@ i32.const 0 i32.lt_s if - i32.const 4200 + i32.const 4256 return end local.get $0 @@ -7033,12 +6165,12 @@ i32.const 1 call $~lib/runtime/runtime.register ) - (func $~lib/array/Array#join (; 133 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#join (; 132 ;) (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 (; 133 ;) (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 i32) (local $9 i64) @@ -7073,7 +6205,7 @@ local.tee $7 call $~lib/util/number/decimalCount32 local.set $4 - i32.const 6644 + i32.const 6700 i32.load local.set $13 loop $continue|0 @@ -7453,7 +6585,7 @@ local.get $6 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 (; 134 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) local.get $2 @@ -7712,7 +6844,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 (; 135 ;) (type $FUNCSIG$iid) (param $0 i32) (param $1 f64) (result i32) (local $2 i64) (local $3 i32) (local $4 i64) @@ -7828,7 +6960,7 @@ i32.shl i32.sub global.set $~lib/util/number/_K - i32.const 6332 + i32.const 6388 i32.load local.get $3 i32.const 3 @@ -7836,7 +6968,7 @@ i32.add i64.load global.set $~lib/util/number/_frc_pow - i32.const 6556 + i32.const 6612 i32.load local.get $3 i32.const 1 @@ -8000,14 +7132,14 @@ local.get $10 i32.add ) - (func $~lib/util/number/dtoa (; 137 ;) (type $FUNCSIG$id) (param $0 f64) (result i32) + (func $~lib/util/number/dtoa (; 136 ;) (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 5496 + i32.const 5552 return end local.get $0 @@ -8020,11 +7152,11 @@ local.get $0 f64.ne if - i32.const 5520 + i32.const 5576 return end - i32.const 5544 - i32.const 5584 + i32.const 5600 + i32.const 5640 local.get $0 f64.const 0 f64.lt @@ -8045,7 +7177,7 @@ call $~lib/runtime/runtime.discard 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 (; 137 ;) (type $FUNCSIG$iiid) (param $0 i32) (param $1 i32) (param $2 f64) (result i32) (local $3 i32) local.get $1 i32.const 1 @@ -8099,8 +7231,8 @@ i32.add local.set $1 local.get $0 - i32.const 5544 - i32.const 5584 + i32.const 5600 + i32.const 5640 local.get $3 select local.get $1 @@ -8116,7 +7248,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 (; 138 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -8131,7 +7263,7 @@ i32.const 0 i32.lt_s if - i32.const 4200 + i32.const 4256 return end local.get $0 @@ -8145,7 +7277,7 @@ call $~lib/util/number/dtoa return end - i32.const 5460 + i32.const 5516 i32.load i32.const 1 i32.shr_u @@ -8187,7 +7319,7 @@ i32.shl local.get $1 i32.add - i32.const 5472 + i32.const 5528 local.get $4 i32.const 1 i32.shl @@ -8232,7 +7364,7 @@ i32.const 1 call $~lib/runtime/runtime.register ) - (func $~lib/array/Array<~lib/string/String>#join_str (; 140 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array<~lib/string/String>#join_str (; 139 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -8247,7 +7379,7 @@ i32.const 0 i32.lt_s if - i32.const 4200 + i32.const 4256 return end local.get $0 @@ -8402,18 +7534,18 @@ i32.const 1 call $~lib/runtime/runtime.register ) - (func $~lib/array/Array<~lib/string/String>#join (; 141 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array<~lib/string/String>#join (; 140 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $0 local.get $1 call $~lib/array/Array<~lib/string/String>#join_str ) - (func $std/array/Ref#constructor (; 142 ;) (type $FUNCSIG$i) (result i32) + (func $std/array/Ref#constructor (; 141 ;) (type $FUNCSIG$i) (result i32) i32.const 0 call $~lib/runtime/runtime.allocate i32.const 19 call $~lib/runtime/runtime.register ) - (func $~lib/array/Array#join_ref (; 143 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/array/Array#join_ref (; 142 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -8428,7 +7560,7 @@ i32.const 0 i32.lt_s if - i32.const 4200 + i32.const 4256 return end local.get $0 @@ -8437,10 +7569,10 @@ local.get $2 i32.eqz if - i32.const 6920 + i32.const 6976 return end - i32.const 4516 + i32.const 4572 i32.load i32.const 1 i32.shr_u @@ -8475,7 +7607,7 @@ i32.shl local.get $1 i32.add - i32.const 6920 + i32.const 6976 i32.const 30 call $~lib/memory/memory.copy local.get $0 @@ -8490,7 +7622,7 @@ i32.shl local.get $1 i32.add - i32.const 4528 + i32.const 4584 local.get $3 i32.const 1 i32.shl @@ -8520,7 +7652,7 @@ i32.shl local.get $1 i32.add - i32.const 6920 + i32.const 6976 i32.const 30 call $~lib/memory/memory.copy local.get $0 @@ -8546,12 +7678,12 @@ i32.const 1 call $~lib/runtime/runtime.register ) - (func $~lib/array/Array#toString (; 144 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/array/Array#toString (; 143 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 - i32.const 4528 + i32.const 4584 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 (; 144 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $1 i32.const 1 @@ -8606,7 +7738,7 @@ end local.get $2 ) - (func $~lib/array/Array#join_int (; 146 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/array/Array#join_int (; 145 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -8621,7 +7753,7 @@ i32.const 0 i32.lt_s if - i32.const 4200 + i32.const 4256 return end local.get $0 @@ -8635,7 +7767,7 @@ call $~lib/util/number/itoa32 return end - i32.const 4516 + i32.const 4572 i32.load i32.const 1 i32.shr_u @@ -8675,7 +7807,7 @@ i32.shl local.get $1 i32.add - i32.const 4528 + i32.const 4584 local.get $4 i32.const 1 i32.shl @@ -8718,7 +7850,7 @@ i32.const 1 call $~lib/runtime/runtime.register ) - (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 (; 146 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $1 i32.const 1 i32.shl @@ -8748,7 +7880,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 (; 147 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -8763,7 +7895,7 @@ i32.const 0 i32.lt_s if - i32.const 4200 + i32.const 4256 return end local.get $0 @@ -8777,7 +7909,7 @@ call $~lib/util/number/utoa32 return end - i32.const 4516 + i32.const 4572 i32.load i32.const 1 i32.shr_u @@ -8819,7 +7951,7 @@ i32.shl local.get $1 i32.add - i32.const 4528 + i32.const 4584 local.get $4 i32.const 1 i32.shl @@ -8864,7 +7996,7 @@ i32.const 1 call $~lib/runtime/runtime.register ) - (func $~lib/util/number/decimalCount64 (; 149 ;) (type $FUNCSIG$ij) (param $0 i64) (result i32) + (func $~lib/util/number/decimalCount64 (; 148 ;) (type $FUNCSIG$ij) (param $0 i64) (result i32) local.get $0 i64.const 1000000000000000 i64.lt_u @@ -8918,12 +8050,12 @@ 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 (; 149 ;) (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 5092 + i32.const 5148 i32.load local.set $3 loop $continue|0 @@ -9015,14 +8147,14 @@ 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 (; 150 ;) (type $FUNCSIG$ij) (param $0 i64) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) local.get $0 i64.eqz if - i32.const 4648 + i32.const 4704 return end local.get $0 @@ -9057,7 +8189,7 @@ i32.const 1 call $~lib/runtime/runtime.register ) - (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 (; 151 ;) (type $FUNCSIG$iiij) (param $0 i32) (param $1 i32) (param $2 i64) (result i32) (local $3 i32) local.get $1 i32.const 1 @@ -9097,7 +8229,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 (; 152 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -9112,7 +8244,7 @@ i32.const 0 i32.lt_s if - i32.const 4200 + i32.const 4256 return end local.get $0 @@ -9126,7 +8258,7 @@ call $~lib/util/number/utoa64 return end - i32.const 4516 + i32.const 4572 i32.load i32.const 1 i32.shr_u @@ -9168,7 +8300,7 @@ i32.shl local.get $1 i32.add - i32.const 4528 + i32.const 4584 local.get $4 i32.const 1 i32.shl @@ -9213,7 +8345,7 @@ i32.const 1 call $~lib/runtime/runtime.register ) - (func $~lib/util/number/itoa64 (; 154 ;) (type $FUNCSIG$ij) (param $0 i64) (result i32) + (func $~lib/util/number/itoa64 (; 153 ;) (type $FUNCSIG$ij) (param $0 i64) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -9221,7 +8353,7 @@ local.get $0 i64.eqz if - i32.const 4648 + i32.const 4704 return end block (result i32) @@ -9278,7 +8410,7 @@ i32.const 1 call $~lib/runtime/runtime.register ) - (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 (; 154 ;) (type $FUNCSIG$iiij) (param $0 i32) (param $1 i32) (param $2 i64) (result i32) (local $3 i32) (local $4 i32) local.get $1 @@ -9341,7 +8473,7 @@ end local.get $3 ) - (func $~lib/array/Array#join_int (; 156 ;) (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) @@ -9356,7 +8488,7 @@ i32.const 0 i32.lt_s if - i32.const 4200 + i32.const 4256 return end local.get $0 @@ -9370,7 +8502,7 @@ call $~lib/util/number/itoa64 return end - i32.const 4516 + i32.const 4572 i32.load i32.const 1 i32.shr_u @@ -9412,7 +8544,7 @@ i32.shl local.get $1 i32.add - i32.const 4528 + i32.const 4584 local.get $4 i32.const 1 i32.shl @@ -9457,12 +8589,12 @@ i32.const 1 call $~lib/runtime/runtime.register ) - (func $~lib/array/Array<~lib/string/String | null>#toString (; 157 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/array/Array<~lib/string/String | null>#toString (; 156 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 - i32.const 4528 + i32.const 4584 call $~lib/array/Array<~lib/string/String>#join ) - (func $~lib/array/Array<~lib/array/Array>#join_arr (; 158 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/array/Array<~lib/array/Array>#join_arr (; 157 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -9476,12 +8608,12 @@ i32.const 0 i32.lt_s if - i32.const 4200 + i32.const 4256 return end - i32.const 4200 + i32.const 4256 local.set $1 - i32.const 4516 + i32.const 4572 i32.load i32.const 1 i32.shr_u @@ -9497,10 +8629,10 @@ local.tee $0 if (result i32) local.get $0 - i32.const 4528 + i32.const 4584 call $~lib/array/Array#join else - i32.const 4200 + i32.const 4256 end return end @@ -9521,7 +8653,7 @@ if local.get $1 local.get $5 - i32.const 4528 + i32.const 4584 call $~lib/array/Array#join call $~lib/string/String.__concat local.set $1 @@ -9529,7 +8661,7 @@ local.get $4 if local.get $1 - i32.const 4528 + i32.const 4584 call $~lib/string/String.__concat local.set $1 end @@ -9550,14 +8682,14 @@ if (result i32) local.get $1 local.get $0 - i32.const 4528 + i32.const 4584 call $~lib/array/Array#join call $~lib/string/String.__concat else local.get $1 end ) - (func $~lib/util/number/itoa_stream (; 159 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/util/number/itoa_stream (; 158 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $1 i32.const 1 i32.shl @@ -9587,7 +8719,7 @@ call $~lib/util/number/utoa32_lut local.get $1 ) - (func $~lib/array/Array#join_int (; 160 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/array/Array#join_int (; 159 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -9602,7 +8734,7 @@ i32.const 0 i32.lt_s if - i32.const 4200 + i32.const 4256 return end local.get $0 @@ -9616,7 +8748,7 @@ call $~lib/util/number/utoa32 return end - i32.const 4516 + i32.const 4572 i32.load i32.const 1 i32.shr_u @@ -9656,7 +8788,7 @@ i32.shl local.get $1 i32.add - i32.const 4528 + i32.const 4584 local.get $4 i32.const 1 i32.shl @@ -9699,7 +8831,7 @@ i32.const 1 call $~lib/runtime/runtime.register ) - (func $~lib/array/Array<~lib/array/Array>#join_arr (; 161 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/array/Array<~lib/array/Array>#join_arr (; 160 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -9713,12 +8845,12 @@ i32.const 0 i32.lt_s if - i32.const 4200 + i32.const 4256 return end - i32.const 4200 + i32.const 4256 local.set $1 - i32.const 4516 + i32.const 4572 i32.load i32.const 1 i32.shr_u @@ -9736,7 +8868,7 @@ local.get $0 call $~lib/array/Array#join_int else - i32.const 4200 + i32.const 4256 end return end @@ -9764,7 +8896,7 @@ local.get $4 if local.get $1 - i32.const 4528 + i32.const 4584 call $~lib/string/String.__concat local.set $1 end @@ -9791,7 +8923,7 @@ local.get $1 end ) - (func $~lib/array/Array<~lib/array/Array>#join_arr (; 162 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/array/Array<~lib/array/Array>#join_arr (; 161 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -9805,12 +8937,12 @@ i32.const 0 i32.lt_s if - i32.const 4200 + i32.const 4256 return end - i32.const 4200 + i32.const 4256 local.set $1 - i32.const 4516 + i32.const 4572 i32.load i32.const 1 i32.shr_u @@ -9826,10 +8958,10 @@ local.tee $0 if (result i32) local.get $0 - i32.const 4528 + i32.const 4584 call $~lib/array/Array#join else - i32.const 4200 + i32.const 4256 end return end @@ -9850,7 +8982,7 @@ if local.get $1 local.get $5 - i32.const 4528 + i32.const 4584 call $~lib/array/Array#join call $~lib/string/String.__concat local.set $1 @@ -9858,7 +8990,7 @@ local.get $4 if local.get $1 - i32.const 4528 + i32.const 4584 call $~lib/string/String.__concat local.set $1 end @@ -9879,14 +9011,14 @@ if (result i32) local.get $1 local.get $0 - i32.const 4528 + i32.const 4584 call $~lib/array/Array#join call $~lib/string/String.__concat else local.get $1 end ) - (func $~lib/array/Array<~lib/array/Array<~lib/array/Array>>#join_arr (; 163 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/array/Array<~lib/array/Array<~lib/array/Array>>#join_arr (; 162 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -9900,12 +9032,12 @@ i32.const 0 i32.lt_s if - i32.const 4200 + i32.const 4256 return end - i32.const 4200 + i32.const 4256 local.set $1 - i32.const 4516 + i32.const 4572 i32.load i32.const 1 i32.shr_u @@ -9923,7 +9055,7 @@ local.get $0 call $~lib/array/Array<~lib/array/Array>#join_arr else - i32.const 4200 + i32.const 4256 end return end @@ -9951,7 +9083,7 @@ local.get $4 if local.get $1 - i32.const 4528 + i32.const 4584 call $~lib/string/String.__concat local.set $1 end @@ -9978,11 +9110,11 @@ local.get $1 end ) - (func $start:std/array (; 164 ;) (type $FUNCSIG$v) + (func $start:std/array (; 163 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) - i32.const 8064 + i32.const 8120 global.set $~lib/allocator/arena/startOffset global.get $~lib/allocator/arena/startOffset global.set $~lib/allocator/arena/offset @@ -10574,7 +9706,7 @@ i32.const 0 i32.const 2 i32.const 4 - i32.const 688 + i32.const 744 call $~lib/runtime/runtime.newArray call $~lib/array/Array#concat drop @@ -10833,7 +9965,7 @@ i32.const 5 i32.const 2 i32.const 4 - i32.const 752 + i32.const 808 call $~lib/runtime/runtime.newArray global.set $std/array/cwArr global.get $std/array/cwArr @@ -10844,7 +9976,7 @@ i32.const 5 i32.const 2 i32.const 4 - i32.const 792 + i32.const 848 call $~lib/runtime/runtime.newArray i32.const 0 call $std/array/isArraysEqual @@ -10860,7 +9992,7 @@ i32.const 5 i32.const 2 i32.const 4 - i32.const 832 + i32.const 888 call $~lib/runtime/runtime.newArray global.set $std/array/cwArr global.get $std/array/cwArr @@ -10871,7 +10003,7 @@ i32.const 5 i32.const 2 i32.const 4 - i32.const 872 + i32.const 928 call $~lib/runtime/runtime.newArray i32.const 0 call $std/array/isArraysEqual @@ -10887,7 +10019,7 @@ i32.const 5 i32.const 2 i32.const 4 - i32.const 912 + i32.const 968 call $~lib/runtime/runtime.newArray global.set $std/array/cwArr global.get $std/array/cwArr @@ -10898,7 +10030,7 @@ i32.const 5 i32.const 2 i32.const 4 - i32.const 952 + i32.const 1008 call $~lib/runtime/runtime.newArray i32.const 0 call $std/array/isArraysEqual @@ -10914,7 +10046,7 @@ i32.const 5 i32.const 2 i32.const 4 - i32.const 992 + i32.const 1048 call $~lib/runtime/runtime.newArray global.set $std/array/cwArr global.get $std/array/cwArr @@ -10925,7 +10057,7 @@ i32.const 5 i32.const 2 i32.const 4 - i32.const 1032 + i32.const 1088 call $~lib/runtime/runtime.newArray i32.const 0 call $std/array/isArraysEqual @@ -10941,7 +10073,7 @@ i32.const 5 i32.const 2 i32.const 4 - i32.const 1072 + i32.const 1128 call $~lib/runtime/runtime.newArray global.set $std/array/cwArr global.get $std/array/cwArr @@ -10952,7 +10084,7 @@ i32.const 5 i32.const 2 i32.const 4 - i32.const 1112 + i32.const 1168 call $~lib/runtime/runtime.newArray i32.const 0 call $std/array/isArraysEqual @@ -10968,7 +10100,7 @@ i32.const 5 i32.const 2 i32.const 4 - i32.const 1152 + i32.const 1208 call $~lib/runtime/runtime.newArray global.set $std/array/cwArr global.get $std/array/cwArr @@ -10979,7 +10111,7 @@ i32.const 5 i32.const 2 i32.const 4 - i32.const 1192 + i32.const 1248 call $~lib/runtime/runtime.newArray i32.const 0 call $std/array/isArraysEqual @@ -10995,7 +10127,7 @@ i32.const 5 i32.const 2 i32.const 4 - i32.const 1232 + i32.const 1288 call $~lib/runtime/runtime.newArray global.set $std/array/cwArr global.get $std/array/cwArr @@ -11006,7 +10138,7 @@ i32.const 5 i32.const 2 i32.const 4 - i32.const 1272 + i32.const 1328 call $~lib/runtime/runtime.newArray i32.const 0 call $std/array/isArraysEqual @@ -11022,7 +10154,7 @@ i32.const 5 i32.const 2 i32.const 4 - i32.const 1312 + i32.const 1368 call $~lib/runtime/runtime.newArray global.set $std/array/cwArr global.get $std/array/cwArr @@ -11033,7 +10165,7 @@ i32.const 5 i32.const 2 i32.const 4 - i32.const 1352 + i32.const 1408 call $~lib/runtime/runtime.newArray i32.const 0 call $std/array/isArraysEqual @@ -11049,7 +10181,7 @@ i32.const 5 i32.const 2 i32.const 4 - i32.const 1392 + i32.const 1448 call $~lib/runtime/runtime.newArray global.set $std/array/cwArr global.get $std/array/cwArr @@ -11060,7 +10192,7 @@ i32.const 5 i32.const 2 i32.const 4 - i32.const 1432 + i32.const 1488 call $~lib/runtime/runtime.newArray i32.const 0 call $std/array/isArraysEqual @@ -11076,7 +10208,7 @@ i32.const 5 i32.const 2 i32.const 4 - i32.const 1472 + i32.const 1528 call $~lib/runtime/runtime.newArray global.set $std/array/cwArr global.get $std/array/cwArr @@ -11087,7 +10219,7 @@ i32.const 5 i32.const 2 i32.const 4 - i32.const 1512 + i32.const 1568 call $~lib/runtime/runtime.newArray i32.const 0 call $std/array/isArraysEqual @@ -11103,7 +10235,7 @@ i32.const 5 i32.const 2 i32.const 4 - i32.const 1552 + i32.const 1608 call $~lib/runtime/runtime.newArray global.set $std/array/cwArr global.get $std/array/cwArr @@ -11114,7 +10246,7 @@ i32.const 5 i32.const 2 i32.const 4 - i32.const 1592 + i32.const 1648 call $~lib/runtime/runtime.newArray i32.const 0 call $std/array/isArraysEqual @@ -11130,7 +10262,7 @@ i32.const 5 i32.const 2 i32.const 4 - i32.const 1632 + i32.const 1688 call $~lib/runtime/runtime.newArray global.set $std/array/cwArr global.get $std/array/cwArr @@ -11141,7 +10273,7 @@ i32.const 5 i32.const 2 i32.const 4 - i32.const 1672 + i32.const 1728 call $~lib/runtime/runtime.newArray i32.const 0 call $std/array/isArraysEqual @@ -11969,7 +11101,7 @@ i32.const 5 i32.const 2 i32.const 4 - i32.const 1784 + i32.const 1840 call $~lib/runtime/runtime.newArray i32.const 0 call $std/array/isArraysEqual @@ -11986,7 +11118,7 @@ i32.const 0 i32.const 2 i32.const 4 - i32.const 1824 + i32.const 1880 call $~lib/runtime/runtime.newArray i32.const 0 call $std/array/isArraysEqual @@ -12002,7 +11134,7 @@ i32.const 5 i32.const 2 i32.const 4 - i32.const 1840 + i32.const 1896 call $~lib/runtime/runtime.newArray global.set $std/array/sarr global.get $std/array/sarr @@ -12012,7 +11144,7 @@ i32.const 3 i32.const 2 i32.const 4 - i32.const 1880 + i32.const 1936 call $~lib/runtime/runtime.newArray i32.const 0 call $std/array/isArraysEqual @@ -12029,7 +11161,7 @@ i32.const 2 i32.const 2 i32.const 4 - i32.const 1912 + i32.const 1968 call $~lib/runtime/runtime.newArray i32.const 0 call $std/array/isArraysEqual @@ -12045,7 +11177,7 @@ i32.const 5 i32.const 2 i32.const 4 - i32.const 1936 + i32.const 1992 call $~lib/runtime/runtime.newArray global.set $std/array/sarr global.get $std/array/sarr @@ -12055,7 +11187,7 @@ i32.const 2 i32.const 2 i32.const 4 - i32.const 1976 + i32.const 2032 call $~lib/runtime/runtime.newArray i32.const 0 call $std/array/isArraysEqual @@ -12072,7 +11204,7 @@ i32.const 3 i32.const 2 i32.const 4 - i32.const 2000 + i32.const 2056 call $~lib/runtime/runtime.newArray i32.const 0 call $std/array/isArraysEqual @@ -12088,7 +11220,7 @@ i32.const 5 i32.const 2 i32.const 4 - i32.const 2032 + i32.const 2088 call $~lib/runtime/runtime.newArray global.set $std/array/sarr global.get $std/array/sarr @@ -12098,7 +11230,7 @@ i32.const 1 i32.const 2 i32.const 4 - i32.const 2072 + i32.const 2128 call $~lib/runtime/runtime.newArray i32.const 0 call $std/array/isArraysEqual @@ -12115,7 +11247,7 @@ i32.const 4 i32.const 2 i32.const 4 - i32.const 2096 + i32.const 2152 call $~lib/runtime/runtime.newArray i32.const 0 call $std/array/isArraysEqual @@ -12131,7 +11263,7 @@ i32.const 5 i32.const 2 i32.const 4 - i32.const 2128 + i32.const 2184 call $~lib/runtime/runtime.newArray global.set $std/array/sarr global.get $std/array/sarr @@ -12141,7 +11273,7 @@ i32.const 1 i32.const 2 i32.const 4 - i32.const 2168 + i32.const 2224 call $~lib/runtime/runtime.newArray i32.const 0 call $std/array/isArraysEqual @@ -12158,7 +11290,7 @@ i32.const 4 i32.const 2 i32.const 4 - i32.const 2192 + i32.const 2248 call $~lib/runtime/runtime.newArray i32.const 0 call $std/array/isArraysEqual @@ -12174,7 +11306,7 @@ i32.const 5 i32.const 2 i32.const 4 - i32.const 2224 + i32.const 2280 call $~lib/runtime/runtime.newArray global.set $std/array/sarr global.get $std/array/sarr @@ -12184,7 +11316,7 @@ i32.const 2 i32.const 2 i32.const 4 - i32.const 2264 + i32.const 2320 call $~lib/runtime/runtime.newArray i32.const 0 call $std/array/isArraysEqual @@ -12201,7 +11333,7 @@ i32.const 3 i32.const 2 i32.const 4 - i32.const 2288 + i32.const 2344 call $~lib/runtime/runtime.newArray i32.const 0 call $std/array/isArraysEqual @@ -12217,7 +11349,7 @@ i32.const 5 i32.const 2 i32.const 4 - i32.const 2320 + i32.const 2376 call $~lib/runtime/runtime.newArray global.set $std/array/sarr global.get $std/array/sarr @@ -12227,7 +11359,7 @@ i32.const 1 i32.const 2 i32.const 4 - i32.const 2360 + i32.const 2416 call $~lib/runtime/runtime.newArray i32.const 0 call $std/array/isArraysEqual @@ -12244,7 +11376,7 @@ i32.const 4 i32.const 2 i32.const 4 - i32.const 2384 + i32.const 2440 call $~lib/runtime/runtime.newArray i32.const 0 call $std/array/isArraysEqual @@ -12260,7 +11392,7 @@ i32.const 5 i32.const 2 i32.const 4 - i32.const 2416 + i32.const 2472 call $~lib/runtime/runtime.newArray global.set $std/array/sarr global.get $std/array/sarr @@ -12270,7 +11402,7 @@ i32.const 1 i32.const 2 i32.const 4 - i32.const 2456 + i32.const 2512 call $~lib/runtime/runtime.newArray i32.const 0 call $std/array/isArraysEqual @@ -12287,7 +11419,7 @@ i32.const 4 i32.const 2 i32.const 4 - i32.const 2480 + i32.const 2536 call $~lib/runtime/runtime.newArray i32.const 0 call $std/array/isArraysEqual @@ -12303,7 +11435,7 @@ i32.const 5 i32.const 2 i32.const 4 - i32.const 2512 + i32.const 2568 call $~lib/runtime/runtime.newArray global.set $std/array/sarr global.get $std/array/sarr @@ -12313,7 +11445,7 @@ i32.const 0 i32.const 2 i32.const 4 - i32.const 2552 + i32.const 2608 call $~lib/runtime/runtime.newArray i32.const 0 call $std/array/isArraysEqual @@ -12330,7 +11462,7 @@ i32.const 5 i32.const 2 i32.const 4 - i32.const 2568 + i32.const 2624 call $~lib/runtime/runtime.newArray i32.const 0 call $std/array/isArraysEqual @@ -12346,7 +11478,7 @@ i32.const 5 i32.const 2 i32.const 4 - i32.const 2608 + i32.const 2664 call $~lib/runtime/runtime.newArray global.set $std/array/sarr global.get $std/array/sarr @@ -12356,7 +11488,7 @@ i32.const 0 i32.const 2 i32.const 4 - i32.const 2648 + i32.const 2704 call $~lib/runtime/runtime.newArray i32.const 0 call $std/array/isArraysEqual @@ -12373,7 +11505,7 @@ i32.const 5 i32.const 2 i32.const 4 - i32.const 2664 + i32.const 2720 call $~lib/runtime/runtime.newArray i32.const 0 call $std/array/isArraysEqual @@ -12389,7 +11521,7 @@ i32.const 5 i32.const 2 i32.const 4 - i32.const 2704 + i32.const 2760 call $~lib/runtime/runtime.newArray global.set $std/array/sarr global.get $std/array/sarr @@ -12399,7 +11531,7 @@ i32.const 0 i32.const 2 i32.const 4 - i32.const 2744 + i32.const 2800 call $~lib/runtime/runtime.newArray i32.const 0 call $std/array/isArraysEqual @@ -12416,7 +11548,7 @@ i32.const 5 i32.const 2 i32.const 4 - i32.const 2760 + i32.const 2816 call $~lib/runtime/runtime.newArray i32.const 0 call $std/array/isArraysEqual @@ -12432,7 +11564,7 @@ i32.const 5 i32.const 2 i32.const 4 - i32.const 2800 + i32.const 2856 call $~lib/runtime/runtime.newArray global.set $std/array/sarr global.get $std/array/sarr @@ -12442,7 +11574,7 @@ i32.const 0 i32.const 2 i32.const 4 - i32.const 2840 + i32.const 2896 call $~lib/runtime/runtime.newArray i32.const 0 call $std/array/isArraysEqual @@ -12459,7 +11591,7 @@ i32.const 5 i32.const 2 i32.const 4 - i32.const 2856 + i32.const 2912 call $~lib/runtime/runtime.newArray i32.const 0 call $std/array/isArraysEqual @@ -12475,7 +11607,7 @@ i32.const 5 i32.const 2 i32.const 4 - i32.const 2896 + i32.const 2952 call $~lib/runtime/runtime.newArray global.set $std/array/sarr global.get $std/array/sarr @@ -12485,7 +11617,7 @@ i32.const 0 i32.const 2 i32.const 4 - i32.const 2936 + i32.const 2992 call $~lib/runtime/runtime.newArray i32.const 0 call $std/array/isArraysEqual @@ -12502,7 +11634,7 @@ i32.const 5 i32.const 2 i32.const 4 - i32.const 2952 + i32.const 3008 call $~lib/runtime/runtime.newArray i32.const 0 call $std/array/isArraysEqual @@ -13606,7 +12738,7 @@ i32.const 8 i32.const 2 i32.const 9 - i32.const 3304 + i32.const 3360 call $~lib/runtime/runtime.newArray call $std/array/isArraysEqual i32.eqz @@ -13642,7 +12774,7 @@ i32.const 8 i32.const 3 i32.const 10 - i32.const 3464 + i32.const 3520 call $~lib/runtime/runtime.newArray call $std/array/isArraysEqual i32.eqz @@ -13679,7 +12811,7 @@ i32.const 5 i32.const 2 i32.const 4 - i32.const 3616 + i32.const 3672 call $~lib/runtime/runtime.newArray i32.const 0 call $std/array/isArraysEqual @@ -13717,7 +12849,7 @@ i32.const 5 i32.const 2 i32.const 8 - i32.const 3728 + i32.const 3784 call $~lib/runtime/runtime.newArray i32.const 0 call $std/array/isArraysEqual @@ -13753,7 +12885,7 @@ i32.const 1 i32.const 2 i32.const 4 - i32.const 4056 + i32.const 4112 call $~lib/runtime/runtime.newArray i32.const 0 call $std/array/isArraysEqual @@ -13772,7 +12904,7 @@ i32.const 2 i32.const 2 i32.const 4 - i32.const 4080 + i32.const 4136 call $~lib/runtime/runtime.newArray i32.const 0 call $std/array/isArraysEqual @@ -13933,10 +13065,10 @@ i32.const 2 i32.const 0 i32.const 16 - i32.const 4552 + i32.const 4608 call $~lib/runtime/runtime.newArray call $~lib/array/Array#join_bool - i32.const 4576 + i32.const 4632 call $~lib/string/String.__eq i32.eqz if @@ -13950,11 +13082,11 @@ i32.const 3 i32.const 2 i32.const 4 - i32.const 5120 + i32.const 5176 call $~lib/runtime/runtime.newArray - i32.const 4200 + i32.const 4256 call $~lib/array/Array#join - i32.const 5152 + i32.const 5208 call $~lib/string/String.__eq i32.eqz if @@ -13968,11 +13100,11 @@ i32.const 3 i32.const 2 i32.const 8 - i32.const 5240 + i32.const 5296 call $~lib/runtime/runtime.newArray - i32.const 5216 + i32.const 5272 call $~lib/array/Array#join - i32.const 5152 + i32.const 5208 call $~lib/string/String.__eq i32.eqz if @@ -13986,11 +13118,11 @@ i32.const 2 i32.const 2 i32.const 4 - i32.const 5320 + i32.const 5376 call $~lib/runtime/runtime.newArray - i32.const 5296 + i32.const 5352 call $~lib/array/Array#join - i32.const 5344 + i32.const 5400 call $~lib/string/String.__eq i32.eqz if @@ -14004,10 +13136,10 @@ i32.const 6 i32.const 3 i32.const 10 - i32.const 6672 + i32.const 6728 call $~lib/runtime/runtime.newArray call $~lib/array/Array#join_flt - i32.const 6736 + i32.const 6792 call $~lib/string/String.__eq i32.eqz if @@ -14021,11 +13153,11 @@ i32.const 3 i32.const 2 i32.const 15 - i32.const 6888 + i32.const 6944 call $~lib/runtime/runtime.newArray - i32.const 4200 + i32.const 4256 call $~lib/array/Array<~lib/string/String>#join - i32.const 6832 + i32.const 6888 call $~lib/string/String.__eq i32.eqz if @@ -14056,7 +13188,7 @@ global.set $std/array/refArr global.get $std/array/refArr call $~lib/array/Array#join_ref - i32.const 6968 + i32.const 7024 call $~lib/string/String.__eq i32.eqz if @@ -14069,7 +13201,7 @@ end global.get $std/array/reversed0 call $~lib/array/Array#toString - i32.const 4200 + i32.const 4256 call $~lib/string/String.__eq i32.eqz if @@ -14082,7 +13214,7 @@ end global.get $std/array/reversed1 call $~lib/array/Array#toString - i32.const 6832 + i32.const 6888 call $~lib/string/String.__eq i32.eqz if @@ -14095,7 +13227,7 @@ end global.get $std/array/reversed2 call $~lib/array/Array#toString - i32.const 7048 + i32.const 7104 call $~lib/string/String.__eq i32.eqz if @@ -14108,7 +13240,7 @@ end global.get $std/array/reversed4 call $~lib/array/Array#toString - i32.const 7072 + i32.const 7128 call $~lib/string/String.__eq i32.eqz if @@ -14122,10 +13254,10 @@ i32.const 3 i32.const 0 i32.const 21 - i32.const 7128 + i32.const 7184 call $~lib/runtime/runtime.newArray call $~lib/array/Array#join_int - i32.const 7152 + i32.const 7208 call $~lib/string/String.__eq i32.eqz if @@ -14139,10 +13271,10 @@ i32.const 3 i32.const 1 i32.const 22 - i32.const 7208 + i32.const 7264 call $~lib/runtime/runtime.newArray call $~lib/array/Array#join_int - i32.const 7232 + i32.const 7288 call $~lib/string/String.__eq i32.eqz if @@ -14156,10 +13288,10 @@ i32.const 3 i32.const 3 i32.const 17 - i32.const 7312 + i32.const 7368 call $~lib/runtime/runtime.newArray call $~lib/array/Array#join_int - i32.const 7352 + i32.const 7408 call $~lib/string/String.__eq i32.eqz if @@ -14173,10 +13305,10 @@ i32.const 4 i32.const 3 i32.const 23 - i32.const 7464 + i32.const 7520 call $~lib/runtime/runtime.newArray call $~lib/array/Array#join_int - i32.const 7512 + i32.const 7568 call $~lib/string/String.__eq i32.eqz if @@ -14189,7 +13321,7 @@ end global.get $std/array/randomStringsExpected call $~lib/array/Array<~lib/string/String | null>#toString - i32.const 7616 + i32.const 7672 call $~lib/string/String.__eq i32.eqz if @@ -14203,10 +13335,10 @@ i32.const 4 i32.const 2 i32.const 15 - i32.const 7744 + i32.const 7800 call $~lib/runtime/runtime.newArray call $~lib/array/Array<~lib/string/String | null>#toString - i32.const 7776 + i32.const 7832 call $~lib/string/String.__eq i32.eqz if @@ -14228,21 +13360,21 @@ i32.const 2 i32.const 2 i32.const 4 - i32.const 7832 + i32.const 7888 call $~lib/runtime/runtime.newArray i32.store local.get $1 i32.const 2 i32.const 2 i32.const 4 - i32.const 7856 + i32.const 7912 call $~lib/runtime/runtime.newArray i32.store offset=4 local.get $0 global.set $std/array/subarr32 global.get $std/array/subarr32 call $~lib/array/Array<~lib/array/Array>#join_arr - i32.const 7880 + i32.const 7936 call $~lib/string/String.__eq i32.eqz if @@ -14264,21 +13396,21 @@ i32.const 2 i32.const 0 i32.const 7 - i32.const 7936 + i32.const 7992 call $~lib/runtime/runtime.newArray i32.store local.get $1 i32.const 2 i32.const 0 i32.const 7 - i32.const 7960 + i32.const 8016 call $~lib/runtime/runtime.newArray i32.store offset=4 local.get $0 global.set $std/array/subarr8 global.get $std/array/subarr8 call $~lib/array/Array<~lib/array/Array>#join_arr - i32.const 7880 + i32.const 7936 call $~lib/string/String.__eq i32.eqz if @@ -14307,7 +13439,7 @@ i32.const 1 i32.const 2 i32.const 8 - i32.const 8056 + i32.const 8112 call $~lib/runtime/runtime.newArray i32.store local.get $1 @@ -14317,7 +13449,7 @@ global.set $std/array/subarrU32 global.get $std/array/subarrU32 call $~lib/array/Array<~lib/array/Array<~lib/array/Array>>#join_arr - i32.const 6832 + i32.const 6888 call $~lib/string/String.__eq i32.eqz if @@ -14329,7 +13461,7 @@ unreachable end ) - (func $std/array/main (; 165 ;) (type $FUNCSIG$v) + (func $std/array/main (; 164 ;) (type $FUNCSIG$v) global.get $~lib/started i32.eqz if @@ -14338,7 +13470,7 @@ global.set $~lib/started end ) - (func $null (; 166 ;) (type $FUNCSIG$v) + (func $null (; 165 ;) (type $FUNCSIG$v) nop ) ) diff --git a/tests/compiler/std/array.untouched.wat b/tests/compiler/std/array.untouched.wat index c975237c..2f923bf8 100644 --- a/tests/compiler/std/array.untouched.wat +++ b/tests/compiler/std/array.untouched.wat @@ -48,179 +48,180 @@ (data (i32.const 552) "\02\00\00\00\14\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") (data (i32.const 592) "\02\00\00\00\14\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\01\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00") (data (i32.const 632) "\02\00\00\00\14\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\01\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00") - (data (i32.const 672) "\02\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 688) "\02\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 704) "\04\00\00\00\10\00\00\00\00\00\00\00\00\00\00\00\c0\02\00\00\c0\02\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 736) "\02\00\00\00\14\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00") - (data (i32.const 776) "\02\00\00\00\14\00\00\00\00\00\00\00\00\00\00\00\04\00\00\00\05\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00") - (data (i32.const 816) "\02\00\00\00\14\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00") - (data (i32.const 856) "\02\00\00\00\14\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00\05\00\00\00\04\00\00\00\05\00\00\00") - (data (i32.const 896) "\02\00\00\00\14\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00") - (data (i32.const 936) "\02\00\00\00\14\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00\05\00\00\00") - (data (i32.const 976) "\02\00\00\00\14\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00") - (data (i32.const 1016) "\02\00\00\00\14\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00") - (data (i32.const 1056) "\02\00\00\00\14\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00") - (data (i32.const 1096) "\02\00\00\00\14\00\00\00\00\00\00\00\00\00\00\00\04\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00") - (data (i32.const 1136) "\02\00\00\00\14\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00") - (data (i32.const 1176) "\02\00\00\00\14\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00") - (data (i32.const 1216) "\02\00\00\00\14\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00") - (data (i32.const 1256) "\02\00\00\00\14\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\03\00\00\00\04\00\00\00\04\00\00\00\05\00\00\00") - (data (i32.const 1296) "\02\00\00\00\14\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00") - (data (i32.const 1336) "\02\00\00\00\14\00\00\00\00\00\00\00\00\00\00\00\04\00\00\00\05\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00") - (data (i32.const 1376) "\02\00\00\00\14\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00") - (data (i32.const 1416) "\02\00\00\00\14\00\00\00\00\00\00\00\00\00\00\00\04\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00") - (data (i32.const 1456) "\02\00\00\00\14\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00") - (data (i32.const 1496) "\02\00\00\00\14\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\03\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00") - (data (i32.const 1536) "\02\00\00\00\14\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00") - (data (i32.const 1576) "\02\00\00\00\14\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\03\00\00\00\04\00\00\00\04\00\00\00\05\00\00\00") - (data (i32.const 1616) "\02\00\00\00\14\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00") - (data (i32.const 1656) "\02\00\00\00\14\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00\05\00\00\00") - (data (i32.const 1696) "\02\00\00\00\14\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00") - (data (i32.const 1736) "\04\00\00\00\10\00\00\00\00\00\00\00\00\00\00\00\b0\06\00\00\b0\06\00\00\14\00\00\00\05\00\00\00") - (data (i32.const 1768) "\02\00\00\00\14\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00") - (data (i32.const 1808) "\02\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 672) "\01\00\00\00(\00\00\00\00\00\00\00\00\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00r\00u\00n\00t\00i\00m\00e\00.\00t\00s\00") + (data (i32.const 728) "\02\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 744) "\02\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 760) "\04\00\00\00\10\00\00\00\00\00\00\00\00\00\00\00\f8\02\00\00\f8\02\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 792) "\02\00\00\00\14\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00") + (data (i32.const 832) "\02\00\00\00\14\00\00\00\00\00\00\00\00\00\00\00\04\00\00\00\05\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00") + (data (i32.const 872) "\02\00\00\00\14\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00") + (data (i32.const 912) "\02\00\00\00\14\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00\05\00\00\00\04\00\00\00\05\00\00\00") + (data (i32.const 952) "\02\00\00\00\14\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00") + (data (i32.const 992) "\02\00\00\00\14\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00\05\00\00\00") + (data (i32.const 1032) "\02\00\00\00\14\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00") + (data (i32.const 1072) "\02\00\00\00\14\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00") + (data (i32.const 1112) "\02\00\00\00\14\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00") + (data (i32.const 1152) "\02\00\00\00\14\00\00\00\00\00\00\00\00\00\00\00\04\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00") + (data (i32.const 1192) "\02\00\00\00\14\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00") + (data (i32.const 1232) "\02\00\00\00\14\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00") + (data (i32.const 1272) "\02\00\00\00\14\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00") + (data (i32.const 1312) "\02\00\00\00\14\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\03\00\00\00\04\00\00\00\04\00\00\00\05\00\00\00") + (data (i32.const 1352) "\02\00\00\00\14\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00") + (data (i32.const 1392) "\02\00\00\00\14\00\00\00\00\00\00\00\00\00\00\00\04\00\00\00\05\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00") + (data (i32.const 1432) "\02\00\00\00\14\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00") + (data (i32.const 1472) "\02\00\00\00\14\00\00\00\00\00\00\00\00\00\00\00\04\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00") + (data (i32.const 1512) "\02\00\00\00\14\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00") + (data (i32.const 1552) "\02\00\00\00\14\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\03\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00") + (data (i32.const 1592) "\02\00\00\00\14\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00") + (data (i32.const 1632) "\02\00\00\00\14\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\03\00\00\00\04\00\00\00\04\00\00\00\05\00\00\00") + (data (i32.const 1672) "\02\00\00\00\14\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00") + (data (i32.const 1712) "\02\00\00\00\14\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00\05\00\00\00") + (data (i32.const 1752) "\02\00\00\00\14\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00") + (data (i32.const 1792) "\04\00\00\00\10\00\00\00\00\00\00\00\00\00\00\00\e8\06\00\00\e8\06\00\00\14\00\00\00\05\00\00\00") (data (i32.const 1824) "\02\00\00\00\14\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00") - (data (i32.const 1864) "\02\00\00\00\0c\00\00\00\00\00\00\00\00\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00") - (data (i32.const 1896) "\02\00\00\00\08\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00") - (data (i32.const 1920) "\02\00\00\00\14\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00") - (data (i32.const 1960) "\02\00\00\00\08\00\00\00\00\00\00\00\00\00\00\00\03\00\00\00\04\00\00\00") - (data (i32.const 1984) "\02\00\00\00\0c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00\05\00\00\00") - (data (i32.const 2016) "\02\00\00\00\14\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00") - (data (i32.const 2056) "\02\00\00\00\04\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00") - (data (i32.const 2080) "\02\00\00\00\10\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00") - (data (i32.const 2112) "\02\00\00\00\14\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00") - (data (i32.const 2152) "\02\00\00\00\04\00\00\00\00\00\00\00\00\00\00\00\05\00\00\00") - (data (i32.const 2176) "\02\00\00\00\10\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00") - (data (i32.const 2208) "\02\00\00\00\14\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00") - (data (i32.const 2248) "\02\00\00\00\08\00\00\00\00\00\00\00\00\00\00\00\04\00\00\00\05\00\00\00") - (data (i32.const 2272) "\02\00\00\00\0c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00") - (data (i32.const 2304) "\02\00\00\00\14\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00") - (data (i32.const 2344) "\02\00\00\00\04\00\00\00\00\00\00\00\00\00\00\00\04\00\00\00") - (data (i32.const 2368) "\02\00\00\00\10\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\05\00\00\00") - (data (i32.const 2400) "\02\00\00\00\14\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00") - (data (i32.const 2440) "\02\00\00\00\04\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00") - (data (i32.const 2464) "\02\00\00\00\10\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00") - (data (i32.const 2496) "\02\00\00\00\14\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00") - (data (i32.const 2536) "\02\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 1864) "\02\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 1880) "\02\00\00\00\14\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00") + (data (i32.const 1920) "\02\00\00\00\0c\00\00\00\00\00\00\00\00\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00") + (data (i32.const 1952) "\02\00\00\00\08\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00") + (data (i32.const 1976) "\02\00\00\00\14\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00") + (data (i32.const 2016) "\02\00\00\00\08\00\00\00\00\00\00\00\00\00\00\00\03\00\00\00\04\00\00\00") + (data (i32.const 2040) "\02\00\00\00\0c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00\05\00\00\00") + (data (i32.const 2072) "\02\00\00\00\14\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00") + (data (i32.const 2112) "\02\00\00\00\04\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00") + (data (i32.const 2136) "\02\00\00\00\10\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00") + (data (i32.const 2168) "\02\00\00\00\14\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00") + (data (i32.const 2208) "\02\00\00\00\04\00\00\00\00\00\00\00\00\00\00\00\05\00\00\00") + (data (i32.const 2232) "\02\00\00\00\10\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00") + (data (i32.const 2264) "\02\00\00\00\14\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00") + (data (i32.const 2304) "\02\00\00\00\08\00\00\00\00\00\00\00\00\00\00\00\04\00\00\00\05\00\00\00") + (data (i32.const 2328) "\02\00\00\00\0c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00") + (data (i32.const 2360) "\02\00\00\00\14\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00") + (data (i32.const 2400) "\02\00\00\00\04\00\00\00\00\00\00\00\00\00\00\00\04\00\00\00") + (data (i32.const 2424) "\02\00\00\00\10\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\05\00\00\00") + (data (i32.const 2456) "\02\00\00\00\14\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00") + (data (i32.const 2496) "\02\00\00\00\04\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00") + (data (i32.const 2520) "\02\00\00\00\10\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00") (data (i32.const 2552) "\02\00\00\00\14\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00") - (data (i32.const 2592) "\02\00\00\00\14\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00") - (data (i32.const 2632) "\02\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 2592) "\02\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 2608) "\02\00\00\00\14\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00") (data (i32.const 2648) "\02\00\00\00\14\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00") - (data (i32.const 2688) "\02\00\00\00\14\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00") - (data (i32.const 2728) "\02\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 2688) "\02\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 2704) "\02\00\00\00\14\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00") (data (i32.const 2744) "\02\00\00\00\14\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00") - (data (i32.const 2784) "\02\00\00\00\14\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00") - (data (i32.const 2824) "\02\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 2784) "\02\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 2800) "\02\00\00\00\14\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00") (data (i32.const 2840) "\02\00\00\00\14\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00") - (data (i32.const 2880) "\02\00\00\00\14\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00") - (data (i32.const 2920) "\02\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 2880) "\02\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 2896) "\02\00\00\00\14\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00") (data (i32.const 2936) "\02\00\00\00\14\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00") - (data (i32.const 2976) "\01\00\00\00\18\00\00\00\00\00\00\00\00\00\00\00~\00l\00i\00b\00/\00m\00a\00t\00h\00.\00t\00s\00") - (data (i32.const 3016) "\01\00\00\00\ac\00\00\00\00\00\00\00\00\00\00\00A\00B\00C\00D\00E\00F\00G\00H\00I\00J\00K\00L\00M\00N\00O\00P\00Q\00R\00S\00T\00U\00V\00W\00X\00Y\00Z\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z\000\001\002\003\004\005\006\007\008\009\00_\00-\00,\00.\00+\00/\00\\\00[\00]\00{\00}\00(\00)\00<\00>\00*\00&\00$\00%\00^\00@\00#\00!\00?\00") - (data (i32.const 3208) "\02\00\00\00 \00\00\00\00\00\00\00\00\00\00\00\00\00\80?\00\00\c0\7f\00\00\80\ff\00\00\80?\00\00\00\00\00\00\80\bf\00\00\00\c0\00\00\80\7f") - (data (i32.const 3256) "\t\00\00\00\10\00\00\00\00\00\00\00\00\00\00\00\98\0c\00\00\98\0c\00\00 \00\00\00\08\00\00\00") - (data (i32.const 3288) "\02\00\00\00 \00\00\00\00\00\00\00\00\00\00\00\00\00\80\ff\00\00\00\c0\00\00\80\bf\00\00\00\00\00\00\80?\00\00\80?\00\00\80\7f\00\00\c0\7f") - (data (i32.const 3336) "\02\00\00\00@\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\f0?\00\00\00\00\00\00\f8\7f\00\00\00\00\00\00\f0\ff\05\00\00\00\00\00\f0?\00\00\00\00\00\00\00\00\00\00\00\00\00\00\f0\bf\00\00\00\00\00\00\00\c0\00\00\00\00\00\00\f0\7f") - (data (i32.const 3416) "\n\00\00\00\10\00\00\00\00\00\00\00\00\00\00\00\18\0d\00\00\18\0d\00\00@\00\00\00\08\00\00\00") - (data (i32.const 3448) "\02\00\00\00@\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\f0\ff\00\00\00\00\00\00\00\c0\00\00\00\00\00\00\f0\bf\00\00\00\00\00\00\00\00\00\00\00\00\00\00\f0?\05\00\00\00\00\00\f0?\00\00\00\00\00\00\f0\7f\00\00\00\00\00\00\f8\7f") - (data (i32.const 3528) "\02\00\00\00\14\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\fe\ff\ff\ff\ff\ff\ff\ff\00\00\00\00\02\00\00\00") - (data (i32.const 3568) "\04\00\00\00\10\00\00\00\00\00\00\00\00\00\00\00\d8\0d\00\00\d8\0d\00\00\14\00\00\00\05\00\00\00") - (data (i32.const 3600) "\02\00\00\00\14\00\00\00\00\00\00\00\00\00\00\00\fe\ff\ff\ff\ff\ff\ff\ff\00\00\00\00\01\00\00\00\02\00\00\00") - (data (i32.const 3640) "\02\00\00\00\14\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\ff\ff\ff\ff\fe\ff\ff\ff\00\00\00\00\02\00\00\00") - (data (i32.const 3680) "\08\00\00\00\10\00\00\00\00\00\00\00\00\00\00\00H\0e\00\00H\0e\00\00\14\00\00\00\05\00\00\00") - (data (i32.const 3712) "\02\00\00\00\14\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00\fe\ff\ff\ff\ff\ff\ff\ff") - (data (i32.const 3752) "\02\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 3768) "\04\00\00\00\10\00\00\00\00\00\00\00\00\00\00\00\b8\0e\00\00\b8\0e\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 3800) "\02\00\00\00\04\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00") - (data (i32.const 3824) "\04\00\00\00\10\00\00\00\00\00\00\00\00\00\00\00\e8\0e\00\00\e8\0e\00\00\04\00\00\00\01\00\00\00") - (data (i32.const 3856) "\02\00\00\00\08\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\01\00\00\00") - (data (i32.const 3880) "\04\00\00\00\10\00\00\00\00\00\00\00\00\00\00\00 \0f\00\00 \0f\00\00\08\00\00\00\02\00\00\00") - (data (i32.const 3912) "\02\00\00\00\10\00\00\00\00\00\00\00\00\00\00\00\03\00\00\00\02\00\00\00\01\00\00\00\00\00\00\00") - (data (i32.const 3944) "\04\00\00\00\10\00\00\00\00\00\00\00\00\00\00\00X\0f\00\00X\0f\00\00\10\00\00\00\04\00\00\00") - (data (i32.const 3976) "\02\00\00\00\10\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00") - (data (i32.const 4008) "\04\00\00\00\10\00\00\00\00\00\00\00\00\00\00\00\98\0f\00\00\98\0f\00\00\10\00\00\00\04\00\00\00") - (data (i32.const 4040) "\02\00\00\00\04\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00") - (data (i32.const 4064) "\02\00\00\00\08\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00") - (data (i32.const 4088) "\01\00\00\00\02\00\00\00\00\00\00\00\00\00\00\00a\00") - (data (i32.const 4112) "\01\00\00\00\02\00\00\00\00\00\00\00\00\00\00\00b\00") - (data (i32.const 4136) "\01\00\00\00\04\00\00\00\00\00\00\00\00\00\00\00a\00b\00") - (data (i32.const 4160) "\01\00\00\00\04\00\00\00\00\00\00\00\00\00\00\00b\00a\00") - (data (i32.const 4184) "\01\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 4200) "\02\00\00\00\1c\00\00\00\00\00\00\00\00\00\00\00\08\10\00\00 \10\00\00\08\10\00\008\10\00\00P\10\00\00h\10\00\00\00\00\00\00") - (data (i32.const 4248) "\0e\00\00\00\10\00\00\00\00\00\00\00\00\00\00\00x\10\00\00x\10\00\00\1c\00\00\00\07\00\00\00") - (data (i32.const 4280) "\02\00\00\00\1c\00\00\00\00\00\00\00\00\00\00\00h\10\00\00\08\10\00\00\08\10\00\008\10\00\00 \10\00\00P\10\00\00\00\00\00\00") - (data (i32.const 4328) "\0e\00\00\00\10\00\00\00\00\00\00\00\00\00\00\00\c8\10\00\00\c8\10\00\00\1c\00\00\00\07\00\00\00") - (data (i32.const 4360) "\01\00\00\00\1c\00\00\00\00\00\00\00\00\00\00\00~\00l\00i\00b\00/\00s\00t\00r\00i\00n\00g\00.\00t\00s\00") - (data (i32.const 4408) "\01\00\00\00\08\00\00\00\00\00\00\00\00\00\00\00n\00u\00l\00l\00") - (data (i32.const 4432) "\02\00\00\00\02\00\00\00\00\00\00\00\00\00\00\00\01\00") - (data (i32.const 4456) "\01\00\00\00\08\00\00\00\00\00\00\00\00\00\00\00t\00r\00u\00e\00") - (data (i32.const 4480) "\01\00\00\00\n\00\00\00\00\00\00\00\00\00\00\00f\00a\00l\00s\00e\00") - (data (i32.const 4512) "\01\00\00\00\02\00\00\00\00\00\00\00\00\00\00\00,\00") - (data (i32.const 4536) "\02\00\00\00\02\00\00\00\00\00\00\00\00\00\00\00\01\00") - (data (i32.const 4560) "\01\00\00\00\14\00\00\00\00\00\00\00\00\00\00\00t\00r\00u\00e\00,\00f\00a\00l\00s\00e\00") - (data (i32.const 4600) "\02\00\00\00\0c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\fe\ff\ff\ff\fd\ff\ff\ff") - (data (i32.const 4632) "\01\00\00\00\02\00\00\00\00\00\00\00\00\00\00\000\00") - (data (i32.const 4656) "\02\00\00\00\90\01\00\00\00\00\00\00\00\00\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 5072) "\08\00\00\00\10\00\00\00\00\00\00\00\00\00\00\00@\12\00\00@\12\00\00\90\01\00\00d\00\00\00") - (data (i32.const 5104) "\02\00\00\00\0c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\fe\ff\ff\ff\fd\ff\ff\ff") - (data (i32.const 5136) "\01\00\00\00\n\00\00\00\00\00\00\00\00\00\00\001\00-\002\00-\003\00") - (data (i32.const 5168) "\02\00\00\00\0c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00") - (data (i32.const 5200) "\01\00\00\00\02\00\00\00\00\00\00\00\00\00\00\00-\00") + (data (i32.const 2976) "\02\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 2992) "\02\00\00\00\14\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00") + (data (i32.const 3032) "\01\00\00\00\18\00\00\00\00\00\00\00\00\00\00\00~\00l\00i\00b\00/\00m\00a\00t\00h\00.\00t\00s\00") + (data (i32.const 3072) "\01\00\00\00\ac\00\00\00\00\00\00\00\00\00\00\00A\00B\00C\00D\00E\00F\00G\00H\00I\00J\00K\00L\00M\00N\00O\00P\00Q\00R\00S\00T\00U\00V\00W\00X\00Y\00Z\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z\000\001\002\003\004\005\006\007\008\009\00_\00-\00,\00.\00+\00/\00\\\00[\00]\00{\00}\00(\00)\00<\00>\00*\00&\00$\00%\00^\00@\00#\00!\00?\00") + (data (i32.const 3264) "\02\00\00\00 \00\00\00\00\00\00\00\00\00\00\00\00\00\80?\00\00\c0\7f\00\00\80\ff\00\00\80?\00\00\00\00\00\00\80\bf\00\00\00\c0\00\00\80\7f") + (data (i32.const 3312) "\t\00\00\00\10\00\00\00\00\00\00\00\00\00\00\00\d0\0c\00\00\d0\0c\00\00 \00\00\00\08\00\00\00") + (data (i32.const 3344) "\02\00\00\00 \00\00\00\00\00\00\00\00\00\00\00\00\00\80\ff\00\00\00\c0\00\00\80\bf\00\00\00\00\00\00\80?\00\00\80?\00\00\80\7f\00\00\c0\7f") + (data (i32.const 3392) "\02\00\00\00@\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\f0?\00\00\00\00\00\00\f8\7f\00\00\00\00\00\00\f0\ff\05\00\00\00\00\00\f0?\00\00\00\00\00\00\00\00\00\00\00\00\00\00\f0\bf\00\00\00\00\00\00\00\c0\00\00\00\00\00\00\f0\7f") + (data (i32.const 3472) "\n\00\00\00\10\00\00\00\00\00\00\00\00\00\00\00P\0d\00\00P\0d\00\00@\00\00\00\08\00\00\00") + (data (i32.const 3504) "\02\00\00\00@\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\f0\ff\00\00\00\00\00\00\00\c0\00\00\00\00\00\00\f0\bf\00\00\00\00\00\00\00\00\00\00\00\00\00\00\f0?\05\00\00\00\00\00\f0?\00\00\00\00\00\00\f0\7f\00\00\00\00\00\00\f8\7f") + (data (i32.const 3584) "\02\00\00\00\14\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\fe\ff\ff\ff\ff\ff\ff\ff\00\00\00\00\02\00\00\00") + (data (i32.const 3624) "\04\00\00\00\10\00\00\00\00\00\00\00\00\00\00\00\10\0e\00\00\10\0e\00\00\14\00\00\00\05\00\00\00") + (data (i32.const 3656) "\02\00\00\00\14\00\00\00\00\00\00\00\00\00\00\00\fe\ff\ff\ff\ff\ff\ff\ff\00\00\00\00\01\00\00\00\02\00\00\00") + (data (i32.const 3696) "\02\00\00\00\14\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\ff\ff\ff\ff\fe\ff\ff\ff\00\00\00\00\02\00\00\00") + (data (i32.const 3736) "\08\00\00\00\10\00\00\00\00\00\00\00\00\00\00\00\80\0e\00\00\80\0e\00\00\14\00\00\00\05\00\00\00") + (data (i32.const 3768) "\02\00\00\00\14\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00\fe\ff\ff\ff\ff\ff\ff\ff") + (data (i32.const 3808) "\02\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 3824) "\04\00\00\00\10\00\00\00\00\00\00\00\00\00\00\00\f0\0e\00\00\f0\0e\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 3856) "\02\00\00\00\04\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00") + (data (i32.const 3880) "\04\00\00\00\10\00\00\00\00\00\00\00\00\00\00\00 \0f\00\00 \0f\00\00\04\00\00\00\01\00\00\00") + (data (i32.const 3912) "\02\00\00\00\08\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\01\00\00\00") + (data (i32.const 3936) "\04\00\00\00\10\00\00\00\00\00\00\00\00\00\00\00X\0f\00\00X\0f\00\00\08\00\00\00\02\00\00\00") + (data (i32.const 3968) "\02\00\00\00\10\00\00\00\00\00\00\00\00\00\00\00\03\00\00\00\02\00\00\00\01\00\00\00\00\00\00\00") + (data (i32.const 4000) "\04\00\00\00\10\00\00\00\00\00\00\00\00\00\00\00\90\0f\00\00\90\0f\00\00\10\00\00\00\04\00\00\00") + (data (i32.const 4032) "\02\00\00\00\10\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00") + (data (i32.const 4064) "\04\00\00\00\10\00\00\00\00\00\00\00\00\00\00\00\d0\0f\00\00\d0\0f\00\00\10\00\00\00\04\00\00\00") + (data (i32.const 4096) "\02\00\00\00\04\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00") + (data (i32.const 4120) "\02\00\00\00\08\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00") + (data (i32.const 4144) "\01\00\00\00\02\00\00\00\00\00\00\00\00\00\00\00a\00") + (data (i32.const 4168) "\01\00\00\00\02\00\00\00\00\00\00\00\00\00\00\00b\00") + (data (i32.const 4192) "\01\00\00\00\04\00\00\00\00\00\00\00\00\00\00\00a\00b\00") + (data (i32.const 4216) "\01\00\00\00\04\00\00\00\00\00\00\00\00\00\00\00b\00a\00") + (data (i32.const 4240) "\01\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 4256) "\02\00\00\00\1c\00\00\00\00\00\00\00\00\00\00\00@\10\00\00X\10\00\00@\10\00\00p\10\00\00\88\10\00\00\a0\10\00\00\00\00\00\00") + (data (i32.const 4304) "\0e\00\00\00\10\00\00\00\00\00\00\00\00\00\00\00\b0\10\00\00\b0\10\00\00\1c\00\00\00\07\00\00\00") + (data (i32.const 4336) "\02\00\00\00\1c\00\00\00\00\00\00\00\00\00\00\00\a0\10\00\00@\10\00\00@\10\00\00p\10\00\00X\10\00\00\88\10\00\00\00\00\00\00") + (data (i32.const 4384) "\0e\00\00\00\10\00\00\00\00\00\00\00\00\00\00\00\00\11\00\00\00\11\00\00\1c\00\00\00\07\00\00\00") + (data (i32.const 4416) "\01\00\00\00\1c\00\00\00\00\00\00\00\00\00\00\00~\00l\00i\00b\00/\00s\00t\00r\00i\00n\00g\00.\00t\00s\00") + (data (i32.const 4464) "\01\00\00\00\08\00\00\00\00\00\00\00\00\00\00\00n\00u\00l\00l\00") + (data (i32.const 4488) "\02\00\00\00\02\00\00\00\00\00\00\00\00\00\00\00\01\00") + (data (i32.const 4512) "\01\00\00\00\08\00\00\00\00\00\00\00\00\00\00\00t\00r\00u\00e\00") + (data (i32.const 4536) "\01\00\00\00\n\00\00\00\00\00\00\00\00\00\00\00f\00a\00l\00s\00e\00") + (data (i32.const 4568) "\01\00\00\00\02\00\00\00\00\00\00\00\00\00\00\00,\00") + (data (i32.const 4592) "\02\00\00\00\02\00\00\00\00\00\00\00\00\00\00\00\01\00") + (data (i32.const 4616) "\01\00\00\00\14\00\00\00\00\00\00\00\00\00\00\00t\00r\00u\00e\00,\00f\00a\00l\00s\00e\00") + (data (i32.const 4656) "\02\00\00\00\0c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\fe\ff\ff\ff\fd\ff\ff\ff") + (data (i32.const 4688) "\01\00\00\00\02\00\00\00\00\00\00\00\00\00\00\000\00") + (data (i32.const 4712) "\02\00\00\00\90\01\00\00\00\00\00\00\00\00\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 5128) "\08\00\00\00\10\00\00\00\00\00\00\00\00\00\00\00x\12\00\00x\12\00\00\90\01\00\00d\00\00\00") + (data (i32.const 5160) "\02\00\00\00\0c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\fe\ff\ff\ff\fd\ff\ff\ff") + (data (i32.const 5192) "\01\00\00\00\n\00\00\00\00\00\00\00\00\00\00\001\00-\002\00-\003\00") (data (i32.const 5224) "\02\00\00\00\0c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00") - (data (i32.const 5256) "\02\00\00\00\08\00\00\00\00\00\00\00\00\00\00\00\00\00\00\80\00\00\00\80") - (data (i32.const 5280) "\01\00\00\00\04\00\00\00\00\00\00\00\00\00\00\00_\00_\00") - (data (i32.const 5304) "\02\00\00\00\08\00\00\00\00\00\00\00\00\00\00\00\00\00\00\80\00\00\00\80") - (data (i32.const 5328) "\01\00\00\000\00\00\00\00\00\00\00\00\00\00\00-\002\001\004\007\004\008\003\006\004\008\00_\00_\00-\002\001\004\007\004\008\003\006\004\008\00") - (data (i32.const 5392) "\02\00\00\000\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\f0?\00\00\00\00\00\00\00\c0\00\00\00\00\00\00\f8\7f\00\00\00\00\00\00\f0\ff\00\00\00\00\00\00\f0\7f") - (data (i32.const 5456) "\01\00\00\00\04\00\00\00\00\00\00\00\00\00\00\00,\00 \00") - (data (i32.const 5480) "\01\00\00\00\06\00\00\00\00\00\00\00\00\00\00\000\00.\000\00") - (data (i32.const 5504) "\01\00\00\00\06\00\00\00\00\00\00\00\00\00\00\00N\00a\00N\00") - (data (i32.const 5528) "\01\00\00\00\12\00\00\00\00\00\00\00\00\00\00\00-\00I\00n\00f\00i\00n\00i\00t\00y\00") - (data (i32.const 5568) "\01\00\00\00\10\00\00\00\00\00\00\00\00\00\00\00I\00n\00f\00i\00n\00i\00t\00y\00") - (data (i32.const 5600) "\02\00\00\00\b8\02\00\00\00\00\00\00\00\00\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~anonymous|0 $~lib/util/sort/COMPARATOR~anonymous|0 $~lib/util/sort/COMPARATOR~anonymous|0 $~lib/util/sort/COMPARATOR~anonymous|0 $~lib/util/sort/COMPARATOR~anonymous|1 $start:std/array~anonymous|43 $start:std/array~anonymous|44 $start:std/array~anonymous|45 $start:std/array~anonymous|46 $start:std/array~anonymous|47 $start:std/array~anonymous|48 $~lib/util/sort/COMPARATOR<~lib/string/String | null>~anonymous|0 $~lib/util/sort/COMPARATOR<~lib/string/String>~anonymous|0) (global $~lib/util/runtime/HEADER_SIZE i32 (i32.const 16)) @@ -239,10 +240,10 @@ (global $std/array/i (mut i32) (i32.const 0)) (global $std/array/other (mut i32) (i32.const 0)) (global $std/array/out (mut i32) (i32.const 0)) - (global $std/array/source (mut i32) (i32.const 720)) + (global $std/array/source (mut i32) (i32.const 776)) (global $std/array/cwArr (mut i32) (i32.const 0)) (global $std/array/includes (mut i32) (i32.const 0)) - (global $std/array/sarr (mut i32) (i32.const 1752)) + (global $std/array/sarr (mut i32) (i32.const 1808)) (global $~lib/argc (mut i32) (i32.const 0)) (global $std/array/every (mut i32) (i32.const 0)) (global $std/array/some (mut i32) (i32.const 0)) @@ -254,16 +255,16 @@ (global $~lib/math/random_state1_64 (mut i64) (i64.const 0)) (global $~lib/math/random_state0_32 (mut i32) (i32.const 0)) (global $~lib/math/random_state1_32 (mut i32) (i32.const 0)) - (global $std/array/charset i32 (i32.const 3032)) - (global $std/array/f32ArrayTyped (mut i32) (i32.const 3272)) - (global $std/array/f64ArrayTyped (mut i32) (i32.const 3432)) - (global $std/array/i32ArrayTyped (mut i32) (i32.const 3584)) - (global $std/array/u32ArrayTyped (mut i32) (i32.const 3696)) - (global $std/array/reversed0 (mut i32) (i32.const 3784)) - (global $std/array/reversed1 (mut i32) (i32.const 3840)) - (global $std/array/reversed2 (mut i32) (i32.const 3896)) - (global $std/array/reversed4 (mut i32) (i32.const 3960)) - (global $std/array/expected4 (mut i32) (i32.const 4024)) + (global $std/array/charset i32 (i32.const 3088)) + (global $std/array/f32ArrayTyped (mut i32) (i32.const 3328)) + (global $std/array/f64ArrayTyped (mut i32) (i32.const 3488)) + (global $std/array/i32ArrayTyped (mut i32) (i32.const 3640)) + (global $std/array/u32ArrayTyped (mut i32) (i32.const 3752)) + (global $std/array/reversed0 (mut i32) (i32.const 3840)) + (global $std/array/reversed1 (mut i32) (i32.const 3896)) + (global $std/array/reversed2 (mut i32) (i32.const 3952)) + (global $std/array/reversed4 (mut i32) (i32.const 4016)) + (global $std/array/expected4 (mut i32) (i32.const 4080)) (global $std/array/reversed64 (mut i32) (i32.const 0)) (global $std/array/reversed128 (mut i32) (i32.const 0)) (global $std/array/reversed1024 (mut i32) (i32.const 0)) @@ -273,8 +274,8 @@ (global $std/array/randomized257 (mut i32) (i32.const 0)) (global $std/array/reversedNested512 (mut i32) (i32.const 0)) (global $std/array/reversedElements512 (mut i32) (i32.const 0)) - (global $std/array/randomStringsActual (mut i32) (i32.const 4264)) - (global $std/array/randomStringsExpected (mut i32) (i32.const 4344)) + (global $std/array/randomStringsActual (mut i32) (i32.const 4320)) + (global $std/array/randomStringsExpected (mut i32) (i32.const 4400)) (global $std/array/randomStrings400 (mut i32) (i32.const 0)) (global $~lib/ASC_SHRINK_LEVEL i32 (i32.const 0)) (global $~lib/builtins/i32.MIN_VALUE i32 (i32.const -2147483648)) @@ -291,7 +292,7 @@ (global $std/array/subarr8 (mut i32) (i32.const 0)) (global $std/array/subarrU32 (mut i32) (i32.const 0)) (global $~lib/started (mut i32) (i32.const 0)) - (global $~lib/memory/HEAP_BASE i32 (i32.const 8060)) + (global $~lib/memory/HEAP_BASE i32 (i32.const 8116)) (global $~lib/capabilities i32 (i32.const 2)) (export "memory" (memory $0)) (export "table" (table $0)) @@ -684,7 +685,7 @@ if i32.const 0 i32.const 80 - i32.const 117 + i32.const 82 i32.const 6 call $~lib/env/abort unreachable @@ -701,7 +702,7 @@ if i32.const 0 i32.const 80 - i32.const 119 + i32.const 84 i32.const 6 call $~lib/env/abort unreachable @@ -1005,1208 +1006,7 @@ end local.get $0 ) - (func $~lib/util/memory/memcpy (; 23 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (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 - end - end - local.get $0 - 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.get $2 - 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.get $2 - i32.const 4 - 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 $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 - 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 $~lib/memory/memory.copy (; 24 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/memory/memory.copy (; 23 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -2217,28 +1017,6 @@ 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 @@ -2437,7 +1215,7 @@ end end ) - (func $~lib/runtime/runtime.newArray (; 25 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (func $~lib/runtime/runtime.newArray (; 24 ;) (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) @@ -2499,11 +1277,11 @@ end local.get $4 ) - (func $~lib/array/Array#get:length (; 26 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/array/Array#get:length (; 25 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.load offset=12 ) - (func $~lib/array/Array#__unchecked_get (; 27 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#__unchecked_get (; 26 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $0 i32.load offset=4 local.get $1 @@ -2512,7 +1290,7 @@ i32.add i32.load8_u ) - (func $~lib/array/Array#__get (; 28 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#__get (; 27 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $1 local.get $0 i32.load offset=8 @@ -2522,7 +1300,7 @@ if i32.const 0 i32.const 272 - i32.const 100 + i32.const 99 i32.const 61 call $~lib/env/abort unreachable @@ -2531,7 +1309,7 @@ local.get $1 call $~lib/array/Array#__unchecked_get ) - (func $std/array/isArraysEqual (; 29 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/array/isArraysEqual (; 28 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $2 i32.eqz @@ -2586,7 +1364,7 @@ end i32.const 1 ) - (func $~lib/array/Array#fill (; 30 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (func $~lib/array/Array#fill (; 29 ;) (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) @@ -2672,11 +1450,11 @@ end local.get $0 ) - (func $~lib/array/Array#get:length (; 31 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/array/Array#get:length (; 30 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.load offset=12 ) - (func $~lib/array/Array#__unchecked_get (; 32 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#__unchecked_get (; 31 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $0 i32.load offset=4 local.get $1 @@ -2685,7 +1463,7 @@ i32.add i32.load ) - (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 @@ -2695,7 +1473,7 @@ if i32.const 0 i32.const 272 - i32.const 100 + i32.const 99 i32.const 61 call $~lib/env/abort unreachable @@ -2704,7 +1482,7 @@ local.get $1 call $~lib/array/Array#__unchecked_get ) - (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 @@ -2759,17 +1537,17 @@ 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 (; 36 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/arraybuffer/ArrayBuffer#get:byteLength (; 35 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 global.get $~lib/util/runtime/HEADER_SIZE i32.sub i32.load offset=4 ) - (func $std/array/internalCapacity (; 37 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $std/array/internalCapacity (; 36 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) local.get $0 i32.load @@ -2779,14 +1557,14 @@ i32.const 2 i32.shr_s ) - (func $~lib/allocator/arena/__mem_free (; 38 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/allocator/arena/__mem_free (; 37 ;) (type $FUNCSIG$vi) (param $0 i32) nop ) - (func $~lib/memory/memory.free (; 39 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/memory/memory.free (; 38 ;) (type $FUNCSIG$vi) (param $0 i32) local.get $0 call $~lib/allocator/arena/__mem_free ) - (func $~lib/runtime/runtime.reallocate (; 40 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/util/runtime/reallocate (; 39 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -2856,9 +1634,9 @@ i32.eqz if i32.const 0 - i32.const 80 - i32.const 77 - i32.const 10 + i32.const 688 + i32.const 74 + i32.const 8 call $~lib/env/abort unreachable end @@ -2890,7 +1668,7 @@ i32.store offset=4 local.get $0 ) - (func $~lib/array/ensureCapacity (; 41 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/array/ensureCapacity (; 40 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -2912,7 +1690,7 @@ if i32.const 0 i32.const 272 - i32.const 15 + i32.const 14 i32.const 64 call $~lib/env/abort unreachable @@ -2926,7 +1704,7 @@ local.set $4 local.get $3 local.get $4 - call $~lib/runtime/runtime.reallocate + call $~lib/util/runtime/reallocate local.set $5 local.get $5 local.get $3 @@ -2964,7 +1742,7 @@ i32.store offset=8 end ) - (func $~lib/array/Array#push (; 42 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#push (; 41 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) local.get $0 @@ -2991,7 +1769,7 @@ i32.store offset=12 local.get $3 ) - (func $~lib/array/Array#__unchecked_get (; 43 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#__unchecked_get (; 42 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $0 i32.load offset=4 local.get $1 @@ -3000,7 +1778,7 @@ i32.add i32.load ) - (func $~lib/array/Array#__get (; 44 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#__get (; 43 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $1 local.get $0 i32.load offset=8 @@ -3010,7 +1788,7 @@ if i32.const 0 i32.const 272 - i32.const 100 + i32.const 99 i32.const 61 call $~lib/env/abort unreachable @@ -3019,7 +1797,7 @@ local.get $1 call $~lib/array/Array#__unchecked_get ) - (func $~lib/array/Array#pop (; 45 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/array/Array#pop (; 44 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) local.get $0 @@ -3031,7 +1809,7 @@ if i32.const 0 i32.const 272 - i32.const 310 + i32.const 309 i32.const 20 call $~lib/env/abort unreachable @@ -3052,7 +1830,7 @@ i32.store offset=12 local.get $2 ) - (func $~lib/array/Array#concat (; 46 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#concat (; 45 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -3100,7 +1878,7 @@ call $~lib/memory/memory.copy local.get $4 ) - (func $~lib/array/Array#copyWithin (; 47 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (func $~lib/array/Array#copyWithin (; 46 ;) (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) @@ -3290,7 +2068,7 @@ end local.get $0 ) - (func $std/array/isArraysEqual (; 48 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/array/isArraysEqual (; 47 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $2 i32.eqz @@ -3345,7 +2123,7 @@ end i32.const 1 ) - (func $~lib/array/Array#unshift (; 49 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#unshift (; 48 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) local.get $0 @@ -3378,7 +2156,7 @@ i32.store offset=12 local.get $2 ) - (func $~lib/array/Array#shift (; 50 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/array/Array#shift (; 49 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -3392,7 +2170,7 @@ if i32.const 0 i32.const 272 - i32.const 382 + i32.const 381 i32.const 20 call $~lib/env/abort unreachable @@ -3427,7 +2205,7 @@ i32.store offset=12 local.get $3 ) - (func $~lib/array/Array#reverse (; 51 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/array/Array#reverse (; 50 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -3482,7 +2260,7 @@ end local.get $0 ) - (func $~lib/array/Array#indexOf (; 52 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/array/Array#indexOf (; 51 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -3554,7 +2332,7 @@ end i32.const -1 ) - (func $~lib/array/Array#includes (; 53 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/array/Array#includes (; 52 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 local.get $1 local.get $2 @@ -3562,7 +2340,7 @@ i32.const 0 i32.ge_s ) - (func $~lib/array/Array#splice (; 54 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/array/Array#splice (; 53 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -3670,7 +2448,7 @@ i32.store offset=12 local.get $6 ) - (func $~lib/array/Array#__unchecked_set (; 55 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/array/Array#__unchecked_set (; 54 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) local.get $0 i32.load offset=4 local.get $1 @@ -3680,7 +2458,7 @@ local.get $2 i32.store ) - (func $~lib/array/Array#__set (; 56 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/array/Array#__set (; 55 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) local.get $0 i32.load offset=12 @@ -3706,12 +2484,12 @@ i32.store offset=12 end ) - (func $start:std/array~anonymous|0 (; 57 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $start:std/array~anonymous|0 (; 56 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 i32.const 0 i32.eq ) - (func $~lib/array/Array#findIndex (; 58 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#findIndex (; 57 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -3770,17 +2548,17 @@ end i32.const -1 ) - (func $start:std/array~anonymous|1 (; 59 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $start:std/array~anonymous|1 (; 58 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 i32.const 1 i32.eq ) - (func $start:std/array~anonymous|2 (; 60 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $start:std/array~anonymous|2 (; 59 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 i32.const 100 i32.eq ) - (func $start:std/array~anonymous|3 (; 61 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $start:std/array~anonymous|3 (; 60 ;) (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 @@ -3789,12 +2567,12 @@ i32.const 100 i32.eq ) - (func $start:std/array~anonymous|4 (; 62 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $start:std/array~anonymous|4 (; 61 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 i32.const 100 i32.eq ) - (func $start:std/array~anonymous|5 (; 63 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $start:std/array~anonymous|5 (; 62 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $2 call $~lib/array/Array#pop drop @@ -3802,12 +2580,12 @@ i32.const 100 i32.eq ) - (func $start:std/array~anonymous|6 (; 64 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $start:std/array~anonymous|6 (; 63 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 i32.const 0 i32.ge_s ) - (func $~lib/array/Array#every (; 65 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#every (; 64 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -3867,12 +2645,12 @@ end i32.const 1 ) - (func $start:std/array~anonymous|7 (; 66 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $start:std/array~anonymous|7 (; 65 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 i32.const 0 i32.le_s ) - (func $start:std/array~anonymous|8 (; 67 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $start:std/array~anonymous|8 (; 66 ;) (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 @@ -3881,12 +2659,12 @@ i32.const 10 i32.lt_s ) - (func $start:std/array~anonymous|9 (; 68 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $start:std/array~anonymous|9 (; 67 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 i32.const 10 i32.lt_s ) - (func $start:std/array~anonymous|10 (; 69 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $start:std/array~anonymous|10 (; 68 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $2 call $~lib/array/Array#pop drop @@ -3894,12 +2672,12 @@ i32.const 3 i32.lt_s ) - (func $start:std/array~anonymous|11 (; 70 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $start:std/array~anonymous|11 (; 69 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 i32.const 3 i32.ge_s ) - (func $~lib/array/Array#some (; 71 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#some (; 70 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -3958,12 +2736,12 @@ end i32.const 0 ) - (func $start:std/array~anonymous|12 (; 72 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $start:std/array~anonymous|12 (; 71 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 i32.const -1 i32.le_s ) - (func $start:std/array~anonymous|13 (; 73 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $start:std/array~anonymous|13 (; 72 ;) (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 @@ -3972,12 +2750,12 @@ i32.const 10 i32.gt_s ) - (func $start:std/array~anonymous|14 (; 74 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $start:std/array~anonymous|14 (; 73 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 i32.const 10 i32.gt_s ) - (func $start:std/array~anonymous|15 (; 75 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $start:std/array~anonymous|15 (; 74 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $2 call $~lib/array/Array#pop drop @@ -3985,13 +2763,13 @@ i32.const 3 i32.gt_s ) - (func $start:std/array~anonymous|16 (; 76 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $start:std/array~anonymous|16 (; 75 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) global.get $std/array/i local.get $0 i32.add global.set $std/array/i ) - (func $~lib/array/Array#forEach (; 77 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/array/Array#forEach (; 76 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -4043,7 +2821,7 @@ unreachable end ) - (func $start:std/array~anonymous|17 (; 78 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $start:std/array~anonymous|17 (; 77 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) local.get $2 i32.const 100 call $~lib/array/Array#push @@ -4053,13 +2831,13 @@ i32.add global.set $std/array/i ) - (func $start:std/array~anonymous|18 (; 79 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $start:std/array~anonymous|18 (; 78 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) global.get $std/array/i local.get $0 i32.add global.set $std/array/i ) - (func $start:std/array~anonymous|19 (; 80 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $start:std/array~anonymous|19 (; 79 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) local.get $2 call $~lib/array/Array#pop drop @@ -4068,7 +2846,7 @@ i32.add global.set $std/array/i ) - (func $start:std/array~anonymous|20 (; 81 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $start:std/array~anonymous|20 (; 80 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) local.get $1 i32.const 0 @@ -4183,11 +2961,11 @@ end end ) - (func $start:std/array~anonymous|21 (; 82 ;) (type $FUNCSIG$fiii) (param $0 i32) (param $1 i32) (param $2 i32) (result f32) + (func $start:std/array~anonymous|21 (; 81 ;) (type $FUNCSIG$fiii) (param $0 i32) (param $1 i32) (param $2 i32) (result f32) local.get $0 f32.convert_i32_s ) - (func $~lib/array/Array#map (; 83 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#map (; 82 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -4259,11 +3037,11 @@ end local.get $3 ) - (func $~lib/array/Array#get:length (; 84 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/array/Array#get:length (; 83 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.load offset=12 ) - (func $~lib/array/Array#__unchecked_get (; 85 ;) (type $FUNCSIG$fii) (param $0 i32) (param $1 i32) (result f32) + (func $~lib/array/Array#__unchecked_get (; 84 ;) (type $FUNCSIG$fii) (param $0 i32) (param $1 i32) (result f32) local.get $0 i32.load offset=4 local.get $1 @@ -4272,7 +3050,7 @@ i32.add f32.load ) - (func $~lib/array/Array#__get (; 86 ;) (type $FUNCSIG$fii) (param $0 i32) (param $1 i32) (result f32) + (func $~lib/array/Array#__get (; 85 ;) (type $FUNCSIG$fii) (param $0 i32) (param $1 i32) (result f32) local.get $1 local.get $0 i32.load offset=8 @@ -4282,7 +3060,7 @@ if i32.const 0 i32.const 272 - i32.const 100 + i32.const 99 i32.const 61 call $~lib/env/abort unreachable @@ -4291,7 +3069,7 @@ local.get $1 call $~lib/array/Array#__unchecked_get ) - (func $start:std/array~anonymous|22 (; 87 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $start:std/array~anonymous|22 (; 86 ;) (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 @@ -4302,7 +3080,7 @@ global.set $std/array/i local.get $0 ) - (func $~lib/array/Array#map (; 88 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#map (; 87 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -4374,14 +3152,14 @@ end local.get $3 ) - (func $start:std/array~anonymous|23 (; 89 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $start:std/array~anonymous|23 (; 88 ;) (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 (; 90 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $start:std/array~anonymous|24 (; 89 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $2 call $~lib/array/Array#pop drop @@ -4391,12 +3169,12 @@ global.set $std/array/i local.get $0 ) - (func $start:std/array~anonymous|25 (; 91 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $start:std/array~anonymous|25 (; 90 ;) (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 (; 92 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#filter (; 91 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -4468,7 +3246,7 @@ end local.get $2 ) - (func $start:std/array~anonymous|26 (; 93 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $start:std/array~anonymous|26 (; 92 ;) (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 @@ -4481,7 +3259,7 @@ i32.const 2 i32.ge_s ) - (func $start:std/array~anonymous|27 (; 94 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $start:std/array~anonymous|27 (; 93 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) global.get $std/array/i local.get $0 i32.add @@ -4490,7 +3268,7 @@ i32.const 2 i32.ge_s ) - (func $start:std/array~anonymous|28 (; 95 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $start:std/array~anonymous|28 (; 94 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $2 call $~lib/array/Array#pop drop @@ -4502,12 +3280,12 @@ i32.const 2 i32.ge_s ) - (func $start:std/array~anonymous|29 (; 96 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (func $start:std/array~anonymous|29 (; 95 ;) (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 (; 97 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/array/Array#reduce (; 96 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -4565,12 +3343,12 @@ end local.get $3 ) - (func $start:std/array~anonymous|30 (; 98 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (func $start:std/array~anonymous|30 (; 97 ;) (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 (; 99 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (func $start:std/array~anonymous|31 (; 98 ;) (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 @@ -4582,7 +3360,7 @@ i32.gt_s end ) - (func $~lib/array/Array#reduce (; 100 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/array/Array#reduce (; 99 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -4640,7 +3418,7 @@ end local.get $3 ) - (func $start:std/array~anonymous|32 (; 101 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (func $start:std/array~anonymous|32 (; 100 ;) (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 @@ -4652,7 +3430,7 @@ i32.gt_s end ) - (func $start:std/array~anonymous|33 (; 102 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (func $start:std/array~anonymous|33 (; 101 ;) (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 @@ -4661,12 +3439,12 @@ local.get $1 i32.add ) - (func $start:std/array~anonymous|34 (; 103 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (func $start:std/array~anonymous|34 (; 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|35 (; 104 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (func $start:std/array~anonymous|35 (; 103 ;) (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 @@ -4674,12 +3452,12 @@ local.get $1 i32.add ) - (func $start:std/array~anonymous|36 (; 105 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (func $start:std/array~anonymous|36 (; 104 ;) (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 (; 106 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/array/Array#reduceRight (; 105 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) local.get $2 @@ -4724,12 +3502,12 @@ end local.get $3 ) - (func $start:std/array~anonymous|37 (; 107 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (func $start:std/array~anonymous|37 (; 106 ;) (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 (; 108 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (func $start:std/array~anonymous|38 (; 107 ;) (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 @@ -4741,7 +3519,7 @@ i32.gt_s end ) - (func $~lib/array/Array#reduceRight (; 109 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/array/Array#reduceRight (; 108 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) local.get $2 @@ -4786,7 +3564,7 @@ end local.get $3 ) - (func $start:std/array~anonymous|39 (; 110 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (func $start:std/array~anonymous|39 (; 109 ;) (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 +3576,7 @@ i32.gt_s end ) - (func $start:std/array~anonymous|40 (; 111 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (func $start:std/array~anonymous|40 (; 110 ;) (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 @@ -4807,12 +3585,12 @@ local.get $1 i32.add ) - (func $start:std/array~anonymous|41 (; 112 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (func $start:std/array~anonymous|41 (; 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 $start:std/array~anonymous|42 (; 113 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (func $start:std/array~anonymous|42 (; 112 ;) (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 @@ -4820,7 +3598,7 @@ local.get $1 i32.add ) - (func $~lib/math/murmurHash3 (; 114 ;) (type $FUNCSIG$jj) (param $0 i64) (result i64) + (func $~lib/math/murmurHash3 (; 113 ;) (type $FUNCSIG$jj) (param $0 i64) (result i64) local.get $0 local.get $0 i64.const 33 @@ -4849,7 +3627,7 @@ local.set $0 local.get $0 ) - (func $~lib/math/splitMix32 (; 115 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/math/splitMix32 (; 114 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.const 1831565813 i32.add @@ -4884,12 +3662,12 @@ i32.shr_u i32.xor ) - (func $~lib/math/NativeMath.seedRandom (; 116 ;) (type $FUNCSIG$vj) (param $0 i64) + (func $~lib/math/NativeMath.seedRandom (; 115 ;) (type $FUNCSIG$vj) (param $0 i64) local.get $0 i64.eqz if i32.const 0 - i32.const 2992 + i32.const 3048 i32.const 1021 i32.const 4 call $~lib/env/abort @@ -4913,7 +3691,7 @@ call $~lib/math/splitMix32 global.set $~lib/math/random_state1_32 ) - (func $~lib/util/sort/insertionSort (; 117 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/util/sort/insertionSort (; 116 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 f32) (local $5 i32) @@ -5009,7 +3787,7 @@ unreachable end ) - (func $~lib/util/sort/weakHeapSort (; 118 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/util/sort/weakHeapSort (; 117 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -5309,7 +4087,7 @@ local.get $10 f32.store ) - (func $~lib/array/Array#sort (; 119 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#sort (; 118 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 f32) @@ -5322,7 +4100,7 @@ if i32.const 0 i32.const 272 - i32.const 527 + i32.const 526 i32.const 4 call $~lib/env/abort unreachable @@ -5395,7 +4173,7 @@ end local.get $0 ) - (func $~lib/util/sort/COMPARATOR~anonymous|0 (; 120 ;) (type $FUNCSIG$iff) (param $0 f32) (param $1 f32) (result i32) + (func $~lib/util/sort/COMPARATOR~anonymous|0 (; 119 ;) (type $FUNCSIG$iff) (param $0 f32) (param $1 f32) (result i32) (local $2 i32) (local $3 i32) local.get $0 @@ -5428,7 +4206,7 @@ i32.lt_s i32.sub ) - (func $~lib/array/Array#sort|trampoline (; 121 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#sort|trampoline (; 120 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) block $1of1 block $0of1 block $outOfRange @@ -5447,12 +4225,12 @@ local.get $1 call $~lib/array/Array#sort ) - (func $~lib/builtins/isNaN (; 122 ;) (type $FUNCSIG$if) (param $0 f32) (result i32) + (func $~lib/builtins/isNaN (; 121 ;) (type $FUNCSIG$if) (param $0 f32) (result i32) local.get $0 local.get $0 f32.ne ) - (func $std/array/isArraysEqual (; 123 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/array/isArraysEqual (; 122 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $2 i32.eqz @@ -5523,7 +4301,7 @@ end i32.const 1 ) - (func $~lib/util/sort/insertionSort (; 124 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/util/sort/insertionSort (; 123 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 f64) (local $5 i32) @@ -5619,7 +4397,7 @@ unreachable end ) - (func $~lib/util/sort/weakHeapSort (; 125 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/util/sort/weakHeapSort (; 124 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -5919,7 +4697,7 @@ local.get $10 f64.store ) - (func $~lib/array/Array#sort (; 126 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#sort (; 125 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 f64) @@ -5932,7 +4710,7 @@ if i32.const 0 i32.const 272 - i32.const 527 + i32.const 526 i32.const 4 call $~lib/env/abort unreachable @@ -6005,7 +4783,7 @@ end local.get $0 ) - (func $~lib/util/sort/COMPARATOR~anonymous|0 (; 127 ;) (type $FUNCSIG$idd) (param $0 f64) (param $1 f64) (result i32) + (func $~lib/util/sort/COMPARATOR~anonymous|0 (; 126 ;) (type $FUNCSIG$idd) (param $0 f64) (param $1 f64) (result i32) (local $2 i64) (local $3 i64) local.get $0 @@ -6038,7 +4816,7 @@ i64.lt_s i32.sub ) - (func $~lib/array/Array#sort|trampoline (; 128 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#sort|trampoline (; 127 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) block $1of1 block $0of1 block $outOfRange @@ -6057,11 +4835,11 @@ local.get $1 call $~lib/array/Array#sort ) - (func $~lib/array/Array#get:length (; 129 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/array/Array#get:length (; 128 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.load offset=12 ) - (func $~lib/array/Array#__unchecked_get (; 130 ;) (type $FUNCSIG$dii) (param $0 i32) (param $1 i32) (result f64) + (func $~lib/array/Array#__unchecked_get (; 129 ;) (type $FUNCSIG$dii) (param $0 i32) (param $1 i32) (result f64) local.get $0 i32.load offset=4 local.get $1 @@ -6070,7 +4848,7 @@ i32.add f64.load ) - (func $~lib/array/Array#__get (; 131 ;) (type $FUNCSIG$dii) (param $0 i32) (param $1 i32) (result f64) + (func $~lib/array/Array#__get (; 130 ;) (type $FUNCSIG$dii) (param $0 i32) (param $1 i32) (result f64) local.get $1 local.get $0 i32.load offset=8 @@ -6080,7 +4858,7 @@ if i32.const 0 i32.const 272 - i32.const 100 + i32.const 99 i32.const 61 call $~lib/env/abort unreachable @@ -6089,12 +4867,12 @@ local.get $1 call $~lib/array/Array#__unchecked_get ) - (func $~lib/builtins/isNaN (; 132 ;) (type $FUNCSIG$id) (param $0 f64) (result i32) + (func $~lib/builtins/isNaN (; 131 ;) (type $FUNCSIG$id) (param $0 f64) (result i32) local.get $0 local.get $0 f64.ne ) - (func $std/array/isArraysEqual (; 133 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/array/isArraysEqual (; 132 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $2 i32.eqz @@ -6165,7 +4943,7 @@ end i32.const 1 ) - (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) @@ -6261,7 +5039,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) @@ -6561,7 +5339,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) @@ -6572,7 +5350,7 @@ if i32.const 0 i32.const 272 - i32.const 527 + i32.const 526 i32.const 4 call $~lib/env/abort unreachable @@ -6645,12 +5423,12 @@ 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.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 @@ -6669,7 +5447,7 @@ local.get $1 call $~lib/array/Array#sort ) - (func $~lib/util/sort/insertionSort (; 139 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/util/sort/insertionSort (; 138 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -6765,7 +5543,7 @@ unreachable end ) - (func $~lib/util/sort/weakHeapSort (; 140 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/util/sort/weakHeapSort (; 139 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -7065,7 +5843,7 @@ local.get $10 i32.store ) - (func $~lib/array/Array#sort (; 141 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#sort (; 140 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -7076,7 +5854,7 @@ if i32.const 0 i32.const 272 - i32.const 527 + i32.const 526 i32.const 4 call $~lib/env/abort unreachable @@ -7149,7 +5927,7 @@ end local.get $0 ) - (func $~lib/util/sort/COMPARATOR~anonymous|0 (; 142 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/util/sort/COMPARATOR~anonymous|0 (; 141 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $0 local.get $1 i32.gt_u @@ -7158,7 +5936,7 @@ i32.lt_u i32.sub ) - (func $~lib/array/Array#sort|trampoline (; 143 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#sort|trampoline (; 142 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) block $1of1 block $0of1 block $outOfRange @@ -7177,7 +5955,7 @@ local.get $1 call $~lib/array/Array#sort ) - (func $~lib/array/Array.create (; 144 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/array/Array.create (; 143 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) local.get $0 global.get $~lib/util/runtime/MAX_BYTELENGTH @@ -7187,7 +5965,7 @@ if i32.const 0 i32.const 272 - i32.const 45 + i32.const 44 i32.const 62 call $~lib/env/abort unreachable @@ -7209,7 +5987,7 @@ i32.store offset=12 local.get $1 ) - (func $std/array/createReverseOrderedArray (; 145 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $std/array/createReverseOrderedArray (; 144 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) local.get $0 @@ -7243,7 +6021,7 @@ end local.get $1 ) - (func $~lib/math/NativeMath.random (; 146 ;) (type $FUNCSIG$d) (result f64) + (func $~lib/math/NativeMath.random (; 145 ;) (type $FUNCSIG$d) (result f64) (local $0 i64) (local $1 i64) (local $2 i64) @@ -7251,7 +6029,7 @@ i32.eqz if i32.const 0 - i32.const 2992 + i32.const 3048 i32.const 1030 i32.const 24 call $~lib/env/abort @@ -7300,7 +6078,7 @@ f64.const 1 f64.sub ) - (func $std/array/createRandomOrderedArray (; 147 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $std/array/createRandomOrderedArray (; 146 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) local.get $0 @@ -7334,12 +6112,12 @@ end local.get $1 ) - (func $~lib/util/sort/COMPARATOR~anonymous|1 (; 148 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/util/sort/COMPARATOR~anonymous|1 (; 147 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $0 local.get $1 i32.sub ) - (func $std/array/isSorted (; 149 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $std/array/isSorted (; 148 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) block $break|0 @@ -7387,7 +6165,7 @@ end i32.const 1 ) - (func $std/array/assertSorted (; 150 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $std/array/assertSorted (; 149 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) local.get $0 local.get $1 call $~lib/array/Array#sort @@ -7403,7 +6181,7 @@ unreachable end ) - (func $std/array/assertSortedDefault (; 151 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $std/array/assertSortedDefault (; 150 ;) (type $FUNCSIG$vi) (param $0 i32) local.get $0 block $~lib/util/sort/COMPARATOR|inlined.1 (result i32) i32.const 48 @@ -7411,27 +6189,27 @@ end call $std/array/assertSorted ) - (func $start:std/array~anonymous|43 (; 152 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $start:std/array~anonymous|43 (; 151 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $0 local.get $1 i32.sub ) - (func $start:std/array~anonymous|44 (; 153 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $start:std/array~anonymous|44 (; 152 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $1 local.get $0 i32.sub ) - (func $start:std/array~anonymous|45 (; 154 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $start:std/array~anonymous|45 (; 153 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $0 local.get $1 i32.sub ) - (func $start:std/array~anonymous|46 (; 155 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $start:std/array~anonymous|46 (; 154 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $1 local.get $0 i32.sub ) - (func $~lib/array/Array.create<~lib/array/Array> (; 156 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/array/Array.create<~lib/array/Array> (; 155 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) local.get $0 global.get $~lib/util/runtime/MAX_BYTELENGTH @@ -7441,7 +6219,7 @@ if i32.const 0 i32.const 272 - i32.const 45 + i32.const 44 i32.const 62 call $~lib/env/abort unreachable @@ -7463,7 +6241,7 @@ i32.store offset=12 local.get $1 ) - (func $~lib/array/Array<~lib/array/Array>#__unchecked_set (; 157 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/array/Array<~lib/array/Array>#__unchecked_set (; 156 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) local.get $0 @@ -7496,7 +6274,7 @@ call $~lib/collector/dummy/__ref_link end ) - (func $~lib/array/Array<~lib/array/Array>#__set (; 158 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/array/Array<~lib/array/Array>#__set (; 157 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) local.get $0 i32.load offset=12 @@ -7507,7 +6285,7 @@ if i32.const 0 i32.const 272 - i32.const 112 + i32.const 111 i32.const 38 call $~lib/env/abort unreachable @@ -7533,7 +6311,7 @@ i32.store offset=12 end ) - (func $std/array/createReverseOrderedNestedArray (; 159 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $std/array/createReverseOrderedNestedArray (; 158 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -7577,7 +6355,7 @@ end local.get $1 ) - (func $start:std/array~anonymous|47 (; 160 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $start:std/array~anonymous|47 (; 159 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $0 i32.const 0 call $~lib/array/Array#__get @@ -7586,7 +6364,7 @@ call $~lib/array/Array#__get i32.sub ) - (func $~lib/util/sort/insertionSort<~lib/array/Array> (; 161 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/util/sort/insertionSort<~lib/array/Array> (; 160 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -7682,7 +6460,7 @@ unreachable end ) - (func $~lib/array/Array<~lib/array/Array>#sort (; 162 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array<~lib/array/Array>#sort (; 161 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -7693,7 +6471,7 @@ if i32.const 0 i32.const 272 - i32.const 527 + i32.const 526 i32.const 4 call $~lib/env/abort unreachable @@ -7756,11 +6534,11 @@ end local.get $0 ) - (func $~lib/array/Array<~lib/array/Array>#get:length (; 163 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/array/Array<~lib/array/Array>#get:length (; 162 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.load offset=12 ) - (func $~lib/array/Array<~lib/array/Array>#__unchecked_get (; 164 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array<~lib/array/Array>#__unchecked_get (; 163 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $0 i32.load offset=4 local.get $1 @@ -7769,7 +6547,7 @@ i32.add i32.load ) - (func $~lib/array/Array<~lib/array/Array>#__get (; 165 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array<~lib/array/Array>#__get (; 164 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $1 local.get $0 i32.load offset=12 @@ -7777,7 +6555,7 @@ if i32.const 0 i32.const 272 - i32.const 97 + i32.const 96 i32.const 45 call $~lib/env/abort unreachable @@ -7791,7 +6569,7 @@ if i32.const 0 i32.const 272 - i32.const 100 + i32.const 99 i32.const 61 call $~lib/env/abort unreachable @@ -7800,7 +6578,7 @@ local.get $1 call $~lib/array/Array<~lib/array/Array>#__unchecked_get ) - (func $std/array/isSorted<~lib/array/Array> (; 166 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $std/array/isSorted<~lib/array/Array> (; 165 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) block $break|0 @@ -7848,7 +6626,7 @@ end i32.const 1 ) - (func $std/array/assertSorted<~lib/array/Array> (; 167 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $std/array/assertSorted<~lib/array/Array> (; 166 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) local.get $0 local.get $1 call $~lib/array/Array<~lib/array/Array>#sort @@ -7864,7 +6642,7 @@ unreachable end ) - (func $~lib/array/Array.create> (; 168 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/array/Array.create> (; 167 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) local.get $0 global.get $~lib/util/runtime/MAX_BYTELENGTH @@ -7874,7 +6652,7 @@ if i32.const 0 i32.const 272 - i32.const 45 + i32.const 44 i32.const 62 call $~lib/env/abort unreachable @@ -7896,7 +6674,7 @@ i32.store offset=12 local.get $1 ) - (func $std/array/Proxy#constructor (; 169 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $std/array/Proxy#constructor (; 168 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $0 i32.eqz if @@ -7911,7 +6689,7 @@ i32.store local.get $0 ) - (func $~lib/array/Array>#__unchecked_set (; 170 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/array/Array>#__unchecked_set (; 169 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) local.get $0 @@ -7944,7 +6722,7 @@ call $~lib/collector/dummy/__ref_link end ) - (func $~lib/array/Array>#__set (; 171 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/array/Array>#__set (; 170 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) local.get $0 i32.load offset=12 @@ -7955,7 +6733,7 @@ if i32.const 0 i32.const 272 - i32.const 112 + i32.const 111 i32.const 38 call $~lib/env/abort unreachable @@ -7981,7 +6759,7 @@ i32.store offset=12 end ) - (func $std/array/createReverseOrderedElementsArray (; 172 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $std/array/createReverseOrderedElementsArray (; 171 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) local.get $0 @@ -8017,14 +6795,14 @@ end local.get $1 ) - (func $start:std/array~anonymous|48 (; 173 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $start:std/array~anonymous|48 (; 172 ;) (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> (; 174 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/util/sort/insertionSort> (; 173 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -8120,7 +6898,7 @@ unreachable end ) - (func $~lib/array/Array>#sort (; 175 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array>#sort (; 174 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -8131,7 +6909,7 @@ if i32.const 0 i32.const 272 - i32.const 527 + i32.const 526 i32.const 4 call $~lib/env/abort unreachable @@ -8194,11 +6972,11 @@ end local.get $0 ) - (func $~lib/array/Array>#get:length (; 176 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/array/Array>#get:length (; 175 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.load offset=12 ) - (func $~lib/array/Array>#__unchecked_get (; 177 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array>#__unchecked_get (; 176 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $0 i32.load offset=4 local.get $1 @@ -8207,7 +6985,7 @@ i32.add i32.load ) - (func $~lib/array/Array>#__get (; 178 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array>#__get (; 177 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $1 local.get $0 i32.load offset=12 @@ -8215,7 +6993,7 @@ if i32.const 0 i32.const 272 - i32.const 97 + i32.const 96 i32.const 45 call $~lib/env/abort unreachable @@ -8229,7 +7007,7 @@ if i32.const 0 i32.const 272 - i32.const 100 + i32.const 99 i32.const 61 call $~lib/env/abort unreachable @@ -8238,7 +7016,7 @@ local.get $1 call $~lib/array/Array>#__unchecked_get ) - (func $std/array/isSorted> (; 179 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $std/array/isSorted> (; 178 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) block $break|0 @@ -8286,7 +7064,7 @@ end i32.const 1 ) - (func $std/array/assertSorted> (; 180 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $std/array/assertSorted> (; 179 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) local.get $0 local.get $1 call $~lib/array/Array>#sort @@ -8302,7 +7080,7 @@ unreachable end ) - (func $~lib/util/sort/insertionSort<~lib/string/String | null> (; 181 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/util/sort/insertionSort<~lib/string/String | null> (; 180 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -8398,7 +7176,7 @@ unreachable end ) - (func $~lib/array/Array<~lib/string/String | null>#sort (; 182 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array<~lib/string/String | null>#sort (; 181 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -8409,7 +7187,7 @@ if i32.const 0 i32.const 272 - i32.const 527 + i32.const 526 i32.const 4 call $~lib/env/abort unreachable @@ -8472,11 +7250,11 @@ end local.get $0 ) - (func $~lib/array/Array<~lib/string/String | null>#get:length (; 183 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/array/Array<~lib/string/String | null>#get:length (; 182 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.load offset=12 ) - (func $~lib/array/Array<~lib/string/String | null>#__unchecked_get (; 184 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array<~lib/string/String | null>#__unchecked_get (; 183 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $0 i32.load offset=4 local.get $1 @@ -8485,7 +7263,7 @@ i32.add i32.load ) - (func $~lib/array/Array<~lib/string/String | null>#__get (; 185 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array<~lib/string/String | null>#__get (; 184 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $1 local.get $0 i32.load offset=8 @@ -8495,7 +7273,7 @@ if i32.const 0 i32.const 272 - i32.const 100 + i32.const 99 i32.const 61 call $~lib/env/abort unreachable @@ -8504,7 +7282,7 @@ local.get $1 call $~lib/array/Array<~lib/string/String | null>#__unchecked_get ) - (func $std/array/isSorted<~lib/string/String | null> (; 186 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $std/array/isSorted<~lib/string/String | null> (; 185 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) block $break|0 @@ -8552,7 +7330,7 @@ end i32.const 1 ) - (func $std/array/assertSorted<~lib/string/String | null> (; 187 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $std/array/assertSorted<~lib/string/String | null> (; 186 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) local.get $0 local.get $1 call $~lib/array/Array<~lib/string/String | null>#sort @@ -8568,7 +7346,7 @@ unreachable end ) - (func $~lib/string/String#get:length (; 188 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/string/String#get:length (; 187 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 global.get $~lib/util/runtime/HEADER_SIZE i32.sub @@ -8576,7 +7354,7 @@ i32.const 1 i32.shr_u ) - (func $~lib/util/string/compareImpl (; 189 ;) (type $FUNCSIG$iiiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (result i32) + (func $~lib/util/string/compareImpl (; 188 ;) (type $FUNCSIG$iiiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (result i32) (local $5 i32) (local $6 i32) (local $7 i32) @@ -8629,7 +7407,7 @@ end local.get $5 ) - (func $~lib/util/sort/COMPARATOR<~lib/string/String | null>~anonymous|0 (; 190 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/util/sort/COMPARATOR<~lib/string/String | null>~anonymous|0 (; 189 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -8702,7 +7480,7 @@ select call $~lib/util/string/compareImpl ) - (func $std/array/assertSorted<~lib/string/String | null>|trampoline (; 191 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $std/array/assertSorted<~lib/string/String | null>|trampoline (; 190 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) block $1of1 block $0of1 block $outOfRange @@ -8723,7 +7501,7 @@ local.get $1 call $std/array/assertSorted<~lib/string/String | null> ) - (func $~lib/string/String.__eq (; 192 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/string/String.__eq (; 191 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) local.get $0 @@ -8767,13 +7545,13 @@ call $~lib/util/string/compareImpl i32.eqz ) - (func $~lib/string/String.__ne (; 193 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/string/String.__ne (; 192 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $0 local.get $1 call $~lib/string/String.__eq i32.eqz ) - (func $std/array/isArraysEqual<~lib/string/String | null> (; 194 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/array/isArraysEqual<~lib/string/String | null> (; 193 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $2 i32.eqz @@ -8828,7 +7606,7 @@ end i32.const 1 ) - (func $~lib/array/Array.create<~lib/string/String> (; 195 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/array/Array.create<~lib/string/String> (; 194 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) local.get $0 global.get $~lib/util/runtime/MAX_BYTELENGTH @@ -8838,7 +7616,7 @@ if i32.const 0 i32.const 272 - i32.const 45 + i32.const 44 i32.const 62 call $~lib/env/abort unreachable @@ -8860,7 +7638,7 @@ i32.store offset=12 local.get $1 ) - (func $~lib/string/String#charAt (; 196 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/string/String#charAt (; 195 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) local.get $0 i32.const 0 @@ -8868,7 +7646,7 @@ i32.eqz if i32.const 0 - i32.const 4376 + i32.const 4432 i32.const 41 i32.const 4 call $~lib/env/abort @@ -8879,7 +7657,7 @@ call $~lib/string/String#get:length i32.ge_u if - i32.const 4200 + i32.const 4256 return end i32.const 2 @@ -8897,7 +7675,7 @@ i32.const 1 call $~lib/runtime/runtime.register ) - (func $~lib/string/String#concat (; 197 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/string/String#concat (; 196 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -8906,7 +7684,7 @@ i32.const 0 i32.eq if - i32.const 4424 + i32.const 4480 local.set $1 end local.get $0 @@ -8927,7 +7705,7 @@ i32.const 0 i32.eq if - i32.const 4200 + i32.const 4256 return end local.get $4 @@ -8947,9 +7725,9 @@ i32.const 1 call $~lib/runtime/runtime.register ) - (func $~lib/string/String.__concat (; 198 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/string/String.__concat (; 197 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $0 - i32.const 4424 + i32.const 4480 local.get $0 i32.const 0 i32.ne @@ -8957,11 +7735,11 @@ local.get $1 call $~lib/string/String#concat ) - (func $std/array/createRandomString (; 199 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $std/array/createRandomString (; 198 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 f64) - i32.const 4200 + i32.const 4256 local.set $1 block $break|0 i32.const 0 @@ -8999,7 +7777,7 @@ end local.get $1 ) - (func $~lib/array/Array<~lib/string/String>#__unchecked_set (; 200 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/array/Array<~lib/string/String>#__unchecked_set (; 199 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) local.get $0 @@ -9032,7 +7810,7 @@ call $~lib/collector/dummy/__ref_link end ) - (func $~lib/array/Array<~lib/string/String>#__set (; 201 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/array/Array<~lib/string/String>#__set (; 200 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) local.get $0 i32.load offset=12 @@ -9043,7 +7821,7 @@ if i32.const 0 i32.const 272 - i32.const 112 + i32.const 111 i32.const 38 call $~lib/env/abort unreachable @@ -9069,7 +7847,7 @@ i32.store offset=12 end ) - (func $std/array/createRandomStringArray (; 202 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $std/array/createRandomStringArray (; 201 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) local.get $0 @@ -9103,7 +7881,7 @@ end local.get $1 ) - (func $~lib/util/sort/insertionSort<~lib/string/String> (; 203 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/util/sort/insertionSort<~lib/string/String> (; 202 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -9199,7 +7977,7 @@ unreachable end ) - (func $~lib/array/Array<~lib/string/String>#sort (; 204 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array<~lib/string/String>#sort (; 203 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -9210,7 +7988,7 @@ if i32.const 0 i32.const 272 - i32.const 527 + i32.const 526 i32.const 4 call $~lib/env/abort unreachable @@ -9273,11 +8051,11 @@ end local.get $0 ) - (func $~lib/array/Array<~lib/string/String>#get:length (; 205 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/array/Array<~lib/string/String>#get:length (; 204 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.load offset=12 ) - (func $~lib/array/Array<~lib/string/String>#__unchecked_get (; 206 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array<~lib/string/String>#__unchecked_get (; 205 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $0 i32.load offset=4 local.get $1 @@ -9286,7 +8064,7 @@ i32.add i32.load ) - (func $~lib/array/Array<~lib/string/String>#__get (; 207 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array<~lib/string/String>#__get (; 206 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $1 local.get $0 i32.load offset=12 @@ -9294,7 +8072,7 @@ if i32.const 0 i32.const 272 - i32.const 97 + i32.const 96 i32.const 45 call $~lib/env/abort unreachable @@ -9308,7 +8086,7 @@ if i32.const 0 i32.const 272 - i32.const 100 + i32.const 99 i32.const 61 call $~lib/env/abort unreachable @@ -9317,7 +8095,7 @@ local.get $1 call $~lib/array/Array<~lib/string/String>#__unchecked_get ) - (func $std/array/isSorted<~lib/string/String> (; 208 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $std/array/isSorted<~lib/string/String> (; 207 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) block $break|0 @@ -9365,7 +8143,7 @@ end i32.const 1 ) - (func $std/array/assertSorted<~lib/string/String> (; 209 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $std/array/assertSorted<~lib/string/String> (; 208 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) local.get $0 local.get $1 call $~lib/array/Array<~lib/string/String>#sort @@ -9381,7 +8159,7 @@ unreachable end ) - (func $~lib/util/sort/COMPARATOR<~lib/string/String>~anonymous|0 (; 210 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/util/sort/COMPARATOR<~lib/string/String>~anonymous|0 (; 209 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -9454,7 +8232,7 @@ select call $~lib/util/string/compareImpl ) - (func $std/array/assertSorted<~lib/string/String>|trampoline (; 211 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $std/array/assertSorted<~lib/string/String>|trampoline (; 210 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) block $1of1 block $0of1 block $outOfRange @@ -9475,7 +8253,7 @@ local.get $1 call $std/array/assertSorted<~lib/string/String> ) - (func $~lib/string/String#substring (; 212 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/string/String#substring (; 211 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -9490,7 +8268,7 @@ i32.eqz if i32.const 0 - i32.const 4376 + i32.const 4432 i32.const 197 i32.const 4 call $~lib/env/abort @@ -9560,7 +8338,7 @@ local.get $3 i32.eqz if - i32.const 4200 + i32.const 4256 return end local.get $8 @@ -9593,7 +8371,7 @@ i32.const 1 call $~lib/runtime/runtime.register ) - (func $~lib/runtime/runtime.discard (; 213 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/runtime/runtime.discard (; 212 ;) (type $FUNCSIG$vi) (param $0 i32) (local $1 i32) local.get $0 global.get $~lib/memory/HEAP_BASE @@ -9602,7 +8380,7 @@ if i32.const 0 i32.const 80 - i32.const 103 + i32.const 68 i32.const 6 call $~lib/env/abort unreachable @@ -9619,7 +8397,7 @@ if i32.const 0 i32.const 80 - i32.const 105 + i32.const 70 i32.const 6 call $~lib/env/abort unreachable @@ -9627,7 +8405,7 @@ local.get $1 call $~lib/memory/memory.free ) - (func $~lib/array/Array#join_bool (; 214 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#join_bool (; 213 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -9646,7 +8424,7 @@ i32.const 0 i32.lt_s if - i32.const 4200 + i32.const 4256 return end local.get $0 @@ -9655,8 +8433,8 @@ local.get $2 i32.eqz if - i32.const 4472 - i32.const 4496 + i32.const 4528 + i32.const 4552 local.get $3 i32.load8_u i32.const 0 @@ -9711,8 +8489,8 @@ i32.const 1 i32.shl i32.add - i32.const 4472 - i32.const 4496 + i32.const 4528 + i32.const 4552 local.get $9 i32.const 0 i32.ne @@ -9769,8 +8547,8 @@ i32.const 1 i32.shl i32.add - i32.const 4472 - i32.const 4496 + i32.const 4528 + i32.const 4552 local.get $9 i32.const 0 i32.ne @@ -9801,13 +8579,13 @@ i32.const 1 call $~lib/runtime/runtime.register ) - (func $~lib/array/Array#join (; 215 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#join (; 214 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $0 local.get $1 call $~lib/array/Array#join_bool return ) - (func $~lib/util/number/decimalCount32 (; 216 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/util/number/decimalCount32 (; 215 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) local.get $0 i32.const 100000 @@ -9876,7 +8654,7 @@ unreachable unreachable ) - (func $~lib/util/number/utoa32_lut (; 217 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/util/number/utoa32_lut (; 216 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -9884,7 +8662,7 @@ (local $7 i32) (local $8 i64) (local $9 i64) - i32.const 5088 + i32.const 5144 i32.load offset=4 local.set $3 block $break|0 @@ -10019,7 +8797,7 @@ i32.store16 end ) - (func $~lib/util/number/itoa32 (; 218 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/util/number/itoa32 (; 217 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -10029,7 +8807,7 @@ local.get $0 i32.eqz if - i32.const 4648 + i32.const 4704 return end local.get $0 @@ -10075,12 +8853,12 @@ i32.const 1 call $~lib/runtime/runtime.register ) - (func $~lib/util/number/itoa (; 219 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/util/number/itoa (; 218 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 call $~lib/util/number/itoa32 return ) - (func $~lib/util/number/itoa_stream (; 220 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/util/number/itoa_stream (; 219 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -10139,7 +8917,7 @@ end local.get $3 ) - (func $~lib/array/Array#join_int (; 221 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#join_int (; 220 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -10157,7 +8935,7 @@ i32.const 0 i32.lt_s if - i32.const 4200 + i32.const 4256 return end local.get $0 @@ -10272,13 +9050,13 @@ i32.const 1 call $~lib/runtime/runtime.register ) - (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_int return ) - (func $~lib/util/number/utoa32 (; 223 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/util/number/utoa32 (; 222 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -10287,7 +9065,7 @@ local.get $0 i32.eqz if - i32.const 4648 + i32.const 4704 return end local.get $0 @@ -10314,12 +9092,12 @@ i32.const 1 call $~lib/runtime/runtime.register ) - (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 call $~lib/util/number/utoa32 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) @@ -10358,7 +9136,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) @@ -10376,7 +9154,7 @@ i32.const 0 i32.lt_s if - i32.const 4200 + i32.const 4256 return end local.get $0 @@ -10491,20 +9269,20 @@ i32.const 1 call $~lib/runtime/runtime.register ) - (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/builtins/isFinite (; 228 ;) (type $FUNCSIG$id) (param $0 f64) (result i32) + (func $~lib/builtins/isFinite (; 227 ;) (type $FUNCSIG$id) (param $0 f64) (result i32) local.get $0 local.get $0 f64.sub f64.const 0 f64.eq ) - (func $~lib/array/Array#__unchecked_get (; 229 ;) (type $FUNCSIG$jii) (param $0 i32) (param $1 i32) (result i64) + (func $~lib/array/Array#__unchecked_get (; 228 ;) (type $FUNCSIG$jii) (param $0 i32) (param $1 i32) (result i64) local.get $0 i32.load offset=4 local.get $1 @@ -10513,7 +9291,7 @@ i32.add i64.load ) - (func $~lib/array/Array#__unchecked_get (; 230 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#__unchecked_get (; 229 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $0 i32.load offset=4 local.get $1 @@ -10522,7 +9300,7 @@ i32.add i32.load16_s ) - (func $~lib/util/number/genDigits (; 231 ;) (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 (; 230 ;) (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) @@ -10578,7 +9356,7 @@ local.set $14 local.get $6 local.set $15 - i32.const 6640 + i32.const 6696 i32.load offset=4 local.set $16 block $break|0 @@ -11093,7 +9871,7 @@ end local.get $15 ) - (func $~lib/util/number/prettify (; 232 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/util/number/prettify (; 231 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -11426,7 +10204,7 @@ unreachable unreachable ) - (func $~lib/util/number/dtoa_core (; 233 ;) (type $FUNCSIG$iid) (param $0 i32) (param $1 f64) (result i32) + (func $~lib/util/number/dtoa_core (; 232 ;) (type $FUNCSIG$iid) (param $0 i32) (param $1 f64) (result i32) (local $2 i32) (local $3 f64) (local $4 i32) @@ -11595,11 +10373,11 @@ i32.shl i32.sub global.set $~lib/util/number/_K - i32.const 6328 + i32.const 6384 local.get $13 call $~lib/array/Array#__unchecked_get global.set $~lib/util/number/_frc_pow - i32.const 6552 + i32.const 6608 local.get $13 call $~lib/array/Array#__unchecked_get global.set $~lib/util/number/_exp_pow @@ -11864,7 +10642,7 @@ local.get $2 i32.add ) - (func $~lib/util/number/dtoa (; 234 ;) (type $FUNCSIG$id) (param $0 f64) (result i32) + (func $~lib/util/number/dtoa (; 233 ;) (type $FUNCSIG$id) (param $0 f64) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -11872,7 +10650,7 @@ f64.const 0 f64.eq if - i32.const 5496 + i32.const 5552 return end local.get $0 @@ -11882,11 +10660,11 @@ local.get $0 call $~lib/builtins/isNaN if - i32.const 5520 + i32.const 5576 return end - i32.const 5544 - i32.const 5584 + i32.const 5600 + i32.const 5640 local.get $0 f64.const 0 f64.lt @@ -11911,7 +10689,7 @@ call $~lib/runtime/runtime.discard local.get $3 ) - (func $~lib/util/number/dtoa_stream (; 235 ;) (type $FUNCSIG$iiid) (param $0 i32) (param $1 i32) (param $2 f64) (result i32) + (func $~lib/util/number/dtoa_stream (; 234 ;) (type $FUNCSIG$iiid) (param $0 i32) (param $1 i32) (param $2 f64) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -11964,8 +10742,8 @@ local.get $3 i32.add local.set $4 - i32.const 5544 - i32.const 5584 + i32.const 5600 + i32.const 5640 local.get $3 select local.set $5 @@ -11985,7 +10763,7 @@ local.get $2 call $~lib/util/number/dtoa_core ) - (func $~lib/array/Array#join_flt (; 236 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#join_flt (; 235 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -12003,7 +10781,7 @@ i32.const 0 i32.lt_s if - i32.const 4200 + i32.const 4256 return end local.get $0 @@ -12118,13 +10896,13 @@ i32.const 1 call $~lib/runtime/runtime.register ) - (func $~lib/array/Array#join (; 237 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#join (; 236 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $0 local.get $1 call $~lib/array/Array#join_flt return ) - (func $~lib/array/Array<~lib/string/String>#join_str (; 238 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array<~lib/string/String>#join_str (; 237 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -12143,7 +10921,7 @@ i32.const 0 i32.lt_s if - i32.const 4200 + i32.const 4256 return end local.get $0 @@ -12308,13 +11086,13 @@ i32.const 1 call $~lib/runtime/runtime.register ) - (func $~lib/array/Array<~lib/string/String>#join (; 239 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array<~lib/string/String>#join (; 238 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $0 local.get $1 call $~lib/array/Array<~lib/string/String>#join_str return ) - (func $std/array/Ref#constructor (; 240 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $std/array/Ref#constructor (; 239 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.eqz if @@ -12326,7 +11104,7 @@ end local.get $0 ) - (func $~lib/array/Array#join_ref (; 241 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#join_ref (; 240 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -12344,7 +11122,7 @@ i32.const 0 i32.lt_s if - i32.const 4200 + i32.const 4256 return end local.get $0 @@ -12353,7 +11131,7 @@ local.get $2 i32.eqz if - i32.const 6920 + i32.const 6976 return end local.get $1 @@ -12398,7 +11176,7 @@ i32.const 1 i32.shl i32.add - i32.const 6920 + i32.const 6976 i32.const 15 i32.const 1 i32.shl @@ -12447,7 +11225,7 @@ i32.const 1 i32.shl i32.add - i32.const 6920 + i32.const 6976 i32.const 15 i32.const 1 i32.shl @@ -12475,18 +11253,18 @@ i32.const 1 call $~lib/runtime/runtime.register ) - (func $~lib/array/Array#join (; 242 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#join (; 241 ;) (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 (; 243 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/array/Array#toString (; 242 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 - i32.const 4528 + i32.const 4584 call $~lib/array/Array#join ) - (func $~lib/util/number/itoa (; 244 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/util/number/itoa (; 243 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.const 24 i32.shl @@ -12495,7 +11273,7 @@ call $~lib/util/number/itoa32 return ) - (func $~lib/util/number/itoa_stream (; 245 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/util/number/itoa_stream (; 244 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -12570,7 +11348,7 @@ end local.get $3 ) - (func $~lib/array/Array#join_int (; 246 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#join_int (; 245 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -12588,7 +11366,7 @@ i32.const 0 i32.lt_s if - i32.const 4200 + i32.const 4256 return end local.get $0 @@ -12703,25 +11481,25 @@ i32.const 1 call $~lib/runtime/runtime.register ) - (func $~lib/array/Array#join (; 247 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#join (; 246 ;) (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 (; 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 + i32.const 4584 call $~lib/array/Array#join ) - (func $~lib/util/number/itoa (; 249 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/util/number/itoa (; 248 ;) (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 (; 250 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/util/number/itoa_stream (; 249 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -12766,7 +11544,7 @@ end local.get $3 ) - (func $~lib/array/Array#join_int (; 251 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#join_int (; 250 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -12784,7 +11562,7 @@ i32.const 0 i32.lt_s if - i32.const 4200 + i32.const 4256 return end local.get $0 @@ -12899,18 +11677,18 @@ i32.const 1 call $~lib/runtime/runtime.register ) - (func $~lib/array/Array#join (; 252 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#join (; 251 ;) (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 (; 253 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/array/Array#toString (; 252 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 - i32.const 4528 + i32.const 4584 call $~lib/array/Array#join ) - (func $~lib/util/number/decimalCount64 (; 254 ;) (type $FUNCSIG$ij) (param $0 i64) (result i32) + (func $~lib/util/number/decimalCount64 (; 253 ;) (type $FUNCSIG$ij) (param $0 i64) (result i32) (local $1 i32) local.get $0 i64.const 1000000000000000 @@ -12979,7 +11757,7 @@ unreachable unreachable ) - (func $~lib/util/number/utoa64_lut (; 255 ;) (type $FUNCSIG$viji) (param $0 i32) (param $1 i64) (param $2 i32) + (func $~lib/util/number/utoa64_lut (; 254 ;) (type $FUNCSIG$viji) (param $0 i32) (param $1 i64) (param $2 i32) (local $3 i32) (local $4 i64) (local $5 i32) @@ -12991,7 +11769,7 @@ (local $11 i32) (local $12 i64) (local $13 i64) - i32.const 5088 + i32.const 5144 i32.load offset=4 local.set $3 block $break|0 @@ -13107,7 +11885,7 @@ local.get $2 call $~lib/util/number/utoa32_lut ) - (func $~lib/util/number/utoa64 (; 256 ;) (type $FUNCSIG$ij) (param $0 i64) (result i32) + (func $~lib/util/number/utoa64 (; 255 ;) (type $FUNCSIG$ij) (param $0 i64) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -13118,7 +11896,7 @@ local.get $0 i64.eqz if - i32.const 4648 + i32.const 4704 return end local.get $0 @@ -13175,12 +11953,12 @@ i32.const 1 call $~lib/runtime/runtime.register ) - (func $~lib/util/number/itoa (; 257 ;) (type $FUNCSIG$ij) (param $0 i64) (result i32) + (func $~lib/util/number/itoa (; 256 ;) (type $FUNCSIG$ij) (param $0 i64) (result i32) local.get $0 call $~lib/util/number/utoa64 return ) - (func $~lib/util/number/itoa_stream (; 258 ;) (type $FUNCSIG$iiij) (param $0 i32) (param $1 i32) (param $2 i64) (result i32) + (func $~lib/util/number/itoa_stream (; 257 ;) (type $FUNCSIG$iiij) (param $0 i32) (param $1 i32) (param $2 i64) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -13246,7 +12024,7 @@ end local.get $3 ) - (func $~lib/array/Array#join_int (; 259 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#join_int (; 258 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -13264,7 +12042,7 @@ i32.const 0 i32.lt_s if - i32.const 4200 + i32.const 4256 return end local.get $0 @@ -13379,18 +12157,18 @@ i32.const 1 call $~lib/runtime/runtime.register ) - (func $~lib/array/Array#join (; 260 ;) (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_int return ) - (func $~lib/array/Array#toString (; 261 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/array/Array#toString (; 260 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 - i32.const 4528 + i32.const 4584 call $~lib/array/Array#join ) - (func $~lib/util/number/itoa64 (; 262 ;) (type $FUNCSIG$ij) (param $0 i64) (result i32) + (func $~lib/util/number/itoa64 (; 261 ;) (type $FUNCSIG$ij) (param $0 i64) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -13402,7 +12180,7 @@ local.get $0 i64.eqz if - i32.const 4648 + i32.const 4704 return end local.get $0 @@ -13480,12 +12258,12 @@ i32.const 1 call $~lib/runtime/runtime.register ) - (func $~lib/util/number/itoa (; 263 ;) (type $FUNCSIG$ij) (param $0 i64) (result i32) + (func $~lib/util/number/itoa (; 262 ;) (type $FUNCSIG$ij) (param $0 i64) (result i32) local.get $0 call $~lib/util/number/itoa64 return ) - (func $~lib/util/number/itoa_stream (; 264 ;) (type $FUNCSIG$iiij) (param $0 i32) (param $1 i32) (param $2 i64) (result i32) + (func $~lib/util/number/itoa_stream (; 263 ;) (type $FUNCSIG$iiij) (param $0 i32) (param $1 i32) (param $2 i64) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -13573,7 +12351,7 @@ end local.get $3 ) - (func $~lib/array/Array#join_int (; 265 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#join_int (; 264 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -13591,7 +12369,7 @@ i32.const 0 i32.lt_s if - i32.const 4200 + i32.const 4256 return end local.get $0 @@ -13706,18 +12484,18 @@ i32.const 1 call $~lib/runtime/runtime.register ) - (func $~lib/array/Array#join (; 266 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#join (; 265 ;) (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 (; 267 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/array/Array#toString (; 266 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 - i32.const 4528 + i32.const 4584 call $~lib/array/Array#join ) - (func $~lib/array/Array<~lib/string/String | null>#join_str (; 268 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array<~lib/string/String | null>#join_str (; 267 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -13736,7 +12514,7 @@ i32.const 0 i32.lt_s if - i32.const 4200 + i32.const 4256 return end local.get $0 @@ -13901,23 +12679,23 @@ i32.const 1 call $~lib/runtime/runtime.register ) - (func $~lib/array/Array<~lib/string/String | null>#join (; 269 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array<~lib/string/String | null>#join (; 268 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $0 local.get $1 call $~lib/array/Array<~lib/string/String | null>#join_str return ) - (func $~lib/array/Array<~lib/string/String | null>#toString (; 270 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/array/Array<~lib/string/String | null>#toString (; 269 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 - i32.const 4528 + i32.const 4584 call $~lib/array/Array<~lib/string/String | null>#join ) - (func $~lib/array/Array<~lib/string/String>#toString (; 271 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/array/Array<~lib/string/String>#toString (; 270 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 - i32.const 4528 + i32.const 4584 call $~lib/array/Array<~lib/string/String>#join ) - (func $~lib/array/Array<~lib/array/Array>#join_arr (; 272 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array<~lib/array/Array>#join_arr (; 271 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -13933,10 +12711,10 @@ i32.const 0 i32.lt_s if - i32.const 4200 + i32.const 4256 return end - i32.const 4200 + i32.const 4256 local.set $3 local.get $1 call $~lib/string/String#get:length @@ -13956,7 +12734,7 @@ local.get $1 call $~lib/array/Array#join else - i32.const 4200 + i32.const 4256 end return end @@ -14021,25 +12799,25 @@ end local.get $3 ) - (func $~lib/array/Array<~lib/array/Array>#join (; 273 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array<~lib/array/Array>#join (; 272 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $0 local.get $1 call $~lib/array/Array<~lib/array/Array>#join_arr return ) - (func $~lib/array/Array<~lib/array/Array>#toString (; 274 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/array/Array<~lib/array/Array>#toString (; 273 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 - i32.const 4528 + i32.const 4584 call $~lib/array/Array<~lib/array/Array>#join ) - (func $~lib/util/number/itoa (; 275 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/util/number/itoa (; 274 ;) (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 (; 276 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/util/number/itoa_stream (; 275 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -14084,7 +12862,7 @@ end local.get $3 ) - (func $~lib/array/Array#join_int (; 277 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#join_int (; 276 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -14102,7 +12880,7 @@ i32.const 0 i32.lt_s if - i32.const 4200 + i32.const 4256 return end local.get $0 @@ -14217,13 +12995,13 @@ i32.const 1 call $~lib/runtime/runtime.register ) - (func $~lib/array/Array#join (; 278 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#join (; 277 ;) (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<~lib/array/Array>#join_arr (; 279 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array<~lib/array/Array>#join_arr (; 278 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -14239,10 +13017,10 @@ i32.const 0 i32.lt_s if - i32.const 4200 + i32.const 4256 return end - i32.const 4200 + i32.const 4256 local.set $3 local.get $1 call $~lib/string/String#get:length @@ -14262,7 +13040,7 @@ local.get $1 call $~lib/array/Array#join else - i32.const 4200 + i32.const 4256 end return end @@ -14327,18 +13105,18 @@ end local.get $3 ) - (func $~lib/array/Array<~lib/array/Array>#join (; 280 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array<~lib/array/Array>#join (; 279 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $0 local.get $1 call $~lib/array/Array<~lib/array/Array>#join_arr return ) - (func $~lib/array/Array<~lib/array/Array>#toString (; 281 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/array/Array<~lib/array/Array>#toString (; 280 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 - i32.const 4528 + i32.const 4584 call $~lib/array/Array<~lib/array/Array>#join ) - (func $~lib/array/Array<~lib/array/Array>#join_arr (; 282 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array<~lib/array/Array>#join_arr (; 281 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -14354,10 +13132,10 @@ i32.const 0 i32.lt_s if - i32.const 4200 + i32.const 4256 return end - i32.const 4200 + i32.const 4256 local.set $3 local.get $1 call $~lib/string/String#get:length @@ -14377,7 +13155,7 @@ local.get $1 call $~lib/array/Array#join else - i32.const 4200 + i32.const 4256 end return end @@ -14442,13 +13220,13 @@ end local.get $3 ) - (func $~lib/array/Array<~lib/array/Array>#join (; 283 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array<~lib/array/Array>#join (; 282 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $0 local.get $1 call $~lib/array/Array<~lib/array/Array>#join_arr return ) - (func $~lib/array/Array<~lib/array/Array<~lib/array/Array>>#join_arr (; 284 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array<~lib/array/Array<~lib/array/Array>>#join_arr (; 283 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -14464,10 +13242,10 @@ i32.const 0 i32.lt_s if - i32.const 4200 + i32.const 4256 return end - i32.const 4200 + i32.const 4256 local.set $3 local.get $1 call $~lib/string/String#get:length @@ -14487,7 +13265,7 @@ local.get $1 call $~lib/array/Array<~lib/array/Array>#join else - i32.const 4200 + i32.const 4256 end return end @@ -14552,18 +13330,18 @@ end local.get $3 ) - (func $~lib/array/Array<~lib/array/Array<~lib/array/Array>>#join (; 285 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array<~lib/array/Array<~lib/array/Array>>#join (; 284 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $0 local.get $1 call $~lib/array/Array<~lib/array/Array<~lib/array/Array>>#join_arr return ) - (func $~lib/array/Array<~lib/array/Array<~lib/array/Array>>#toString (; 286 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/array/Array<~lib/array/Array<~lib/array/Array>>#toString (; 285 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 - i32.const 4528 + i32.const 4584 call $~lib/array/Array<~lib/array/Array<~lib/array/Array>>#join ) - (func $start:std/array (; 287 ;) (type $FUNCSIG$v) + (func $start:std/array (; 286 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -15230,7 +14008,7 @@ i32.const 0 i32.const 2 i32.const 4 - i32.const 688 + i32.const 744 call $~lib/runtime/runtime.newArray call $~lib/array/Array#concat drop @@ -15503,7 +14281,7 @@ i32.const 5 i32.const 2 i32.const 4 - i32.const 752 + i32.const 808 call $~lib/runtime/runtime.newArray global.set $std/array/cwArr global.get $std/array/cwArr @@ -15514,7 +14292,7 @@ i32.const 5 i32.const 2 i32.const 4 - i32.const 792 + i32.const 848 call $~lib/runtime/runtime.newArray i32.const 0 call $std/array/isArraysEqual @@ -15530,7 +14308,7 @@ i32.const 5 i32.const 2 i32.const 4 - i32.const 832 + i32.const 888 call $~lib/runtime/runtime.newArray global.set $std/array/cwArr global.get $std/array/cwArr @@ -15541,7 +14319,7 @@ i32.const 5 i32.const 2 i32.const 4 - i32.const 872 + i32.const 928 call $~lib/runtime/runtime.newArray i32.const 0 call $std/array/isArraysEqual @@ -15557,7 +14335,7 @@ i32.const 5 i32.const 2 i32.const 4 - i32.const 912 + i32.const 968 call $~lib/runtime/runtime.newArray global.set $std/array/cwArr global.get $std/array/cwArr @@ -15568,7 +14346,7 @@ i32.const 5 i32.const 2 i32.const 4 - i32.const 952 + i32.const 1008 call $~lib/runtime/runtime.newArray i32.const 0 call $std/array/isArraysEqual @@ -15584,7 +14362,7 @@ i32.const 5 i32.const 2 i32.const 4 - i32.const 992 + i32.const 1048 call $~lib/runtime/runtime.newArray global.set $std/array/cwArr global.get $std/array/cwArr @@ -15595,7 +14373,7 @@ i32.const 5 i32.const 2 i32.const 4 - i32.const 1032 + i32.const 1088 call $~lib/runtime/runtime.newArray i32.const 0 call $std/array/isArraysEqual @@ -15611,7 +14389,7 @@ i32.const 5 i32.const 2 i32.const 4 - i32.const 1072 + i32.const 1128 call $~lib/runtime/runtime.newArray global.set $std/array/cwArr global.get $std/array/cwArr @@ -15622,7 +14400,7 @@ i32.const 5 i32.const 2 i32.const 4 - i32.const 1112 + i32.const 1168 call $~lib/runtime/runtime.newArray i32.const 0 call $std/array/isArraysEqual @@ -15638,7 +14416,7 @@ i32.const 5 i32.const 2 i32.const 4 - i32.const 1152 + i32.const 1208 call $~lib/runtime/runtime.newArray global.set $std/array/cwArr global.get $std/array/cwArr @@ -15649,7 +14427,7 @@ i32.const 5 i32.const 2 i32.const 4 - i32.const 1192 + i32.const 1248 call $~lib/runtime/runtime.newArray i32.const 0 call $std/array/isArraysEqual @@ -15665,7 +14443,7 @@ i32.const 5 i32.const 2 i32.const 4 - i32.const 1232 + i32.const 1288 call $~lib/runtime/runtime.newArray global.set $std/array/cwArr global.get $std/array/cwArr @@ -15676,7 +14454,7 @@ i32.const 5 i32.const 2 i32.const 4 - i32.const 1272 + i32.const 1328 call $~lib/runtime/runtime.newArray i32.const 0 call $std/array/isArraysEqual @@ -15692,7 +14470,7 @@ i32.const 5 i32.const 2 i32.const 4 - i32.const 1312 + i32.const 1368 call $~lib/runtime/runtime.newArray global.set $std/array/cwArr global.get $std/array/cwArr @@ -15703,7 +14481,7 @@ i32.const 5 i32.const 2 i32.const 4 - i32.const 1352 + i32.const 1408 call $~lib/runtime/runtime.newArray i32.const 0 call $std/array/isArraysEqual @@ -15719,7 +14497,7 @@ i32.const 5 i32.const 2 i32.const 4 - i32.const 1392 + i32.const 1448 call $~lib/runtime/runtime.newArray global.set $std/array/cwArr global.get $std/array/cwArr @@ -15730,7 +14508,7 @@ i32.const 5 i32.const 2 i32.const 4 - i32.const 1432 + i32.const 1488 call $~lib/runtime/runtime.newArray i32.const 0 call $std/array/isArraysEqual @@ -15746,7 +14524,7 @@ i32.const 5 i32.const 2 i32.const 4 - i32.const 1472 + i32.const 1528 call $~lib/runtime/runtime.newArray global.set $std/array/cwArr global.get $std/array/cwArr @@ -15757,7 +14535,7 @@ i32.const 5 i32.const 2 i32.const 4 - i32.const 1512 + i32.const 1568 call $~lib/runtime/runtime.newArray i32.const 0 call $std/array/isArraysEqual @@ -15773,7 +14551,7 @@ i32.const 5 i32.const 2 i32.const 4 - i32.const 1552 + i32.const 1608 call $~lib/runtime/runtime.newArray global.set $std/array/cwArr global.get $std/array/cwArr @@ -15784,7 +14562,7 @@ i32.const 5 i32.const 2 i32.const 4 - i32.const 1592 + i32.const 1648 call $~lib/runtime/runtime.newArray i32.const 0 call $std/array/isArraysEqual @@ -15800,7 +14578,7 @@ i32.const 5 i32.const 2 i32.const 4 - i32.const 1632 + i32.const 1688 call $~lib/runtime/runtime.newArray global.set $std/array/cwArr global.get $std/array/cwArr @@ -15811,7 +14589,7 @@ i32.const 5 i32.const 2 i32.const 4 - i32.const 1672 + i32.const 1728 call $~lib/runtime/runtime.newArray i32.const 0 call $std/array/isArraysEqual @@ -16675,7 +15453,7 @@ i32.const 5 i32.const 2 i32.const 4 - i32.const 1784 + i32.const 1840 call $~lib/runtime/runtime.newArray i32.const 0 call $std/array/isArraysEqual @@ -16692,7 +15470,7 @@ i32.const 0 i32.const 2 i32.const 4 - i32.const 1824 + i32.const 1880 call $~lib/runtime/runtime.newArray i32.const 0 call $std/array/isArraysEqual @@ -16708,7 +15486,7 @@ i32.const 5 i32.const 2 i32.const 4 - i32.const 1840 + i32.const 1896 call $~lib/runtime/runtime.newArray global.set $std/array/sarr global.get $std/array/sarr @@ -16718,7 +15496,7 @@ i32.const 3 i32.const 2 i32.const 4 - i32.const 1880 + i32.const 1936 call $~lib/runtime/runtime.newArray i32.const 0 call $std/array/isArraysEqual @@ -16735,7 +15513,7 @@ i32.const 2 i32.const 2 i32.const 4 - i32.const 1912 + i32.const 1968 call $~lib/runtime/runtime.newArray i32.const 0 call $std/array/isArraysEqual @@ -16751,7 +15529,7 @@ i32.const 5 i32.const 2 i32.const 4 - i32.const 1936 + i32.const 1992 call $~lib/runtime/runtime.newArray global.set $std/array/sarr global.get $std/array/sarr @@ -16761,7 +15539,7 @@ i32.const 2 i32.const 2 i32.const 4 - i32.const 1976 + i32.const 2032 call $~lib/runtime/runtime.newArray i32.const 0 call $std/array/isArraysEqual @@ -16778,7 +15556,7 @@ i32.const 3 i32.const 2 i32.const 4 - i32.const 2000 + i32.const 2056 call $~lib/runtime/runtime.newArray i32.const 0 call $std/array/isArraysEqual @@ -16794,7 +15572,7 @@ i32.const 5 i32.const 2 i32.const 4 - i32.const 2032 + i32.const 2088 call $~lib/runtime/runtime.newArray global.set $std/array/sarr global.get $std/array/sarr @@ -16804,7 +15582,7 @@ i32.const 1 i32.const 2 i32.const 4 - i32.const 2072 + i32.const 2128 call $~lib/runtime/runtime.newArray i32.const 0 call $std/array/isArraysEqual @@ -16821,7 +15599,7 @@ i32.const 4 i32.const 2 i32.const 4 - i32.const 2096 + i32.const 2152 call $~lib/runtime/runtime.newArray i32.const 0 call $std/array/isArraysEqual @@ -16837,7 +15615,7 @@ i32.const 5 i32.const 2 i32.const 4 - i32.const 2128 + i32.const 2184 call $~lib/runtime/runtime.newArray global.set $std/array/sarr global.get $std/array/sarr @@ -16847,7 +15625,7 @@ i32.const 1 i32.const 2 i32.const 4 - i32.const 2168 + i32.const 2224 call $~lib/runtime/runtime.newArray i32.const 0 call $std/array/isArraysEqual @@ -16864,7 +15642,7 @@ i32.const 4 i32.const 2 i32.const 4 - i32.const 2192 + i32.const 2248 call $~lib/runtime/runtime.newArray i32.const 0 call $std/array/isArraysEqual @@ -16880,7 +15658,7 @@ i32.const 5 i32.const 2 i32.const 4 - i32.const 2224 + i32.const 2280 call $~lib/runtime/runtime.newArray global.set $std/array/sarr global.get $std/array/sarr @@ -16890,7 +15668,7 @@ i32.const 2 i32.const 2 i32.const 4 - i32.const 2264 + i32.const 2320 call $~lib/runtime/runtime.newArray i32.const 0 call $std/array/isArraysEqual @@ -16907,7 +15685,7 @@ i32.const 3 i32.const 2 i32.const 4 - i32.const 2288 + i32.const 2344 call $~lib/runtime/runtime.newArray i32.const 0 call $std/array/isArraysEqual @@ -16923,7 +15701,7 @@ i32.const 5 i32.const 2 i32.const 4 - i32.const 2320 + i32.const 2376 call $~lib/runtime/runtime.newArray global.set $std/array/sarr global.get $std/array/sarr @@ -16933,7 +15711,7 @@ i32.const 1 i32.const 2 i32.const 4 - i32.const 2360 + i32.const 2416 call $~lib/runtime/runtime.newArray i32.const 0 call $std/array/isArraysEqual @@ -16950,7 +15728,7 @@ i32.const 4 i32.const 2 i32.const 4 - i32.const 2384 + i32.const 2440 call $~lib/runtime/runtime.newArray i32.const 0 call $std/array/isArraysEqual @@ -16966,7 +15744,7 @@ i32.const 5 i32.const 2 i32.const 4 - i32.const 2416 + i32.const 2472 call $~lib/runtime/runtime.newArray global.set $std/array/sarr global.get $std/array/sarr @@ -16976,7 +15754,7 @@ i32.const 1 i32.const 2 i32.const 4 - i32.const 2456 + i32.const 2512 call $~lib/runtime/runtime.newArray i32.const 0 call $std/array/isArraysEqual @@ -16993,7 +15771,7 @@ i32.const 4 i32.const 2 i32.const 4 - i32.const 2480 + i32.const 2536 call $~lib/runtime/runtime.newArray i32.const 0 call $std/array/isArraysEqual @@ -17009,7 +15787,7 @@ i32.const 5 i32.const 2 i32.const 4 - i32.const 2512 + i32.const 2568 call $~lib/runtime/runtime.newArray global.set $std/array/sarr global.get $std/array/sarr @@ -17019,7 +15797,7 @@ i32.const 0 i32.const 2 i32.const 4 - i32.const 2552 + i32.const 2608 call $~lib/runtime/runtime.newArray i32.const 0 call $std/array/isArraysEqual @@ -17036,7 +15814,7 @@ i32.const 5 i32.const 2 i32.const 4 - i32.const 2568 + i32.const 2624 call $~lib/runtime/runtime.newArray i32.const 0 call $std/array/isArraysEqual @@ -17052,7 +15830,7 @@ i32.const 5 i32.const 2 i32.const 4 - i32.const 2608 + i32.const 2664 call $~lib/runtime/runtime.newArray global.set $std/array/sarr global.get $std/array/sarr @@ -17062,7 +15840,7 @@ i32.const 0 i32.const 2 i32.const 4 - i32.const 2648 + i32.const 2704 call $~lib/runtime/runtime.newArray i32.const 0 call $std/array/isArraysEqual @@ -17079,7 +15857,7 @@ i32.const 5 i32.const 2 i32.const 4 - i32.const 2664 + i32.const 2720 call $~lib/runtime/runtime.newArray i32.const 0 call $std/array/isArraysEqual @@ -17095,7 +15873,7 @@ i32.const 5 i32.const 2 i32.const 4 - i32.const 2704 + i32.const 2760 call $~lib/runtime/runtime.newArray global.set $std/array/sarr global.get $std/array/sarr @@ -17105,7 +15883,7 @@ i32.const 0 i32.const 2 i32.const 4 - i32.const 2744 + i32.const 2800 call $~lib/runtime/runtime.newArray i32.const 0 call $std/array/isArraysEqual @@ -17122,7 +15900,7 @@ i32.const 5 i32.const 2 i32.const 4 - i32.const 2760 + i32.const 2816 call $~lib/runtime/runtime.newArray i32.const 0 call $std/array/isArraysEqual @@ -17138,7 +15916,7 @@ i32.const 5 i32.const 2 i32.const 4 - i32.const 2800 + i32.const 2856 call $~lib/runtime/runtime.newArray global.set $std/array/sarr global.get $std/array/sarr @@ -17148,7 +15926,7 @@ i32.const 0 i32.const 2 i32.const 4 - i32.const 2840 + i32.const 2896 call $~lib/runtime/runtime.newArray i32.const 0 call $std/array/isArraysEqual @@ -17165,7 +15943,7 @@ i32.const 5 i32.const 2 i32.const 4 - i32.const 2856 + i32.const 2912 call $~lib/runtime/runtime.newArray i32.const 0 call $std/array/isArraysEqual @@ -17181,7 +15959,7 @@ i32.const 5 i32.const 2 i32.const 4 - i32.const 2896 + i32.const 2952 call $~lib/runtime/runtime.newArray global.set $std/array/sarr global.get $std/array/sarr @@ -17191,7 +15969,7 @@ i32.const 0 i32.const 2 i32.const 4 - i32.const 2936 + i32.const 2992 call $~lib/runtime/runtime.newArray i32.const 0 call $std/array/isArraysEqual @@ -17208,7 +15986,7 @@ i32.const 5 i32.const 2 i32.const 4 - i32.const 2952 + i32.const 3008 call $~lib/runtime/runtime.newArray i32.const 0 call $std/array/isArraysEqual @@ -18410,7 +17188,7 @@ i32.const 8 i32.const 2 i32.const 9 - i32.const 3304 + i32.const 3360 call $~lib/runtime/runtime.newArray i32.const 0 call $std/array/isArraysEqual @@ -18435,7 +17213,7 @@ i32.const 8 i32.const 3 i32.const 10 - i32.const 3464 + i32.const 3520 call $~lib/runtime/runtime.newArray i32.const 0 call $std/array/isArraysEqual @@ -18460,7 +17238,7 @@ i32.const 5 i32.const 2 i32.const 4 - i32.const 3616 + i32.const 3672 call $~lib/runtime/runtime.newArray i32.const 0 call $std/array/isArraysEqual @@ -18485,7 +17263,7 @@ i32.const 5 i32.const 2 i32.const 8 - i32.const 3728 + i32.const 3784 call $~lib/runtime/runtime.newArray i32.const 0 call $std/array/isArraysEqual @@ -18521,7 +17299,7 @@ i32.const 1 i32.const 2 i32.const 4 - i32.const 4056 + i32.const 4112 call $~lib/runtime/runtime.newArray i32.const 0 call $std/array/isArraysEqual @@ -18540,7 +17318,7 @@ i32.const 2 i32.const 2 i32.const 4 - i32.const 4080 + i32.const 4136 call $~lib/runtime/runtime.newArray i32.const 0 call $std/array/isArraysEqual @@ -18693,11 +17471,11 @@ i32.const 2 i32.const 0 i32.const 16 - i32.const 4552 + i32.const 4608 call $~lib/runtime/runtime.newArray - i32.const 4528 + i32.const 4584 call $~lib/array/Array#join - i32.const 4576 + i32.const 4632 call $~lib/string/String.__eq i32.eqz if @@ -18711,11 +17489,11 @@ i32.const 3 i32.const 2 i32.const 4 - i32.const 5120 + i32.const 5176 call $~lib/runtime/runtime.newArray - i32.const 4200 + i32.const 4256 call $~lib/array/Array#join - i32.const 5152 + i32.const 5208 call $~lib/string/String.__eq i32.eqz if @@ -18729,11 +17507,11 @@ i32.const 3 i32.const 2 i32.const 8 - i32.const 5240 + i32.const 5296 call $~lib/runtime/runtime.newArray - i32.const 5216 + i32.const 5272 call $~lib/array/Array#join - i32.const 5152 + i32.const 5208 call $~lib/string/String.__eq i32.eqz if @@ -18747,11 +17525,11 @@ i32.const 2 i32.const 2 i32.const 4 - i32.const 5320 + i32.const 5376 call $~lib/runtime/runtime.newArray - i32.const 5296 + i32.const 5352 call $~lib/array/Array#join - i32.const 5344 + i32.const 5400 call $~lib/string/String.__eq i32.eqz if @@ -18765,11 +17543,11 @@ i32.const 6 i32.const 3 i32.const 10 - i32.const 6672 + i32.const 6728 call $~lib/runtime/runtime.newArray - i32.const 5472 + i32.const 5528 call $~lib/array/Array#join - i32.const 6736 + i32.const 6792 call $~lib/string/String.__eq i32.eqz if @@ -18783,11 +17561,11 @@ i32.const 3 i32.const 2 i32.const 15 - i32.const 6888 + i32.const 6944 call $~lib/runtime/runtime.newArray - i32.const 4200 + i32.const 4256 call $~lib/array/Array<~lib/string/String>#join - i32.const 6832 + i32.const 6888 call $~lib/string/String.__eq i32.eqz if @@ -18853,9 +17631,9 @@ end global.set $std/array/refArr global.get $std/array/refArr - i32.const 4528 + i32.const 4584 call $~lib/array/Array#join - i32.const 6968 + i32.const 7024 call $~lib/string/String.__eq i32.eqz if @@ -18868,7 +17646,7 @@ end global.get $std/array/reversed0 call $~lib/array/Array#toString - i32.const 4200 + i32.const 4256 call $~lib/string/String.__eq i32.eqz if @@ -18881,7 +17659,7 @@ end global.get $std/array/reversed1 call $~lib/array/Array#toString - i32.const 6832 + i32.const 6888 call $~lib/string/String.__eq i32.eqz if @@ -18894,7 +17672,7 @@ end global.get $std/array/reversed2 call $~lib/array/Array#toString - i32.const 7048 + i32.const 7104 call $~lib/string/String.__eq i32.eqz if @@ -18907,7 +17685,7 @@ end global.get $std/array/reversed4 call $~lib/array/Array#toString - i32.const 7072 + i32.const 7128 call $~lib/string/String.__eq i32.eqz if @@ -18921,10 +17699,10 @@ i32.const 3 i32.const 0 i32.const 21 - i32.const 7128 + i32.const 7184 call $~lib/runtime/runtime.newArray call $~lib/array/Array#toString - i32.const 7152 + i32.const 7208 call $~lib/string/String.__eq i32.eqz if @@ -18938,10 +17716,10 @@ i32.const 3 i32.const 1 i32.const 22 - i32.const 7208 + i32.const 7264 call $~lib/runtime/runtime.newArray call $~lib/array/Array#toString - i32.const 7232 + i32.const 7288 call $~lib/string/String.__eq i32.eqz if @@ -18955,10 +17733,10 @@ i32.const 3 i32.const 3 i32.const 17 - i32.const 7312 + i32.const 7368 call $~lib/runtime/runtime.newArray call $~lib/array/Array#toString - i32.const 7352 + i32.const 7408 call $~lib/string/String.__eq i32.eqz if @@ -18972,10 +17750,10 @@ i32.const 4 i32.const 3 i32.const 23 - i32.const 7464 + i32.const 7520 call $~lib/runtime/runtime.newArray call $~lib/array/Array#toString - i32.const 7512 + i32.const 7568 call $~lib/string/String.__eq i32.eqz if @@ -18988,7 +17766,7 @@ end global.get $std/array/randomStringsExpected call $~lib/array/Array<~lib/string/String | null>#toString - i32.const 7616 + i32.const 7672 call $~lib/string/String.__eq i32.eqz if @@ -19002,10 +17780,10 @@ i32.const 4 i32.const 2 i32.const 15 - i32.const 7744 + i32.const 7800 call $~lib/runtime/runtime.newArray call $~lib/array/Array<~lib/string/String>#toString - i32.const 7776 + i32.const 7832 call $~lib/string/String.__eq i32.eqz if @@ -19031,7 +17809,7 @@ i32.const 2 i32.const 2 i32.const 4 - i32.const 7832 + i32.const 7888 call $~lib/runtime/runtime.newArray local.set $2 local.get $2 @@ -19045,7 +17823,7 @@ i32.const 2 i32.const 2 i32.const 4 - i32.const 7856 + i32.const 7912 call $~lib/runtime/runtime.newArray local.set $2 local.get $2 @@ -19059,7 +17837,7 @@ global.set $std/array/subarr32 global.get $std/array/subarr32 call $~lib/array/Array<~lib/array/Array>#toString - i32.const 7880 + i32.const 7936 call $~lib/string/String.__eq i32.eqz if @@ -19085,7 +17863,7 @@ i32.const 2 i32.const 0 i32.const 7 - i32.const 7936 + i32.const 7992 call $~lib/runtime/runtime.newArray local.set $2 local.get $2 @@ -19099,7 +17877,7 @@ i32.const 2 i32.const 0 i32.const 7 - i32.const 7960 + i32.const 8016 call $~lib/runtime/runtime.newArray local.set $2 local.get $2 @@ -19113,7 +17891,7 @@ global.set $std/array/subarr8 global.get $std/array/subarr8 call $~lib/array/Array<~lib/array/Array>#toString - i32.const 7880 + i32.const 7936 call $~lib/string/String.__eq i32.eqz if @@ -19151,7 +17929,7 @@ i32.const 1 i32.const 2 i32.const 8 - i32.const 8056 + i32.const 8112 call $~lib/runtime/runtime.newArray local.set $4 local.get $4 @@ -19174,7 +17952,7 @@ global.set $std/array/subarrU32 global.get $std/array/subarrU32 call $~lib/array/Array<~lib/array/Array<~lib/array/Array>>#toString - i32.const 6832 + i32.const 6888 call $~lib/string/String.__eq i32.eqz if @@ -19186,7 +17964,7 @@ unreachable end ) - (func $std/array/main (; 288 ;) (type $FUNCSIG$v) + (func $std/array/main (; 287 ;) (type $FUNCSIG$v) global.get $~lib/started i32.eqz if @@ -19195,9 +17973,9 @@ global.set $~lib/started end ) - (func $start (; 289 ;) (type $FUNCSIG$v) + (func $start (; 288 ;) (type $FUNCSIG$v) call $start:std/array ) - (func $null (; 290 ;) (type $FUNCSIG$v) + (func $null (; 289 ;) (type $FUNCSIG$v) ) ) diff --git a/tests/compiler/std/arraybuffer.optimized.wat b/tests/compiler/std/arraybuffer.optimized.wat index bf53788a..108bd018 100644 --- a/tests/compiler/std/arraybuffer.optimized.wat +++ b/tests/compiler/std/arraybuffer.optimized.wat @@ -327,7 +327,7 @@ if i32.const 0 i32.const 64 - i32.const 117 + i32.const 82 i32.const 6 call $~lib/env/abort unreachable @@ -342,7 +342,7 @@ if i32.const 0 i32.const 64 - i32.const 119 + i32.const 84 i32.const 6 call $~lib/env/abort unreachable @@ -374,854 +374,7 @@ i32.const 2 call $~lib/runtime/runtime.register ) - (func $~lib/util/memory/memcpy (; 6 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - loop $continue|0 - local.get $1 - i32.const 3 - i32.and - local.get $2 - local.get $2 - select - if - local.get $0 - local.tee $3 - i32.const 1 - i32.add - local.set $0 - local.get $1 - local.tee $4 - i32.const 1 - i32.add - local.set $1 - local.get $3 - local.get $4 - i32.load8_u - i32.store8 - local.get $2 - i32.const 1 - i32.sub - local.set $2 - br $continue|0 - end - end - local.get $0 - i32.const 3 - i32.and - i32.eqz - if - loop $continue|1 - local.get $2 - i32.const 16 - i32.ge_u - 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.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 - br $continue|1 - end - end - local.get $2 - 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 $1 - i32.const 8 - i32.add - local.set $1 - local.get $0 - i32.const 8 - i32.add - local.set $0 - end - local.get $2 - i32.const 4 - i32.and - if - local.get $0 - local.get $1 - i32.load - i32.store - local.get $1 - i32.const 4 - i32.add - local.set $1 - local.get $0 - i32.const 4 - i32.add - local.set $0 - end - local.get $2 - i32.const 2 - i32.and - if - local.get $0 - local.get $1 - i32.load16_u - i32.store16 - local.get $1 - i32.const 2 - i32.add - local.set $1 - local.get $0 - i32.const 2 - i32.add - local.set $0 - end - local.get $2 - i32.const 1 - i32.and - if - local.get $0 - local.get $1 - i32.load8_u - i32.store8 - end - return - end - local.get $2 - i32.const 32 - i32.ge_u - if - block $break|2 - block $case2|2 - block $case1|2 - local.get $0 - i32.const 3 - i32.and - local.tee $3 - i32.const 1 - i32.ne - if - local.get $3 - i32.const 2 - i32.eq - br_if $case1|2 - local.get $3 - i32.const 3 - i32.eq - br_if $case2|2 - br $break|2 - end - local.get $1 - i32.load - local.set $5 - local.get $0 - local.get $1 - i32.load8_u - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.tee $0 - local.get $1 - i32.const 1 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.tee $3 - i32.const 1 - i32.add - local.set $0 - local.get $1 - i32.const 1 - i32.add - local.tee $4 - i32.const 1 - i32.add - local.set $1 - local.get $3 - local.get $4 - i32.load8_u - i32.store8 - local.get $2 - i32.const 3 - i32.sub - local.set $2 - loop $continue|3 - local.get $2 - i32.const 17 - i32.ge_u - if - local.get $0 - local.get $1 - i32.const 1 - i32.add - i32.load - local.tee $3 - i32.const 8 - i32.shl - local.get $5 - i32.const 24 - i32.shr_u - i32.or - i32.store - local.get $0 - i32.const 4 - i32.add - local.get $3 - i32.const 24 - i32.shr_u - local.get $1 - i32.const 5 - i32.add - i32.load - local.tee $3 - i32.const 8 - i32.shl - i32.or - i32.store - local.get $0 - i32.const 8 - i32.add - local.get $3 - i32.const 24 - i32.shr_u - local.get $1 - i32.const 9 - i32.add - i32.load - local.tee $3 - i32.const 8 - i32.shl - i32.or - i32.store - local.get $0 - i32.const 12 - i32.add - local.get $1 - i32.const 13 - i32.add - i32.load - local.tee $5 - i32.const 8 - i32.shl - local.get $3 - i32.const 24 - i32.shr_u - 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 - br $continue|3 - end - end - br $break|2 - end - local.get $1 - i32.load - local.set $5 - local.get $0 - local.get $1 - i32.load8_u - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.tee $3 - i32.const 1 - i32.add - local.set $0 - local.get $1 - i32.const 1 - i32.add - local.tee $4 - i32.const 1 - i32.add - local.set $1 - local.get $3 - local.get $4 - i32.load8_u - i32.store8 - local.get $2 - i32.const 2 - i32.sub - local.set $2 - loop $continue|4 - local.get $2 - i32.const 18 - i32.ge_u - if - local.get $0 - local.get $1 - i32.const 2 - i32.add - i32.load - local.tee $3 - i32.const 16 - i32.shl - local.get $5 - i32.const 16 - i32.shr_u - i32.or - i32.store - local.get $0 - i32.const 4 - i32.add - local.get $3 - i32.const 16 - i32.shr_u - local.get $1 - i32.const 6 - i32.add - i32.load - local.tee $3 - i32.const 16 - i32.shl - i32.or - i32.store - local.get $0 - i32.const 8 - i32.add - local.get $3 - i32.const 16 - i32.shr_u - local.get $1 - i32.const 10 - i32.add - i32.load - local.tee $3 - i32.const 16 - i32.shl - i32.or - i32.store - local.get $0 - i32.const 12 - i32.add - local.get $1 - i32.const 14 - i32.add - i32.load - local.tee $5 - i32.const 16 - i32.shl - local.get $3 - i32.const 16 - i32.shr_u - 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 - br $continue|4 - end - end - br $break|2 - end - local.get $1 - i32.load - local.set $5 - local.get $0 - local.tee $3 - i32.const 1 - i32.add - local.set $0 - local.get $1 - local.tee $4 - i32.const 1 - i32.add - local.set $1 - local.get $3 - local.get $4 - i32.load8_u - i32.store8 - local.get $2 - i32.const 1 - i32.sub - local.set $2 - loop $continue|5 - local.get $2 - i32.const 19 - i32.ge_u - if - local.get $0 - local.get $1 - i32.const 3 - i32.add - i32.load - local.tee $3 - i32.const 24 - i32.shl - local.get $5 - i32.const 8 - i32.shr_u - i32.or - i32.store - local.get $0 - i32.const 4 - i32.add - local.get $3 - i32.const 8 - i32.shr_u - local.get $1 - i32.const 7 - i32.add - i32.load - local.tee $3 - i32.const 24 - i32.shl - i32.or - i32.store - local.get $0 - i32.const 8 - i32.add - local.get $3 - i32.const 8 - i32.shr_u - local.get $1 - i32.const 11 - i32.add - i32.load - local.tee $3 - i32.const 24 - i32.shl - i32.or - i32.store - local.get $0 - i32.const 12 - i32.add - local.get $1 - i32.const 15 - i32.add - i32.load - local.tee $5 - i32.const 24 - i32.shl - local.get $3 - i32.const 8 - i32.shr_u - 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 - br $continue|5 - end - end - end - end - local.get $2 - i32.const 16 - i32.and - if - local.get $0 - local.get $1 - i32.load8_u - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.tee $0 - local.get $1 - i32.const 1 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.tee $0 - local.get $1 - i32.const 1 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.tee $0 - local.get $1 - i32.const 1 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.tee $0 - local.get $1 - i32.const 1 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.tee $0 - local.get $1 - i32.const 1 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.tee $0 - local.get $1 - i32.const 1 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.tee $0 - local.get $1 - i32.const 1 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.tee $0 - local.get $1 - i32.const 1 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.tee $0 - local.get $1 - i32.const 1 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.tee $0 - local.get $1 - i32.const 1 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.tee $0 - local.get $1 - i32.const 1 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.tee $0 - local.get $1 - i32.const 1 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.tee $0 - local.get $1 - i32.const 1 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.tee $0 - local.get $1 - i32.const 1 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.tee $3 - i32.const 1 - i32.add - local.set $0 - local.get $1 - i32.const 1 - i32.add - local.tee $4 - i32.const 1 - i32.add - local.set $1 - local.get $3 - local.get $4 - i32.load8_u - i32.store8 - end - local.get $2 - i32.const 8 - i32.and - if - local.get $0 - local.get $1 - i32.load8_u - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.tee $0 - local.get $1 - i32.const 1 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.tee $0 - local.get $1 - i32.const 1 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.tee $0 - local.get $1 - i32.const 1 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.tee $0 - local.get $1 - i32.const 1 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.tee $0 - local.get $1 - i32.const 1 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.tee $0 - local.get $1 - i32.const 1 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.tee $3 - i32.const 1 - i32.add - local.set $0 - local.get $1 - i32.const 1 - i32.add - local.tee $4 - i32.const 1 - i32.add - local.set $1 - local.get $3 - local.get $4 - i32.load8_u - i32.store8 - end - local.get $2 - i32.const 4 - i32.and - if - local.get $0 - local.get $1 - i32.load8_u - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.tee $0 - local.get $1 - i32.const 1 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.tee $0 - local.get $1 - i32.const 1 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.tee $3 - i32.const 1 - i32.add - local.set $0 - local.get $1 - i32.const 1 - i32.add - local.tee $4 - i32.const 1 - i32.add - local.set $1 - local.get $3 - local.get $4 - i32.load8_u - i32.store8 - end - local.get $2 - i32.const 2 - i32.and - if - local.get $0 - local.get $1 - i32.load8_u - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.tee $3 - i32.const 1 - i32.add - local.set $0 - local.get $1 - i32.const 1 - i32.add - local.tee $4 - i32.const 1 - i32.add - local.set $1 - local.get $3 - local.get $4 - i32.load8_u - i32.store8 - end - local.get $2 - i32.const 1 - i32.and - if - local.get $0 - local.get $1 - i32.load8_u - i32.store8 - end - ) - (func $~lib/memory/memory.copy (; 7 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/memory/memory.copy (; 6 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) block $~lib/util/memory/memmove|inlined.0 @@ -1229,29 +382,6 @@ local.get $1 i32.eq br_if $~lib/util/memory/memmove|inlined.0 - local.get $1 - local.get $2 - i32.add - local.get $0 - i32.le_u - local.tee $3 - i32.eqz - if - local.get $0 - local.get $2 - i32.add - local.get $1 - i32.le_u - local.set $3 - end - local.get $3 - 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 @@ -1415,7 +545,7 @@ end end ) - (func $~lib/arraybuffer/ArrayBuffer#slice (; 8 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/arraybuffer/ArrayBuffer#slice (; 7 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $0 i32.const 8 @@ -1485,7 +615,7 @@ i32.const 2 call $~lib/runtime/runtime.register ) - (func $~lib/arraybuffer/ArrayBufferView#constructor (; 9 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/arraybuffer/ArrayBufferView#constructor (; 8 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) i32.const 1 i32.const 1073741816 @@ -1535,7 +665,7 @@ i32.store offset=8 local.get $0 ) - (func $~lib/runtime/runtime.newArray (; 10 ;) (type $FUNCSIG$i) (result i32) + (func $~lib/runtime/runtime.newArray (; 9 ;) (type $FUNCSIG$i) (result i32) (local $0 i32) (local $1 i32) i32.const 16 @@ -1564,7 +694,7 @@ call $~lib/memory/memory.copy local.get $0 ) - (func $~lib/dataview/DataView#constructor (; 11 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/dataview/DataView#constructor (; 10 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) local.get $1 i32.const 1073741816 @@ -1608,7 +738,7 @@ i32.store offset=8 local.get $2 ) - (func $~lib/dataview/DataView#constructor|trampoline (; 12 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/dataview/DataView#constructor|trampoline (; 11 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) block $2of2 block $1of2 @@ -1630,7 +760,7 @@ local.get $1 call $~lib/dataview/DataView#constructor ) - (func $start:std/arraybuffer (; 13 ;) (type $FUNCSIG$v) + (func $start:std/arraybuffer (; 12 ;) (type $FUNCSIG$v) i32.const 200 global.set $~lib/allocator/arena/startOffset global.get $~lib/allocator/arena/startOffset @@ -1889,10 +1019,10 @@ unreachable end ) - (func $start (; 14 ;) (type $FUNCSIG$v) + (func $start (; 13 ;) (type $FUNCSIG$v) call $start:std/arraybuffer ) - (func $null (; 15 ;) (type $FUNCSIG$v) + (func $null (; 14 ;) (type $FUNCSIG$v) nop ) ) diff --git a/tests/compiler/std/arraybuffer.untouched.wat b/tests/compiler/std/arraybuffer.untouched.wat index fbb25abc..e1550142 100644 --- a/tests/compiler/std/arraybuffer.untouched.wat +++ b/tests/compiler/std/arraybuffer.untouched.wat @@ -407,7 +407,7 @@ if i32.const 0 i32.const 64 - i32.const 117 + i32.const 82 i32.const 6 call $~lib/env/abort unreachable @@ -424,7 +424,7 @@ if i32.const 0 i32.const 64 - i32.const 119 + i32.const 84 i32.const 6 call $~lib/env/abort unreachable @@ -464,1208 +464,7 @@ i32.sub i32.load offset=4 ) - (func $~lib/util/memory/memcpy (; 9 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (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 - end - end - local.get $0 - 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.get $2 - 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.get $2 - i32.const 4 - 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 $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 - 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 $~lib/memory/memory.copy (; 10 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/memory/memory.copy (; 9 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -1676,28 +475,6 @@ 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 @@ -1896,7 +673,7 @@ end end ) - (func $~lib/arraybuffer/ArrayBuffer#slice (; 11 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/arraybuffer/ArrayBuffer#slice (; 10 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -1979,7 +756,7 @@ i32.const 2 call $~lib/runtime/runtime.register ) - (func $~lib/arraybuffer/ArrayBuffer.isView<~lib/array/Array> (; 12 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/arraybuffer/ArrayBuffer.isView<~lib/array/Array> (; 11 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 if block (result i32) @@ -2093,7 +870,7 @@ end i32.const 0 ) - (func $~lib/arraybuffer/ArrayBuffer.isView (; 13 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/arraybuffer/ArrayBuffer.isView (; 12 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 if block (result i32) @@ -2207,7 +984,7 @@ end i32.const 0 ) - (func $~lib/arraybuffer/ArrayBuffer.isView<~lib/typedarray/Uint8Array> (; 14 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/arraybuffer/ArrayBuffer.isView<~lib/typedarray/Uint8Array> (; 13 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 if block (result i32) @@ -2321,7 +1098,7 @@ end i32.const 0 ) - (func $~lib/arraybuffer/ArrayBuffer.isView<~lib/typedarray/Int32Array> (; 15 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/arraybuffer/ArrayBuffer.isView<~lib/typedarray/Int32Array> (; 14 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 if block (result i32) @@ -2435,7 +1212,7 @@ end i32.const 0 ) - (func $~lib/arraybuffer/ArrayBuffer.isView<~lib/dataview/DataView> (; 16 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/arraybuffer/ArrayBuffer.isView<~lib/dataview/DataView> (; 15 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 if block (result i32) @@ -2549,7 +1326,7 @@ end i32.const 0 ) - (func $~lib/arraybuffer/ArrayBufferView#constructor (; 17 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/arraybuffer/ArrayBufferView#constructor (; 16 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $1 global.get $~lib/util/runtime/MAX_BYTELENGTH @@ -2602,7 +1379,7 @@ i32.store offset=8 local.get $0 ) - (func $~lib/typedarray/Uint8Array#constructor (; 18 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Uint8Array#constructor (; 17 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $0 if (result i32) local.get $0 @@ -2618,7 +1395,7 @@ local.set $0 local.get $0 ) - (func $~lib/runtime/runtime.newArray (; 19 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (func $~lib/runtime/runtime.newArray (; 18 ;) (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) @@ -2657,7 +1434,7 @@ end local.get $4 ) - (func $~lib/typedarray/Int32Array#constructor (; 20 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Int32Array#constructor (; 19 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $0 if (result i32) local.get $0 @@ -2673,7 +1450,7 @@ local.set $0 local.get $0 ) - (func $~lib/dataview/DataView#constructor (; 21 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (func $~lib/dataview/DataView#constructor (; 20 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) (local $4 i32) local.get $3 global.get $~lib/util/runtime/MAX_BYTELENGTH @@ -2728,11 +1505,11 @@ i32.store offset=8 local.get $0 ) - (func $~lib/typedarray/Uint8Array#get:buffer (; 22 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/typedarray/Uint8Array#get:buffer (; 21 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.load ) - (func $~lib/dataview/DataView#constructor|trampoline (; 23 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (func $~lib/dataview/DataView#constructor|trampoline (; 22 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) block $2of2 block $1of2 block $0of2 @@ -2757,7 +1534,7 @@ local.get $3 call $~lib/dataview/DataView#constructor ) - (func $start:std/arraybuffer (; 24 ;) (type $FUNCSIG$v) + (func $start:std/arraybuffer (; 23 ;) (type $FUNCSIG$v) global.get $~lib/memory/HEAP_BASE i32.const 7 i32.add @@ -3078,9 +1855,9 @@ unreachable end ) - (func $start (; 25 ;) (type $FUNCSIG$v) + (func $start (; 24 ;) (type $FUNCSIG$v) call $start:std/arraybuffer ) - (func $null (; 26 ;) (type $FUNCSIG$v) + (func $null (; 25 ;) (type $FUNCSIG$v) ) ) diff --git a/tests/compiler/std/dataview.optimized.wat b/tests/compiler/std/dataview.optimized.wat index c3794503..8bd5caa8 100644 --- a/tests/compiler/std/dataview.optimized.wat +++ b/tests/compiler/std/dataview.optimized.wat @@ -165,7 +165,7 @@ if i32.const 0 i32.const 64 - i32.const 117 + i32.const 82 i32.const 6 call $~lib/env/abort unreachable @@ -180,7 +180,7 @@ if i32.const 0 i32.const 64 - i32.const 119 + i32.const 84 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 7b254100..e75653c0 100644 --- a/tests/compiler/std/dataview.untouched.wat +++ b/tests/compiler/std/dataview.untouched.wat @@ -413,7 +413,7 @@ if i32.const 0 i32.const 64 - i32.const 117 + i32.const 82 i32.const 6 call $~lib/env/abort unreachable @@ -430,7 +430,7 @@ if i32.const 0 i32.const 64 - i32.const 119 + i32.const 84 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 ada313ec..b642e87e 100644 --- a/tests/compiler/std/date.optimized.wat +++ b/tests/compiler/std/date.optimized.wat @@ -89,7 +89,7 @@ if i32.const 0 i32.const 48 - i32.const 117 + i32.const 82 i32.const 6 call $~lib/env/abort unreachable @@ -104,7 +104,7 @@ if i32.const 0 i32.const 48 - i32.const 119 + i32.const 84 i32.const 6 call $~lib/env/abort unreachable diff --git a/tests/compiler/std/date.untouched.wat b/tests/compiler/std/date.untouched.wat index b304c8c1..54165047 100644 --- a/tests/compiler/std/date.untouched.wat +++ b/tests/compiler/std/date.untouched.wat @@ -148,7 +148,7 @@ if i32.const 0 i32.const 48 - i32.const 117 + i32.const 82 i32.const 6 call $~lib/env/abort unreachable @@ -165,7 +165,7 @@ if i32.const 0 i32.const 48 - i32.const 119 + i32.const 84 i32.const 6 call $~lib/env/abort unreachable diff --git a/tests/compiler/std/map.optimized.wat b/tests/compiler/std/map.optimized.wat index 311e4697..cc008a45 100644 --- a/tests/compiler/std/map.optimized.wat +++ b/tests/compiler/std/map.optimized.wat @@ -135,7 +135,7 @@ if i32.const 0 i32.const 24 - i32.const 117 + i32.const 82 i32.const 6 call $~lib/env/abort unreachable @@ -150,7 +150,7 @@ if i32.const 0 i32.const 24 - i32.const 119 + i32.const 84 i32.const 6 call $~lib/env/abort unreachable diff --git a/tests/compiler/std/map.untouched.wat b/tests/compiler/std/map.untouched.wat index fe4484c0..3cb23689 100644 --- a/tests/compiler/std/map.untouched.wat +++ b/tests/compiler/std/map.untouched.wat @@ -166,7 +166,7 @@ if i32.const 0 i32.const 24 - i32.const 117 + i32.const 82 i32.const 6 call $~lib/env/abort unreachable @@ -183,7 +183,7 @@ if i32.const 0 i32.const 24 - i32.const 119 + i32.const 84 i32.const 6 call $~lib/env/abort unreachable diff --git a/tests/compiler/std/new.optimized.wat b/tests/compiler/std/new.optimized.wat index 2ca7f049..475ff617 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 117 + i32.const 82 i32.const 6 call $~lib/env/abort unreachable @@ -99,7 +99,7 @@ if i32.const 0 i32.const 16 - i32.const 119 + i32.const 84 i32.const 6 call $~lib/env/abort unreachable diff --git a/tests/compiler/std/new.untouched.wat b/tests/compiler/std/new.untouched.wat index 93369e9d..5f31de79 100644 --- a/tests/compiler/std/new.untouched.wat +++ b/tests/compiler/std/new.untouched.wat @@ -141,7 +141,7 @@ if i32.const 0 i32.const 16 - i32.const 117 + i32.const 82 i32.const 6 call $~lib/env/abort unreachable @@ -158,7 +158,7 @@ if i32.const 0 i32.const 16 - i32.const 119 + i32.const 84 i32.const 6 call $~lib/env/abort unreachable diff --git a/tests/compiler/std/object-literal.optimized.wat b/tests/compiler/std/object-literal.optimized.wat index 8632d9c5..d6c9ef31 100644 --- a/tests/compiler/std/object-literal.optimized.wat +++ b/tests/compiler/std/object-literal.optimized.wat @@ -118,7 +118,7 @@ if i32.const 0 i32.const 64 - i32.const 117 + i32.const 82 i32.const 6 call $~lib/env/abort unreachable @@ -133,7 +133,7 @@ if i32.const 0 i32.const 64 - i32.const 119 + i32.const 84 i32.const 6 call $~lib/env/abort unreachable diff --git a/tests/compiler/std/object-literal.untouched.wat b/tests/compiler/std/object-literal.untouched.wat index 903da28a..8d7a9821 100644 --- a/tests/compiler/std/object-literal.untouched.wat +++ b/tests/compiler/std/object-literal.untouched.wat @@ -153,7 +153,7 @@ if i32.const 0 i32.const 64 - i32.const 117 + i32.const 82 i32.const 6 call $~lib/env/abort unreachable @@ -170,7 +170,7 @@ if i32.const 0 i32.const 64 - i32.const 119 + i32.const 84 i32.const 6 call $~lib/env/abort unreachable diff --git a/tests/compiler/std/operator-overloading.optimized.wat b/tests/compiler/std/operator-overloading.optimized.wat index d4a70cfc..b8a57313 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 117 + i32.const 82 i32.const 6 call $~lib/env/abort unreachable @@ -182,7 +182,7 @@ if i32.const 0 i32.const 16 - i32.const 119 + i32.const 84 i32.const 6 call $~lib/env/abort unreachable diff --git a/tests/compiler/std/operator-overloading.untouched.wat b/tests/compiler/std/operator-overloading.untouched.wat index 39f3e963..a92d444b 100644 --- a/tests/compiler/std/operator-overloading.untouched.wat +++ b/tests/compiler/std/operator-overloading.untouched.wat @@ -209,7 +209,7 @@ if i32.const 0 i32.const 16 - i32.const 117 + i32.const 82 i32.const 6 call $~lib/env/abort unreachable @@ -226,7 +226,7 @@ if i32.const 0 i32.const 16 - i32.const 119 + i32.const 84 i32.const 6 call $~lib/env/abort unreachable diff --git a/tests/compiler/std/pointer.optimized.wat b/tests/compiler/std/pointer.optimized.wat index 306acaf9..b9ff9164 100644 --- a/tests/compiler/std/pointer.optimized.wat +++ b/tests/compiler/std/pointer.optimized.wat @@ -61,857 +61,7 @@ i32.const 0 i32.store8 ) - (func $~lib/util/memory/memcpy (; 2 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - i32.const 8 - local.set $3 - loop $continue|0 - local.get $1 - i32.const 3 - i32.and - local.get $3 - local.get $3 - select - if - local.get $0 - local.tee $2 - i32.const 1 - i32.add - local.set $0 - local.get $1 - local.tee $4 - i32.const 1 - i32.add - local.set $1 - local.get $2 - local.get $4 - i32.load8_u - i32.store8 - local.get $3 - i32.const 1 - i32.sub - local.set $3 - br $continue|0 - end - end - local.get $0 - i32.const 3 - i32.and - i32.eqz - if - loop $continue|1 - local.get $3 - i32.const 16 - i32.ge_u - 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.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 $3 - i32.const 16 - i32.sub - local.set $3 - br $continue|1 - end - end - local.get $3 - 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 $1 - i32.const 8 - i32.add - local.set $1 - local.get $0 - i32.const 8 - i32.add - local.set $0 - end - local.get $3 - i32.const 4 - i32.and - if - local.get $0 - local.get $1 - i32.load - i32.store - local.get $1 - i32.const 4 - i32.add - local.set $1 - local.get $0 - i32.const 4 - i32.add - local.set $0 - end - local.get $3 - i32.const 2 - i32.and - if - local.get $0 - local.get $1 - i32.load16_u - i32.store16 - local.get $1 - i32.const 2 - i32.add - local.set $1 - local.get $0 - i32.const 2 - i32.add - local.set $0 - end - local.get $3 - i32.const 1 - i32.and - if - local.get $0 - local.get $1 - i32.load8_u - i32.store8 - end - return - end - local.get $3 - i32.const 32 - i32.ge_u - if - block $break|2 - block $case2|2 - block $case1|2 - local.get $0 - i32.const 3 - i32.and - local.tee $2 - i32.const 1 - i32.ne - if - local.get $2 - i32.const 2 - i32.eq - br_if $case1|2 - local.get $2 - i32.const 3 - i32.eq - br_if $case2|2 - br $break|2 - end - local.get $1 - i32.load - local.set $5 - local.get $0 - local.get $1 - i32.load8_u - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.tee $0 - local.get $1 - i32.const 1 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.tee $2 - i32.const 1 - i32.add - local.set $0 - local.get $1 - i32.const 1 - i32.add - local.tee $4 - i32.const 1 - i32.add - local.set $1 - local.get $2 - local.get $4 - i32.load8_u - i32.store8 - local.get $3 - i32.const 3 - i32.sub - local.set $3 - loop $continue|3 - local.get $3 - i32.const 17 - i32.ge_u - if - local.get $0 - local.get $1 - i32.const 1 - i32.add - i32.load - local.tee $2 - i32.const 8 - i32.shl - local.get $5 - i32.const 24 - i32.shr_u - i32.or - i32.store - local.get $0 - i32.const 4 - i32.add - local.get $2 - i32.const 24 - i32.shr_u - local.get $1 - i32.const 5 - i32.add - i32.load - local.tee $2 - i32.const 8 - i32.shl - i32.or - i32.store - local.get $0 - i32.const 8 - i32.add - local.get $2 - i32.const 24 - i32.shr_u - local.get $1 - i32.const 9 - i32.add - i32.load - local.tee $2 - i32.const 8 - i32.shl - i32.or - i32.store - local.get $0 - i32.const 12 - i32.add - local.get $1 - i32.const 13 - i32.add - i32.load - local.tee $5 - i32.const 8 - i32.shl - local.get $2 - i32.const 24 - i32.shr_u - 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 $3 - i32.const 16 - i32.sub - local.set $3 - br $continue|3 - end - end - br $break|2 - end - local.get $1 - i32.load - local.set $5 - local.get $0 - local.get $1 - i32.load8_u - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.tee $2 - i32.const 1 - i32.add - local.set $0 - local.get $1 - i32.const 1 - i32.add - local.tee $4 - i32.const 1 - i32.add - local.set $1 - local.get $2 - local.get $4 - i32.load8_u - i32.store8 - local.get $3 - i32.const 2 - i32.sub - local.set $3 - loop $continue|4 - local.get $3 - i32.const 18 - i32.ge_u - if - local.get $0 - local.get $1 - i32.const 2 - i32.add - i32.load - local.tee $2 - i32.const 16 - i32.shl - local.get $5 - i32.const 16 - i32.shr_u - i32.or - i32.store - local.get $0 - i32.const 4 - i32.add - local.get $2 - i32.const 16 - i32.shr_u - local.get $1 - i32.const 6 - i32.add - i32.load - local.tee $2 - i32.const 16 - i32.shl - i32.or - i32.store - local.get $0 - i32.const 8 - i32.add - local.get $2 - i32.const 16 - i32.shr_u - local.get $1 - i32.const 10 - i32.add - i32.load - local.tee $2 - i32.const 16 - i32.shl - i32.or - i32.store - local.get $0 - i32.const 12 - i32.add - local.get $1 - i32.const 14 - i32.add - i32.load - local.tee $5 - i32.const 16 - i32.shl - local.get $2 - i32.const 16 - i32.shr_u - 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 $3 - i32.const 16 - i32.sub - local.set $3 - br $continue|4 - end - end - br $break|2 - end - local.get $1 - i32.load - local.set $5 - local.get $0 - local.tee $2 - i32.const 1 - i32.add - local.set $0 - local.get $1 - local.tee $4 - i32.const 1 - i32.add - local.set $1 - local.get $2 - local.get $4 - i32.load8_u - i32.store8 - local.get $3 - i32.const 1 - i32.sub - local.set $3 - loop $continue|5 - local.get $3 - i32.const 19 - i32.ge_u - if - local.get $0 - local.get $1 - i32.const 3 - i32.add - i32.load - local.tee $2 - i32.const 24 - i32.shl - local.get $5 - i32.const 8 - i32.shr_u - i32.or - i32.store - local.get $0 - i32.const 4 - i32.add - local.get $2 - i32.const 8 - i32.shr_u - local.get $1 - i32.const 7 - i32.add - i32.load - local.tee $2 - i32.const 24 - i32.shl - i32.or - i32.store - local.get $0 - i32.const 8 - i32.add - local.get $2 - i32.const 8 - i32.shr_u - local.get $1 - i32.const 11 - i32.add - i32.load - local.tee $2 - i32.const 24 - i32.shl - i32.or - i32.store - local.get $0 - i32.const 12 - i32.add - local.get $1 - i32.const 15 - i32.add - i32.load - local.tee $5 - i32.const 24 - i32.shl - local.get $2 - i32.const 8 - i32.shr_u - 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 $3 - i32.const 16 - i32.sub - local.set $3 - br $continue|5 - end - end - end - end - local.get $3 - i32.const 16 - i32.and - if - local.get $0 - local.get $1 - i32.load8_u - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.tee $0 - local.get $1 - i32.const 1 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.tee $0 - local.get $1 - i32.const 1 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.tee $0 - local.get $1 - i32.const 1 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.tee $0 - local.get $1 - i32.const 1 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.tee $0 - local.get $1 - i32.const 1 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.tee $0 - local.get $1 - i32.const 1 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.tee $0 - local.get $1 - i32.const 1 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.tee $0 - local.get $1 - i32.const 1 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.tee $0 - local.get $1 - i32.const 1 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.tee $0 - local.get $1 - i32.const 1 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.tee $0 - local.get $1 - i32.const 1 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.tee $0 - local.get $1 - i32.const 1 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.tee $0 - local.get $1 - i32.const 1 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.tee $0 - local.get $1 - i32.const 1 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.tee $2 - i32.const 1 - i32.add - local.set $0 - local.get $1 - i32.const 1 - i32.add - local.tee $4 - i32.const 1 - i32.add - local.set $1 - local.get $2 - local.get $4 - i32.load8_u - i32.store8 - end - local.get $3 - i32.const 8 - i32.and - if - local.get $0 - local.get $1 - i32.load8_u - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.tee $0 - local.get $1 - i32.const 1 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.tee $0 - local.get $1 - i32.const 1 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.tee $0 - local.get $1 - i32.const 1 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.tee $0 - local.get $1 - i32.const 1 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.tee $0 - local.get $1 - i32.const 1 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.tee $0 - local.get $1 - i32.const 1 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.tee $2 - i32.const 1 - i32.add - local.set $0 - local.get $1 - i32.const 1 - i32.add - local.tee $4 - i32.const 1 - i32.add - local.set $1 - local.get $2 - local.get $4 - i32.load8_u - i32.store8 - end - local.get $3 - i32.const 4 - i32.and - if - local.get $0 - local.get $1 - i32.load8_u - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.tee $0 - local.get $1 - i32.const 1 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.tee $0 - local.get $1 - i32.const 1 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.tee $2 - i32.const 1 - i32.add - local.set $0 - local.get $1 - i32.const 1 - i32.add - local.tee $4 - i32.const 1 - i32.add - local.set $1 - local.get $2 - local.get $4 - i32.load8_u - i32.store8 - end - local.get $3 - i32.const 2 - i32.and - if - local.get $0 - local.get $1 - i32.load8_u - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.tee $2 - i32.const 1 - i32.add - local.set $0 - local.get $1 - i32.const 1 - i32.add - local.tee $4 - i32.const 1 - i32.add - local.set $1 - local.get $2 - local.get $4 - i32.load8_u - i32.store8 - end - local.get $3 - i32.const 1 - i32.and - if - local.get $0 - local.get $1 - i32.load8_u - i32.store8 - end - ) - (func $~lib/memory/memory.copy (; 3 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/memory/memory.copy (; 2 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -922,27 +72,6 @@ local.get $1 i32.eq br_if $~lib/util/memory/memmove|inlined.0 - local.get $1 - i32.const 8 - i32.add - local.get $0 - i32.le_u - local.tee $3 - if (result i32) - local.get $3 - else - local.get $0 - i32.const 8 - i32.add - local.get $1 - i32.le_u - end - if - local.get $0 - local.get $1 - call $~lib/util/memory/memcpy - br $~lib/util/memory/memmove|inlined.0 - end local.get $0 local.get $1 i32.lt_u @@ -1106,7 +235,7 @@ end end ) - (func $start:std/pointer (; 4 ;) (type $FUNCSIG$v) + (func $start:std/pointer (; 3 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) i32.const 8 @@ -1495,10 +624,10 @@ unreachable end ) - (func $start (; 5 ;) (type $FUNCSIG$v) + (func $start (; 4 ;) (type $FUNCSIG$v) call $start:std/pointer ) - (func $null (; 6 ;) (type $FUNCSIG$v) + (func $null (; 5 ;) (type $FUNCSIG$v) nop ) ) diff --git a/tests/compiler/std/pointer.untouched.wat b/tests/compiler/std/pointer.untouched.wat index 351feb4c..866407af 100644 --- a/tests/compiler/std/pointer.untouched.wat +++ b/tests/compiler/std/pointer.untouched.wat @@ -277,1208 +277,7 @@ end end ) - (func $~lib/util/memory/memcpy (; 2 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (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 - end - end - local.get $0 - 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.get $2 - 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.get $2 - i32.const 4 - 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 $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 - 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 $~lib/memory/memory.copy (; 3 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/memory/memory.copy (; 2 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -1489,28 +288,6 @@ 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 @@ -1709,7 +486,7 @@ end end ) - (func $std/pointer/Pointer#set:value (; 4 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $std/pointer/Pointer#set:value (; 3 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) local.get $1 i32.const 0 i32.eq @@ -1725,7 +502,7 @@ call $~lib/memory/memory.copy end ) - (func $std/pointer/Pointer#set (; 5 ;) (type $FUNCSIG$viif) (param $0 i32) (param $1 i32) (param $2 f32) + (func $std/pointer/Pointer#set (; 4 ;) (type $FUNCSIG$viif) (param $0 i32) (param $1 i32) (param $2 f32) local.get $0 local.get $1 i32.const 4 @@ -1734,12 +511,12 @@ local.get $2 f32.store ) - (func $std/pointer/Pointer#set:value (; 6 ;) (type $FUNCSIG$vif) (param $0 i32) (param $1 f32) + (func $std/pointer/Pointer#set:value (; 5 ;) (type $FUNCSIG$vif) (param $0 i32) (param $1 f32) local.get $0 local.get $1 f32.store ) - (func $start:std/pointer (; 7 ;) (type $FUNCSIG$v) + (func $start:std/pointer (; 6 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 f32) @@ -2343,9 +1120,9 @@ unreachable end ) - (func $start (; 8 ;) (type $FUNCSIG$v) + (func $start (; 7 ;) (type $FUNCSIG$v) call $start:std/pointer ) - (func $null (; 9 ;) (type $FUNCSIG$v) + (func $null (; 8 ;) (type $FUNCSIG$v) ) ) diff --git a/tests/compiler/std/runtime.optimized.wat b/tests/compiler/std/runtime.optimized.wat index cc017260..e9bcb408 100644 --- a/tests/compiler/std/runtime.optimized.wat +++ b/tests/compiler/std/runtime.optimized.wat @@ -21,8 +21,10 @@ (data (i32.const 136) "b\00a\00r\00r\00i\00e\00r\003") (data (i32.const 152) "\03\00\00\00,") (data (i32.const 168) "~\00l\00i\00b\00/\00a\00l\00l\00o\00c\00a\00t\00o\00r\00/\00t\00l\00s\00f\00.\00t\00s") - (data (i32.const 216) "\03\00\00\00\1e") - (data (i32.const 232) "~\00l\00i\00b\00/\00r\00u\00n\00t\00i\00m\00e\00.\00t\00s") + (data (i32.const 216) "\03\00\00\00(") + (data (i32.const 232) "~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00r\00u\00n\00t\00i\00m\00e\00.\00t\00s") + (data (i32.const 272) "\03\00\00\00\1e") + (data (i32.const 288) "~\00l\00i\00b\00/\00r\00u\00n\00t\00i\00m\00e\00.\00t\00s") (table $0 1 funcref) (elem (i32.const 0) $null) (global $std/runtime/register_ref (mut i32) (i32.const 0)) @@ -1022,14 +1024,14 @@ if unreachable end - i32.const 264 + i32.const 320 local.set $2 - i32.const 264 + i32.const 320 global.set $~lib/allocator/tlsf/ROOT i32.const 2912 i32.const 0 i32.store - i32.const 264 + i32.const 320 i32.const 0 i32.store i32.const 0 @@ -1039,7 +1041,7 @@ i32.const 22 i32.lt_u if - i32.const 264 + i32.const 320 local.get $1 i32.const 0 call $~lib/allocator/tlsf/Root#setSLMap @@ -1050,7 +1052,7 @@ i32.const 32 i32.lt_u if - i32.const 264 + i32.const 320 local.get $1 local.get $3 i32.const 0 @@ -1069,8 +1071,8 @@ br $repeat|0 end end - i32.const 264 - i32.const 3184 + i32.const 320 + i32.const 3240 current_memory i32.const 16 i32.shl @@ -1193,854 +1195,7 @@ i32.const 16 i32.add ) - (func $~lib/util/memory/memcpy (; 18 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - loop $continue|0 - local.get $1 - i32.const 3 - i32.and - local.get $2 - local.get $2 - select - if - local.get $0 - local.tee $3 - i32.const 1 - i32.add - local.set $0 - local.get $1 - local.tee $4 - i32.const 1 - i32.add - local.set $1 - local.get $3 - local.get $4 - i32.load8_u - i32.store8 - local.get $2 - i32.const 1 - i32.sub - local.set $2 - br $continue|0 - end - end - local.get $0 - i32.const 3 - i32.and - i32.eqz - if - loop $continue|1 - local.get $2 - i32.const 16 - i32.ge_u - 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.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 - br $continue|1 - end - end - local.get $2 - 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 $1 - i32.const 8 - i32.add - local.set $1 - local.get $0 - i32.const 8 - i32.add - local.set $0 - end - local.get $2 - i32.const 4 - i32.and - if - local.get $0 - local.get $1 - i32.load - i32.store - local.get $1 - i32.const 4 - i32.add - local.set $1 - local.get $0 - i32.const 4 - i32.add - local.set $0 - end - local.get $2 - i32.const 2 - i32.and - if - local.get $0 - local.get $1 - i32.load16_u - i32.store16 - local.get $1 - i32.const 2 - i32.add - local.set $1 - local.get $0 - i32.const 2 - i32.add - local.set $0 - end - local.get $2 - i32.const 1 - i32.and - if - local.get $0 - local.get $1 - i32.load8_u - i32.store8 - end - return - end - local.get $2 - i32.const 32 - i32.ge_u - if - block $break|2 - block $case2|2 - block $case1|2 - local.get $0 - i32.const 3 - i32.and - local.tee $3 - i32.const 1 - i32.ne - if - local.get $3 - i32.const 2 - i32.eq - br_if $case1|2 - local.get $3 - i32.const 3 - i32.eq - br_if $case2|2 - br $break|2 - end - local.get $1 - i32.load - local.set $5 - local.get $0 - local.get $1 - i32.load8_u - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.tee $0 - local.get $1 - i32.const 1 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.tee $3 - i32.const 1 - i32.add - local.set $0 - local.get $1 - i32.const 1 - i32.add - local.tee $4 - i32.const 1 - i32.add - local.set $1 - local.get $3 - local.get $4 - i32.load8_u - i32.store8 - local.get $2 - i32.const 3 - i32.sub - local.set $2 - loop $continue|3 - local.get $2 - i32.const 17 - i32.ge_u - if - local.get $0 - local.get $1 - i32.const 1 - i32.add - i32.load - local.tee $3 - i32.const 8 - i32.shl - local.get $5 - i32.const 24 - i32.shr_u - i32.or - i32.store - local.get $0 - i32.const 4 - i32.add - local.get $3 - i32.const 24 - i32.shr_u - local.get $1 - i32.const 5 - i32.add - i32.load - local.tee $3 - i32.const 8 - i32.shl - i32.or - i32.store - local.get $0 - i32.const 8 - i32.add - local.get $3 - i32.const 24 - i32.shr_u - local.get $1 - i32.const 9 - i32.add - i32.load - local.tee $3 - i32.const 8 - i32.shl - i32.or - i32.store - local.get $0 - i32.const 12 - i32.add - local.get $1 - i32.const 13 - i32.add - i32.load - local.tee $5 - i32.const 8 - i32.shl - local.get $3 - i32.const 24 - i32.shr_u - 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 - br $continue|3 - end - end - br $break|2 - end - local.get $1 - i32.load - local.set $5 - local.get $0 - local.get $1 - i32.load8_u - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.tee $3 - i32.const 1 - i32.add - local.set $0 - local.get $1 - i32.const 1 - i32.add - local.tee $4 - i32.const 1 - i32.add - local.set $1 - local.get $3 - local.get $4 - i32.load8_u - i32.store8 - local.get $2 - i32.const 2 - i32.sub - local.set $2 - loop $continue|4 - local.get $2 - i32.const 18 - i32.ge_u - if - local.get $0 - local.get $1 - i32.const 2 - i32.add - i32.load - local.tee $3 - i32.const 16 - i32.shl - local.get $5 - i32.const 16 - i32.shr_u - i32.or - i32.store - local.get $0 - i32.const 4 - i32.add - local.get $3 - i32.const 16 - i32.shr_u - local.get $1 - i32.const 6 - i32.add - i32.load - local.tee $3 - i32.const 16 - i32.shl - i32.or - i32.store - local.get $0 - i32.const 8 - i32.add - local.get $3 - i32.const 16 - i32.shr_u - local.get $1 - i32.const 10 - i32.add - i32.load - local.tee $3 - i32.const 16 - i32.shl - i32.or - i32.store - local.get $0 - i32.const 12 - i32.add - local.get $1 - i32.const 14 - i32.add - i32.load - local.tee $5 - i32.const 16 - i32.shl - local.get $3 - i32.const 16 - i32.shr_u - 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 - br $continue|4 - end - end - br $break|2 - end - local.get $1 - i32.load - local.set $5 - local.get $0 - local.tee $3 - i32.const 1 - i32.add - local.set $0 - local.get $1 - local.tee $4 - i32.const 1 - i32.add - local.set $1 - local.get $3 - local.get $4 - i32.load8_u - i32.store8 - local.get $2 - i32.const 1 - i32.sub - local.set $2 - loop $continue|5 - local.get $2 - i32.const 19 - i32.ge_u - if - local.get $0 - local.get $1 - i32.const 3 - i32.add - i32.load - local.tee $3 - i32.const 24 - i32.shl - local.get $5 - i32.const 8 - i32.shr_u - i32.or - i32.store - local.get $0 - i32.const 4 - i32.add - local.get $3 - i32.const 8 - i32.shr_u - local.get $1 - i32.const 7 - i32.add - i32.load - local.tee $3 - i32.const 24 - i32.shl - i32.or - i32.store - local.get $0 - i32.const 8 - i32.add - local.get $3 - i32.const 8 - i32.shr_u - local.get $1 - i32.const 11 - i32.add - i32.load - local.tee $3 - i32.const 24 - i32.shl - i32.or - i32.store - local.get $0 - i32.const 12 - i32.add - local.get $1 - i32.const 15 - i32.add - i32.load - local.tee $5 - i32.const 24 - i32.shl - local.get $3 - i32.const 8 - i32.shr_u - 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 - br $continue|5 - end - end - end - end - local.get $2 - i32.const 16 - i32.and - if - local.get $0 - local.get $1 - i32.load8_u - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.tee $0 - local.get $1 - i32.const 1 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.tee $0 - local.get $1 - i32.const 1 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.tee $0 - local.get $1 - i32.const 1 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.tee $0 - local.get $1 - i32.const 1 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.tee $0 - local.get $1 - i32.const 1 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.tee $0 - local.get $1 - i32.const 1 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.tee $0 - local.get $1 - i32.const 1 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.tee $0 - local.get $1 - i32.const 1 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.tee $0 - local.get $1 - i32.const 1 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.tee $0 - local.get $1 - i32.const 1 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.tee $0 - local.get $1 - i32.const 1 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.tee $0 - local.get $1 - i32.const 1 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.tee $0 - local.get $1 - i32.const 1 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.tee $0 - local.get $1 - i32.const 1 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.tee $3 - i32.const 1 - i32.add - local.set $0 - local.get $1 - i32.const 1 - i32.add - local.tee $4 - i32.const 1 - i32.add - local.set $1 - local.get $3 - local.get $4 - i32.load8_u - i32.store8 - end - local.get $2 - i32.const 8 - i32.and - if - local.get $0 - local.get $1 - i32.load8_u - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.tee $0 - local.get $1 - i32.const 1 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.tee $0 - local.get $1 - i32.const 1 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.tee $0 - local.get $1 - i32.const 1 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.tee $0 - local.get $1 - i32.const 1 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.tee $0 - local.get $1 - i32.const 1 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.tee $0 - local.get $1 - i32.const 1 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.tee $3 - i32.const 1 - i32.add - local.set $0 - local.get $1 - i32.const 1 - i32.add - local.tee $4 - i32.const 1 - i32.add - local.set $1 - local.get $3 - local.get $4 - i32.load8_u - i32.store8 - end - local.get $2 - i32.const 4 - i32.and - if - local.get $0 - local.get $1 - i32.load8_u - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.tee $0 - local.get $1 - i32.const 1 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.tee $0 - local.get $1 - i32.const 1 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.tee $3 - i32.const 1 - i32.add - local.set $0 - local.get $1 - i32.const 1 - i32.add - local.tee $4 - i32.const 1 - i32.add - local.set $1 - local.get $3 - local.get $4 - i32.load8_u - i32.store8 - end - local.get $2 - i32.const 2 - i32.and - if - local.get $0 - local.get $1 - i32.load8_u - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.tee $3 - i32.const 1 - i32.add - local.set $0 - local.get $1 - i32.const 1 - i32.add - local.tee $4 - i32.const 1 - i32.add - local.set $1 - local.get $3 - local.get $4 - i32.load8_u - i32.store8 - end - local.get $2 - i32.const 1 - i32.and - if - local.get $0 - local.get $1 - i32.load8_u - i32.store8 - end - ) - (func $~lib/memory/memory.copy (; 19 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/memory/memory.copy (; 18 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) block $~lib/util/memory/memmove|inlined.0 @@ -2048,29 +1203,6 @@ local.get $1 i32.eq br_if $~lib/util/memory/memmove|inlined.0 - local.get $1 - local.get $2 - i32.add - local.get $0 - i32.le_u - local.tee $3 - i32.eqz - if - local.get $0 - local.get $2 - i32.add - local.get $1 - i32.le_u - local.set $3 - end - local.get $3 - 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 @@ -2234,7 +1366,7 @@ end end ) - (func $~lib/memory/memory.fill (; 20 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/memory/memory.fill (; 19 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) block $~lib/util/memory/memset|inlined.0 local.get $1 @@ -2445,7 +1577,7 @@ end end ) - (func $~lib/allocator/tlsf/__mem_free (; 21 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/allocator/tlsf/__mem_free (; 20 ;) (type $FUNCSIG$vi) (param $0 i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -2483,7 +1615,7 @@ end end ) - (func $~lib/runtime/runtime.reallocate (; 22 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/util/runtime/reallocate (; 21 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -2517,7 +1649,7 @@ i32.shl i32.const 0 local.get $0 - i32.const 264 + i32.const 320 i32.gt_u select local.get $3 @@ -2555,13 +1687,13 @@ i32.eq if local.get $0 - i32.const 264 + i32.const 320 i32.le_u if i32.const 0 i32.const 232 - i32.const 77 - i32.const 10 + i32.const 74 + i32.const 8 call $~lib/env/abort unreachable end @@ -2590,14 +1722,14 @@ i32.store offset=4 local.get $0 ) - (func $~lib/runtime/runtime.discard (; 23 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/runtime/runtime.discard (; 22 ;) (type $FUNCSIG$vi) (param $0 i32) local.get $0 - i32.const 264 + i32.const 320 i32.le_u if i32.const 0 - i32.const 232 - i32.const 103 + i32.const 288 + i32.const 68 i32.const 6 call $~lib/env/abort unreachable @@ -2611,8 +1743,8 @@ i32.ne if i32.const 0 - i32.const 232 - i32.const 105 + i32.const 288 + i32.const 70 i32.const 6 call $~lib/env/abort unreachable @@ -2620,15 +1752,15 @@ local.get $0 call $~lib/allocator/tlsf/__mem_free ) - (func $~lib/runtime/runtime.register (; 24 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/runtime/runtime.register (; 23 ;) (type $FUNCSIG$vi) (param $0 i32) (local $1 i32) local.get $0 - i32.const 264 + i32.const 320 i32.le_u if i32.const 0 - i32.const 232 - i32.const 117 + i32.const 288 + i32.const 82 i32.const 6 call $~lib/env/abort unreachable @@ -2642,8 +1774,8 @@ i32.ne if i32.const 0 - i32.const 232 - i32.const 119 + i32.const 288 + i32.const 84 i32.const 6 call $~lib/env/abort unreachable @@ -2654,7 +1786,7 @@ local.get $0 global.set $std/runtime/register_ref ) - (func $start:std/runtime (; 25 ;) (type $FUNCSIG$v) + (func $start:std/runtime (; 24 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -2826,7 +1958,7 @@ local.tee $0 local.get $0 global.get $std/runtime/barrier1 - call $~lib/runtime/runtime.reallocate + call $~lib/util/runtime/reallocate i32.ne if i32.const 0 @@ -2850,7 +1982,7 @@ end global.get $std/runtime/ref1 global.get $std/runtime/barrier2 - call $~lib/runtime/runtime.reallocate + call $~lib/util/runtime/reallocate global.set $std/runtime/ref2 global.get $std/runtime/ref1 global.get $std/runtime/ref2 @@ -2973,7 +2105,7 @@ unreachable end ) - (func $std/runtime/main (; 26 ;) (type $FUNCSIG$v) + (func $std/runtime/main (; 25 ;) (type $FUNCSIG$v) global.get $~lib/started i32.eqz if @@ -2982,7 +2114,7 @@ global.set $~lib/started end ) - (func $null (; 27 ;) (type $FUNCSIG$v) + (func $null (; 26 ;) (type $FUNCSIG$v) nop ) ) diff --git a/tests/compiler/std/runtime.ts b/tests/compiler/std/runtime.ts index 596da401..d495d4aa 100644 --- a/tests/compiler/std/runtime.ts +++ b/tests/compiler/std/runtime.ts @@ -1,5 +1,5 @@ import "allocator/tlsf"; -import { HEADER, HEADER_SIZE, HEADER_MAGIC, adjust } from "util/runtime"; +import { HEADER, HEADER_SIZE, HEADER_MAGIC, adjust, reallocate } from "util/runtime"; import { runtime, __runtime_id } from "runtime"; @start export function main(): void {} @@ -54,9 +54,9 @@ var ref1 = runtime.allocate(1); var header1 = changetype
(ref1 - HEADER_SIZE); assert(header1.classId == HEADER_MAGIC); assert(header1.payloadSize == 1); -assert(ref1 == runtime.reallocate(ref1, barrier1)); // same segment +assert(ref1 == reallocate(ref1, barrier1)); // same segment assert(header1.payloadSize == barrier1); -var ref2 = runtime.reallocate(ref1, barrier2); +var ref2 = reallocate(ref1, barrier2); assert(ref1 != ref2); // moves var header2 = changetype
(ref2 - HEADER_SIZE); assert(header2.payloadSize == barrier2); diff --git a/tests/compiler/std/runtime.untouched.wat b/tests/compiler/std/runtime.untouched.wat index 9f8966c4..1c8ecfde 100644 --- a/tests/compiler/std/runtime.untouched.wat +++ b/tests/compiler/std/runtime.untouched.wat @@ -16,7 +16,8 @@ (data (i32.const 88) "\03\00\00\00\10\00\00\00\00\00\00\00\00\00\00\00b\00a\00r\00r\00i\00e\00r\002\00") (data (i32.const 120) "\03\00\00\00\10\00\00\00\00\00\00\00\00\00\00\00b\00a\00r\00r\00i\00e\00r\003\00") (data (i32.const 152) "\03\00\00\00,\00\00\00\00\00\00\00\00\00\00\00~\00l\00i\00b\00/\00a\00l\00l\00o\00c\00a\00t\00o\00r\00/\00t\00l\00s\00f\00.\00t\00s\00") - (data (i32.const 216) "\03\00\00\00\1e\00\00\00\00\00\00\00\00\00\00\00~\00l\00i\00b\00/\00r\00u\00n\00t\00i\00m\00e\00.\00t\00s\00") + (data (i32.const 216) "\03\00\00\00(\00\00\00\00\00\00\00\00\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00r\00u\00n\00t\00i\00m\00e\00.\00t\00s\00") + (data (i32.const 272) "\03\00\00\00\1e\00\00\00\00\00\00\00\00\00\00\00~\00l\00i\00b\00/\00r\00u\00n\00t\00i\00m\00e\00.\00t\00s\00") (table $0 1 funcref) (elem (i32.const 0) $null) (global $std/runtime/register_ref (mut i32) (i32.const 0)) @@ -54,7 +55,7 @@ (global $std/runtime/header4 (mut i32) (i32.const 0)) (global $std/runtime/ref5 (mut i32) (i32.const 0)) (global $~lib/started (mut i32) (i32.const 0)) - (global $~lib/memory/HEAP_BASE i32 (i32.const 264)) + (global $~lib/memory/HEAP_BASE i32 (i32.const 320)) (global $~lib/capabilities i32 (i32.const 2)) (export "memory" (memory $0)) (export "table" (table $0)) @@ -1477,1208 +1478,7 @@ global.get $~lib/util/runtime/HEADER_SIZE i32.add ) - (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) - 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 - end - end - local.get $0 - 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.get $2 - 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.get $2 - i32.const 4 - 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 $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 - 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 $~lib/memory/memory.copy (; 25 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/memory/memory.copy (; 24 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -2689,28 +1489,6 @@ 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 @@ -2909,7 +1687,7 @@ end end ) - (func $~lib/memory/memory.fill (; 26 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/memory/memory.fill (; 25 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -3166,7 +1944,7 @@ end end ) - (func $~lib/allocator/tlsf/__mem_free (; 27 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/allocator/tlsf/__mem_free (; 26 ;) (type $FUNCSIG$vi) (param $0 i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -3209,15 +1987,15 @@ end end ) - (func $~lib/memory/memory.free (; 28 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/memory/memory.free (; 27 ;) (type $FUNCSIG$vi) (param $0 i32) local.get $0 call $~lib/allocator/tlsf/__mem_free ) - (func $std/runtime/__ref_register (; 29 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $std/runtime/__ref_register (; 28 ;) (type $FUNCSIG$vi) (param $0 i32) local.get $0 global.set $std/runtime/register_ref ) - (func $~lib/runtime/runtime.reallocate (; 30 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/util/runtime/reallocate (; 29 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -3288,8 +2066,8 @@ if i32.const 0 i32.const 232 - i32.const 77 - i32.const 10 + i32.const 74 + i32.const 8 call $~lib/env/abort unreachable end @@ -3321,7 +2099,7 @@ i32.store offset=4 local.get $0 ) - (func $~lib/runtime/runtime.discard (; 31 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/runtime/runtime.discard (; 30 ;) (type $FUNCSIG$vi) (param $0 i32) (local $1 i32) local.get $0 global.get $~lib/memory/HEAP_BASE @@ -3329,8 +2107,8 @@ i32.eqz if i32.const 0 - i32.const 232 - i32.const 103 + i32.const 288 + i32.const 68 i32.const 6 call $~lib/env/abort unreachable @@ -3346,8 +2124,8 @@ i32.eqz if i32.const 0 - i32.const 232 - i32.const 105 + i32.const 288 + i32.const 70 i32.const 6 call $~lib/env/abort unreachable @@ -3355,7 +2133,7 @@ local.get $1 call $~lib/memory/memory.free ) - (func $~lib/runtime/runtime.register (; 32 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/runtime/runtime.register (; 31 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) local.get $0 global.get $~lib/memory/HEAP_BASE @@ -3363,8 +2141,8 @@ i32.eqz if i32.const 0 - i32.const 232 - i32.const 117 + i32.const 288 + i32.const 82 i32.const 6 call $~lib/env/abort unreachable @@ -3380,8 +2158,8 @@ i32.eqz if i32.const 0 - i32.const 232 - i32.const 119 + i32.const 288 + i32.const 84 i32.const 6 call $~lib/env/abort unreachable @@ -3393,13 +2171,13 @@ call $std/runtime/__ref_register local.get $0 ) - (func $~lib/arraybuffer/ArrayBuffer#get:byteLength (; 33 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/arraybuffer/ArrayBuffer#get:byteLength (; 32 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 global.get $~lib/util/runtime/HEADER_SIZE i32.sub i32.load offset=4 ) - (func $~lib/string/String#get:length (; 34 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/string/String#get:length (; 33 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 global.get $~lib/util/runtime/HEADER_SIZE i32.sub @@ -3407,7 +2185,7 @@ i32.const 1 i32.shr_u ) - (func $start:std/runtime (; 35 ;) (type $FUNCSIG$v) + (func $start:std/runtime (; 34 ;) (type $FUNCSIG$v) (local $0 i32) i32.const 1 i32.const 2 @@ -3574,7 +2352,7 @@ global.get $std/runtime/ref1 global.get $std/runtime/ref1 global.get $std/runtime/barrier1 - call $~lib/runtime/runtime.reallocate + call $~lib/util/runtime/reallocate i32.eq i32.eqz if @@ -3600,7 +2378,7 @@ end global.get $std/runtime/ref1 global.get $std/runtime/barrier2 - call $~lib/runtime/runtime.reallocate + call $~lib/util/runtime/reallocate global.set $std/runtime/ref2 global.get $std/runtime/ref1 global.get $std/runtime/ref2 @@ -3727,7 +2505,7 @@ unreachable end ) - (func $std/runtime/main (; 36 ;) (type $FUNCSIG$v) + (func $std/runtime/main (; 35 ;) (type $FUNCSIG$v) global.get $~lib/started i32.eqz if @@ -3736,9 +2514,9 @@ global.set $~lib/started end ) - (func $start (; 37 ;) (type $FUNCSIG$v) + (func $start (; 36 ;) (type $FUNCSIG$v) call $start:std/runtime ) - (func $null (; 38 ;) (type $FUNCSIG$v) + (func $null (; 37 ;) (type $FUNCSIG$v) ) ) diff --git a/tests/compiler/std/set.optimized.wat b/tests/compiler/std/set.optimized.wat index 8360089e..1a50750b 100644 --- a/tests/compiler/std/set.optimized.wat +++ b/tests/compiler/std/set.optimized.wat @@ -131,7 +131,7 @@ if i32.const 0 i32.const 24 - i32.const 117 + i32.const 82 i32.const 6 call $~lib/env/abort unreachable @@ -146,7 +146,7 @@ if i32.const 0 i32.const 24 - i32.const 119 + i32.const 84 i32.const 6 call $~lib/env/abort unreachable diff --git a/tests/compiler/std/set.untouched.wat b/tests/compiler/std/set.untouched.wat index 08ad6ba6..44675ba2 100644 --- a/tests/compiler/std/set.untouched.wat +++ b/tests/compiler/std/set.untouched.wat @@ -166,7 +166,7 @@ if i32.const 0 i32.const 24 - i32.const 117 + i32.const 82 i32.const 6 call $~lib/env/abort unreachable @@ -183,7 +183,7 @@ if i32.const 0 i32.const 24 - i32.const 119 + i32.const 84 i32.const 6 call $~lib/env/abort unreachable diff --git a/tests/compiler/std/static-array.optimized.wat b/tests/compiler/std/static-array.optimized.wat index 1beb7f4e..415f3070 100644 --- a/tests/compiler/std/static-array.optimized.wat +++ b/tests/compiler/std/static-array.optimized.wat @@ -21,7 +21,7 @@ (data (i32.const 160) "\05\00\00\00\10\00\00\00\90\00\00\00\90\00\00\00\10\00\00\00\02") (data (i32.const 184) "\06\00\00\00&\00\00\00s\00t\00d\00/\00s\00t\00a\00t\00i\00c\00-\00a\00r\00r\00a\00y\00.\00t\00s") (data (i32.const 232) "\06\00\00\00\1a\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s") - (data (i32.const 272) "\06\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00u\00n\00t\00i\00m\00e\00.\00t\00s") + (data (i32.const 272) "\06\00\00\00(\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00r\00u\00n\00t\00i\00m\00e\00.\00t\00s") (table $0 1 funcref) (elem (i32.const 0) $null) (global $~lib/allocator/arena/startOffset (mut i32) (i32.const 0)) @@ -39,7 +39,7 @@ if i32.const 0 i32.const 240 - i32.const 100 + i32.const 99 i32.const 61 call $~lib/env/abort unreachable @@ -114,854 +114,7 @@ global.set $~lib/allocator/arena/offset local.get $1 ) - (func $~lib/util/memory/memcpy (; 3 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - loop $continue|0 - local.get $1 - i32.const 3 - i32.and - local.get $2 - local.get $2 - select - if - local.get $0 - local.tee $3 - i32.const 1 - i32.add - local.set $0 - local.get $1 - local.tee $4 - i32.const 1 - i32.add - local.set $1 - local.get $3 - local.get $4 - i32.load8_u - i32.store8 - local.get $2 - i32.const 1 - i32.sub - local.set $2 - br $continue|0 - end - end - local.get $0 - i32.const 3 - i32.and - i32.eqz - if - loop $continue|1 - local.get $2 - i32.const 16 - i32.ge_u - 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.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 - br $continue|1 - end - end - local.get $2 - 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 $1 - i32.const 8 - i32.add - local.set $1 - local.get $0 - i32.const 8 - i32.add - local.set $0 - end - local.get $2 - i32.const 4 - i32.and - if - local.get $0 - local.get $1 - i32.load - i32.store - local.get $1 - i32.const 4 - i32.add - local.set $1 - local.get $0 - i32.const 4 - i32.add - local.set $0 - end - local.get $2 - i32.const 2 - i32.and - if - local.get $0 - local.get $1 - i32.load16_u - i32.store16 - local.get $1 - i32.const 2 - i32.add - local.set $1 - local.get $0 - i32.const 2 - i32.add - local.set $0 - end - local.get $2 - i32.const 1 - i32.and - if - local.get $0 - local.get $1 - i32.load8_u - i32.store8 - end - return - end - local.get $2 - i32.const 32 - i32.ge_u - if - block $break|2 - block $case2|2 - block $case1|2 - local.get $0 - i32.const 3 - i32.and - local.tee $3 - i32.const 1 - i32.ne - if - local.get $3 - i32.const 2 - i32.eq - br_if $case1|2 - local.get $3 - i32.const 3 - i32.eq - br_if $case2|2 - br $break|2 - end - local.get $1 - i32.load - local.set $5 - local.get $0 - local.get $1 - i32.load8_u - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.tee $0 - local.get $1 - i32.const 1 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.tee $3 - i32.const 1 - i32.add - local.set $0 - local.get $1 - i32.const 1 - i32.add - local.tee $4 - i32.const 1 - i32.add - local.set $1 - local.get $3 - local.get $4 - i32.load8_u - i32.store8 - local.get $2 - i32.const 3 - i32.sub - local.set $2 - loop $continue|3 - local.get $2 - i32.const 17 - i32.ge_u - if - local.get $0 - local.get $1 - i32.const 1 - i32.add - i32.load - local.tee $3 - i32.const 8 - i32.shl - local.get $5 - i32.const 24 - i32.shr_u - i32.or - i32.store - local.get $0 - i32.const 4 - i32.add - local.get $3 - i32.const 24 - i32.shr_u - local.get $1 - i32.const 5 - i32.add - i32.load - local.tee $3 - i32.const 8 - i32.shl - i32.or - i32.store - local.get $0 - i32.const 8 - i32.add - local.get $3 - i32.const 24 - i32.shr_u - local.get $1 - i32.const 9 - i32.add - i32.load - local.tee $3 - i32.const 8 - i32.shl - i32.or - i32.store - local.get $0 - i32.const 12 - i32.add - local.get $1 - i32.const 13 - i32.add - i32.load - local.tee $5 - i32.const 8 - i32.shl - local.get $3 - i32.const 24 - i32.shr_u - 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 - br $continue|3 - end - end - br $break|2 - end - local.get $1 - i32.load - local.set $5 - local.get $0 - local.get $1 - i32.load8_u - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.tee $3 - i32.const 1 - i32.add - local.set $0 - local.get $1 - i32.const 1 - i32.add - local.tee $4 - i32.const 1 - i32.add - local.set $1 - local.get $3 - local.get $4 - i32.load8_u - i32.store8 - local.get $2 - i32.const 2 - i32.sub - local.set $2 - loop $continue|4 - local.get $2 - i32.const 18 - i32.ge_u - if - local.get $0 - local.get $1 - i32.const 2 - i32.add - i32.load - local.tee $3 - i32.const 16 - i32.shl - local.get $5 - i32.const 16 - i32.shr_u - i32.or - i32.store - local.get $0 - i32.const 4 - i32.add - local.get $3 - i32.const 16 - i32.shr_u - local.get $1 - i32.const 6 - i32.add - i32.load - local.tee $3 - i32.const 16 - i32.shl - i32.or - i32.store - local.get $0 - i32.const 8 - i32.add - local.get $3 - i32.const 16 - i32.shr_u - local.get $1 - i32.const 10 - i32.add - i32.load - local.tee $3 - i32.const 16 - i32.shl - i32.or - i32.store - local.get $0 - i32.const 12 - i32.add - local.get $1 - i32.const 14 - i32.add - i32.load - local.tee $5 - i32.const 16 - i32.shl - local.get $3 - i32.const 16 - i32.shr_u - 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 - br $continue|4 - end - end - br $break|2 - end - local.get $1 - i32.load - local.set $5 - local.get $0 - local.tee $3 - i32.const 1 - i32.add - local.set $0 - local.get $1 - local.tee $4 - i32.const 1 - i32.add - local.set $1 - local.get $3 - local.get $4 - i32.load8_u - i32.store8 - local.get $2 - i32.const 1 - i32.sub - local.set $2 - loop $continue|5 - local.get $2 - i32.const 19 - i32.ge_u - if - local.get $0 - local.get $1 - i32.const 3 - i32.add - i32.load - local.tee $3 - i32.const 24 - i32.shl - local.get $5 - i32.const 8 - i32.shr_u - i32.or - i32.store - local.get $0 - i32.const 4 - i32.add - local.get $3 - i32.const 8 - i32.shr_u - local.get $1 - i32.const 7 - i32.add - i32.load - local.tee $3 - i32.const 24 - i32.shl - i32.or - i32.store - local.get $0 - i32.const 8 - i32.add - local.get $3 - i32.const 8 - i32.shr_u - local.get $1 - i32.const 11 - i32.add - i32.load - local.tee $3 - i32.const 24 - i32.shl - i32.or - i32.store - local.get $0 - i32.const 12 - i32.add - local.get $1 - i32.const 15 - i32.add - i32.load - local.tee $5 - i32.const 24 - i32.shl - local.get $3 - i32.const 8 - i32.shr_u - 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 - br $continue|5 - end - end - end - end - local.get $2 - i32.const 16 - i32.and - if - local.get $0 - local.get $1 - i32.load8_u - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.tee $0 - local.get $1 - i32.const 1 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.tee $0 - local.get $1 - i32.const 1 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.tee $0 - local.get $1 - i32.const 1 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.tee $0 - local.get $1 - i32.const 1 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.tee $0 - local.get $1 - i32.const 1 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.tee $0 - local.get $1 - i32.const 1 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.tee $0 - local.get $1 - i32.const 1 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.tee $0 - local.get $1 - i32.const 1 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.tee $0 - local.get $1 - i32.const 1 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.tee $0 - local.get $1 - i32.const 1 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.tee $0 - local.get $1 - i32.const 1 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.tee $0 - local.get $1 - i32.const 1 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.tee $0 - local.get $1 - i32.const 1 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.tee $0 - local.get $1 - i32.const 1 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.tee $3 - i32.const 1 - i32.add - local.set $0 - local.get $1 - i32.const 1 - i32.add - local.tee $4 - i32.const 1 - i32.add - local.set $1 - local.get $3 - local.get $4 - i32.load8_u - i32.store8 - end - local.get $2 - i32.const 8 - i32.and - if - local.get $0 - local.get $1 - i32.load8_u - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.tee $0 - local.get $1 - i32.const 1 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.tee $0 - local.get $1 - i32.const 1 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.tee $0 - local.get $1 - i32.const 1 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.tee $0 - local.get $1 - i32.const 1 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.tee $0 - local.get $1 - i32.const 1 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.tee $0 - local.get $1 - i32.const 1 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.tee $3 - i32.const 1 - i32.add - local.set $0 - local.get $1 - i32.const 1 - i32.add - local.tee $4 - i32.const 1 - i32.add - local.set $1 - local.get $3 - local.get $4 - i32.load8_u - i32.store8 - end - local.get $2 - i32.const 4 - i32.and - if - local.get $0 - local.get $1 - i32.load8_u - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.tee $0 - local.get $1 - i32.const 1 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.tee $0 - local.get $1 - i32.const 1 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.tee $3 - i32.const 1 - i32.add - local.set $0 - local.get $1 - i32.const 1 - i32.add - local.tee $4 - i32.const 1 - i32.add - local.set $1 - local.get $3 - local.get $4 - i32.load8_u - i32.store8 - end - local.get $2 - i32.const 2 - i32.and - if - local.get $0 - local.get $1 - i32.load8_u - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.tee $3 - i32.const 1 - i32.add - local.set $0 - local.get $1 - i32.const 1 - i32.add - local.tee $4 - i32.const 1 - i32.add - local.set $1 - local.get $3 - local.get $4 - i32.load8_u - i32.store8 - end - local.get $2 - i32.const 1 - i32.and - if - local.get $0 - local.get $1 - i32.load8_u - i32.store8 - end - ) - (func $~lib/memory/memory.copy (; 4 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/memory/memory.copy (; 3 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) block $~lib/util/memory/memmove|inlined.0 @@ -969,29 +122,6 @@ local.get $1 i32.eq br_if $~lib/util/memory/memmove|inlined.0 - local.get $1 - local.get $2 - i32.add - local.get $0 - i32.le_u - local.tee $3 - i32.eqz - if - local.get $0 - local.get $2 - i32.add - local.get $1 - i32.le_u - local.set $3 - end - local.get $3 - 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 @@ -1155,7 +285,7 @@ end end ) - (func $~lib/memory/memory.fill (; 5 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/memory/memory.fill (; 4 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) block $~lib/util/memory/memset|inlined.0 local.get $1 @@ -1366,7 +496,7 @@ end end ) - (func $~lib/runtime/runtime.reallocate (; 6 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/util/runtime/reallocate (; 5 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -1400,7 +530,7 @@ i32.shl i32.const 0 local.get $0 - i32.const 312 + i32.const 320 i32.gt_u select local.get $4 @@ -1432,13 +562,13 @@ i32.eq if local.get $0 - i32.const 312 + i32.const 320 i32.le_u if i32.const 0 i32.const 280 - i32.const 77 - i32.const 10 + i32.const 74 + i32.const 8 call $~lib/env/abort unreachable end @@ -1462,7 +592,7 @@ i32.store offset=4 local.get $0 ) - (func $~lib/array/ensureCapacity (; 7 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/array/ensureCapacity (; 6 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) i32.const 1 @@ -1480,7 +610,7 @@ if i32.const 0 i32.const 240 - i32.const 15 + i32.const 14 i32.const 64 call $~lib/env/abort unreachable @@ -1492,7 +622,7 @@ local.get $1 i32.shl local.tee $3 - call $~lib/runtime/runtime.reallocate + call $~lib/util/runtime/reallocate local.set $1 local.get $1 local.get $2 @@ -1510,7 +640,7 @@ i32.store offset=8 end ) - (func $~lib/array/Array#__set (; 8 ;) (type $FUNCSIG$v) + (func $~lib/array/Array#__set (; 7 ;) (type $FUNCSIG$v) (local $0 i32) i32.const 44 i32.load @@ -1531,7 +661,7 @@ i32.store end ) - (func $~lib/array/Array#__get (; 9 ;) (type $FUNCSIG$ji) (param $0 i32) (result i64) + (func $~lib/array/Array#__get (; 8 ;) (type $FUNCSIG$ji) (param $0 i32) (result i64) local.get $0 i32.const 88 i32.load @@ -1541,7 +671,7 @@ if i32.const 0 i32.const 240 - i32.const 100 + i32.const 99 i32.const 61 call $~lib/env/abort unreachable @@ -1554,7 +684,7 @@ i32.add i64.load ) - (func $~lib/array/Array#__set (; 10 ;) (type $FUNCSIG$v) + (func $~lib/array/Array#__set (; 9 ;) (type $FUNCSIG$v) (local $0 i32) i32.const 92 i32.load @@ -1575,7 +705,7 @@ i32.store end ) - (func $~lib/array/Array#__get (; 11 ;) (type $FUNCSIG$fi) (param $0 i32) (result f32) + (func $~lib/array/Array#__get (; 10 ;) (type $FUNCSIG$fi) (param $0 i32) (result f32) local.get $0 i32.const 128 i32.load @@ -1585,7 +715,7 @@ if i32.const 0 i32.const 240 - i32.const 100 + i32.const 99 i32.const 61 call $~lib/env/abort unreachable @@ -1598,7 +728,7 @@ i32.add f32.load ) - (func $~lib/array/Array#__set (; 12 ;) (type $FUNCSIG$v) + (func $~lib/array/Array#__set (; 11 ;) (type $FUNCSIG$v) (local $0 i32) i32.const 132 i32.load @@ -1619,7 +749,7 @@ i32.store end ) - (func $~lib/array/Array#__get (; 13 ;) (type $FUNCSIG$di) (param $0 i32) (result f64) + (func $~lib/array/Array#__get (; 12 ;) (type $FUNCSIG$di) (param $0 i32) (result f64) local.get $0 i32.const 176 i32.load @@ -1629,7 +759,7 @@ if i32.const 0 i32.const 240 - i32.const 100 + i32.const 99 i32.const 61 call $~lib/env/abort unreachable @@ -1642,7 +772,7 @@ i32.add f64.load ) - (func $~lib/array/Array#__set (; 14 ;) (type $FUNCSIG$v) + (func $~lib/array/Array#__set (; 13 ;) (type $FUNCSIG$v) (local $0 i32) i32.const 180 i32.load @@ -1663,7 +793,7 @@ i32.store end ) - (func $start:std/static-array (; 15 ;) (type $FUNCSIG$v) + (func $start:std/static-array (; 14 ;) (type $FUNCSIG$v) i32.const 44 i32.load i32.const 2 @@ -1700,7 +830,7 @@ call $~lib/env/abort unreachable end - i32.const 312 + i32.const 320 global.set $~lib/allocator/arena/startOffset global.get $~lib/allocator/arena/startOffset global.set $~lib/allocator/arena/offset @@ -1865,10 +995,10 @@ unreachable end ) - (func $start (; 16 ;) (type $FUNCSIG$v) + (func $start (; 15 ;) (type $FUNCSIG$v) call $start:std/static-array ) - (func $null (; 17 ;) (type $FUNCSIG$v) + (func $null (; 16 ;) (type $FUNCSIG$v) nop ) ) diff --git a/tests/compiler/std/static-array.untouched.wat b/tests/compiler/std/static-array.untouched.wat index 9b09b240..83fe3114 100644 --- a/tests/compiler/std/static-array.untouched.wat +++ b/tests/compiler/std/static-array.untouched.wat @@ -23,7 +23,7 @@ (data (i32.const 160) "\05\00\00\00\10\00\00\00\90\00\00\00\90\00\00\00\10\00\00\00\02\00\00\00") (data (i32.const 184) "\06\00\00\00&\00\00\00s\00t\00d\00/\00s\00t\00a\00t\00i\00c\00-\00a\00r\00r\00a\00y\00.\00t\00s\00") (data (i32.const 232) "\06\00\00\00\1a\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s\00") - (data (i32.const 272) "\06\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 272) "\06\00\00\00(\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00r\00u\00n\00t\00i\00m\00e\00.\00t\00s\00") (table $0 1 funcref) (elem (i32.const 0) $null) (global $std/static-array/i i32 (i32.const 32)) @@ -35,7 +35,7 @@ (global $~lib/allocator/arena/startOffset (mut i32) (i32.const 0)) (global $~lib/allocator/arena/offset (mut i32) (i32.const 0)) (global $~lib/util/runtime/HEADER_MAGIC i32 (i32.const -1520547049)) - (global $~lib/memory/HEAP_BASE i32 (i32.const 312)) + (global $~lib/memory/HEAP_BASE i32 (i32.const 320)) (export "memory" (memory $0)) (export "table" (table $0)) (start $start) @@ -62,7 +62,7 @@ if i32.const 0 i32.const 240 - i32.const 100 + i32.const 99 i32.const 61 call $~lib/env/abort unreachable @@ -167,1208 +167,7 @@ call $~lib/allocator/arena/__mem_allocate return ) - (func $~lib/util/memory/memcpy (; 7 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (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 - end - end - local.get $0 - 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.get $2 - 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.get $2 - i32.const 4 - 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 $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 - 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 $~lib/memory/memory.copy (; 8 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/memory/memory.copy (; 7 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -1379,28 +178,6 @@ 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 @@ -1599,7 +376,7 @@ end end ) - (func $~lib/memory/memory.fill (; 9 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (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) @@ -1856,14 +633,14 @@ end end ) - (func $~lib/allocator/arena/__mem_free (; 10 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/allocator/arena/__mem_free (; 9 ;) (type $FUNCSIG$vi) (param $0 i32) nop ) - (func $~lib/memory/memory.free (; 11 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/memory/memory.free (; 10 ;) (type $FUNCSIG$vi) (param $0 i32) local.get $0 call $~lib/allocator/arena/__mem_free ) - (func $~lib/runtime/runtime.reallocate (; 12 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/util/runtime/reallocate (; 11 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -1928,8 +705,8 @@ if i32.const 0 i32.const 280 - i32.const 77 - i32.const 10 + i32.const 74 + i32.const 8 call $~lib/env/abort unreachable end @@ -1960,7 +737,7 @@ i32.store offset=4 local.get $0 ) - (func $~lib/array/ensureCapacity (; 13 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/array/ensureCapacity (; 12 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -1979,7 +756,7 @@ if i32.const 0 i32.const 240 - i32.const 15 + i32.const 14 i32.const 64 call $~lib/env/abort unreachable @@ -1993,7 +770,7 @@ local.set $4 local.get $3 local.get $4 - call $~lib/runtime/runtime.reallocate + call $~lib/util/runtime/reallocate local.set $5 local.get $5 local.get $3 @@ -2011,7 +788,7 @@ i32.store offset=8 end ) - (func $~lib/array/Array#__unchecked_set (; 14 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/array/Array#__unchecked_set (; 13 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) local.get $0 i32.load offset=4 local.get $1 @@ -2021,7 +798,7 @@ local.get $2 i32.store ) - (func $~lib/array/Array#__set (; 15 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/array/Array#__set (; 14 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) local.get $0 i32.load offset=12 @@ -2047,11 +824,11 @@ i32.store offset=12 end ) - (func $~lib/array/Array#get:length (; 16 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/array/Array#get:length (; 15 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.load offset=12 ) - (func $~lib/array/Array#__unchecked_get (; 17 ;) (type $FUNCSIG$jii) (param $0 i32) (param $1 i32) (result i64) + (func $~lib/array/Array#__unchecked_get (; 16 ;) (type $FUNCSIG$jii) (param $0 i32) (param $1 i32) (result i64) local.get $0 i32.load offset=4 local.get $1 @@ -2060,7 +837,7 @@ i32.add i64.load ) - (func $~lib/array/Array#__get (; 18 ;) (type $FUNCSIG$jii) (param $0 i32) (param $1 i32) (result i64) + (func $~lib/array/Array#__get (; 17 ;) (type $FUNCSIG$jii) (param $0 i32) (param $1 i32) (result i64) local.get $1 local.get $0 i32.load offset=8 @@ -2070,7 +847,7 @@ if i32.const 0 i32.const 240 - i32.const 100 + i32.const 99 i32.const 61 call $~lib/env/abort unreachable @@ -2079,7 +856,7 @@ local.get $1 call $~lib/array/Array#__unchecked_get ) - (func $~lib/array/Array#__unchecked_set (; 19 ;) (type $FUNCSIG$viij) (param $0 i32) (param $1 i32) (param $2 i64) + (func $~lib/array/Array#__unchecked_set (; 18 ;) (type $FUNCSIG$viij) (param $0 i32) (param $1 i32) (param $2 i64) local.get $0 i32.load offset=4 local.get $1 @@ -2089,7 +866,7 @@ local.get $2 i64.store ) - (func $~lib/array/Array#__set (; 20 ;) (type $FUNCSIG$viij) (param $0 i32) (param $1 i32) (param $2 i64) + (func $~lib/array/Array#__set (; 19 ;) (type $FUNCSIG$viij) (param $0 i32) (param $1 i32) (param $2 i64) (local $3 i32) local.get $0 i32.load offset=12 @@ -2115,11 +892,11 @@ i32.store offset=12 end ) - (func $~lib/array/Array#get:length (; 21 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/array/Array#get:length (; 20 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.load offset=12 ) - (func $~lib/array/Array#__unchecked_get (; 22 ;) (type $FUNCSIG$fii) (param $0 i32) (param $1 i32) (result f32) + (func $~lib/array/Array#__unchecked_get (; 21 ;) (type $FUNCSIG$fii) (param $0 i32) (param $1 i32) (result f32) local.get $0 i32.load offset=4 local.get $1 @@ -2128,7 +905,7 @@ i32.add f32.load ) - (func $~lib/array/Array#__get (; 23 ;) (type $FUNCSIG$fii) (param $0 i32) (param $1 i32) (result f32) + (func $~lib/array/Array#__get (; 22 ;) (type $FUNCSIG$fii) (param $0 i32) (param $1 i32) (result f32) local.get $1 local.get $0 i32.load offset=8 @@ -2138,7 +915,7 @@ if i32.const 0 i32.const 240 - i32.const 100 + i32.const 99 i32.const 61 call $~lib/env/abort unreachable @@ -2147,7 +924,7 @@ local.get $1 call $~lib/array/Array#__unchecked_get ) - (func $~lib/array/Array#__unchecked_set (; 24 ;) (type $FUNCSIG$viif) (param $0 i32) (param $1 i32) (param $2 f32) + (func $~lib/array/Array#__unchecked_set (; 23 ;) (type $FUNCSIG$viif) (param $0 i32) (param $1 i32) (param $2 f32) local.get $0 i32.load offset=4 local.get $1 @@ -2157,7 +934,7 @@ local.get $2 f32.store ) - (func $~lib/array/Array#__set (; 25 ;) (type $FUNCSIG$viif) (param $0 i32) (param $1 i32) (param $2 f32) + (func $~lib/array/Array#__set (; 24 ;) (type $FUNCSIG$viif) (param $0 i32) (param $1 i32) (param $2 f32) (local $3 i32) local.get $0 i32.load offset=12 @@ -2183,11 +960,11 @@ i32.store offset=12 end ) - (func $~lib/array/Array#get:length (; 26 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/array/Array#get:length (; 25 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.load offset=12 ) - (func $~lib/array/Array#__unchecked_get (; 27 ;) (type $FUNCSIG$dii) (param $0 i32) (param $1 i32) (result f64) + (func $~lib/array/Array#__unchecked_get (; 26 ;) (type $FUNCSIG$dii) (param $0 i32) (param $1 i32) (result f64) local.get $0 i32.load offset=4 local.get $1 @@ -2196,7 +973,7 @@ i32.add f64.load ) - (func $~lib/array/Array#__get (; 28 ;) (type $FUNCSIG$dii) (param $0 i32) (param $1 i32) (result f64) + (func $~lib/array/Array#__get (; 27 ;) (type $FUNCSIG$dii) (param $0 i32) (param $1 i32) (result f64) local.get $1 local.get $0 i32.load offset=8 @@ -2206,7 +983,7 @@ if i32.const 0 i32.const 240 - i32.const 100 + i32.const 99 i32.const 61 call $~lib/env/abort unreachable @@ -2215,7 +992,7 @@ local.get $1 call $~lib/array/Array#__unchecked_get ) - (func $~lib/array/Array#__unchecked_set (; 29 ;) (type $FUNCSIG$viid) (param $0 i32) (param $1 i32) (param $2 f64) + (func $~lib/array/Array#__unchecked_set (; 28 ;) (type $FUNCSIG$viid) (param $0 i32) (param $1 i32) (param $2 f64) local.get $0 i32.load offset=4 local.get $1 @@ -2225,7 +1002,7 @@ local.get $2 f64.store ) - (func $~lib/array/Array#__set (; 30 ;) (type $FUNCSIG$viid) (param $0 i32) (param $1 i32) (param $2 f64) + (func $~lib/array/Array#__set (; 29 ;) (type $FUNCSIG$viid) (param $0 i32) (param $1 i32) (param $2 f64) (local $3 i32) local.get $0 i32.load offset=12 @@ -2251,7 +1028,7 @@ i32.store offset=12 end ) - (func $start:std/static-array (; 31 ;) (type $FUNCSIG$v) + (func $start:std/static-array (; 30 ;) (type $FUNCSIG$v) global.get $std/static-array/i call $~lib/array/Array#get:length i32.const 2 @@ -2499,9 +1276,9 @@ unreachable end ) - (func $start (; 32 ;) (type $FUNCSIG$v) + (func $start (; 31 ;) (type $FUNCSIG$v) call $start:std/static-array ) - (func $null (; 33 ;) (type $FUNCSIG$v) + (func $null (; 32 ;) (type $FUNCSIG$v) ) ) diff --git a/tests/compiler/std/string-utf8.optimized.wat b/tests/compiler/std/string-utf8.optimized.wat index 5fc94736..90532e1a 100644 --- a/tests/compiler/std/string-utf8.optimized.wat +++ b/tests/compiler/std/string-utf8.optimized.wat @@ -415,854 +415,7 @@ i32.const 8 i32.add ) - (func $~lib/util/memory/memcpy (; 5 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - loop $continue|0 - local.get $1 - i32.const 3 - i32.and - local.get $2 - local.get $2 - select - if - local.get $0 - local.tee $3 - i32.const 1 - i32.add - local.set $0 - local.get $1 - local.tee $4 - i32.const 1 - i32.add - local.set $1 - local.get $3 - local.get $4 - i32.load8_u - i32.store8 - local.get $2 - i32.const 1 - i32.sub - local.set $2 - br $continue|0 - end - end - local.get $0 - i32.const 3 - i32.and - i32.eqz - if - loop $continue|1 - local.get $2 - i32.const 16 - i32.ge_u - 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.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 - br $continue|1 - end - end - local.get $2 - 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 $1 - i32.const 8 - i32.add - local.set $1 - local.get $0 - i32.const 8 - i32.add - local.set $0 - end - local.get $2 - i32.const 4 - i32.and - if - local.get $0 - local.get $1 - i32.load - i32.store - local.get $1 - i32.const 4 - i32.add - local.set $1 - local.get $0 - i32.const 4 - i32.add - local.set $0 - end - local.get $2 - i32.const 2 - i32.and - if - local.get $0 - local.get $1 - i32.load16_u - i32.store16 - local.get $1 - i32.const 2 - i32.add - local.set $1 - local.get $0 - i32.const 2 - i32.add - local.set $0 - end - local.get $2 - i32.const 1 - i32.and - if - local.get $0 - local.get $1 - i32.load8_u - i32.store8 - end - return - end - local.get $2 - i32.const 32 - i32.ge_u - if - block $break|2 - block $case2|2 - block $case1|2 - local.get $0 - i32.const 3 - i32.and - local.tee $3 - i32.const 1 - i32.ne - if - local.get $3 - i32.const 2 - i32.eq - br_if $case1|2 - local.get $3 - i32.const 3 - i32.eq - br_if $case2|2 - br $break|2 - end - local.get $1 - i32.load - local.set $5 - local.get $0 - local.get $1 - i32.load8_u - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.tee $0 - local.get $1 - i32.const 1 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.tee $3 - i32.const 1 - i32.add - local.set $0 - local.get $1 - i32.const 1 - i32.add - local.tee $4 - i32.const 1 - i32.add - local.set $1 - local.get $3 - local.get $4 - i32.load8_u - i32.store8 - local.get $2 - i32.const 3 - i32.sub - local.set $2 - loop $continue|3 - local.get $2 - i32.const 17 - i32.ge_u - if - local.get $0 - local.get $1 - i32.const 1 - i32.add - i32.load - local.tee $3 - i32.const 8 - i32.shl - local.get $5 - i32.const 24 - i32.shr_u - i32.or - i32.store - local.get $0 - i32.const 4 - i32.add - local.get $3 - i32.const 24 - i32.shr_u - local.get $1 - i32.const 5 - i32.add - i32.load - local.tee $3 - i32.const 8 - i32.shl - i32.or - i32.store - local.get $0 - i32.const 8 - i32.add - local.get $3 - i32.const 24 - i32.shr_u - local.get $1 - i32.const 9 - i32.add - i32.load - local.tee $3 - i32.const 8 - i32.shl - i32.or - i32.store - local.get $0 - i32.const 12 - i32.add - local.get $1 - i32.const 13 - i32.add - i32.load - local.tee $5 - i32.const 8 - i32.shl - local.get $3 - i32.const 24 - i32.shr_u - 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 - br $continue|3 - end - end - br $break|2 - end - local.get $1 - i32.load - local.set $5 - local.get $0 - local.get $1 - i32.load8_u - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.tee $3 - i32.const 1 - i32.add - local.set $0 - local.get $1 - i32.const 1 - i32.add - local.tee $4 - i32.const 1 - i32.add - local.set $1 - local.get $3 - local.get $4 - i32.load8_u - i32.store8 - local.get $2 - i32.const 2 - i32.sub - local.set $2 - loop $continue|4 - local.get $2 - i32.const 18 - i32.ge_u - if - local.get $0 - local.get $1 - i32.const 2 - i32.add - i32.load - local.tee $3 - i32.const 16 - i32.shl - local.get $5 - i32.const 16 - i32.shr_u - i32.or - i32.store - local.get $0 - i32.const 4 - i32.add - local.get $3 - i32.const 16 - i32.shr_u - local.get $1 - i32.const 6 - i32.add - i32.load - local.tee $3 - i32.const 16 - i32.shl - i32.or - i32.store - local.get $0 - i32.const 8 - i32.add - local.get $3 - i32.const 16 - i32.shr_u - local.get $1 - i32.const 10 - i32.add - i32.load - local.tee $3 - i32.const 16 - i32.shl - i32.or - i32.store - local.get $0 - i32.const 12 - i32.add - local.get $1 - i32.const 14 - i32.add - i32.load - local.tee $5 - i32.const 16 - i32.shl - local.get $3 - i32.const 16 - i32.shr_u - 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 - br $continue|4 - end - end - br $break|2 - end - local.get $1 - i32.load - local.set $5 - local.get $0 - local.tee $3 - i32.const 1 - i32.add - local.set $0 - local.get $1 - local.tee $4 - i32.const 1 - i32.add - local.set $1 - local.get $3 - local.get $4 - i32.load8_u - i32.store8 - local.get $2 - i32.const 1 - i32.sub - local.set $2 - loop $continue|5 - local.get $2 - i32.const 19 - i32.ge_u - if - local.get $0 - local.get $1 - i32.const 3 - i32.add - i32.load - local.tee $3 - i32.const 24 - i32.shl - local.get $5 - i32.const 8 - i32.shr_u - i32.or - i32.store - local.get $0 - i32.const 4 - i32.add - local.get $3 - i32.const 8 - i32.shr_u - local.get $1 - i32.const 7 - i32.add - i32.load - local.tee $3 - i32.const 24 - i32.shl - i32.or - i32.store - local.get $0 - i32.const 8 - i32.add - local.get $3 - i32.const 8 - i32.shr_u - local.get $1 - i32.const 11 - i32.add - i32.load - local.tee $3 - i32.const 24 - i32.shl - i32.or - i32.store - local.get $0 - i32.const 12 - i32.add - local.get $1 - i32.const 15 - i32.add - i32.load - local.tee $5 - i32.const 24 - i32.shl - local.get $3 - i32.const 8 - i32.shr_u - 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 - br $continue|5 - end - end - end - end - local.get $2 - i32.const 16 - i32.and - if - local.get $0 - local.get $1 - i32.load8_u - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.tee $0 - local.get $1 - i32.const 1 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.tee $0 - local.get $1 - i32.const 1 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.tee $0 - local.get $1 - i32.const 1 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.tee $0 - local.get $1 - i32.const 1 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.tee $0 - local.get $1 - i32.const 1 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.tee $0 - local.get $1 - i32.const 1 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.tee $0 - local.get $1 - i32.const 1 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.tee $0 - local.get $1 - i32.const 1 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.tee $0 - local.get $1 - i32.const 1 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.tee $0 - local.get $1 - i32.const 1 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.tee $0 - local.get $1 - i32.const 1 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.tee $0 - local.get $1 - i32.const 1 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.tee $0 - local.get $1 - i32.const 1 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.tee $0 - local.get $1 - i32.const 1 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.tee $3 - i32.const 1 - i32.add - local.set $0 - local.get $1 - i32.const 1 - i32.add - local.tee $4 - i32.const 1 - i32.add - local.set $1 - local.get $3 - local.get $4 - i32.load8_u - i32.store8 - end - local.get $2 - i32.const 8 - i32.and - if - local.get $0 - local.get $1 - i32.load8_u - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.tee $0 - local.get $1 - i32.const 1 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.tee $0 - local.get $1 - i32.const 1 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.tee $0 - local.get $1 - i32.const 1 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.tee $0 - local.get $1 - i32.const 1 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.tee $0 - local.get $1 - i32.const 1 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.tee $0 - local.get $1 - i32.const 1 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.tee $3 - i32.const 1 - i32.add - local.set $0 - local.get $1 - i32.const 1 - i32.add - local.tee $4 - i32.const 1 - i32.add - local.set $1 - local.get $3 - local.get $4 - i32.load8_u - i32.store8 - end - local.get $2 - i32.const 4 - i32.and - if - local.get $0 - local.get $1 - i32.load8_u - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.tee $0 - local.get $1 - i32.const 1 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.tee $0 - local.get $1 - i32.const 1 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.tee $3 - i32.const 1 - i32.add - local.set $0 - local.get $1 - i32.const 1 - i32.add - local.tee $4 - i32.const 1 - i32.add - local.set $1 - local.get $3 - local.get $4 - i32.load8_u - i32.store8 - end - local.get $2 - i32.const 2 - i32.and - if - local.get $0 - local.get $1 - i32.load8_u - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.tee $3 - i32.const 1 - i32.add - local.set $0 - local.get $1 - i32.const 1 - i32.add - local.tee $4 - i32.const 1 - i32.add - local.set $1 - local.get $3 - local.get $4 - i32.load8_u - i32.store8 - end - local.get $2 - i32.const 1 - i32.and - if - local.get $0 - local.get $1 - i32.load8_u - i32.store8 - end - ) - (func $~lib/memory/memory.copy (; 6 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/memory/memory.copy (; 5 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) block $~lib/util/memory/memmove|inlined.0 @@ -1270,29 +423,6 @@ local.get $1 i32.eq br_if $~lib/util/memory/memmove|inlined.0 - local.get $1 - local.get $2 - i32.add - local.get $0 - i32.le_u - local.tee $3 - i32.eqz - if - local.get $0 - local.get $2 - i32.add - local.get $1 - i32.le_u - local.set $3 - end - local.get $3 - 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 @@ -1456,7 +586,7 @@ end end ) - (func $~lib/runtime/runtime.register (; 7 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/runtime/runtime.register (; 6 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) local.get $0 i32.const 228 @@ -1464,7 +594,7 @@ if i32.const 0 i32.const 136 - i32.const 117 + i32.const 82 i32.const 6 call $~lib/env/abort unreachable @@ -1479,7 +609,7 @@ if i32.const 0 i32.const 136 - i32.const 119 + i32.const 84 i32.const 6 call $~lib/env/abort unreachable @@ -1489,7 +619,7 @@ i32.store local.get $0 ) - (func $~lib/string/String.fromUTF8 (; 8 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/string/String.fromUTF8 (; 7 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -1746,7 +876,7 @@ local.get $0 call $~lib/runtime/runtime.register ) - (func $~lib/util/string/compareImpl (; 9 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/util/string/compareImpl (; 8 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) loop $continue|0 local.get $2 @@ -1779,7 +909,7 @@ end local.get $3 ) - (func $~lib/string/String.__eq (; 10 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/string/String.__eq (; 9 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) local.get $0 local.get $1 @@ -1825,7 +955,7 @@ call $~lib/util/string/compareImpl i32.eqz ) - (func $start:std/string-utf8 (; 11 ;) (type $FUNCSIG$v) + (func $start:std/string-utf8 (; 10 ;) (type $FUNCSIG$v) global.get $std/string-utf8/str call $~lib/string/String#get:lengthUTF8 global.set $std/string-utf8/len @@ -2070,10 +1200,10 @@ unreachable end ) - (func $start (; 12 ;) (type $FUNCSIG$v) + (func $start (; 11 ;) (type $FUNCSIG$v) call $start:std/string-utf8 ) - (func $null (; 13 ;) (type $FUNCSIG$v) + (func $null (; 12 ;) (type $FUNCSIG$v) nop ) ) diff --git a/tests/compiler/std/string-utf8.untouched.wat b/tests/compiler/std/string-utf8.untouched.wat index 6c138802..4d61e9f9 100644 --- a/tests/compiler/std/string-utf8.untouched.wat +++ b/tests/compiler/std/string-utf8.untouched.wat @@ -481,1208 +481,7 @@ global.get $~lib/util/runtime/HEADER_SIZE i32.add ) - (func $~lib/util/memory/memcpy (; 8 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (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 - end - end - local.get $0 - 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.get $2 - 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.get $2 - i32.const 4 - 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 $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 - 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 $~lib/memory/memory.copy (; 9 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/memory/memory.copy (; 8 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -1693,28 +492,6 @@ 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 @@ -1913,14 +690,14 @@ end end ) - (func $~lib/allocator/arena/__mem_free (; 10 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/allocator/arena/__mem_free (; 9 ;) (type $FUNCSIG$vi) (param $0 i32) nop ) - (func $~lib/memory/memory.free (; 11 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/memory/memory.free (; 10 ;) (type $FUNCSIG$vi) (param $0 i32) local.get $0 call $~lib/allocator/arena/__mem_free ) - (func $~lib/runtime/runtime.register (; 12 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/runtime/runtime.register (; 11 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) local.get $0 global.get $~lib/memory/HEAP_BASE @@ -1929,7 +706,7 @@ if i32.const 0 i32.const 136 - i32.const 117 + i32.const 82 i32.const 6 call $~lib/env/abort unreachable @@ -1946,7 +723,7 @@ if i32.const 0 i32.const 136 - i32.const 119 + i32.const 84 i32.const 6 call $~lib/env/abort unreachable @@ -1956,7 +733,7 @@ i32.store local.get $0 ) - (func $~lib/string/String.fromUTF8 (; 13 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/string/String.fromUTF8 (; 12 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -2263,7 +1040,7 @@ i32.const 1 call $~lib/runtime/runtime.register ) - (func $~lib/util/string/compareImpl (; 14 ;) (type $FUNCSIG$iiiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (result i32) + (func $~lib/util/string/compareImpl (; 13 ;) (type $FUNCSIG$iiiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (result i32) (local $5 i32) (local $6 i32) (local $7 i32) @@ -2316,7 +1093,7 @@ end local.get $5 ) - (func $~lib/string/String.__eq (; 15 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/string/String.__eq (; 14 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) local.get $0 @@ -2360,7 +1137,7 @@ call $~lib/util/string/compareImpl i32.eqz ) - (func $start:std/string-utf8 (; 16 ;) (type $FUNCSIG$v) + (func $start:std/string-utf8 (; 15 ;) (type $FUNCSIG$v) global.get $std/string-utf8/str call $~lib/string/String#get:lengthUTF8 global.set $std/string-utf8/len @@ -2627,9 +1404,9 @@ global.get $std/string-utf8/ptr call $~lib/memory/memory.free ) - (func $start (; 17 ;) (type $FUNCSIG$v) + (func $start (; 16 ;) (type $FUNCSIG$v) call $start:std/string-utf8 ) - (func $null (; 18 ;) (type $FUNCSIG$v) + (func $null (; 17 ;) (type $FUNCSIG$v) ) ) diff --git a/tests/compiler/std/string.optimized.wat b/tests/compiler/std/string.optimized.wat index 2895b8fc..08a56244 100644 --- a/tests/compiler/std/string.optimized.wat +++ b/tests/compiler/std/string.optimized.wat @@ -145,186 +145,188 @@ (data (i32.const 1864) "a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m") (data (i32.const 1896) "\01\00\00\00\1a") (data (i32.const 1912) "~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s") - (data (i32.const 1944) "\01\00\00\00\n") - (data (i32.const 1960) "a\00,\00b\00,\00c") - (data (i32.const 1976) "\01\00\00\00\02") - (data (i32.const 1992) ".") - (data (i32.const 2000) "\01\00\00\00\02") - (data (i32.const 2016) "c") - (data (i32.const 2024) "\01\00\00\00\0e") - (data (i32.const 2040) "a\00,\00 \00b\00,\00 \00c") - (data (i32.const 2056) "\01\00\00\00\04") - (data (i32.const 2072) ",\00 ") - (data (i32.const 2080) "\01\00\00\00\0c") - (data (i32.const 2096) "a\00,\00b\00,\00,\00c") - (data (i32.const 2112) "\01\00\00\00\0c") - (data (i32.const 2128) ",\00a\00,\00b\00,\00c") - (data (i32.const 2144) "\01\00\00\00\0c") - (data (i32.const 2160) "a\00,\00b\00,\00c\00,") - (data (i32.const 2176) "\03\00\00\00\90\01") - (data (i32.const 2192) "0\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 2592) "\04\00\00\00\10") - (data (i32.const 2608) "\90\08\00\00\90\08\00\00\90\01\00\00d") - (data (i32.const 2624) "\01\00\00\00\02") - (data (i32.const 2640) "8") - (data (i32.const 2648) "\01\00\00\00\n") - (data (i32.const 2664) "-\001\000\000\000") - (data (i32.const 2680) "\01\00\00\00\08") - (data (i32.const 2696) "1\002\003\004") + (data (i32.const 1944) "\01\00\00\00(") + (data (i32.const 1960) "~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00r\00u\00n\00t\00i\00m\00e\00.\00t\00s") + (data (i32.const 2000) "\01\00\00\00\n") + (data (i32.const 2016) "a\00,\00b\00,\00c") + (data (i32.const 2032) "\01\00\00\00\02") + (data (i32.const 2048) ".") + (data (i32.const 2056) "\01\00\00\00\02") + (data (i32.const 2072) "c") + (data (i32.const 2080) "\01\00\00\00\0e") + (data (i32.const 2096) "a\00,\00 \00b\00,\00 \00c") + (data (i32.const 2112) "\01\00\00\00\04") + (data (i32.const 2128) ",\00 ") + (data (i32.const 2136) "\01\00\00\00\0c") + (data (i32.const 2152) "a\00,\00b\00,\00,\00c") + (data (i32.const 2168) "\01\00\00\00\0c") + (data (i32.const 2184) ",\00a\00,\00b\00,\00c") + (data (i32.const 2200) "\01\00\00\00\0c") + (data (i32.const 2216) "a\00,\00b\00,\00c\00,") + (data (i32.const 2232) "\03\00\00\00\90\01") + (data (i32.const 2248) "0\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 2648) "\04\00\00\00\10") + (data (i32.const 2664) "\c8\08\00\00\c8\08\00\00\90\01\00\00d") + (data (i32.const 2680) "\01\00\00\00\02") + (data (i32.const 2696) "8") (data (i32.const 2704) "\01\00\00\00\n") - (data (i32.const 2720) "1\002\003\004\005") - (data (i32.const 2736) "\01\00\00\00\0c") - (data (i32.const 2752) "1\002\003\004\005\006") - (data (i32.const 2768) "\01\00\00\00\0e") - (data (i32.const 2784) "1\001\001\001\001\001\001") - (data (i32.const 2800) "\01\00\00\00\0e") - (data (i32.const 2816) "1\002\003\004\005\006\007") - (data (i32.const 2832) "\01\00\00\00\14") - (data (i32.const 2848) "2\001\004\007\004\008\003\006\004\006") - (data (i32.const 2872) "\01\00\00\00\14") - (data (i32.const 2888) "2\001\004\007\004\008\003\006\004\007") - (data (i32.const 2912) "\01\00\00\00\16") - (data (i32.const 2928) "-\002\001\004\007\004\008\003\006\004\008") - (data (i32.const 2952) "\01\00\00\00\04") - (data (i32.const 2968) "-\001") - (data (i32.const 2976) "\01\00\00\00\08") - (data (i32.const 2992) "1\000\000\000") - (data (i32.const 3000) "\01\00\00\00\14") - (data (i32.const 3016) "2\001\004\007\004\008\003\006\004\008") - (data (i32.const 3040) "\01\00\00\00\14") - (data (i32.const 3056) "4\002\009\004\009\006\007\002\009\005") - (data (i32.const 3080) "\01\00\00\00\10") - (data (i32.const 3096) "9\009\009\009\009\009\009\009") - (data (i32.const 3112) "\01\00\00\00\12") - (data (i32.const 3128) "1\000\000\000\000\000\000\000\000") - (data (i32.const 3152) "\01\00\00\00\16") - (data (i32.const 3168) "6\008\007\001\009\004\007\006\007\003\005") - (data (i32.const 3192) "\01\00\00\00\18") - (data (i32.const 3208) "8\006\008\007\001\009\004\007\006\007\003\005") - (data (i32.const 3232) "\01\00\00\00\1e") - (data (i32.const 3248) "9\009\009\008\006\008\007\001\009\004\007\006\007\003\005") - (data (i32.const 3280) "\01\00\00\00 ") - (data (i32.const 3296) "9\009\009\009\008\006\008\007\001\009\004\007\006\007\003\005") - (data (i32.const 3328) "\01\00\00\00\"") - (data (i32.const 3344) "1\009\009\009\009\008\006\008\007\001\009\004\007\006\007\003\005") - (data (i32.const 3384) "\01\00\00\00(") - (data (i32.const 3400) "1\008\004\004\006\007\004\004\000\007\003\007\000\009\005\005\001\006\001\005") - (data (i32.const 3440) "\01\00\00\00\n") - (data (i32.const 3456) "-\001\002\003\004") - (data (i32.const 3472) "\01\00\00\00\16") - (data (i32.const 3488) "-\004\002\009\004\009\006\007\002\009\005") - (data (i32.const 3512) "\01\00\00\00\18") - (data (i32.const 3528) "-\006\008\007\001\009\004\007\006\007\003\005") - (data (i32.const 3552) "\01\00\00\00\1a") - (data (i32.const 3568) "-\008\006\008\007\001\009\004\007\006\007\003\005") - (data (i32.const 3600) "\01\00\00\00 ") - (data (i32.const 3616) "-\009\009\009\008\006\008\007\001\009\004\007\006\007\003\005") - (data (i32.const 3648) "\01\00\00\00$") - (data (i32.const 3664) "-\001\009\009\009\009\008\006\008\007\001\009\004\007\006\007\003\005") - (data (i32.const 3704) "\01\00\00\00&") - (data (i32.const 3720) "9\002\002\003\003\007\002\000\003\006\008\005\004\007\007\005\008\000\007") - (data (i32.const 3760) "\01\00\00\00(") - (data (i32.const 3776) "-\009\002\002\003\003\007\002\000\003\006\008\005\004\007\007\005\008\000\008") - (data (i32.const 3816) "\01\00\00\00\06") - (data (i32.const 3832) "0\00.\000") - (data (i32.const 3840) "\01\00\00\00\06") - (data (i32.const 3856) "N\00a\00N") - (data (i32.const 3864) "\01\00\00\00\12") - (data (i32.const 3880) "-\00I\00n\00f\00i\00n\00i\00t\00y") - (data (i32.const 3904) "\01\00\00\00\10") - (data (i32.const 3920) "I\00n\00f\00i\00n\00i\00t\00y") - (data (i32.const 3936) "\03\00\00\00\b8\02") - (data (i32.const 3952) "\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 (; 17 ;) (type $FUNCSIG$di) (param $0 i32) (result f64) + (func $~lib/util/string/parse (; 16 ;) (type $FUNCSIG$di) (param $0 i32) (result f64) (local $1 i32) (local $2 i32) (local $3 i32) @@ -2379,7 +1511,7 @@ local.get $5 f64.mul ) - (func $~lib/string/parseFloat (; 18 ;) (type $FUNCSIG$di) (param $0 i32) (result f64) + (func $~lib/string/parseFloat (; 17 ;) (type $FUNCSIG$di) (param $0 i32) (result f64) (local $1 i32) (local $2 i32) (local $3 f64) @@ -2549,7 +1681,7 @@ local.get $3 f64.mul ) - (func $~lib/string/String#concat (; 19 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/string/String#concat (; 18 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -2598,7 +1730,7 @@ i32.const 1 call $~lib/runtime/runtime.register ) - (func $~lib/string/String.__concat (; 20 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/string/String.__concat (; 19 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $0 i32.const 352 local.get $0 @@ -2606,13 +1738,13 @@ local.get $1 call $~lib/string/String#concat ) - (func $~lib/string/String.__ne (; 21 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/string/String.__ne (; 20 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $0 local.get $1 call $~lib/string/String.__eq i32.eqz ) - (func $~lib/string/String.__gt (; 22 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/string/String.__gt (; 21 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) block (result i32) @@ -2677,7 +1809,7 @@ i32.const 0 i32.gt_s ) - (func $~lib/string/String.__lt (; 23 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/string/String.__lt (; 22 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) block (result i32) @@ -2742,19 +1874,19 @@ i32.const 0 i32.lt_s ) - (func $~lib/string/String.__gte (; 24 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/string/String.__gte (; 23 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $0 local.get $1 call $~lib/string/String.__lt i32.eqz ) - (func $~lib/string/String.__lte (; 25 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/string/String.__lte (; 24 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) i32.const 120 local.get $0 call $~lib/string/String.__gt i32.eqz ) - (func $~lib/string/String#repeat (; 26 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/string/String#repeat (; 25 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) local.get $0 @@ -2834,7 +1966,7 @@ i32.const 1 call $~lib/runtime/runtime.register ) - (func $~lib/string/String#slice (; 27 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/string/String#slice (; 26 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $0 i32.const 16 @@ -2912,7 +2044,7 @@ i32.const 1 call $~lib/runtime/runtime.register ) - (func $~lib/runtime/runtime.newArray (; 28 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/runtime/runtime.newArray (; 27 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -2947,7 +2079,7 @@ i32.store offset=12 local.get $1 ) - (func $~lib/memory/memory.fill (; 29 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/memory/memory.fill (; 28 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) block $~lib/util/memory/memset|inlined.0 local.get $1 @@ -3158,7 +2290,7 @@ end end ) - (func $~lib/runtime/runtime.reallocate (; 30 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/util/runtime/reallocate (; 29 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -3192,7 +2324,7 @@ i32.shl i32.const 0 local.get $0 - i32.const 6736 + i32.const 6792 i32.gt_u select local.get $3 @@ -3230,13 +2362,13 @@ i32.eq if local.get $0 - i32.const 6736 + i32.const 6792 i32.le_u if i32.const 0 - i32.const 184 - i32.const 77 - i32.const 10 + i32.const 1960 + i32.const 74 + i32.const 8 call $~lib/env/abort unreachable end @@ -3260,7 +2392,7 @@ i32.store offset=4 local.get $0 ) - (func $~lib/array/ensureCapacity (; 31 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/array/ensureCapacity (; 30 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) local.get $1 @@ -3276,7 +2408,7 @@ if i32.const 0 i32.const 1912 - i32.const 15 + i32.const 14 i32.const 64 call $~lib/env/abort unreachable @@ -3288,7 +2420,7 @@ i32.const 2 i32.shl local.tee $3 - call $~lib/runtime/runtime.reallocate + call $~lib/util/runtime/reallocate local.set $1 local.get $1 local.get $2 @@ -3309,7 +2441,7 @@ i32.store offset=8 end ) - (func $~lib/array/Array<~lib/string/String>#push (; 32 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/array/Array<~lib/string/String>#push (; 31 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) local.get $0 @@ -3339,7 +2471,7 @@ local.get $3 i32.store offset=12 ) - (func $~lib/string/String#split (; 33 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/string/String#split (; 32 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -3590,7 +2722,7 @@ end local.get $2 ) - (func $~lib/array/Array<~lib/string/String>#__get (; 34 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array<~lib/string/String>#__get (; 33 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $1 local.get $0 i32.load offset=12 @@ -3598,7 +2730,7 @@ if i32.const 0 i32.const 1912 - i32.const 97 + i32.const 96 i32.const 45 call $~lib/env/abort unreachable @@ -3612,7 +2744,7 @@ if i32.const 0 i32.const 1912 - i32.const 100 + i32.const 99 i32.const 61 call $~lib/env/abort unreachable @@ -3625,7 +2757,7 @@ i32.add i32.load ) - (func $~lib/util/number/decimalCount32 (; 35 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/util/number/decimalCount32 (; 34 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.const 100000 i32.lt_u @@ -3679,10 +2811,10 @@ end end ) - (func $~lib/util/number/utoa32_lut (; 36 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/util/number/utoa32_lut (; 35 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) - i32.const 2612 + i32.const 2668 i32.load local.set $3 loop $continue|0 @@ -3789,7 +2921,7 @@ i32.store16 end ) - (func $~lib/util/number/itoa32 (; 37 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/util/number/itoa32 (; 36 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -3831,7 +2963,7 @@ i32.const 1 call $~lib/runtime/runtime.register ) - (func $~lib/util/number/utoa32 (; 38 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/util/number/utoa32 (; 37 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) local.get $0 @@ -3854,7 +2986,7 @@ i32.const 1 call $~lib/runtime/runtime.register ) - (func $~lib/util/number/decimalCount64 (; 39 ;) (type $FUNCSIG$ij) (param $0 i64) (result i32) + (func $~lib/util/number/decimalCount64 (; 38 ;) (type $FUNCSIG$ij) (param $0 i64) (result i32) local.get $0 i64.const 1000000000000000 i64.lt_u @@ -3908,12 +3040,12 @@ end end ) - (func $~lib/util/number/utoa64_lut (; 40 ;) (type $FUNCSIG$viji) (param $0 i32) (param $1 i64) (param $2 i32) + (func $~lib/util/number/utoa64_lut (; 39 ;) (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 2612 + i32.const 2668 i32.load local.set $3 loop $continue|0 @@ -4005,7 +3137,7 @@ local.get $2 call $~lib/util/number/utoa32_lut ) - (func $~lib/util/number/utoa64 (; 41 ;) (type $FUNCSIG$ij) (param $0 i64) (result i32) + (func $~lib/util/number/utoa64 (; 40 ;) (type $FUNCSIG$ij) (param $0 i64) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -4047,7 +3179,7 @@ i32.const 1 call $~lib/runtime/runtime.register ) - (func $~lib/util/number/itoa64 (; 42 ;) (type $FUNCSIG$ij) (param $0 i64) (result i32) + (func $~lib/util/number/itoa64 (; 41 ;) (type $FUNCSIG$ij) (param $0 i64) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -4112,7 +3244,7 @@ i32.const 1 call $~lib/runtime/runtime.register ) - (func $~lib/util/number/genDigits (; 43 ;) (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 (; 42 ;) (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 i32) (local $9 i64) @@ -4147,7 +3279,7 @@ local.tee $7 call $~lib/util/number/decimalCount32 local.set $4 - i32.const 4980 + i32.const 5036 i32.load local.set $13 loop $continue|0 @@ -4527,7 +3659,7 @@ local.get $6 end ) - (func $~lib/util/number/prettify (; 44 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/util/number/prettify (; 43 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) local.get $2 @@ -4786,7 +3918,7 @@ end end ) - (func $~lib/util/number/dtoa_core (; 45 ;) (type $FUNCSIG$iid) (param $0 i32) (param $1 f64) (result i32) + (func $~lib/util/number/dtoa_core (; 44 ;) (type $FUNCSIG$iid) (param $0 i32) (param $1 f64) (result i32) (local $2 i64) (local $3 i32) (local $4 i64) @@ -4902,7 +4034,7 @@ i32.shl i32.sub global.set $~lib/util/number/_K - i32.const 4668 + i32.const 4724 i32.load local.get $3 i32.const 3 @@ -4910,7 +4042,7 @@ i32.add i64.load global.set $~lib/util/number/_frc_pow - i32.const 4892 + i32.const 4948 i32.load local.get $3 i32.const 1 @@ -5074,7 +4206,7 @@ local.get $10 i32.add ) - (func $~lib/string/String#substring (; 46 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/string/String#substring (; 45 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -5170,14 +4302,14 @@ i32.const 1 call $~lib/runtime/runtime.register ) - (func $~lib/runtime/runtime.discard (; 47 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/runtime/runtime.discard (; 46 ;) (type $FUNCSIG$vi) (param $0 i32) local.get $0 - i32.const 6736 + i32.const 6792 i32.le_u if i32.const 0 i32.const 184 - i32.const 103 + i32.const 68 i32.const 6 call $~lib/env/abort unreachable @@ -5191,20 +4323,20 @@ if i32.const 0 i32.const 184 - i32.const 105 + i32.const 70 i32.const 6 call $~lib/env/abort unreachable end ) - (func $~lib/util/number/dtoa (; 48 ;) (type $FUNCSIG$id) (param $0 f64) (result i32) + (func $~lib/util/number/dtoa (; 47 ;) (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 3832 + i32.const 3888 return end local.get $0 @@ -5217,11 +4349,11 @@ local.get $0 f64.ne if - i32.const 3856 + i32.const 3912 return end - i32.const 3880 - i32.const 3920 + i32.const 3936 + i32.const 3976 local.get $0 f64.const 0 f64.lt @@ -5242,7 +4374,7 @@ call $~lib/runtime/runtime.discard local.get $1 ) - (func $start:std/string (; 49 ;) (type $FUNCSIG$v) + (func $start:std/string (; 48 ;) (type $FUNCSIG$v) (local $0 i32) global.get $std/string/str i32.const 24 @@ -5341,7 +4473,7 @@ call $~lib/env/abort unreachable end - i32.const 6736 + i32.const 6792 global.set $~lib/allocator/arena/startOffset global.get $~lib/allocator/arena/startOffset global.set $~lib/allocator/arena/offset @@ -6847,8 +5979,8 @@ call $~lib/env/abort unreachable end - i32.const 1960 - i32.const 1992 + i32.const 2016 + i32.const 2048 i32.const 2147483647 call $~lib/string/String#split global.set $std/string/sa @@ -6861,7 +5993,7 @@ global.get $std/string/sa i32.const 0 call $~lib/array/Array<~lib/string/String>#__get - i32.const 1960 + i32.const 2016 call $~lib/string/String.__eq local.set $0 end @@ -6875,7 +6007,7 @@ call $~lib/env/abort unreachable end - i32.const 1960 + i32.const 2016 i32.const 720 i32.const 2147483647 call $~lib/string/String#split @@ -6911,7 +6043,7 @@ global.get $std/string/sa i32.const 2 call $~lib/array/Array<~lib/string/String>#__get - i32.const 2016 + i32.const 2072 call $~lib/string/String.__eq local.set $0 end @@ -6925,8 +6057,8 @@ call $~lib/env/abort unreachable end - i32.const 2040 - i32.const 2072 + i32.const 2096 + i32.const 2128 i32.const 2147483647 call $~lib/string/String#split global.set $std/string/sa @@ -6961,7 +6093,7 @@ global.get $std/string/sa i32.const 2 call $~lib/array/Array<~lib/string/String>#__get - i32.const 2016 + i32.const 2072 call $~lib/string/String.__eq local.set $0 end @@ -6975,7 +6107,7 @@ call $~lib/env/abort unreachable end - i32.const 2096 + i32.const 2152 i32.const 720 i32.const 2147483647 call $~lib/string/String#split @@ -7022,7 +6154,7 @@ global.get $std/string/sa i32.const 3 call $~lib/array/Array<~lib/string/String>#__get - i32.const 2016 + i32.const 2072 call $~lib/string/String.__eq local.set $0 end @@ -7036,7 +6168,7 @@ call $~lib/env/abort unreachable end - i32.const 2128 + i32.const 2184 i32.const 720 i32.const 2147483647 call $~lib/string/String#split @@ -7083,7 +6215,7 @@ global.get $std/string/sa i32.const 3 call $~lib/array/Array<~lib/string/String>#__get - i32.const 2016 + i32.const 2072 call $~lib/string/String.__eq local.set $0 end @@ -7097,7 +6229,7 @@ call $~lib/env/abort unreachable end - i32.const 2160 + i32.const 2216 i32.const 720 i32.const 2147483647 call $~lib/string/String#split @@ -7134,7 +6266,7 @@ global.get $std/string/sa i32.const 2 call $~lib/array/Array<~lib/string/String>#__get - i32.const 2016 + i32.const 2072 call $~lib/string/String.__eq local.set $0 end @@ -7194,7 +6326,7 @@ global.get $std/string/sa i32.const 2 call $~lib/array/Array<~lib/string/String>#__get - i32.const 2016 + i32.const 2072 call $~lib/string/String.__eq local.set $0 end @@ -7251,7 +6383,7 @@ call $~lib/env/abort unreachable end - i32.const 1960 + i32.const 2016 i32.const 720 i32.const 1 call $~lib/string/String#split @@ -7315,7 +6447,7 @@ global.get $std/string/sa i32.const 2 call $~lib/array/Array<~lib/string/String>#__get - i32.const 2016 + i32.const 2072 call $~lib/string/String.__eq local.set $0 end @@ -7365,7 +6497,7 @@ global.get $std/string/sa i32.const 2 call $~lib/array/Array<~lib/string/String>#__get - i32.const 2016 + i32.const 2072 call $~lib/string/String.__eq local.set $0 end @@ -7379,7 +6511,7 @@ call $~lib/env/abort unreachable end - i32.const 1960 + i32.const 2016 i32.const 720 i32.const -1 call $~lib/string/String#split @@ -7415,7 +6547,7 @@ global.get $std/string/sa i32.const 2 call $~lib/array/Array<~lib/string/String>#__get - i32.const 2016 + i32.const 2072 call $~lib/string/String.__eq local.set $0 end @@ -7457,7 +6589,7 @@ end i32.const 8 call $~lib/util/number/itoa32 - i32.const 2640 + i32.const 2696 call $~lib/string/String.__eq i32.eqz if @@ -7483,7 +6615,7 @@ end i32.const -1000 call $~lib/util/number/itoa32 - i32.const 2664 + i32.const 2720 call $~lib/string/String.__eq i32.eqz if @@ -7496,7 +6628,7 @@ end i32.const 1234 call $~lib/util/number/itoa32 - i32.const 2696 + i32.const 2752 call $~lib/string/String.__eq i32.eqz if @@ -7509,7 +6641,7 @@ end i32.const 12345 call $~lib/util/number/itoa32 - i32.const 2720 + i32.const 2776 call $~lib/string/String.__eq i32.eqz if @@ -7522,7 +6654,7 @@ end i32.const 123456 call $~lib/util/number/itoa32 - i32.const 2752 + i32.const 2808 call $~lib/string/String.__eq i32.eqz if @@ -7535,7 +6667,7 @@ end i32.const 1111111 call $~lib/util/number/itoa32 - i32.const 2784 + i32.const 2840 call $~lib/string/String.__eq i32.eqz if @@ -7548,7 +6680,7 @@ end i32.const 1234567 call $~lib/util/number/itoa32 - i32.const 2816 + i32.const 2872 call $~lib/string/String.__eq i32.eqz if @@ -7561,7 +6693,7 @@ end i32.const 2147483646 call $~lib/util/number/itoa32 - i32.const 2848 + i32.const 2904 call $~lib/string/String.__eq i32.eqz if @@ -7574,7 +6706,7 @@ end i32.const 2147483647 call $~lib/util/number/itoa32 - i32.const 2888 + i32.const 2944 call $~lib/string/String.__eq i32.eqz if @@ -7587,7 +6719,7 @@ end i32.const -2147483648 call $~lib/util/number/itoa32 - i32.const 2928 + i32.const 2984 call $~lib/string/String.__eq i32.eqz if @@ -7600,7 +6732,7 @@ end i32.const -1 call $~lib/util/number/itoa32 - i32.const 2968 + i32.const 3024 call $~lib/string/String.__eq i32.eqz if @@ -7626,7 +6758,7 @@ end i32.const 1000 call $~lib/util/number/utoa32 - i32.const 2992 + i32.const 3048 call $~lib/string/String.__eq i32.eqz if @@ -7639,7 +6771,7 @@ end i32.const 2147483647 call $~lib/util/number/utoa32 - i32.const 2888 + i32.const 2944 call $~lib/string/String.__eq i32.eqz if @@ -7652,7 +6784,7 @@ end i32.const -2147483648 call $~lib/util/number/utoa32 - i32.const 3016 + i32.const 3072 call $~lib/string/String.__eq i32.eqz if @@ -7665,7 +6797,7 @@ end i32.const -1 call $~lib/util/number/utoa32 - i32.const 3056 + i32.const 3112 call $~lib/string/String.__eq i32.eqz if @@ -7691,7 +6823,7 @@ end i64.const 1234 call $~lib/util/number/utoa64 - i32.const 2696 + i32.const 2752 call $~lib/string/String.__eq i32.eqz if @@ -7704,7 +6836,7 @@ end i64.const 99999999 call $~lib/util/number/utoa64 - i32.const 3096 + i32.const 3152 call $~lib/string/String.__eq i32.eqz if @@ -7717,7 +6849,7 @@ end i64.const 100000000 call $~lib/util/number/utoa64 - i32.const 3128 + i32.const 3184 call $~lib/string/String.__eq i32.eqz if @@ -7730,7 +6862,7 @@ end i64.const 4294967295 call $~lib/util/number/utoa64 - i32.const 3056 + i32.const 3112 call $~lib/string/String.__eq i32.eqz if @@ -7743,7 +6875,7 @@ end i64.const 68719476735 call $~lib/util/number/utoa64 - i32.const 3168 + i32.const 3224 call $~lib/string/String.__eq i32.eqz if @@ -7756,7 +6888,7 @@ end i64.const 868719476735 call $~lib/util/number/utoa64 - i32.const 3208 + i32.const 3264 call $~lib/string/String.__eq i32.eqz if @@ -7769,7 +6901,7 @@ end i64.const 999868719476735 call $~lib/util/number/utoa64 - i32.const 3248 + i32.const 3304 call $~lib/string/String.__eq i32.eqz if @@ -7782,7 +6914,7 @@ end i64.const 9999868719476735 call $~lib/util/number/utoa64 - i32.const 3296 + i32.const 3352 call $~lib/string/String.__eq i32.eqz if @@ -7795,7 +6927,7 @@ end i64.const 19999868719476735 call $~lib/util/number/utoa64 - i32.const 3344 + i32.const 3400 call $~lib/string/String.__eq i32.eqz if @@ -7808,7 +6940,7 @@ end i64.const -1 call $~lib/util/number/utoa64 - i32.const 3400 + i32.const 3456 call $~lib/string/String.__eq i32.eqz if @@ -7834,7 +6966,7 @@ end i64.const -1234 call $~lib/util/number/itoa64 - i32.const 3456 + i32.const 3512 call $~lib/string/String.__eq i32.eqz if @@ -7847,7 +6979,7 @@ end i64.const 4294967295 call $~lib/util/number/itoa64 - i32.const 3056 + i32.const 3112 call $~lib/string/String.__eq i32.eqz if @@ -7860,7 +6992,7 @@ end i64.const -4294967295 call $~lib/util/number/itoa64 - i32.const 3488 + i32.const 3544 call $~lib/string/String.__eq i32.eqz if @@ -7873,7 +7005,7 @@ end i64.const 68719476735 call $~lib/util/number/itoa64 - i32.const 3168 + i32.const 3224 call $~lib/string/String.__eq i32.eqz if @@ -7886,7 +7018,7 @@ end i64.const -68719476735 call $~lib/util/number/itoa64 - i32.const 3528 + i32.const 3584 call $~lib/string/String.__eq i32.eqz if @@ -7899,7 +7031,7 @@ end i64.const -868719476735 call $~lib/util/number/itoa64 - i32.const 3568 + i32.const 3624 call $~lib/string/String.__eq i32.eqz if @@ -7912,7 +7044,7 @@ end i64.const -999868719476735 call $~lib/util/number/itoa64 - i32.const 3616 + i32.const 3672 call $~lib/string/String.__eq i32.eqz if @@ -7925,7 +7057,7 @@ end i64.const -19999868719476735 call $~lib/util/number/itoa64 - i32.const 3664 + i32.const 3720 call $~lib/string/String.__eq i32.eqz if @@ -7938,7 +7070,7 @@ end i64.const 9223372036854775807 call $~lib/util/number/itoa64 - i32.const 3720 + i32.const 3776 call $~lib/string/String.__eq i32.eqz if @@ -7951,7 +7083,7 @@ end i64.const -9223372036854775808 call $~lib/util/number/itoa64 - i32.const 3776 + i32.const 3832 call $~lib/string/String.__eq i32.eqz if @@ -7964,7 +7096,7 @@ end f64.const 0 call $~lib/util/number/dtoa - i32.const 3832 + i32.const 3888 call $~lib/string/String.__eq i32.eqz if @@ -7977,7 +7109,7 @@ end f64.const -0 call $~lib/util/number/dtoa - i32.const 3832 + i32.const 3888 call $~lib/string/String.__eq i32.eqz if @@ -7990,7 +7122,7 @@ end f64.const nan:0x8000000000000 call $~lib/util/number/dtoa - i32.const 3856 + i32.const 3912 call $~lib/string/String.__eq i32.eqz if @@ -8003,7 +7135,7 @@ end f64.const inf call $~lib/util/number/dtoa - i32.const 3920 + i32.const 3976 call $~lib/string/String.__eq i32.eqz if @@ -8016,7 +7148,7 @@ end f64.const -inf call $~lib/util/number/dtoa - i32.const 3880 + i32.const 3936 call $~lib/string/String.__eq i32.eqz if @@ -8029,7 +7161,7 @@ end f64.const 2.220446049250313e-16 call $~lib/util/number/dtoa - i32.const 5008 + i32.const 5064 call $~lib/string/String.__eq i32.eqz if @@ -8042,7 +7174,7 @@ end f64.const -2.220446049250313e-16 call $~lib/util/number/dtoa - i32.const 5072 + i32.const 5128 call $~lib/string/String.__eq i32.eqz if @@ -8055,7 +7187,7 @@ end f64.const 1797693134862315708145274e284 call $~lib/util/number/dtoa - i32.const 5136 + i32.const 5192 call $~lib/string/String.__eq i32.eqz if @@ -8068,7 +7200,7 @@ end f64.const -1797693134862315708145274e284 call $~lib/util/number/dtoa - i32.const 5200 + i32.const 5256 call $~lib/string/String.__eq i32.eqz if @@ -8081,7 +7213,7 @@ end f64.const 4185580496821356722454785e274 call $~lib/util/number/dtoa - i32.const 5264 + i32.const 5320 call $~lib/string/String.__eq i32.eqz if @@ -8094,7 +7226,7 @@ end f64.const 2.2250738585072014e-308 call $~lib/util/number/dtoa - i32.const 5328 + i32.const 5384 call $~lib/string/String.__eq i32.eqz if @@ -8107,7 +7239,7 @@ end f64.const 4.940656e-318 call $~lib/util/number/dtoa - i32.const 5392 + i32.const 5448 call $~lib/string/String.__eq i32.eqz if @@ -8120,7 +7252,7 @@ end f64.const 9060801153433600 call $~lib/util/number/dtoa - i32.const 5440 + i32.const 5496 call $~lib/string/String.__eq i32.eqz if @@ -8133,7 +7265,7 @@ end f64.const 4708356024711512064 call $~lib/util/number/dtoa - i32.const 5496 + i32.const 5552 call $~lib/string/String.__eq i32.eqz if @@ -8146,7 +7278,7 @@ end f64.const 9409340012568248320 call $~lib/util/number/dtoa - i32.const 5560 + i32.const 5616 call $~lib/string/String.__eq i32.eqz if @@ -8159,7 +7291,7 @@ end f64.const 5e-324 call $~lib/util/number/dtoa - i32.const 5624 + i32.const 5680 call $~lib/string/String.__eq i32.eqz if @@ -8172,7 +7304,7 @@ end f64.const 1 call $~lib/util/number/dtoa - i32.const 5656 + i32.const 5712 call $~lib/string/String.__eq i32.eqz if @@ -8198,7 +7330,7 @@ end f64.const -1 call $~lib/util/number/dtoa - i32.const 5680 + i32.const 5736 call $~lib/string/String.__eq i32.eqz if @@ -8211,7 +7343,7 @@ end f64.const -0.1 call $~lib/util/number/dtoa - i32.const 5704 + i32.const 5760 call $~lib/string/String.__eq i32.eqz if @@ -8224,7 +7356,7 @@ end f64.const 1e6 call $~lib/util/number/dtoa - i32.const 5728 + i32.const 5784 call $~lib/string/String.__eq i32.eqz if @@ -8237,7 +7369,7 @@ end f64.const 1e-06 call $~lib/util/number/dtoa - i32.const 5768 + i32.const 5824 call $~lib/string/String.__eq i32.eqz if @@ -8250,7 +7382,7 @@ end f64.const -1e6 call $~lib/util/number/dtoa - i32.const 5800 + i32.const 5856 call $~lib/string/String.__eq i32.eqz if @@ -8263,7 +7395,7 @@ end f64.const -1e-06 call $~lib/util/number/dtoa - i32.const 5840 + i32.const 5896 call $~lib/string/String.__eq i32.eqz if @@ -8276,7 +7408,7 @@ end f64.const 1e7 call $~lib/util/number/dtoa - i32.const 5880 + i32.const 5936 call $~lib/string/String.__eq i32.eqz if @@ -8289,7 +7421,7 @@ end f64.const 1e-07 call $~lib/util/number/dtoa - i32.const 5920 + i32.const 5976 call $~lib/string/String.__eq i32.eqz if @@ -8302,7 +7434,7 @@ end f64.const 1.e+308 call $~lib/util/number/dtoa - i32.const 5944 + i32.const 6000 call $~lib/string/String.__eq i32.eqz if @@ -8315,7 +7447,7 @@ end f64.const -1.e+308 call $~lib/util/number/dtoa - i32.const 5976 + i32.const 6032 call $~lib/string/String.__eq i32.eqz if @@ -8328,7 +7460,7 @@ end f64.const inf call $~lib/util/number/dtoa - i32.const 3920 + i32.const 3976 call $~lib/string/String.__eq i32.eqz if @@ -8341,7 +7473,7 @@ end f64.const -inf call $~lib/util/number/dtoa - i32.const 3880 + i32.const 3936 call $~lib/string/String.__eq i32.eqz if @@ -8354,7 +7486,7 @@ end f64.const 1e-308 call $~lib/util/number/dtoa - i32.const 6008 + i32.const 6064 call $~lib/string/String.__eq i32.eqz if @@ -8367,7 +7499,7 @@ end f64.const -1e-308 call $~lib/util/number/dtoa - i32.const 6040 + i32.const 6096 call $~lib/string/String.__eq i32.eqz if @@ -8380,7 +7512,7 @@ end f64.const 1e-323 call $~lib/util/number/dtoa - i32.const 6072 + i32.const 6128 call $~lib/string/String.__eq i32.eqz if @@ -8393,7 +7525,7 @@ end f64.const -1e-323 call $~lib/util/number/dtoa - i32.const 6104 + i32.const 6160 call $~lib/string/String.__eq i32.eqz if @@ -8406,7 +7538,7 @@ end f64.const 0 call $~lib/util/number/dtoa - i32.const 3832 + i32.const 3888 call $~lib/string/String.__eq i32.eqz if @@ -8419,7 +7551,7 @@ end f64.const 4294967272 call $~lib/util/number/dtoa - i32.const 6136 + i32.const 6192 call $~lib/string/String.__eq i32.eqz if @@ -8432,7 +7564,7 @@ end f64.const 1.2312145673456234e-08 call $~lib/util/number/dtoa - i32.const 6176 + i32.const 6232 call $~lib/string/String.__eq i32.eqz if @@ -8445,7 +7577,7 @@ end f64.const 555555555.5555556 call $~lib/util/number/dtoa - i32.const 6240 + i32.const 6296 call $~lib/string/String.__eq i32.eqz if @@ -8458,7 +7590,7 @@ end f64.const 0.9999999999999999 call $~lib/util/number/dtoa - i32.const 6296 + i32.const 6352 call $~lib/string/String.__eq i32.eqz if @@ -8471,7 +7603,7 @@ end f64.const 1 call $~lib/util/number/dtoa - i32.const 5656 + i32.const 5712 call $~lib/string/String.__eq i32.eqz if @@ -8484,7 +7616,7 @@ end f64.const 12.34 call $~lib/util/number/dtoa - i32.const 6352 + i32.const 6408 call $~lib/string/String.__eq i32.eqz if @@ -8497,7 +7629,7 @@ end f64.const 0.3333333333333333 call $~lib/util/number/dtoa - i32.const 6384 + i32.const 6440 call $~lib/string/String.__eq i32.eqz if @@ -8510,7 +7642,7 @@ end f64.const 1234e17 call $~lib/util/number/dtoa - i32.const 6440 + i32.const 6496 call $~lib/string/String.__eq i32.eqz if @@ -8523,7 +7655,7 @@ end f64.const 1234e18 call $~lib/util/number/dtoa - i32.const 6504 + i32.const 6560 call $~lib/string/String.__eq i32.eqz if @@ -8536,7 +7668,7 @@ end f64.const 2.71828 call $~lib/util/number/dtoa - i32.const 6544 + i32.const 6600 call $~lib/string/String.__eq i32.eqz if @@ -8549,7 +7681,7 @@ end f64.const 0.0271828 call $~lib/util/number/dtoa - i32.const 6576 + i32.const 6632 call $~lib/string/String.__eq i32.eqz if @@ -8562,7 +7694,7 @@ end f64.const 271.828 call $~lib/util/number/dtoa - i32.const 6616 + i32.const 6672 call $~lib/string/String.__eq i32.eqz if @@ -8575,7 +7707,7 @@ end f64.const 1.1e+128 call $~lib/util/number/dtoa - i32.const 6648 + i32.const 6704 call $~lib/string/String.__eq i32.eqz if @@ -8588,7 +7720,7 @@ end f64.const 1.1e-64 call $~lib/util/number/dtoa - i32.const 6680 + i32.const 6736 call $~lib/string/String.__eq i32.eqz if @@ -8601,7 +7733,7 @@ end f64.const 0.000035689 call $~lib/util/number/dtoa - i32.const 6712 + i32.const 6768 call $~lib/string/String.__eq i32.eqz if @@ -8613,13 +7745,13 @@ unreachable end ) - (func $std/string/getString (; 50 ;) (type $FUNCSIG$i) (result i32) + (func $std/string/getString (; 49 ;) (type $FUNCSIG$i) (result i32) global.get $std/string/str ) - (func $start (; 51 ;) (type $FUNCSIG$v) + (func $start (; 50 ;) (type $FUNCSIG$v) call $start:std/string ) - (func $null (; 52 ;) (type $FUNCSIG$v) + (func $null (; 51 ;) (type $FUNCSIG$v) nop ) ) diff --git a/tests/compiler/std/string.untouched.wat b/tests/compiler/std/string.untouched.wat index db326424..7c1e32a2 100644 --- a/tests/compiler/std/string.untouched.wat +++ b/tests/compiler/std/string.untouched.wat @@ -85,96 +85,97 @@ (data (i32.const 1816) "\01\00\00\00\n\00\00\00\00\00\00\00\00\00\00\00d\00e\00f\00g\00h\00") (data (i32.const 1848) "\01\00\00\00\1a\00\00\00\00\00\00\00\00\00\00\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00") (data (i32.const 1896) "\01\00\00\00\1a\00\00\00\00\00\00\00\00\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s\00") - (data (i32.const 1944) "\01\00\00\00\n\00\00\00\00\00\00\00\00\00\00\00a\00,\00b\00,\00c\00") - (data (i32.const 1976) "\01\00\00\00\02\00\00\00\00\00\00\00\00\00\00\00.\00") - (data (i32.const 2000) "\01\00\00\00\02\00\00\00\00\00\00\00\00\00\00\00c\00") - (data (i32.const 2024) "\01\00\00\00\0e\00\00\00\00\00\00\00\00\00\00\00a\00,\00 \00b\00,\00 \00c\00") - (data (i32.const 2056) "\01\00\00\00\04\00\00\00\00\00\00\00\00\00\00\00,\00 \00") - (data (i32.const 2080) "\01\00\00\00\0c\00\00\00\00\00\00\00\00\00\00\00a\00,\00b\00,\00,\00c\00") - (data (i32.const 2112) "\01\00\00\00\0c\00\00\00\00\00\00\00\00\00\00\00,\00a\00,\00b\00,\00c\00") - (data (i32.const 2144) "\01\00\00\00\0c\00\00\00\00\00\00\00\00\00\00\00a\00,\00b\00,\00c\00,\00") - (data (i32.const 2176) "\03\00\00\00\90\01\00\00\00\00\00\00\00\00\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 2592) "\04\00\00\00\10\00\00\00\00\00\00\00\00\00\00\00\90\08\00\00\90\08\00\00\90\01\00\00d\00\00\00") - (data (i32.const 2624) "\01\00\00\00\02\00\00\00\00\00\00\00\00\00\00\008\00") - (data (i32.const 2648) "\01\00\00\00\n\00\00\00\00\00\00\00\00\00\00\00-\001\000\000\000\00") - (data (i32.const 2680) "\01\00\00\00\08\00\00\00\00\00\00\00\00\00\00\001\002\003\004\00") - (data (i32.const 2704) "\01\00\00\00\n\00\00\00\00\00\00\00\00\00\00\001\002\003\004\005\00") - (data (i32.const 2736) "\01\00\00\00\0c\00\00\00\00\00\00\00\00\00\00\001\002\003\004\005\006\00") - (data (i32.const 2768) "\01\00\00\00\0e\00\00\00\00\00\00\00\00\00\00\001\001\001\001\001\001\001\00") - (data (i32.const 2800) "\01\00\00\00\0e\00\00\00\00\00\00\00\00\00\00\001\002\003\004\005\006\007\00") - (data (i32.const 2832) "\01\00\00\00\14\00\00\00\00\00\00\00\00\00\00\002\001\004\007\004\008\003\006\004\006\00") - (data (i32.const 2872) "\01\00\00\00\14\00\00\00\00\00\00\00\00\00\00\002\001\004\007\004\008\003\006\004\007\00") - (data (i32.const 2912) "\01\00\00\00\16\00\00\00\00\00\00\00\00\00\00\00-\002\001\004\007\004\008\003\006\004\008\00") - (data (i32.const 2952) "\01\00\00\00\04\00\00\00\00\00\00\00\00\00\00\00-\001\00") - (data (i32.const 2976) "\01\00\00\00\08\00\00\00\00\00\00\00\00\00\00\001\000\000\000\00") - (data (i32.const 3000) "\01\00\00\00\14\00\00\00\00\00\00\00\00\00\00\002\001\004\007\004\008\003\006\004\008\00") - (data (i32.const 3040) "\01\00\00\00\14\00\00\00\00\00\00\00\00\00\00\004\002\009\004\009\006\007\002\009\005\00") - (data (i32.const 3080) "\01\00\00\00\10\00\00\00\00\00\00\00\00\00\00\009\009\009\009\009\009\009\009\00") - (data (i32.const 3112) "\01\00\00\00\12\00\00\00\00\00\00\00\00\00\00\001\000\000\000\000\000\000\000\000\00") - (data (i32.const 3152) "\01\00\00\00\16\00\00\00\00\00\00\00\00\00\00\006\008\007\001\009\004\007\006\007\003\005\00") - (data (i32.const 3192) "\01\00\00\00\18\00\00\00\00\00\00\00\00\00\00\008\006\008\007\001\009\004\007\006\007\003\005\00") - (data (i32.const 3232) "\01\00\00\00\1e\00\00\00\00\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 3280) "\01\00\00\00 \00\00\00\00\00\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 3328) "\01\00\00\00\"\00\00\00\00\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 3384) "\01\00\00\00(\00\00\00\00\00\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 3440) "\01\00\00\00\n\00\00\00\00\00\00\00\00\00\00\00-\001\002\003\004\00") - (data (i32.const 3472) "\01\00\00\00\16\00\00\00\00\00\00\00\00\00\00\00-\004\002\009\004\009\006\007\002\009\005\00") - (data (i32.const 3512) "\01\00\00\00\18\00\00\00\00\00\00\00\00\00\00\00-\006\008\007\001\009\004\007\006\007\003\005\00") - (data (i32.const 3552) "\01\00\00\00\1a\00\00\00\00\00\00\00\00\00\00\00-\008\006\008\007\001\009\004\007\006\007\003\005\00") - (data (i32.const 3600) "\01\00\00\00 \00\00\00\00\00\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 3648) "\01\00\00\00$\00\00\00\00\00\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 3704) "\01\00\00\00&\00\00\00\00\00\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 3760) "\01\00\00\00(\00\00\00\00\00\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 3816) "\01\00\00\00\06\00\00\00\00\00\00\00\00\00\00\000\00.\000\00") - (data (i32.const 3840) "\01\00\00\00\06\00\00\00\00\00\00\00\00\00\00\00N\00a\00N\00") - (data (i32.const 3864) "\01\00\00\00\12\00\00\00\00\00\00\00\00\00\00\00-\00I\00n\00f\00i\00n\00i\00t\00y\00") - (data (i32.const 3904) "\01\00\00\00\10\00\00\00\00\00\00\00\00\00\00\00I\00n\00f\00i\00n\00i\00t\00y\00") - (data (i32.const 3936) "\03\00\00\00\b8\02\00\00\00\00\00\00\00\00\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 (; 23 ;) (type $FUNCSIG$dii) (param $0 i32) (param $1 i32) (result f64) + (func $~lib/util/string/parse (; 22 ;) (type $FUNCSIG$dii) (param $0 i32) (param $1 i32) (result f64) (local $2 i32) (local $3 i32) (local $4 i32) @@ -2868,12 +1646,12 @@ local.get $7 f64.mul ) - (func $~lib/string/parseInt (; 24 ;) (type $FUNCSIG$dii) (param $0 i32) (param $1 i32) (result f64) + (func $~lib/string/parseInt (; 23 ;) (type $FUNCSIG$dii) (param $0 i32) (param $1 i32) (result f64) local.get $0 local.get $1 call $~lib/util/string/parse ) - (func $~lib/string/parseFloat (; 25 ;) (type $FUNCSIG$di) (param $0 i32) (result f64) + (func $~lib/string/parseFloat (; 24 ;) (type $FUNCSIG$di) (param $0 i32) (result f64) (local $1 i32) (local $2 i32) (local $3 i32) @@ -3070,7 +1848,7 @@ local.get $5 f64.mul ) - (func $~lib/string/String#concat (; 26 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/string/String#concat (; 25 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -3120,7 +1898,7 @@ i32.const 1 call $~lib/runtime/runtime.register ) - (func $~lib/string/String.__concat (; 27 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/string/String.__concat (; 26 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $0 i32.const 352 local.get $0 @@ -3130,13 +1908,13 @@ local.get $1 call $~lib/string/String#concat ) - (func $~lib/string/String.__ne (; 28 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/string/String.__ne (; 27 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $0 local.get $1 call $~lib/string/String.__eq i32.eqz ) - (func $~lib/string/String.__gt (; 29 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/string/String.__gt (; 28 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -3198,7 +1976,7 @@ i32.const 0 i32.gt_s ) - (func $~lib/string/String.__lt (; 30 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/string/String.__lt (; 29 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -3260,19 +2038,19 @@ i32.const 0 i32.lt_s ) - (func $~lib/string/String.__gte (; 31 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/string/String.__gte (; 30 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $0 local.get $1 call $~lib/string/String.__lt i32.eqz ) - (func $~lib/string/String.__lte (; 32 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/string/String.__lte (; 31 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $0 local.get $1 call $~lib/string/String.__gt i32.eqz ) - (func $~lib/string/String#repeat (; 33 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/string/String#repeat (; 32 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -3355,7 +2133,7 @@ i32.const 1 call $~lib/runtime/runtime.register ) - (func $~lib/string/String#slice (; 34 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/string/String#slice (; 33 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -3445,13 +2223,13 @@ i32.const 1 call $~lib/runtime/runtime.register ) - (func $~lib/collector/dummy/__ref_link (; 35 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/collector/dummy/__ref_link (; 34 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) nop ) - (func $~lib/collector/dummy/__ref_unlink (; 36 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/collector/dummy/__ref_unlink (; 35 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) nop ) - (func $~lib/runtime/runtime.newArray (; 37 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (func $~lib/runtime/runtime.newArray (; 36 ;) (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) @@ -3513,7 +2291,7 @@ end local.get $4 ) - (func $~lib/memory/memory.fill (; 38 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/memory/memory.fill (; 37 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -3770,14 +2548,14 @@ end end ) - (func $~lib/allocator/arena/__mem_free (; 39 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/allocator/arena/__mem_free (; 38 ;) (type $FUNCSIG$vi) (param $0 i32) nop ) - (func $~lib/memory/memory.free (; 40 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/memory/memory.free (; 39 ;) (type $FUNCSIG$vi) (param $0 i32) local.get $0 call $~lib/allocator/arena/__mem_free ) - (func $~lib/runtime/runtime.reallocate (; 41 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/util/runtime/reallocate (; 40 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -3847,9 +2625,9 @@ i32.eqz if i32.const 0 - i32.const 184 - i32.const 77 - i32.const 10 + i32.const 1960 + i32.const 74 + i32.const 8 call $~lib/env/abort unreachable end @@ -3881,7 +2659,7 @@ i32.store offset=4 local.get $0 ) - (func $~lib/array/ensureCapacity (; 42 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/array/ensureCapacity (; 41 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -3903,7 +2681,7 @@ if i32.const 0 i32.const 1912 - i32.const 15 + i32.const 14 i32.const 64 call $~lib/env/abort unreachable @@ -3917,7 +2695,7 @@ local.set $4 local.get $3 local.get $4 - call $~lib/runtime/runtime.reallocate + call $~lib/util/runtime/reallocate local.set $5 local.get $5 local.get $3 @@ -3955,7 +2733,7 @@ i32.store offset=8 end ) - (func $~lib/array/Array<~lib/string/String>#push (; 43 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array<~lib/string/String>#push (; 42 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -4005,7 +2783,7 @@ i32.store offset=12 local.get $3 ) - (func $~lib/array/Array<~lib/string/String>#__unchecked_set (; 44 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/array/Array<~lib/string/String>#__unchecked_set (; 43 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) local.get $0 @@ -4038,7 +2816,7 @@ call $~lib/collector/dummy/__ref_link end ) - (func $~lib/string/String#split (; 45 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/string/String#split (; 44 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -4345,11 +3123,11 @@ end local.get $9 ) - (func $~lib/array/Array<~lib/string/String>#get:length (; 46 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/array/Array<~lib/string/String>#get:length (; 45 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.load offset=12 ) - (func $~lib/array/Array<~lib/string/String>#__unchecked_get (; 47 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array<~lib/string/String>#__unchecked_get (; 46 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $0 i32.load offset=4 local.get $1 @@ -4358,7 +3136,7 @@ i32.add i32.load ) - (func $~lib/array/Array<~lib/string/String>#__get (; 48 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array<~lib/string/String>#__get (; 47 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $1 local.get $0 i32.load offset=12 @@ -4366,7 +3144,7 @@ if i32.const 0 i32.const 1912 - i32.const 97 + i32.const 96 i32.const 45 call $~lib/env/abort unreachable @@ -4380,7 +3158,7 @@ if i32.const 0 i32.const 1912 - i32.const 100 + i32.const 99 i32.const 61 call $~lib/env/abort unreachable @@ -4389,7 +3167,7 @@ local.get $1 call $~lib/array/Array<~lib/string/String>#__unchecked_get ) - (func $~lib/util/number/decimalCount32 (; 49 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/util/number/decimalCount32 (; 48 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) local.get $0 i32.const 100000 @@ -4458,7 +3236,7 @@ unreachable unreachable ) - (func $~lib/util/number/utoa32_lut (; 50 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/util/number/utoa32_lut (; 49 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -4466,7 +3244,7 @@ (local $7 i32) (local $8 i64) (local $9 i64) - i32.const 2608 + i32.const 2664 i32.load offset=4 local.set $3 block $break|0 @@ -4601,7 +3379,7 @@ i32.store16 end ) - (func $~lib/util/number/itoa32 (; 51 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/util/number/itoa32 (; 50 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -4657,7 +3435,7 @@ i32.const 1 call $~lib/runtime/runtime.register ) - (func $~lib/util/number/utoa32 (; 52 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/util/number/utoa32 (; 51 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -4693,7 +3471,7 @@ i32.const 1 call $~lib/runtime/runtime.register ) - (func $~lib/util/number/decimalCount64 (; 53 ;) (type $FUNCSIG$ij) (param $0 i64) (result i32) + (func $~lib/util/number/decimalCount64 (; 52 ;) (type $FUNCSIG$ij) (param $0 i64) (result i32) (local $1 i32) local.get $0 i64.const 1000000000000000 @@ -4762,7 +3540,7 @@ unreachable unreachable ) - (func $~lib/util/number/utoa64_lut (; 54 ;) (type $FUNCSIG$viji) (param $0 i32) (param $1 i64) (param $2 i32) + (func $~lib/util/number/utoa64_lut (; 53 ;) (type $FUNCSIG$viji) (param $0 i32) (param $1 i64) (param $2 i32) (local $3 i32) (local $4 i64) (local $5 i32) @@ -4774,7 +3552,7 @@ (local $11 i32) (local $12 i64) (local $13 i64) - i32.const 2608 + i32.const 2664 i32.load offset=4 local.set $3 block $break|0 @@ -4890,7 +3668,7 @@ local.get $2 call $~lib/util/number/utoa32_lut ) - (func $~lib/util/number/utoa64 (; 55 ;) (type $FUNCSIG$ij) (param $0 i64) (result i32) + (func $~lib/util/number/utoa64 (; 54 ;) (type $FUNCSIG$ij) (param $0 i64) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -4958,7 +3736,7 @@ i32.const 1 call $~lib/runtime/runtime.register ) - (func $~lib/util/number/itoa64 (; 56 ;) (type $FUNCSIG$ij) (param $0 i64) (result i32) + (func $~lib/util/number/itoa64 (; 55 ;) (type $FUNCSIG$ij) (param $0 i64) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -5048,19 +3826,19 @@ i32.const 1 call $~lib/runtime/runtime.register ) - (func $~lib/builtins/isFinite (; 57 ;) (type $FUNCSIG$id) (param $0 f64) (result i32) + (func $~lib/builtins/isFinite (; 56 ;) (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 (; 58 ;) (type $FUNCSIG$id) (param $0 f64) (result i32) + (func $~lib/builtins/isNaN (; 57 ;) (type $FUNCSIG$id) (param $0 f64) (result i32) local.get $0 local.get $0 f64.ne ) - (func $~lib/array/Array#__unchecked_get (; 59 ;) (type $FUNCSIG$jii) (param $0 i32) (param $1 i32) (result i64) + (func $~lib/array/Array#__unchecked_get (; 58 ;) (type $FUNCSIG$jii) (param $0 i32) (param $1 i32) (result i64) local.get $0 i32.load offset=4 local.get $1 @@ -5069,7 +3847,7 @@ i32.add i64.load ) - (func $~lib/array/Array#__unchecked_get (; 60 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#__unchecked_get (; 59 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $0 i32.load offset=4 local.get $1 @@ -5078,7 +3856,7 @@ i32.add i32.load16_s ) - (func $~lib/util/number/genDigits (; 61 ;) (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 (; 60 ;) (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) @@ -5134,7 +3912,7 @@ local.set $14 local.get $6 local.set $15 - i32.const 4976 + i32.const 5032 i32.load offset=4 local.set $16 block $break|0 @@ -5649,7 +4427,7 @@ end local.get $15 ) - (func $~lib/util/number/prettify (; 62 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/util/number/prettify (; 61 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -5982,7 +4760,7 @@ unreachable unreachable ) - (func $~lib/util/number/dtoa_core (; 63 ;) (type $FUNCSIG$iid) (param $0 i32) (param $1 f64) (result i32) + (func $~lib/util/number/dtoa_core (; 62 ;) (type $FUNCSIG$iid) (param $0 i32) (param $1 f64) (result i32) (local $2 i32) (local $3 f64) (local $4 i32) @@ -6151,11 +4929,11 @@ i32.shl i32.sub global.set $~lib/util/number/_K - i32.const 4664 + i32.const 4720 local.get $13 call $~lib/array/Array#__unchecked_get global.set $~lib/util/number/_frc_pow - i32.const 4888 + i32.const 4944 local.get $13 call $~lib/array/Array#__unchecked_get global.set $~lib/util/number/_exp_pow @@ -6420,7 +5198,7 @@ local.get $2 i32.add ) - (func $~lib/string/String#substring (; 64 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/string/String#substring (; 63 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -6538,7 +5316,7 @@ i32.const 1 call $~lib/runtime/runtime.register ) - (func $~lib/runtime/runtime.discard (; 65 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/runtime/runtime.discard (; 64 ;) (type $FUNCSIG$vi) (param $0 i32) (local $1 i32) local.get $0 global.get $~lib/memory/HEAP_BASE @@ -6547,7 +5325,7 @@ if i32.const 0 i32.const 184 - i32.const 103 + i32.const 68 i32.const 6 call $~lib/env/abort unreachable @@ -6564,7 +5342,7 @@ if i32.const 0 i32.const 184 - i32.const 105 + i32.const 70 i32.const 6 call $~lib/env/abort unreachable @@ -6572,7 +5350,7 @@ local.get $1 call $~lib/memory/memory.free ) - (func $~lib/util/number/dtoa (; 66 ;) (type $FUNCSIG$id) (param $0 f64) (result i32) + (func $~lib/util/number/dtoa (; 65 ;) (type $FUNCSIG$id) (param $0 f64) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -6580,7 +5358,7 @@ f64.const 0 f64.eq if - i32.const 3832 + i32.const 3888 return end local.get $0 @@ -6590,11 +5368,11 @@ local.get $0 call $~lib/builtins/isNaN if - i32.const 3856 + i32.const 3912 return end - i32.const 3880 - i32.const 3920 + i32.const 3936 + i32.const 3976 local.get $0 f64.const 0 f64.lt @@ -6619,7 +5397,7 @@ call $~lib/runtime/runtime.discard local.get $3 ) - (func $start:std/string (; 67 ;) (type $FUNCSIG$v) + (func $start:std/string (; 66 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -8300,8 +7078,8 @@ call $~lib/env/abort unreachable end - i32.const 1960 - i32.const 1992 + i32.const 2016 + i32.const 2048 global.get $~lib/builtins/i32.MAX_VALUE call $~lib/string/String#split global.set $std/string/sa @@ -8314,7 +7092,7 @@ global.get $std/string/sa i32.const 0 call $~lib/array/Array<~lib/string/String>#__get - i32.const 1960 + i32.const 2016 call $~lib/string/String.__eq else local.get $0 @@ -8328,7 +7106,7 @@ call $~lib/env/abort unreachable end - i32.const 1960 + i32.const 2016 i32.const 720 global.get $~lib/builtins/i32.MAX_VALUE call $~lib/string/String#split @@ -8362,7 +7140,7 @@ global.get $std/string/sa i32.const 2 call $~lib/array/Array<~lib/string/String>#__get - i32.const 2016 + i32.const 2072 call $~lib/string/String.__eq else local.get $0 @@ -8376,8 +7154,8 @@ call $~lib/env/abort unreachable end - i32.const 2040 - i32.const 2072 + i32.const 2096 + i32.const 2128 global.get $~lib/builtins/i32.MAX_VALUE call $~lib/string/String#split global.set $std/string/sa @@ -8410,7 +7188,7 @@ global.get $std/string/sa i32.const 2 call $~lib/array/Array<~lib/string/String>#__get - i32.const 2016 + i32.const 2072 call $~lib/string/String.__eq else local.get $0 @@ -8424,7 +7202,7 @@ call $~lib/env/abort unreachable end - i32.const 2096 + i32.const 2152 i32.const 720 global.get $~lib/builtins/i32.MAX_VALUE call $~lib/string/String#split @@ -8468,7 +7246,7 @@ global.get $std/string/sa i32.const 3 call $~lib/array/Array<~lib/string/String>#__get - i32.const 2016 + i32.const 2072 call $~lib/string/String.__eq else local.get $0 @@ -8482,7 +7260,7 @@ call $~lib/env/abort unreachable end - i32.const 2128 + i32.const 2184 i32.const 720 global.get $~lib/builtins/i32.MAX_VALUE call $~lib/string/String#split @@ -8526,7 +7304,7 @@ global.get $std/string/sa i32.const 3 call $~lib/array/Array<~lib/string/String>#__get - i32.const 2016 + i32.const 2072 call $~lib/string/String.__eq else local.get $0 @@ -8540,7 +7318,7 @@ call $~lib/env/abort unreachable end - i32.const 2160 + i32.const 2216 i32.const 720 global.get $~lib/builtins/i32.MAX_VALUE call $~lib/string/String#split @@ -8574,7 +7352,7 @@ global.get $std/string/sa i32.const 2 call $~lib/array/Array<~lib/string/String>#__get - i32.const 2016 + i32.const 2072 call $~lib/string/String.__eq else local.get $0 @@ -8632,7 +7410,7 @@ global.get $std/string/sa i32.const 2 call $~lib/array/Array<~lib/string/String>#__get - i32.const 2016 + i32.const 2072 call $~lib/string/String.__eq else local.get $0 @@ -8692,7 +7470,7 @@ call $~lib/env/abort unreachable end - i32.const 1960 + i32.const 2016 i32.const 720 i32.const 1 call $~lib/string/String#split @@ -8754,7 +7532,7 @@ global.get $std/string/sa i32.const 2 call $~lib/array/Array<~lib/string/String>#__get - i32.const 2016 + i32.const 2072 call $~lib/string/String.__eq else local.get $0 @@ -8802,7 +7580,7 @@ global.get $std/string/sa i32.const 2 call $~lib/array/Array<~lib/string/String>#__get - i32.const 2016 + i32.const 2072 call $~lib/string/String.__eq else local.get $0 @@ -8816,7 +7594,7 @@ call $~lib/env/abort unreachable end - i32.const 1960 + i32.const 2016 i32.const 720 i32.const -1 call $~lib/string/String#split @@ -8850,7 +7628,7 @@ global.get $std/string/sa i32.const 2 call $~lib/array/Array<~lib/string/String>#__get - i32.const 2016 + i32.const 2072 call $~lib/string/String.__eq else local.get $0 @@ -8892,7 +7670,7 @@ end i32.const 8 call $~lib/util/number/itoa32 - i32.const 2640 + i32.const 2696 call $~lib/string/String.__eq i32.eqz if @@ -8918,7 +7696,7 @@ end i32.const -1000 call $~lib/util/number/itoa32 - i32.const 2664 + i32.const 2720 call $~lib/string/String.__eq i32.eqz if @@ -8931,7 +7709,7 @@ end i32.const 1234 call $~lib/util/number/itoa32 - i32.const 2696 + i32.const 2752 call $~lib/string/String.__eq i32.eqz if @@ -8944,7 +7722,7 @@ end i32.const 12345 call $~lib/util/number/itoa32 - i32.const 2720 + i32.const 2776 call $~lib/string/String.__eq i32.eqz if @@ -8957,7 +7735,7 @@ end i32.const 123456 call $~lib/util/number/itoa32 - i32.const 2752 + i32.const 2808 call $~lib/string/String.__eq i32.eqz if @@ -8970,7 +7748,7 @@ end i32.const 1111111 call $~lib/util/number/itoa32 - i32.const 2784 + i32.const 2840 call $~lib/string/String.__eq i32.eqz if @@ -8983,7 +7761,7 @@ end i32.const 1234567 call $~lib/util/number/itoa32 - i32.const 2816 + i32.const 2872 call $~lib/string/String.__eq i32.eqz if @@ -8996,7 +7774,7 @@ end i32.const 2147483646 call $~lib/util/number/itoa32 - i32.const 2848 + i32.const 2904 call $~lib/string/String.__eq i32.eqz if @@ -9009,7 +7787,7 @@ end i32.const 2147483647 call $~lib/util/number/itoa32 - i32.const 2888 + i32.const 2944 call $~lib/string/String.__eq i32.eqz if @@ -9022,7 +7800,7 @@ end i32.const -2147483648 call $~lib/util/number/itoa32 - i32.const 2928 + i32.const 2984 call $~lib/string/String.__eq i32.eqz if @@ -9035,7 +7813,7 @@ end i32.const -1 call $~lib/util/number/itoa32 - i32.const 2968 + i32.const 3024 call $~lib/string/String.__eq i32.eqz if @@ -9061,7 +7839,7 @@ end i32.const 1000 call $~lib/util/number/utoa32 - i32.const 2992 + i32.const 3048 call $~lib/string/String.__eq i32.eqz if @@ -9074,7 +7852,7 @@ end i32.const 2147483647 call $~lib/util/number/utoa32 - i32.const 2888 + i32.const 2944 call $~lib/string/String.__eq i32.eqz if @@ -9087,7 +7865,7 @@ end i32.const -2147483648 call $~lib/util/number/utoa32 - i32.const 3016 + i32.const 3072 call $~lib/string/String.__eq i32.eqz if @@ -9100,7 +7878,7 @@ end global.get $~lib/builtins/u32.MAX_VALUE call $~lib/util/number/utoa32 - i32.const 3056 + i32.const 3112 call $~lib/string/String.__eq i32.eqz if @@ -9126,7 +7904,7 @@ end i64.const 1234 call $~lib/util/number/utoa64 - i32.const 2696 + i32.const 2752 call $~lib/string/String.__eq i32.eqz if @@ -9139,7 +7917,7 @@ end i64.const 99999999 call $~lib/util/number/utoa64 - i32.const 3096 + i32.const 3152 call $~lib/string/String.__eq i32.eqz if @@ -9152,7 +7930,7 @@ end i64.const 100000000 call $~lib/util/number/utoa64 - i32.const 3128 + i32.const 3184 call $~lib/string/String.__eq i32.eqz if @@ -9165,7 +7943,7 @@ end i64.const 4294967295 call $~lib/util/number/utoa64 - i32.const 3056 + i32.const 3112 call $~lib/string/String.__eq i32.eqz if @@ -9178,7 +7956,7 @@ end i64.const 68719476735 call $~lib/util/number/utoa64 - i32.const 3168 + i32.const 3224 call $~lib/string/String.__eq i32.eqz if @@ -9191,7 +7969,7 @@ end i64.const 868719476735 call $~lib/util/number/utoa64 - i32.const 3208 + i32.const 3264 call $~lib/string/String.__eq i32.eqz if @@ -9204,7 +7982,7 @@ end i64.const 999868719476735 call $~lib/util/number/utoa64 - i32.const 3248 + i32.const 3304 call $~lib/string/String.__eq i32.eqz if @@ -9217,7 +7995,7 @@ end i64.const 9999868719476735 call $~lib/util/number/utoa64 - i32.const 3296 + i32.const 3352 call $~lib/string/String.__eq i32.eqz if @@ -9230,7 +8008,7 @@ end i64.const 19999868719476735 call $~lib/util/number/utoa64 - i32.const 3344 + i32.const 3400 call $~lib/string/String.__eq i32.eqz if @@ -9243,7 +8021,7 @@ end global.get $~lib/builtins/u64.MAX_VALUE call $~lib/util/number/utoa64 - i32.const 3400 + i32.const 3456 call $~lib/string/String.__eq i32.eqz if @@ -9269,7 +8047,7 @@ end i64.const -1234 call $~lib/util/number/itoa64 - i32.const 3456 + i32.const 3512 call $~lib/string/String.__eq i32.eqz if @@ -9282,7 +8060,7 @@ end i64.const 4294967295 call $~lib/util/number/itoa64 - i32.const 3056 + i32.const 3112 call $~lib/string/String.__eq i32.eqz if @@ -9295,7 +8073,7 @@ end i64.const -4294967295 call $~lib/util/number/itoa64 - i32.const 3488 + i32.const 3544 call $~lib/string/String.__eq i32.eqz if @@ -9308,7 +8086,7 @@ end i64.const 68719476735 call $~lib/util/number/itoa64 - i32.const 3168 + i32.const 3224 call $~lib/string/String.__eq i32.eqz if @@ -9321,7 +8099,7 @@ end i64.const -68719476735 call $~lib/util/number/itoa64 - i32.const 3528 + i32.const 3584 call $~lib/string/String.__eq i32.eqz if @@ -9334,7 +8112,7 @@ end i64.const -868719476735 call $~lib/util/number/itoa64 - i32.const 3568 + i32.const 3624 call $~lib/string/String.__eq i32.eqz if @@ -9347,7 +8125,7 @@ end i64.const -999868719476735 call $~lib/util/number/itoa64 - i32.const 3616 + i32.const 3672 call $~lib/string/String.__eq i32.eqz if @@ -9360,7 +8138,7 @@ end i64.const -19999868719476735 call $~lib/util/number/itoa64 - i32.const 3664 + i32.const 3720 call $~lib/string/String.__eq i32.eqz if @@ -9373,7 +8151,7 @@ end global.get $~lib/builtins/i64.MAX_VALUE call $~lib/util/number/itoa64 - i32.const 3720 + i32.const 3776 call $~lib/string/String.__eq i32.eqz if @@ -9386,7 +8164,7 @@ end global.get $~lib/builtins/i64.MIN_VALUE call $~lib/util/number/itoa64 - i32.const 3776 + i32.const 3832 call $~lib/string/String.__eq i32.eqz if @@ -9399,7 +8177,7 @@ end f64.const 0 call $~lib/util/number/dtoa - i32.const 3832 + i32.const 3888 call $~lib/string/String.__eq i32.eqz if @@ -9412,7 +8190,7 @@ end f64.const -0 call $~lib/util/number/dtoa - i32.const 3832 + i32.const 3888 call $~lib/string/String.__eq i32.eqz if @@ -9425,7 +8203,7 @@ end f64.const nan:0x8000000000000 call $~lib/util/number/dtoa - i32.const 3856 + i32.const 3912 call $~lib/string/String.__eq i32.eqz if @@ -9438,7 +8216,7 @@ end f64.const inf call $~lib/util/number/dtoa - i32.const 3920 + i32.const 3976 call $~lib/string/String.__eq i32.eqz if @@ -9452,7 +8230,7 @@ f64.const inf f64.neg call $~lib/util/number/dtoa - i32.const 3880 + i32.const 3936 call $~lib/string/String.__eq i32.eqz if @@ -9465,7 +8243,7 @@ end global.get $~lib/builtins/f64.EPSILON call $~lib/util/number/dtoa - i32.const 5008 + i32.const 5064 call $~lib/string/String.__eq i32.eqz if @@ -9479,7 +8257,7 @@ global.get $~lib/builtins/f64.EPSILON f64.neg call $~lib/util/number/dtoa - i32.const 5072 + i32.const 5128 call $~lib/string/String.__eq i32.eqz if @@ -9492,7 +8270,7 @@ end global.get $~lib/builtins/f64.MAX_VALUE call $~lib/util/number/dtoa - i32.const 5136 + i32.const 5192 call $~lib/string/String.__eq i32.eqz if @@ -9506,7 +8284,7 @@ global.get $~lib/builtins/f64.MAX_VALUE f64.neg call $~lib/util/number/dtoa - i32.const 5200 + i32.const 5256 call $~lib/string/String.__eq i32.eqz if @@ -9519,7 +8297,7 @@ end f64.const 4185580496821356722454785e274 call $~lib/util/number/dtoa - i32.const 5264 + i32.const 5320 call $~lib/string/String.__eq i32.eqz if @@ -9532,7 +8310,7 @@ end f64.const 2.2250738585072014e-308 call $~lib/util/number/dtoa - i32.const 5328 + i32.const 5384 call $~lib/string/String.__eq i32.eqz if @@ -9545,7 +8323,7 @@ end f64.const 4.940656e-318 call $~lib/util/number/dtoa - i32.const 5392 + i32.const 5448 call $~lib/string/String.__eq i32.eqz if @@ -9558,7 +8336,7 @@ end f64.const 9060801153433600 call $~lib/util/number/dtoa - i32.const 5440 + i32.const 5496 call $~lib/string/String.__eq i32.eqz if @@ -9571,7 +8349,7 @@ end f64.const 4708356024711512064 call $~lib/util/number/dtoa - i32.const 5496 + i32.const 5552 call $~lib/string/String.__eq i32.eqz if @@ -9584,7 +8362,7 @@ end f64.const 9409340012568248320 call $~lib/util/number/dtoa - i32.const 5560 + i32.const 5616 call $~lib/string/String.__eq i32.eqz if @@ -9597,7 +8375,7 @@ end f64.const 5e-324 call $~lib/util/number/dtoa - i32.const 5624 + i32.const 5680 call $~lib/string/String.__eq i32.eqz if @@ -9610,7 +8388,7 @@ end f64.const 1 call $~lib/util/number/dtoa - i32.const 5656 + i32.const 5712 call $~lib/string/String.__eq i32.eqz if @@ -9636,7 +8414,7 @@ end f64.const -1 call $~lib/util/number/dtoa - i32.const 5680 + i32.const 5736 call $~lib/string/String.__eq i32.eqz if @@ -9649,7 +8427,7 @@ end f64.const -0.1 call $~lib/util/number/dtoa - i32.const 5704 + i32.const 5760 call $~lib/string/String.__eq i32.eqz if @@ -9662,7 +8440,7 @@ end f64.const 1e6 call $~lib/util/number/dtoa - i32.const 5728 + i32.const 5784 call $~lib/string/String.__eq i32.eqz if @@ -9675,7 +8453,7 @@ end f64.const 1e-06 call $~lib/util/number/dtoa - i32.const 5768 + i32.const 5824 call $~lib/string/String.__eq i32.eqz if @@ -9688,7 +8466,7 @@ end f64.const -1e6 call $~lib/util/number/dtoa - i32.const 5800 + i32.const 5856 call $~lib/string/String.__eq i32.eqz if @@ -9701,7 +8479,7 @@ end f64.const -1e-06 call $~lib/util/number/dtoa - i32.const 5840 + i32.const 5896 call $~lib/string/String.__eq i32.eqz if @@ -9714,7 +8492,7 @@ end f64.const 1e7 call $~lib/util/number/dtoa - i32.const 5880 + i32.const 5936 call $~lib/string/String.__eq i32.eqz if @@ -9727,7 +8505,7 @@ end f64.const 1e-07 call $~lib/util/number/dtoa - i32.const 5920 + i32.const 5976 call $~lib/string/String.__eq i32.eqz if @@ -9740,7 +8518,7 @@ end f64.const 1.e+308 call $~lib/util/number/dtoa - i32.const 5944 + i32.const 6000 call $~lib/string/String.__eq i32.eqz if @@ -9753,7 +8531,7 @@ end f64.const -1.e+308 call $~lib/util/number/dtoa - i32.const 5976 + i32.const 6032 call $~lib/string/String.__eq i32.eqz if @@ -9766,7 +8544,7 @@ end f64.const inf call $~lib/util/number/dtoa - i32.const 3920 + i32.const 3976 call $~lib/string/String.__eq i32.eqz if @@ -9779,7 +8557,7 @@ end f64.const -inf call $~lib/util/number/dtoa - i32.const 3880 + i32.const 3936 call $~lib/string/String.__eq i32.eqz if @@ -9792,7 +8570,7 @@ end f64.const 1e-308 call $~lib/util/number/dtoa - i32.const 6008 + i32.const 6064 call $~lib/string/String.__eq i32.eqz if @@ -9805,7 +8583,7 @@ end f64.const -1e-308 call $~lib/util/number/dtoa - i32.const 6040 + i32.const 6096 call $~lib/string/String.__eq i32.eqz if @@ -9818,7 +8596,7 @@ end f64.const 1e-323 call $~lib/util/number/dtoa - i32.const 6072 + i32.const 6128 call $~lib/string/String.__eq i32.eqz if @@ -9831,7 +8609,7 @@ end f64.const -1e-323 call $~lib/util/number/dtoa - i32.const 6104 + i32.const 6160 call $~lib/string/String.__eq i32.eqz if @@ -9844,7 +8622,7 @@ end f64.const 0 call $~lib/util/number/dtoa - i32.const 3832 + i32.const 3888 call $~lib/string/String.__eq i32.eqz if @@ -9857,7 +8635,7 @@ end f64.const 4294967272 call $~lib/util/number/dtoa - i32.const 6136 + i32.const 6192 call $~lib/string/String.__eq i32.eqz if @@ -9870,7 +8648,7 @@ end f64.const 1.2312145673456234e-08 call $~lib/util/number/dtoa - i32.const 6176 + i32.const 6232 call $~lib/string/String.__eq i32.eqz if @@ -9883,7 +8661,7 @@ end f64.const 555555555.5555556 call $~lib/util/number/dtoa - i32.const 6240 + i32.const 6296 call $~lib/string/String.__eq i32.eqz if @@ -9896,7 +8674,7 @@ end f64.const 0.9999999999999999 call $~lib/util/number/dtoa - i32.const 6296 + i32.const 6352 call $~lib/string/String.__eq i32.eqz if @@ -9909,7 +8687,7 @@ end f64.const 1 call $~lib/util/number/dtoa - i32.const 5656 + i32.const 5712 call $~lib/string/String.__eq i32.eqz if @@ -9922,7 +8700,7 @@ end f64.const 12.34 call $~lib/util/number/dtoa - i32.const 6352 + i32.const 6408 call $~lib/string/String.__eq i32.eqz if @@ -9937,7 +8715,7 @@ f64.const 3 f64.div call $~lib/util/number/dtoa - i32.const 6384 + i32.const 6440 call $~lib/string/String.__eq i32.eqz if @@ -9950,7 +8728,7 @@ end f64.const 1234e17 call $~lib/util/number/dtoa - i32.const 6440 + i32.const 6496 call $~lib/string/String.__eq i32.eqz if @@ -9963,7 +8741,7 @@ end f64.const 1234e18 call $~lib/util/number/dtoa - i32.const 6504 + i32.const 6560 call $~lib/string/String.__eq i32.eqz if @@ -9976,7 +8754,7 @@ end f64.const 2.71828 call $~lib/util/number/dtoa - i32.const 6544 + i32.const 6600 call $~lib/string/String.__eq i32.eqz if @@ -9989,7 +8767,7 @@ end f64.const 0.0271828 call $~lib/util/number/dtoa - i32.const 6576 + i32.const 6632 call $~lib/string/String.__eq i32.eqz if @@ -10002,7 +8780,7 @@ end f64.const 271.828 call $~lib/util/number/dtoa - i32.const 6616 + i32.const 6672 call $~lib/string/String.__eq i32.eqz if @@ -10015,7 +8793,7 @@ end f64.const 1.1e+128 call $~lib/util/number/dtoa - i32.const 6648 + i32.const 6704 call $~lib/string/String.__eq i32.eqz if @@ -10028,7 +8806,7 @@ end f64.const 1.1e-64 call $~lib/util/number/dtoa - i32.const 6680 + i32.const 6736 call $~lib/string/String.__eq i32.eqz if @@ -10041,7 +8819,7 @@ end f64.const 0.000035689 call $~lib/util/number/dtoa - i32.const 6712 + i32.const 6768 call $~lib/string/String.__eq i32.eqz if @@ -10053,12 +8831,12 @@ unreachable end ) - (func $std/string/getString (; 68 ;) (type $FUNCSIG$i) (result i32) + (func $std/string/getString (; 67 ;) (type $FUNCSIG$i) (result i32) global.get $std/string/str ) - (func $start (; 69 ;) (type $FUNCSIG$v) + (func $start (; 68 ;) (type $FUNCSIG$v) call $start:std/string ) - (func $null (; 70 ;) (type $FUNCSIG$v) + (func $null (; 69 ;) (type $FUNCSIG$v) ) ) diff --git a/tests/compiler/std/symbol.optimized.wat b/tests/compiler/std/symbol.optimized.wat index 056e44ad..1af1b09f 100644 --- a/tests/compiler/std/symbol.optimized.wat +++ b/tests/compiler/std/symbol.optimized.wat @@ -144,7 +144,7 @@ if i32.const 0 i32.const 72 - i32.const 117 + i32.const 82 i32.const 6 call $~lib/env/abort unreachable @@ -159,7 +159,7 @@ if i32.const 0 i32.const 72 - i32.const 119 + i32.const 84 i32.const 6 call $~lib/env/abort unreachable @@ -1191,854 +1191,7 @@ i32.const 0 end ) - (func $~lib/util/memory/memcpy (; 23 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - loop $continue|0 - local.get $1 - i32.const 3 - i32.and - local.get $2 - local.get $2 - select - if - local.get $0 - local.tee $3 - i32.const 1 - i32.add - local.set $0 - local.get $1 - local.tee $4 - i32.const 1 - i32.add - local.set $1 - local.get $3 - local.get $4 - i32.load8_u - i32.store8 - local.get $2 - i32.const 1 - i32.sub - local.set $2 - br $continue|0 - end - end - local.get $0 - i32.const 3 - i32.and - i32.eqz - if - loop $continue|1 - local.get $2 - i32.const 16 - i32.ge_u - 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.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 - br $continue|1 - end - end - local.get $2 - 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 $1 - i32.const 8 - i32.add - local.set $1 - local.get $0 - i32.const 8 - i32.add - local.set $0 - end - local.get $2 - i32.const 4 - i32.and - if - local.get $0 - local.get $1 - i32.load - i32.store - local.get $1 - i32.const 4 - i32.add - local.set $1 - local.get $0 - i32.const 4 - i32.add - local.set $0 - end - local.get $2 - i32.const 2 - i32.and - if - local.get $0 - local.get $1 - i32.load16_u - i32.store16 - local.get $1 - i32.const 2 - i32.add - local.set $1 - local.get $0 - i32.const 2 - i32.add - local.set $0 - end - local.get $2 - i32.const 1 - i32.and - if - local.get $0 - local.get $1 - i32.load8_u - i32.store8 - end - return - end - local.get $2 - i32.const 32 - i32.ge_u - if - block $break|2 - block $case2|2 - block $case1|2 - local.get $0 - i32.const 3 - i32.and - local.tee $3 - i32.const 1 - i32.ne - if - local.get $3 - i32.const 2 - i32.eq - br_if $case1|2 - local.get $3 - i32.const 3 - i32.eq - br_if $case2|2 - br $break|2 - end - local.get $1 - i32.load - local.set $5 - local.get $0 - local.get $1 - i32.load8_u - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.tee $0 - local.get $1 - i32.const 1 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.tee $3 - i32.const 1 - i32.add - local.set $0 - local.get $1 - i32.const 1 - i32.add - local.tee $4 - i32.const 1 - i32.add - local.set $1 - local.get $3 - local.get $4 - i32.load8_u - i32.store8 - local.get $2 - i32.const 3 - i32.sub - local.set $2 - loop $continue|3 - local.get $2 - i32.const 17 - i32.ge_u - if - local.get $0 - local.get $1 - i32.const 1 - i32.add - i32.load - local.tee $3 - i32.const 8 - i32.shl - local.get $5 - i32.const 24 - i32.shr_u - i32.or - i32.store - local.get $0 - i32.const 4 - i32.add - local.get $3 - i32.const 24 - i32.shr_u - local.get $1 - i32.const 5 - i32.add - i32.load - local.tee $3 - i32.const 8 - i32.shl - i32.or - i32.store - local.get $0 - i32.const 8 - i32.add - local.get $3 - i32.const 24 - i32.shr_u - local.get $1 - i32.const 9 - i32.add - i32.load - local.tee $3 - i32.const 8 - i32.shl - i32.or - i32.store - local.get $0 - i32.const 12 - i32.add - local.get $1 - i32.const 13 - i32.add - i32.load - local.tee $5 - i32.const 8 - i32.shl - local.get $3 - i32.const 24 - i32.shr_u - 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 - br $continue|3 - end - end - br $break|2 - end - local.get $1 - i32.load - local.set $5 - local.get $0 - local.get $1 - i32.load8_u - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.tee $3 - i32.const 1 - i32.add - local.set $0 - local.get $1 - i32.const 1 - i32.add - local.tee $4 - i32.const 1 - i32.add - local.set $1 - local.get $3 - local.get $4 - i32.load8_u - i32.store8 - local.get $2 - i32.const 2 - i32.sub - local.set $2 - loop $continue|4 - local.get $2 - i32.const 18 - i32.ge_u - if - local.get $0 - local.get $1 - i32.const 2 - i32.add - i32.load - local.tee $3 - i32.const 16 - i32.shl - local.get $5 - i32.const 16 - i32.shr_u - i32.or - i32.store - local.get $0 - i32.const 4 - i32.add - local.get $3 - i32.const 16 - i32.shr_u - local.get $1 - i32.const 6 - i32.add - i32.load - local.tee $3 - i32.const 16 - i32.shl - i32.or - i32.store - local.get $0 - i32.const 8 - i32.add - local.get $3 - i32.const 16 - i32.shr_u - local.get $1 - i32.const 10 - i32.add - i32.load - local.tee $3 - i32.const 16 - i32.shl - i32.or - i32.store - local.get $0 - i32.const 12 - i32.add - local.get $1 - i32.const 14 - i32.add - i32.load - local.tee $5 - i32.const 16 - i32.shl - local.get $3 - i32.const 16 - i32.shr_u - 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 - br $continue|4 - end - end - br $break|2 - end - local.get $1 - i32.load - local.set $5 - local.get $0 - local.tee $3 - i32.const 1 - i32.add - local.set $0 - local.get $1 - local.tee $4 - i32.const 1 - i32.add - local.set $1 - local.get $3 - local.get $4 - i32.load8_u - i32.store8 - local.get $2 - i32.const 1 - i32.sub - local.set $2 - loop $continue|5 - local.get $2 - i32.const 19 - i32.ge_u - if - local.get $0 - local.get $1 - i32.const 3 - i32.add - i32.load - local.tee $3 - i32.const 24 - i32.shl - local.get $5 - i32.const 8 - i32.shr_u - i32.or - i32.store - local.get $0 - i32.const 4 - i32.add - local.get $3 - i32.const 8 - i32.shr_u - local.get $1 - i32.const 7 - i32.add - i32.load - local.tee $3 - i32.const 24 - i32.shl - i32.or - i32.store - local.get $0 - i32.const 8 - i32.add - local.get $3 - i32.const 8 - i32.shr_u - local.get $1 - i32.const 11 - i32.add - i32.load - local.tee $3 - i32.const 24 - i32.shl - i32.or - i32.store - local.get $0 - i32.const 12 - i32.add - local.get $1 - i32.const 15 - i32.add - i32.load - local.tee $5 - i32.const 24 - i32.shl - local.get $3 - i32.const 8 - i32.shr_u - 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 - br $continue|5 - end - end - end - end - local.get $2 - i32.const 16 - i32.and - if - local.get $0 - local.get $1 - i32.load8_u - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.tee $0 - local.get $1 - i32.const 1 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.tee $0 - local.get $1 - i32.const 1 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.tee $0 - local.get $1 - i32.const 1 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.tee $0 - local.get $1 - i32.const 1 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.tee $0 - local.get $1 - i32.const 1 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.tee $0 - local.get $1 - i32.const 1 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.tee $0 - local.get $1 - i32.const 1 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.tee $0 - local.get $1 - i32.const 1 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.tee $0 - local.get $1 - i32.const 1 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.tee $0 - local.get $1 - i32.const 1 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.tee $0 - local.get $1 - i32.const 1 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.tee $0 - local.get $1 - i32.const 1 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.tee $0 - local.get $1 - i32.const 1 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.tee $0 - local.get $1 - i32.const 1 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.tee $3 - i32.const 1 - i32.add - local.set $0 - local.get $1 - i32.const 1 - i32.add - local.tee $4 - i32.const 1 - i32.add - local.set $1 - local.get $3 - local.get $4 - i32.load8_u - i32.store8 - end - local.get $2 - i32.const 8 - i32.and - if - local.get $0 - local.get $1 - i32.load8_u - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.tee $0 - local.get $1 - i32.const 1 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.tee $0 - local.get $1 - i32.const 1 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.tee $0 - local.get $1 - i32.const 1 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.tee $0 - local.get $1 - i32.const 1 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.tee $0 - local.get $1 - i32.const 1 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.tee $0 - local.get $1 - i32.const 1 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.tee $3 - i32.const 1 - i32.add - local.set $0 - local.get $1 - i32.const 1 - i32.add - local.tee $4 - i32.const 1 - i32.add - local.set $1 - local.get $3 - local.get $4 - i32.load8_u - i32.store8 - end - local.get $2 - i32.const 4 - i32.and - if - local.get $0 - local.get $1 - i32.load8_u - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.tee $0 - local.get $1 - i32.const 1 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.tee $0 - local.get $1 - i32.const 1 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.tee $3 - i32.const 1 - i32.add - local.set $0 - local.get $1 - i32.const 1 - i32.add - local.tee $4 - i32.const 1 - i32.add - local.set $1 - local.get $3 - local.get $4 - i32.load8_u - i32.store8 - end - local.get $2 - i32.const 2 - i32.and - if - local.get $0 - local.get $1 - i32.load8_u - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.tee $3 - i32.const 1 - i32.add - local.set $0 - local.get $1 - i32.const 1 - i32.add - local.tee $4 - i32.const 1 - i32.add - local.set $1 - local.get $3 - local.get $4 - i32.load8_u - i32.store8 - end - local.get $2 - i32.const 1 - i32.and - if - local.get $0 - local.get $1 - i32.load8_u - i32.store8 - end - ) - (func $~lib/memory/memory.copy (; 24 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/memory/memory.copy (; 23 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) block $~lib/util/memory/memmove|inlined.0 @@ -2046,29 +1199,6 @@ local.get $1 i32.eq br_if $~lib/util/memory/memmove|inlined.0 - local.get $1 - local.get $2 - i32.add - local.get $0 - i32.le_u - local.tee $3 - i32.eqz - if - local.get $0 - local.get $2 - i32.add - local.get $1 - i32.le_u - local.set $3 - end - local.get $3 - 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 @@ -2232,7 +1362,7 @@ end end ) - (func $~lib/string/String#concat (; 25 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/string/String#concat (; 24 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -2281,7 +1411,7 @@ i32.const 1 call $~lib/runtime/runtime.register ) - (func $~lib/string/String.__concat (; 26 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/string/String.__concat (; 25 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $0 i32.const 512 local.get $0 @@ -2289,7 +1419,7 @@ local.get $1 call $~lib/string/String#concat ) - (func $~lib/symbol/_Symbol#toString (; 27 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/symbol/_Symbol#toString (; 26 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) i32.const 160 @@ -2380,7 +1510,7 @@ i32.const 528 call $~lib/string/String.__concat ) - (func $start:std/symbol (; 28 ;) (type $FUNCSIG$v) + (func $start:std/symbol (; 27 ;) (type $FUNCSIG$v) (local $0 i32) global.get $~lib/symbol/nextId local.tee $0 @@ -2569,10 +1699,10 @@ unreachable end ) - (func $start (; 29 ;) (type $FUNCSIG$v) + (func $start (; 28 ;) (type $FUNCSIG$v) call $start:std/symbol ) - (func $null (; 30 ;) (type $FUNCSIG$v) + (func $null (; 29 ;) (type $FUNCSIG$v) nop ) ) diff --git a/tests/compiler/std/symbol.untouched.wat b/tests/compiler/std/symbol.untouched.wat index 4111d4bc..ab341a3f 100644 --- a/tests/compiler/std/symbol.untouched.wat +++ b/tests/compiler/std/symbol.untouched.wat @@ -200,7 +200,7 @@ if i32.const 0 i32.const 72 - i32.const 117 + i32.const 82 i32.const 6 call $~lib/env/abort unreachable @@ -217,7 +217,7 @@ if i32.const 0 i32.const 72 - i32.const 119 + i32.const 84 i32.const 6 call $~lib/env/abort unreachable @@ -1542,1208 +1542,7 @@ i32.const 0 end ) - (func $~lib/util/memory/memcpy (; 30 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (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 - end - end - local.get $0 - 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.get $2 - 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.get $2 - i32.const 4 - 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 $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 - 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 $~lib/memory/memory.copy (; 31 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/memory/memory.copy (; 30 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -2754,28 +1553,6 @@ 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 @@ -2974,7 +1751,7 @@ end end ) - (func $~lib/string/String#concat (; 32 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/string/String#concat (; 31 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -3024,7 +1801,7 @@ i32.const 1 call $~lib/runtime/runtime.register ) - (func $~lib/string/String.__concat (; 33 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/string/String.__concat (; 32 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $0 i32.const 512 local.get $0 @@ -3034,7 +1811,7 @@ local.get $1 call $~lib/string/String#concat ) - (func $~lib/symbol/_Symbol#toString (; 34 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/symbol/_Symbol#toString (; 33 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -3220,7 +1997,7 @@ i32.const 528 call $~lib/string/String.__concat ) - (func $start:std/symbol (; 35 ;) (type $FUNCSIG$v) + (func $start:std/symbol (; 34 ;) (type $FUNCSIG$v) (local $0 i32) i32.const 16 call $~lib/symbol/Symbol @@ -3402,9 +2179,9 @@ global.get $~lib/symbol/_Symbol.isConcatSpreadable drop ) - (func $start (; 36 ;) (type $FUNCSIG$v) + (func $start (; 35 ;) (type $FUNCSIG$v) call $start:std/symbol ) - (func $null (; 37 ;) (type $FUNCSIG$v) + (func $null (; 36 ;) (type $FUNCSIG$v) ) ) diff --git a/tests/compiler/std/typedarray.optimized.wat b/tests/compiler/std/typedarray.optimized.wat index 3c9c57bc..cc535c9d 100644 --- a/tests/compiler/std/typedarray.optimized.wat +++ b/tests/compiler/std/typedarray.optimized.wat @@ -439,7 +439,7 @@ if i32.const 0 i32.const 136 - i32.const 117 + i32.const 82 i32.const 6 call $~lib/env/abort unreachable @@ -454,7 +454,7 @@ if i32.const 0 i32.const 136 - i32.const 119 + i32.const 84 i32.const 6 call $~lib/env/abort unreachable @@ -1943,854 +1943,7 @@ call $~lib/memory/memory.fill end ) - (func $~lib/util/memory/memcpy (; 33 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - loop $continue|0 - local.get $1 - i32.const 3 - i32.and - local.get $2 - local.get $2 - select - if - local.get $0 - local.tee $3 - i32.const 1 - i32.add - local.set $0 - local.get $1 - local.tee $4 - i32.const 1 - i32.add - local.set $1 - local.get $3 - local.get $4 - i32.load8_u - i32.store8 - local.get $2 - i32.const 1 - i32.sub - local.set $2 - br $continue|0 - end - end - local.get $0 - i32.const 3 - i32.and - i32.eqz - if - loop $continue|1 - local.get $2 - i32.const 16 - i32.ge_u - 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.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 - br $continue|1 - end - end - local.get $2 - 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 $1 - i32.const 8 - i32.add - local.set $1 - local.get $0 - i32.const 8 - i32.add - local.set $0 - end - local.get $2 - i32.const 4 - i32.and - if - local.get $0 - local.get $1 - i32.load - i32.store - local.get $1 - i32.const 4 - i32.add - local.set $1 - local.get $0 - i32.const 4 - i32.add - local.set $0 - end - local.get $2 - i32.const 2 - i32.and - if - local.get $0 - local.get $1 - i32.load16_u - i32.store16 - local.get $1 - i32.const 2 - i32.add - local.set $1 - local.get $0 - i32.const 2 - i32.add - local.set $0 - end - local.get $2 - i32.const 1 - i32.and - if - local.get $0 - local.get $1 - i32.load8_u - i32.store8 - end - return - end - local.get $2 - i32.const 32 - i32.ge_u - if - block $break|2 - block $case2|2 - block $case1|2 - local.get $0 - i32.const 3 - i32.and - local.tee $3 - i32.const 1 - i32.ne - if - local.get $3 - i32.const 2 - i32.eq - br_if $case1|2 - local.get $3 - i32.const 3 - i32.eq - br_if $case2|2 - br $break|2 - end - local.get $1 - i32.load - local.set $5 - local.get $0 - local.get $1 - i32.load8_u - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.tee $0 - local.get $1 - i32.const 1 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.tee $3 - i32.const 1 - i32.add - local.set $0 - local.get $1 - i32.const 1 - i32.add - local.tee $4 - i32.const 1 - i32.add - local.set $1 - local.get $3 - local.get $4 - i32.load8_u - i32.store8 - local.get $2 - i32.const 3 - i32.sub - local.set $2 - loop $continue|3 - local.get $2 - i32.const 17 - i32.ge_u - if - local.get $0 - local.get $1 - i32.const 1 - i32.add - i32.load - local.tee $3 - i32.const 8 - i32.shl - local.get $5 - i32.const 24 - i32.shr_u - i32.or - i32.store - local.get $0 - i32.const 4 - i32.add - local.get $3 - i32.const 24 - i32.shr_u - local.get $1 - i32.const 5 - i32.add - i32.load - local.tee $3 - i32.const 8 - i32.shl - i32.or - i32.store - local.get $0 - i32.const 8 - i32.add - local.get $3 - i32.const 24 - i32.shr_u - local.get $1 - i32.const 9 - i32.add - i32.load - local.tee $3 - i32.const 8 - i32.shl - i32.or - i32.store - local.get $0 - i32.const 12 - i32.add - local.get $1 - i32.const 13 - i32.add - i32.load - local.tee $5 - i32.const 8 - i32.shl - local.get $3 - i32.const 24 - i32.shr_u - 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 - br $continue|3 - end - end - br $break|2 - end - local.get $1 - i32.load - local.set $5 - local.get $0 - local.get $1 - i32.load8_u - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.tee $3 - i32.const 1 - i32.add - local.set $0 - local.get $1 - i32.const 1 - i32.add - local.tee $4 - i32.const 1 - i32.add - local.set $1 - local.get $3 - local.get $4 - i32.load8_u - i32.store8 - local.get $2 - i32.const 2 - i32.sub - local.set $2 - loop $continue|4 - local.get $2 - i32.const 18 - i32.ge_u - if - local.get $0 - local.get $1 - i32.const 2 - i32.add - i32.load - local.tee $3 - i32.const 16 - i32.shl - local.get $5 - i32.const 16 - i32.shr_u - i32.or - i32.store - local.get $0 - i32.const 4 - i32.add - local.get $3 - i32.const 16 - i32.shr_u - local.get $1 - i32.const 6 - i32.add - i32.load - local.tee $3 - i32.const 16 - i32.shl - i32.or - i32.store - local.get $0 - i32.const 8 - i32.add - local.get $3 - i32.const 16 - i32.shr_u - local.get $1 - i32.const 10 - i32.add - i32.load - local.tee $3 - i32.const 16 - i32.shl - i32.or - i32.store - local.get $0 - i32.const 12 - i32.add - local.get $1 - i32.const 14 - i32.add - i32.load - local.tee $5 - i32.const 16 - i32.shl - local.get $3 - i32.const 16 - i32.shr_u - 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 - br $continue|4 - end - end - br $break|2 - end - local.get $1 - i32.load - local.set $5 - local.get $0 - local.tee $3 - i32.const 1 - i32.add - local.set $0 - local.get $1 - local.tee $4 - i32.const 1 - i32.add - local.set $1 - local.get $3 - local.get $4 - i32.load8_u - i32.store8 - local.get $2 - i32.const 1 - i32.sub - local.set $2 - loop $continue|5 - local.get $2 - i32.const 19 - i32.ge_u - if - local.get $0 - local.get $1 - i32.const 3 - i32.add - i32.load - local.tee $3 - i32.const 24 - i32.shl - local.get $5 - i32.const 8 - i32.shr_u - i32.or - i32.store - local.get $0 - i32.const 4 - i32.add - local.get $3 - i32.const 8 - i32.shr_u - local.get $1 - i32.const 7 - i32.add - i32.load - local.tee $3 - i32.const 24 - i32.shl - i32.or - i32.store - local.get $0 - i32.const 8 - i32.add - local.get $3 - i32.const 8 - i32.shr_u - local.get $1 - i32.const 11 - i32.add - i32.load - local.tee $3 - i32.const 24 - i32.shl - i32.or - i32.store - local.get $0 - i32.const 12 - i32.add - local.get $1 - i32.const 15 - i32.add - i32.load - local.tee $5 - i32.const 24 - i32.shl - local.get $3 - i32.const 8 - i32.shr_u - 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 - br $continue|5 - end - end - end - end - local.get $2 - i32.const 16 - i32.and - if - local.get $0 - local.get $1 - i32.load8_u - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.tee $0 - local.get $1 - i32.const 1 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.tee $0 - local.get $1 - i32.const 1 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.tee $0 - local.get $1 - i32.const 1 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.tee $0 - local.get $1 - i32.const 1 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.tee $0 - local.get $1 - i32.const 1 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.tee $0 - local.get $1 - i32.const 1 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.tee $0 - local.get $1 - i32.const 1 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.tee $0 - local.get $1 - i32.const 1 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.tee $0 - local.get $1 - i32.const 1 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.tee $0 - local.get $1 - i32.const 1 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.tee $0 - local.get $1 - i32.const 1 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.tee $0 - local.get $1 - i32.const 1 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.tee $0 - local.get $1 - i32.const 1 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.tee $0 - local.get $1 - i32.const 1 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.tee $3 - i32.const 1 - i32.add - local.set $0 - local.get $1 - i32.const 1 - i32.add - local.tee $4 - i32.const 1 - i32.add - local.set $1 - local.get $3 - local.get $4 - i32.load8_u - i32.store8 - end - local.get $2 - i32.const 8 - i32.and - if - local.get $0 - local.get $1 - i32.load8_u - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.tee $0 - local.get $1 - i32.const 1 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.tee $0 - local.get $1 - i32.const 1 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.tee $0 - local.get $1 - i32.const 1 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.tee $0 - local.get $1 - i32.const 1 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.tee $0 - local.get $1 - i32.const 1 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.tee $0 - local.get $1 - i32.const 1 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.tee $3 - i32.const 1 - i32.add - local.set $0 - local.get $1 - i32.const 1 - i32.add - local.tee $4 - i32.const 1 - i32.add - local.set $1 - local.get $3 - local.get $4 - i32.load8_u - i32.store8 - end - local.get $2 - i32.const 4 - i32.and - if - local.get $0 - local.get $1 - i32.load8_u - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.tee $0 - local.get $1 - i32.const 1 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.tee $0 - local.get $1 - i32.const 1 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.tee $3 - i32.const 1 - i32.add - local.set $0 - local.get $1 - i32.const 1 - i32.add - local.tee $4 - i32.const 1 - i32.add - local.set $1 - local.get $3 - local.get $4 - i32.load8_u - i32.store8 - end - local.get $2 - i32.const 2 - i32.and - if - local.get $0 - local.get $1 - i32.load8_u - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.tee $3 - i32.const 1 - i32.add - local.set $0 - local.get $1 - i32.const 1 - i32.add - local.tee $4 - i32.const 1 - i32.add - local.set $1 - local.get $3 - local.get $4 - i32.load8_u - i32.store8 - end - local.get $2 - i32.const 1 - i32.and - if - local.get $0 - local.get $1 - i32.load8_u - i32.store8 - end - ) - (func $~lib/memory/memory.copy (; 34 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/memory/memory.copy (; 33 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) block $~lib/util/memory/memmove|inlined.0 @@ -2798,29 +1951,6 @@ local.get $1 i32.eq br_if $~lib/util/memory/memmove|inlined.0 - local.get $1 - local.get $2 - i32.add - local.get $0 - i32.le_u - local.tee $3 - i32.eqz - if - local.get $0 - local.get $2 - i32.add - local.get $1 - i32.le_u - local.set $3 - end - local.get $3 - 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 @@ -2984,7 +2114,7 @@ end end ) - (func $~lib/runtime/runtime.newArray (; 35 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (func $~lib/runtime/runtime.newArray (; 34 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) (local $4 i32) (local $5 i32) i32.const 16 @@ -3025,7 +2155,7 @@ end local.get $2 ) - (func $~lib/typedarray/Int8Array#__get (; 36 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Int8Array#__get (; 35 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $1 local.get $0 i32.load offset=8 @@ -3044,7 +2174,7 @@ i32.add i32.load8_s ) - (func $~lib/array/Array#__get (; 37 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#__get (; 36 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $1 local.get $0 i32.load offset=8 @@ -3052,7 +2182,7 @@ if i32.const 0 i32.const 264 - i32.const 100 + i32.const 99 i32.const 61 call $~lib/env/abort unreachable @@ -3063,7 +2193,7 @@ i32.add i32.load8_s ) - (func $std/typedarray/isInt8ArrayEqual (; 38 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $std/typedarray/isInt8ArrayEqual (; 37 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) local.get $0 @@ -3105,7 +2235,7 @@ end i32.const 1 ) - (func $~lib/typedarray/Int8Array#subarray (; 39 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/typedarray/Int8Array#subarray (; 38 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) local.get $0 @@ -3191,7 +2321,7 @@ i32.const 4 call $~lib/runtime/runtime.register ) - (func $~lib/typedarray/Int32Array#fill (; 40 ;) (type $FUNCSIG$viiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) + (func $~lib/typedarray/Int32Array#fill (; 39 ;) (type $FUNCSIG$viiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (local $4 i32) (local $5 i32) local.get $1 @@ -3268,7 +2398,7 @@ end end ) - (func $~lib/array/Array#__get (; 41 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#__get (; 40 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $1 local.get $0 i32.load offset=8 @@ -3278,7 +2408,7 @@ if i32.const 0 i32.const 264 - i32.const 100 + i32.const 99 i32.const 61 call $~lib/env/abort unreachable @@ -3291,7 +2421,7 @@ i32.add i32.load ) - (func $std/typedarray/isInt32ArrayEqual (; 42 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $std/typedarray/isInt32ArrayEqual (; 41 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) local.get $1 @@ -3337,12 +2467,12 @@ end i32.const 1 ) - (func $std/typedarray/testReduce<~lib/typedarray/Int8Array,i8>~anonymous|0 (; 43 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (func $std/typedarray/testReduce<~lib/typedarray/Int8Array,i8>~anonymous|0 (; 42 ;) (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 (; 44 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/typedarray/Int8Array#reduce (; 43 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -3379,7 +2509,7 @@ end local.get $2 ) - (func $std/typedarray/testReduce<~lib/typedarray/Int8Array,i8> (; 45 ;) (type $FUNCSIG$v) + (func $std/typedarray/testReduce<~lib/typedarray/Int8Array,i8> (; 44 ;) (type $FUNCSIG$v) (local $0 i32) i32.const 3 call $~lib/typedarray/Int8Array#constructor @@ -3410,7 +2540,7 @@ unreachable end ) - (func $~lib/typedarray/Uint8Array#__set (; 46 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/typedarray/Uint8Array#__set (; 45 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) local.get $1 local.get $0 i32.load offset=8 @@ -3430,7 +2560,7 @@ local.get $2 i32.store8 ) - (func $~lib/typedarray/Uint8Array#reduce (; 47 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Uint8Array#reduce (; 46 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -3467,7 +2597,7 @@ end local.get $3 ) - (func $std/typedarray/testReduce<~lib/typedarray/Uint8Array,u8> (; 48 ;) (type $FUNCSIG$v) + (func $std/typedarray/testReduce<~lib/typedarray/Uint8Array,u8> (; 47 ;) (type $FUNCSIG$v) (local $0 i32) i32.const 3 call $~lib/typedarray/Uint8Array#constructor @@ -3499,7 +2629,7 @@ unreachable end ) - (func $std/typedarray/testReduce<~lib/typedarray/Uint8ClampedArray,u8> (; 49 ;) (type $FUNCSIG$v) + (func $std/typedarray/testReduce<~lib/typedarray/Uint8ClampedArray,u8> (; 48 ;) (type $FUNCSIG$v) (local $0 i32) i32.const 3 call $~lib/typedarray/Uint8ClampedArray#constructor @@ -3531,7 +2661,7 @@ unreachable end ) - (func $~lib/typedarray/Int16Array#__set (; 50 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/typedarray/Int16Array#__set (; 49 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) local.get $1 local.get $0 i32.load offset=8 @@ -3555,7 +2685,7 @@ local.get $2 i32.store16 ) - (func $~lib/typedarray/Int16Array#reduce (; 51 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/typedarray/Int16Array#reduce (; 50 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -3596,7 +2726,7 @@ end local.get $2 ) - (func $std/typedarray/testReduce<~lib/typedarray/Int16Array,i16> (; 52 ;) (type $FUNCSIG$v) + (func $std/typedarray/testReduce<~lib/typedarray/Int16Array,i16> (; 51 ;) (type $FUNCSIG$v) (local $0 i32) i32.const 3 call $~lib/typedarray/Int16Array#constructor @@ -3627,7 +2757,7 @@ unreachable end ) - (func $~lib/typedarray/Uint16Array#__set (; 53 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/typedarray/Uint16Array#__set (; 52 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) local.get $1 local.get $0 i32.load offset=8 @@ -3651,7 +2781,7 @@ local.get $2 i32.store16 ) - (func $~lib/typedarray/Uint16Array#reduce (; 54 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/typedarray/Uint16Array#reduce (; 53 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -3692,7 +2822,7 @@ end local.get $2 ) - (func $std/typedarray/testReduce<~lib/typedarray/Uint16Array,u16> (; 55 ;) (type $FUNCSIG$v) + (func $std/typedarray/testReduce<~lib/typedarray/Uint16Array,u16> (; 54 ;) (type $FUNCSIG$v) (local $0 i32) i32.const 3 call $~lib/typedarray/Uint16Array#constructor @@ -3723,7 +2853,7 @@ unreachable end ) - (func $~lib/typedarray/Int32Array#reduce (; 56 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Int32Array#reduce (; 55 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -3764,7 +2894,7 @@ end local.get $3 ) - (func $std/typedarray/testReduce<~lib/typedarray/Int32Array,i32> (; 57 ;) (type $FUNCSIG$v) + (func $std/typedarray/testReduce<~lib/typedarray/Int32Array,i32> (; 56 ;) (type $FUNCSIG$v) (local $0 i32) i32.const 3 call $~lib/typedarray/Int32Array#constructor @@ -3794,7 +2924,7 @@ unreachable end ) - (func $~lib/typedarray/Uint32Array#__set (; 58 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/typedarray/Uint32Array#__set (; 57 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) local.get $1 local.get $0 i32.load offset=8 @@ -3818,7 +2948,7 @@ local.get $2 i32.store ) - (func $std/typedarray/testReduce<~lib/typedarray/Uint32Array,u32> (; 59 ;) (type $FUNCSIG$v) + (func $std/typedarray/testReduce<~lib/typedarray/Uint32Array,u32> (; 58 ;) (type $FUNCSIG$v) (local $0 i32) i32.const 3 call $~lib/typedarray/Uint32Array#constructor @@ -3848,7 +2978,7 @@ unreachable end ) - (func $~lib/typedarray/Int64Array#__set (; 60 ;) (type $FUNCSIG$viij) (param $0 i32) (param $1 i32) (param $2 i64) + (func $~lib/typedarray/Int64Array#__set (; 59 ;) (type $FUNCSIG$viij) (param $0 i32) (param $1 i32) (param $2 i64) local.get $1 local.get $0 i32.load offset=8 @@ -3872,12 +3002,12 @@ local.get $2 i64.store ) - (func $std/typedarray/testReduce<~lib/typedarray/Int64Array,i64>~anonymous|0 (; 61 ;) (type $FUNCSIG$jjjii) (param $0 i64) (param $1 i64) (param $2 i32) (param $3 i32) (result i64) + (func $std/typedarray/testReduce<~lib/typedarray/Int64Array,i64>~anonymous|0 (; 60 ;) (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 (; 62 ;) (type $FUNCSIG$jii) (param $0 i32) (param $1 i32) (result i64) + (func $~lib/typedarray/Int64Array#reduce (; 61 ;) (type $FUNCSIG$jii) (param $0 i32) (param $1 i32) (result i64) (local $2 i32) (local $3 i64) (local $4 i32) @@ -3918,7 +3048,7 @@ end local.get $3 ) - (func $std/typedarray/testReduce<~lib/typedarray/Int64Array,i64> (; 63 ;) (type $FUNCSIG$v) + (func $std/typedarray/testReduce<~lib/typedarray/Int64Array,i64> (; 62 ;) (type $FUNCSIG$v) (local $0 i32) i32.const 3 call $~lib/typedarray/Int64Array#constructor @@ -3948,7 +3078,7 @@ unreachable end ) - (func $~lib/typedarray/Uint64Array#__set (; 64 ;) (type $FUNCSIG$viij) (param $0 i32) (param $1 i32) (param $2 i64) + (func $~lib/typedarray/Uint64Array#__set (; 63 ;) (type $FUNCSIG$viij) (param $0 i32) (param $1 i32) (param $2 i64) local.get $1 local.get $0 i32.load offset=8 @@ -3972,7 +3102,7 @@ local.get $2 i64.store ) - (func $std/typedarray/testReduce<~lib/typedarray/Uint64Array,u64> (; 65 ;) (type $FUNCSIG$v) + (func $std/typedarray/testReduce<~lib/typedarray/Uint64Array,u64> (; 64 ;) (type $FUNCSIG$v) (local $0 i32) i32.const 3 call $~lib/typedarray/Uint64Array#constructor @@ -4002,7 +3132,7 @@ unreachable end ) - (func $~lib/typedarray/Float32Array#__set (; 66 ;) (type $FUNCSIG$viif) (param $0 i32) (param $1 i32) (param $2 f32) + (func $~lib/typedarray/Float32Array#__set (; 65 ;) (type $FUNCSIG$viif) (param $0 i32) (param $1 i32) (param $2 f32) local.get $1 local.get $0 i32.load offset=8 @@ -4026,12 +3156,12 @@ local.get $2 f32.store ) - (func $std/typedarray/testReduce<~lib/typedarray/Float32Array,f32>~anonymous|0 (; 67 ;) (type $FUNCSIG$fffii) (param $0 f32) (param $1 f32) (param $2 i32) (param $3 i32) (result f32) + (func $std/typedarray/testReduce<~lib/typedarray/Float32Array,f32>~anonymous|0 (; 66 ;) (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 (; 68 ;) (type $FUNCSIG$fi) (param $0 i32) (result f32) + (func $~lib/typedarray/Float32Array#reduce (; 67 ;) (type $FUNCSIG$fi) (param $0 i32) (result f32) (local $1 i32) (local $2 f32) (local $3 i32) @@ -4072,7 +3202,7 @@ end local.get $2 ) - (func $std/typedarray/testReduce<~lib/typedarray/Float32Array,f32> (; 69 ;) (type $FUNCSIG$v) + (func $std/typedarray/testReduce<~lib/typedarray/Float32Array,f32> (; 68 ;) (type $FUNCSIG$v) (local $0 i32) i32.const 3 call $~lib/typedarray/Float32Array#constructor @@ -4101,12 +3231,12 @@ unreachable end ) - (func $std/typedarray/testReduce<~lib/typedarray/Float64Array,f64>~anonymous|0 (; 70 ;) (type $FUNCSIG$dddii) (param $0 f64) (param $1 f64) (param $2 i32) (param $3 i32) (result f64) + (func $std/typedarray/testReduce<~lib/typedarray/Float64Array,f64>~anonymous|0 (; 69 ;) (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 (; 71 ;) (type $FUNCSIG$di) (param $0 i32) (result f64) + (func $~lib/typedarray/Float64Array#reduce (; 70 ;) (type $FUNCSIG$di) (param $0 i32) (result f64) (local $1 i32) (local $2 f64) (local $3 i32) @@ -4147,7 +3277,7 @@ end local.get $2 ) - (func $std/typedarray/testReduce<~lib/typedarray/Float64Array,f64> (; 72 ;) (type $FUNCSIG$v) + (func $std/typedarray/testReduce<~lib/typedarray/Float64Array,f64> (; 71 ;) (type $FUNCSIG$v) (local $0 i32) i32.const 3 call $~lib/typedarray/Float64Array#constructor @@ -4176,7 +3306,7 @@ unreachable end ) - (func $~lib/typedarray/Int8Array#reduceRight (; 73 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/typedarray/Int8Array#reduceRight (; 72 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -4214,7 +3344,7 @@ end local.get $2 ) - (func $std/typedarray/testReduceRight<~lib/typedarray/Int8Array,i8> (; 74 ;) (type $FUNCSIG$v) + (func $std/typedarray/testReduceRight<~lib/typedarray/Int8Array,i8> (; 73 ;) (type $FUNCSIG$v) (local $0 i32) i32.const 3 call $~lib/typedarray/Int8Array#constructor @@ -4245,7 +3375,7 @@ unreachable end ) - (func $~lib/typedarray/Uint8Array#reduceRight (; 75 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Uint8Array#reduceRight (; 74 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -4283,7 +3413,7 @@ end local.get $3 ) - (func $std/typedarray/testReduceRight<~lib/typedarray/Uint8Array,u8> (; 76 ;) (type $FUNCSIG$v) + (func $std/typedarray/testReduceRight<~lib/typedarray/Uint8Array,u8> (; 75 ;) (type $FUNCSIG$v) (local $0 i32) i32.const 3 call $~lib/typedarray/Uint8Array#constructor @@ -4315,7 +3445,7 @@ unreachable end ) - (func $std/typedarray/testReduceRight<~lib/typedarray/Uint8ClampedArray,u8> (; 77 ;) (type $FUNCSIG$v) + (func $std/typedarray/testReduceRight<~lib/typedarray/Uint8ClampedArray,u8> (; 76 ;) (type $FUNCSIG$v) (local $0 i32) i32.const 3 call $~lib/typedarray/Uint8ClampedArray#constructor @@ -4347,7 +3477,7 @@ unreachable end ) - (func $~lib/typedarray/Int16Array#reduceRight (; 78 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/typedarray/Int16Array#reduceRight (; 77 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -4389,7 +3519,7 @@ end local.get $2 ) - (func $std/typedarray/testReduceRight<~lib/typedarray/Int16Array,i16> (; 79 ;) (type $FUNCSIG$v) + (func $std/typedarray/testReduceRight<~lib/typedarray/Int16Array,i16> (; 78 ;) (type $FUNCSIG$v) (local $0 i32) i32.const 3 call $~lib/typedarray/Int16Array#constructor @@ -4420,7 +3550,7 @@ unreachable end ) - (func $~lib/typedarray/Uint16Array#reduceRight (; 80 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/typedarray/Uint16Array#reduceRight (; 79 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -4462,7 +3592,7 @@ end local.get $2 ) - (func $std/typedarray/testReduceRight<~lib/typedarray/Uint16Array,u16> (; 81 ;) (type $FUNCSIG$v) + (func $std/typedarray/testReduceRight<~lib/typedarray/Uint16Array,u16> (; 80 ;) (type $FUNCSIG$v) (local $0 i32) i32.const 3 call $~lib/typedarray/Uint16Array#constructor @@ -4493,7 +3623,7 @@ unreachable end ) - (func $~lib/typedarray/Int32Array#reduceRight (; 82 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Int32Array#reduceRight (; 81 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -4535,7 +3665,7 @@ end local.get $3 ) - (func $std/typedarray/testReduceRight<~lib/typedarray/Int32Array,i32> (; 83 ;) (type $FUNCSIG$v) + (func $std/typedarray/testReduceRight<~lib/typedarray/Int32Array,i32> (; 82 ;) (type $FUNCSIG$v) (local $0 i32) i32.const 3 call $~lib/typedarray/Int32Array#constructor @@ -4565,7 +3695,7 @@ unreachable end ) - (func $std/typedarray/testReduceRight<~lib/typedarray/Uint32Array,u32> (; 84 ;) (type $FUNCSIG$v) + (func $std/typedarray/testReduceRight<~lib/typedarray/Uint32Array,u32> (; 83 ;) (type $FUNCSIG$v) (local $0 i32) i32.const 3 call $~lib/typedarray/Uint32Array#constructor @@ -4595,7 +3725,7 @@ unreachable end ) - (func $~lib/typedarray/Int64Array#reduceRight (; 85 ;) (type $FUNCSIG$jii) (param $0 i32) (param $1 i32) (result i64) + (func $~lib/typedarray/Int64Array#reduceRight (; 84 ;) (type $FUNCSIG$jii) (param $0 i32) (param $1 i32) (result i64) (local $2 i32) (local $3 i64) (local $4 i32) @@ -4637,7 +3767,7 @@ end local.get $3 ) - (func $std/typedarray/testReduceRight<~lib/typedarray/Int64Array,i64> (; 86 ;) (type $FUNCSIG$v) + (func $std/typedarray/testReduceRight<~lib/typedarray/Int64Array,i64> (; 85 ;) (type $FUNCSIG$v) (local $0 i32) i32.const 3 call $~lib/typedarray/Int64Array#constructor @@ -4667,7 +3797,7 @@ unreachable end ) - (func $std/typedarray/testReduceRight<~lib/typedarray/Uint64Array,u64> (; 87 ;) (type $FUNCSIG$v) + (func $std/typedarray/testReduceRight<~lib/typedarray/Uint64Array,u64> (; 86 ;) (type $FUNCSIG$v) (local $0 i32) i32.const 3 call $~lib/typedarray/Uint64Array#constructor @@ -4697,7 +3827,7 @@ unreachable end ) - (func $~lib/typedarray/Float32Array#reduceRight (; 88 ;) (type $FUNCSIG$fi) (param $0 i32) (result f32) + (func $~lib/typedarray/Float32Array#reduceRight (; 87 ;) (type $FUNCSIG$fi) (param $0 i32) (result f32) (local $1 i32) (local $2 f32) (local $3 i32) @@ -4739,7 +3869,7 @@ end local.get $2 ) - (func $std/typedarray/testReduceRight<~lib/typedarray/Float32Array,f32> (; 89 ;) (type $FUNCSIG$v) + (func $std/typedarray/testReduceRight<~lib/typedarray/Float32Array,f32> (; 88 ;) (type $FUNCSIG$v) (local $0 i32) i32.const 3 call $~lib/typedarray/Float32Array#constructor @@ -4768,7 +3898,7 @@ unreachable end ) - (func $~lib/typedarray/Float64Array#reduceRight (; 90 ;) (type $FUNCSIG$di) (param $0 i32) (result f64) + (func $~lib/typedarray/Float64Array#reduceRight (; 89 ;) (type $FUNCSIG$di) (param $0 i32) (result f64) (local $1 i32) (local $2 f64) (local $3 i32) @@ -4810,7 +3940,7 @@ end local.get $2 ) - (func $std/typedarray/testReduceRight<~lib/typedarray/Float64Array,f64> (; 91 ;) (type $FUNCSIG$v) + (func $std/typedarray/testReduceRight<~lib/typedarray/Float64Array,f64> (; 90 ;) (type $FUNCSIG$v) (local $0 i32) i32.const 3 call $~lib/typedarray/Float64Array#constructor @@ -4839,12 +3969,12 @@ unreachable end ) - (func $std/typedarray/testArrayMap<~lib/typedarray/Int8Array,i8>~anonymous|0 (; 92 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayMap<~lib/typedarray/Int8Array,i8>~anonymous|0 (; 91 ;) (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 (; 93 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/typedarray/Int8Array#map (; 92 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -4890,7 +4020,7 @@ end local.get $2 ) - (func $std/typedarray/testArrayMap<~lib/typedarray/Int8Array,i8> (; 94 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayMap<~lib/typedarray/Int8Array,i8> (; 93 ;) (type $FUNCSIG$v) (local $0 i32) i32.const 3 call $~lib/typedarray/Int8Array#constructor @@ -4948,7 +4078,7 @@ unreachable end ) - (func $~lib/typedarray/Uint8Array#map (; 95 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/typedarray/Uint8Array#map (; 94 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -4994,7 +4124,7 @@ end local.get $2 ) - (func $~lib/typedarray/Uint8Array#__get (; 96 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Uint8Array#__get (; 95 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $1 local.get $0 i32.load offset=8 @@ -5013,7 +4143,7 @@ i32.add i32.load8_u ) - (func $std/typedarray/testArrayMap<~lib/typedarray/Uint8Array,u8> (; 97 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayMap<~lib/typedarray/Uint8Array,u8> (; 96 ;) (type $FUNCSIG$v) (local $0 i32) i32.const 3 call $~lib/typedarray/Uint8Array#constructor @@ -5071,7 +4201,7 @@ unreachable end ) - (func $~lib/typedarray/Uint8ClampedArray#map (; 98 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/typedarray/Uint8ClampedArray#map (; 97 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -5117,7 +4247,7 @@ end local.get $2 ) - (func $std/typedarray/testArrayMap<~lib/typedarray/Uint8ClampedArray,u8> (; 99 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayMap<~lib/typedarray/Uint8ClampedArray,u8> (; 98 ;) (type $FUNCSIG$v) (local $0 i32) i32.const 3 call $~lib/typedarray/Uint8ClampedArray#constructor @@ -5175,7 +4305,7 @@ unreachable end ) - (func $~lib/typedarray/Int16Array#map (; 100 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/typedarray/Int16Array#map (; 99 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -5230,7 +4360,7 @@ end local.get $2 ) - (func $~lib/typedarray/Int16Array#__get (; 101 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Int16Array#__get (; 100 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $1 local.get $0 i32.load offset=8 @@ -5253,7 +4383,7 @@ i32.add i32.load16_s ) - (func $std/typedarray/testArrayMap<~lib/typedarray/Int16Array,i16> (; 102 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayMap<~lib/typedarray/Int16Array,i16> (; 101 ;) (type $FUNCSIG$v) (local $0 i32) i32.const 3 call $~lib/typedarray/Int16Array#constructor @@ -5311,7 +4441,7 @@ unreachable end ) - (func $~lib/typedarray/Uint16Array#map (; 103 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/typedarray/Uint16Array#map (; 102 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -5366,7 +4496,7 @@ end local.get $2 ) - (func $~lib/typedarray/Uint16Array#__get (; 104 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Uint16Array#__get (; 103 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $1 local.get $0 i32.load offset=8 @@ -5389,7 +4519,7 @@ i32.add i32.load16_u ) - (func $std/typedarray/testArrayMap<~lib/typedarray/Uint16Array,u16> (; 105 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayMap<~lib/typedarray/Uint16Array,u16> (; 104 ;) (type $FUNCSIG$v) (local $0 i32) i32.const 3 call $~lib/typedarray/Uint16Array#constructor @@ -5447,7 +4577,7 @@ unreachable end ) - (func $~lib/typedarray/Int32Array#map (; 106 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/typedarray/Int32Array#map (; 105 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -5502,7 +4632,7 @@ end local.get $2 ) - (func $std/typedarray/testArrayMap<~lib/typedarray/Int32Array,i32> (; 107 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayMap<~lib/typedarray/Int32Array,i32> (; 106 ;) (type $FUNCSIG$v) (local $0 i32) i32.const 3 call $~lib/typedarray/Int32Array#constructor @@ -5560,7 +4690,7 @@ unreachable end ) - (func $~lib/typedarray/Uint32Array#map (; 108 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/typedarray/Uint32Array#map (; 107 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -5615,7 +4745,7 @@ end local.get $2 ) - (func $~lib/typedarray/Uint32Array#__get (; 109 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Uint32Array#__get (; 108 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $1 local.get $0 i32.load offset=8 @@ -5638,7 +4768,7 @@ i32.add i32.load ) - (func $std/typedarray/testArrayMap<~lib/typedarray/Uint32Array,u32> (; 110 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayMap<~lib/typedarray/Uint32Array,u32> (; 109 ;) (type $FUNCSIG$v) (local $0 i32) i32.const 3 call $~lib/typedarray/Uint32Array#constructor @@ -5696,12 +4826,12 @@ unreachable end ) - (func $std/typedarray/testArrayMap<~lib/typedarray/Int64Array,i64>~anonymous|0 (; 111 ;) (type $FUNCSIG$jjii) (param $0 i64) (param $1 i32) (param $2 i32) (result i64) + (func $std/typedarray/testArrayMap<~lib/typedarray/Int64Array,i64>~anonymous|0 (; 110 ;) (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 (; 112 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/typedarray/Int64Array#map (; 111 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -5756,7 +4886,7 @@ end local.get $2 ) - (func $~lib/typedarray/Int64Array#__get (; 113 ;) (type $FUNCSIG$jii) (param $0 i32) (param $1 i32) (result i64) + (func $~lib/typedarray/Int64Array#__get (; 112 ;) (type $FUNCSIG$jii) (param $0 i32) (param $1 i32) (result i64) local.get $1 local.get $0 i32.load offset=8 @@ -5779,7 +4909,7 @@ i32.add i64.load ) - (func $std/typedarray/testArrayMap<~lib/typedarray/Int64Array,i64> (; 114 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayMap<~lib/typedarray/Int64Array,i64> (; 113 ;) (type $FUNCSIG$v) (local $0 i32) i32.const 3 call $~lib/typedarray/Int64Array#constructor @@ -5837,7 +4967,7 @@ unreachable end ) - (func $~lib/typedarray/Uint64Array#map (; 115 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/typedarray/Uint64Array#map (; 114 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -5892,7 +5022,7 @@ end local.get $2 ) - (func $~lib/typedarray/Uint64Array#__get (; 116 ;) (type $FUNCSIG$jii) (param $0 i32) (param $1 i32) (result i64) + (func $~lib/typedarray/Uint64Array#__get (; 115 ;) (type $FUNCSIG$jii) (param $0 i32) (param $1 i32) (result i64) local.get $1 local.get $0 i32.load offset=8 @@ -5915,7 +5045,7 @@ i32.add i64.load ) - (func $std/typedarray/testArrayMap<~lib/typedarray/Uint64Array,u64> (; 117 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayMap<~lib/typedarray/Uint64Array,u64> (; 116 ;) (type $FUNCSIG$v) (local $0 i32) i32.const 3 call $~lib/typedarray/Uint64Array#constructor @@ -5973,12 +5103,12 @@ unreachable end ) - (func $std/typedarray/testArrayMap<~lib/typedarray/Float32Array,f32>~anonymous|0 (; 118 ;) (type $FUNCSIG$ffii) (param $0 f32) (param $1 i32) (param $2 i32) (result f32) + (func $std/typedarray/testArrayMap<~lib/typedarray/Float32Array,f32>~anonymous|0 (; 117 ;) (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 (; 119 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/typedarray/Float32Array#map (; 118 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -6033,7 +5163,7 @@ end local.get $2 ) - (func $~lib/typedarray/Float32Array#__get (; 120 ;) (type $FUNCSIG$fii) (param $0 i32) (param $1 i32) (result f32) + (func $~lib/typedarray/Float32Array#__get (; 119 ;) (type $FUNCSIG$fii) (param $0 i32) (param $1 i32) (result f32) local.get $1 local.get $0 i32.load offset=8 @@ -6056,7 +5186,7 @@ i32.add f32.load ) - (func $std/typedarray/testArrayMap<~lib/typedarray/Float32Array,f32> (; 121 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayMap<~lib/typedarray/Float32Array,f32> (; 120 ;) (type $FUNCSIG$v) (local $0 i32) i32.const 3 call $~lib/typedarray/Float32Array#constructor @@ -6114,12 +5244,12 @@ unreachable end ) - (func $std/typedarray/testArrayMap<~lib/typedarray/Float64Array,f64>~anonymous|0 (; 122 ;) (type $FUNCSIG$ddii) (param $0 f64) (param $1 i32) (param $2 i32) (result f64) + (func $std/typedarray/testArrayMap<~lib/typedarray/Float64Array,f64>~anonymous|0 (; 121 ;) (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 (; 123 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/typedarray/Float64Array#map (; 122 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -6174,7 +5304,7 @@ end local.get $2 ) - (func $std/typedarray/testArrayMap<~lib/typedarray/Float64Array,f64> (; 124 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayMap<~lib/typedarray/Float64Array,f64> (; 123 ;) (type $FUNCSIG$v) (local $0 i32) i32.const 3 call $~lib/typedarray/Float64Array#constructor @@ -6232,14 +5362,14 @@ unreachable end ) - (func $std/typedarray/testArraySome<~lib/typedarray/Int8Array,i8>~anonymous|0 (; 125 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArraySome<~lib/typedarray/Int8Array,i8>~anonymous|0 (; 124 ;) (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/Int8Array#some (; 126 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Int8Array#some (; 125 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -6278,13 +5408,13 @@ i32.const 0 end ) - (func $std/typedarray/testArraySome<~lib/typedarray/Int8Array,i8>~anonymous|1 (; 127 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArraySome<~lib/typedarray/Int8Array,i8>~anonymous|1 (; 126 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 i32.const 255 i32.and i32.eqz ) - (func $std/typedarray/testArraySome<~lib/typedarray/Int8Array,i8> (; 128 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArraySome<~lib/typedarray/Int8Array,i8> (; 127 ;) (type $FUNCSIG$v) (local $0 i32) i32.const 3 call $~lib/typedarray/Int8Array#constructor @@ -6324,7 +5454,7 @@ unreachable end ) - (func $~lib/typedarray/Uint8Array#some (; 129 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Uint8Array#some (; 128 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -6363,7 +5493,7 @@ i32.const 0 end ) - (func $std/typedarray/testArraySome<~lib/typedarray/Uint8Array,u8> (; 130 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArraySome<~lib/typedarray/Uint8Array,u8> (; 129 ;) (type $FUNCSIG$v) (local $0 i32) i32.const 3 call $~lib/typedarray/Uint8Array#constructor @@ -6403,7 +5533,7 @@ unreachable end ) - (func $std/typedarray/testArraySome<~lib/typedarray/Uint8ClampedArray,u8> (; 131 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArraySome<~lib/typedarray/Uint8ClampedArray,u8> (; 130 ;) (type $FUNCSIG$v) (local $0 i32) i32.const 3 call $~lib/typedarray/Uint8ClampedArray#constructor @@ -6443,14 +5573,14 @@ unreachable end ) - (func $std/typedarray/testArraySome<~lib/typedarray/Int16Array,i16>~anonymous|0 (; 132 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArraySome<~lib/typedarray/Int16Array,i16>~anonymous|0 (; 131 ;) (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/Int16Array#some (; 133 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Int16Array#some (; 132 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -6493,13 +5623,13 @@ i32.const 0 end ) - (func $std/typedarray/testArraySome<~lib/typedarray/Int16Array,i16>~anonymous|1 (; 134 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArraySome<~lib/typedarray/Int16Array,i16>~anonymous|1 (; 133 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 i32.const 65535 i32.and i32.eqz ) - (func $std/typedarray/testArraySome<~lib/typedarray/Int16Array,i16> (; 135 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArraySome<~lib/typedarray/Int16Array,i16> (; 134 ;) (type $FUNCSIG$v) (local $0 i32) i32.const 3 call $~lib/typedarray/Int16Array#constructor @@ -6539,7 +5669,7 @@ unreachable end ) - (func $~lib/typedarray/Uint16Array#some (; 136 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Uint16Array#some (; 135 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -6582,7 +5712,7 @@ i32.const 0 end ) - (func $std/typedarray/testArraySome<~lib/typedarray/Uint16Array,u16> (; 137 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArraySome<~lib/typedarray/Uint16Array,u16> (; 136 ;) (type $FUNCSIG$v) (local $0 i32) i32.const 3 call $~lib/typedarray/Uint16Array#constructor @@ -6622,12 +5752,12 @@ unreachable end ) - (func $std/typedarray/testArraySome<~lib/typedarray/Int32Array,i32>~anonymous|0 (; 138 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArraySome<~lib/typedarray/Int32Array,i32>~anonymous|0 (; 137 ;) (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 (; 139 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Int32Array#some (; 138 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -6670,11 +5800,11 @@ i32.const 0 end ) - (func $std/typedarray/testArraySome<~lib/typedarray/Int32Array,i32>~anonymous|1 (; 140 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArraySome<~lib/typedarray/Int32Array,i32>~anonymous|1 (; 139 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 i32.eqz ) - (func $std/typedarray/testArraySome<~lib/typedarray/Int32Array,i32> (; 141 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArraySome<~lib/typedarray/Int32Array,i32> (; 140 ;) (type $FUNCSIG$v) (local $0 i32) i32.const 3 call $~lib/typedarray/Int32Array#constructor @@ -6714,7 +5844,7 @@ unreachable end ) - (func $std/typedarray/testArraySome<~lib/typedarray/Uint32Array,u32> (; 142 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArraySome<~lib/typedarray/Uint32Array,u32> (; 141 ;) (type $FUNCSIG$v) (local $0 i32) i32.const 3 call $~lib/typedarray/Uint32Array#constructor @@ -6754,12 +5884,12 @@ unreachable end ) - (func $std/typedarray/testArraySome<~lib/typedarray/Int64Array,i64>~anonymous|0 (; 143 ;) (type $FUNCSIG$ijii) (param $0 i64) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArraySome<~lib/typedarray/Int64Array,i64>~anonymous|0 (; 142 ;) (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 (; 144 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Int64Array#some (; 143 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -6802,12 +5932,12 @@ i32.const 0 end ) - (func $std/typedarray/testArraySome<~lib/typedarray/Int64Array,i64>~anonymous|1 (; 145 ;) (type $FUNCSIG$ijii) (param $0 i64) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArraySome<~lib/typedarray/Int64Array,i64>~anonymous|1 (; 144 ;) (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<~lib/typedarray/Int64Array,i64> (; 146 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArraySome<~lib/typedarray/Int64Array,i64> (; 145 ;) (type $FUNCSIG$v) (local $0 i32) i32.const 3 call $~lib/typedarray/Int64Array#constructor @@ -6847,7 +5977,7 @@ unreachable end ) - (func $std/typedarray/testArraySome<~lib/typedarray/Uint64Array,u64> (; 147 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArraySome<~lib/typedarray/Uint64Array,u64> (; 146 ;) (type $FUNCSIG$v) (local $0 i32) i32.const 3 call $~lib/typedarray/Uint64Array#constructor @@ -6887,12 +6017,12 @@ unreachable end ) - (func $std/typedarray/testArraySome<~lib/typedarray/Float32Array,f32>~anonymous|0 (; 148 ;) (type $FUNCSIG$ifii) (param $0 f32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArraySome<~lib/typedarray/Float32Array,f32>~anonymous|0 (; 147 ;) (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 (; 149 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Float32Array#some (; 148 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -6935,12 +6065,12 @@ i32.const 0 end ) - (func $std/typedarray/testArraySome<~lib/typedarray/Float32Array,f32>~anonymous|1 (; 150 ;) (type $FUNCSIG$ifii) (param $0 f32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArraySome<~lib/typedarray/Float32Array,f32>~anonymous|1 (; 149 ;) (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<~lib/typedarray/Float32Array,f32> (; 151 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArraySome<~lib/typedarray/Float32Array,f32> (; 150 ;) (type $FUNCSIG$v) (local $0 i32) i32.const 3 call $~lib/typedarray/Float32Array#constructor @@ -6980,12 +6110,12 @@ unreachable end ) - (func $std/typedarray/testArraySome<~lib/typedarray/Float64Array,f64>~anonymous|0 (; 152 ;) (type $FUNCSIG$idii) (param $0 f64) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArraySome<~lib/typedarray/Float64Array,f64>~anonymous|0 (; 151 ;) (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 (; 153 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Float64Array#some (; 152 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -7028,12 +6158,12 @@ i32.const 0 end ) - (func $std/typedarray/testArraySome<~lib/typedarray/Float64Array,f64>~anonymous|1 (; 154 ;) (type $FUNCSIG$idii) (param $0 f64) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArraySome<~lib/typedarray/Float64Array,f64>~anonymous|1 (; 153 ;) (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<~lib/typedarray/Float64Array,f64> (; 155 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArraySome<~lib/typedarray/Float64Array,f64> (; 154 ;) (type $FUNCSIG$v) (local $0 i32) i32.const 3 call $~lib/typedarray/Float64Array#constructor @@ -7073,7 +6203,7 @@ unreachable end ) - (func $~lib/typedarray/Int8Array#findIndex (; 156 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Int8Array#findIndex (; 155 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -7115,14 +6245,14 @@ end local.get $0 ) - (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Int8Array,i8>~anonymous|1 (; 157 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Int8Array,i8>~anonymous|1 (; 156 ;) (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<~lib/typedarray/Int8Array,i8> (; 158 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Int8Array,i8> (; 157 ;) (type $FUNCSIG$v) (local $0 i32) i32.const 3 call $~lib/typedarray/Int8Array#constructor @@ -7165,7 +6295,7 @@ unreachable end ) - (func $~lib/typedarray/Uint8Array#findIndex (; 159 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Uint8Array#findIndex (; 158 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -7207,7 +6337,7 @@ end local.get $0 ) - (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint8Array,u8> (; 160 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint8Array,u8> (; 159 ;) (type $FUNCSIG$v) (local $0 i32) i32.const 3 call $~lib/typedarray/Uint8Array#constructor @@ -7250,7 +6380,7 @@ unreachable end ) - (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint8ClampedArray,u8> (; 161 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint8ClampedArray,u8> (; 160 ;) (type $FUNCSIG$v) (local $0 i32) i32.const 3 call $~lib/typedarray/Uint8ClampedArray#constructor @@ -7293,7 +6423,7 @@ unreachable end ) - (func $~lib/typedarray/Int16Array#findIndex (; 162 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Int16Array#findIndex (; 161 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -7339,14 +6469,14 @@ end local.get $0 ) - (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Int16Array,i16>~anonymous|1 (; 163 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Int16Array,i16>~anonymous|1 (; 162 ;) (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<~lib/typedarray/Int16Array,i16> (; 164 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Int16Array,i16> (; 163 ;) (type $FUNCSIG$v) (local $0 i32) i32.const 3 call $~lib/typedarray/Int16Array#constructor @@ -7389,7 +6519,7 @@ unreachable end ) - (func $~lib/typedarray/Uint16Array#findIndex (; 165 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Uint16Array#findIndex (; 164 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -7435,7 +6565,7 @@ end local.get $0 ) - (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint16Array,u16> (; 166 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint16Array,u16> (; 165 ;) (type $FUNCSIG$v) (local $0 i32) i32.const 3 call $~lib/typedarray/Uint16Array#constructor @@ -7478,7 +6608,7 @@ unreachable end ) - (func $~lib/typedarray/Int32Array#findIndex (; 167 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Int32Array#findIndex (; 166 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -7524,12 +6654,12 @@ end local.get $0 ) - (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Int32Array,i32>~anonymous|1 (; 168 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Int32Array,i32>~anonymous|1 (; 167 ;) (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<~lib/typedarray/Int32Array,i32> (; 169 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Int32Array,i32> (; 168 ;) (type $FUNCSIG$v) (local $0 i32) i32.const 3 call $~lib/typedarray/Int32Array#constructor @@ -7572,7 +6702,7 @@ unreachable end ) - (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint32Array,u32> (; 170 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint32Array,u32> (; 169 ;) (type $FUNCSIG$v) (local $0 i32) i32.const 3 call $~lib/typedarray/Uint32Array#constructor @@ -7615,7 +6745,7 @@ unreachable end ) - (func $~lib/typedarray/Int64Array#findIndex (; 171 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Int64Array#findIndex (; 170 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -7661,12 +6791,12 @@ end local.get $0 ) - (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Int64Array,i64>~anonymous|1 (; 172 ;) (type $FUNCSIG$ijii) (param $0 i64) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Int64Array,i64>~anonymous|1 (; 171 ;) (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<~lib/typedarray/Int64Array,i64> (; 173 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Int64Array,i64> (; 172 ;) (type $FUNCSIG$v) (local $0 i32) i32.const 3 call $~lib/typedarray/Int64Array#constructor @@ -7709,7 +6839,7 @@ unreachable end ) - (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint64Array,u64> (; 174 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint64Array,u64> (; 173 ;) (type $FUNCSIG$v) (local $0 i32) i32.const 3 call $~lib/typedarray/Uint64Array#constructor @@ -7752,7 +6882,7 @@ unreachable end ) - (func $~lib/typedarray/Float32Array#findIndex (; 175 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Float32Array#findIndex (; 174 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -7798,12 +6928,12 @@ end local.get $0 ) - (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Float32Array,f32>~anonymous|1 (; 176 ;) (type $FUNCSIG$ifii) (param $0 f32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Float32Array,f32>~anonymous|1 (; 175 ;) (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<~lib/typedarray/Float32Array,f32> (; 177 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Float32Array,f32> (; 176 ;) (type $FUNCSIG$v) (local $0 i32) i32.const 3 call $~lib/typedarray/Float32Array#constructor @@ -7846,7 +6976,7 @@ unreachable end ) - (func $~lib/typedarray/Float64Array#findIndex (; 178 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Float64Array#findIndex (; 177 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -7892,12 +7022,12 @@ end local.get $0 ) - (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Float64Array,f64>~anonymous|1 (; 179 ;) (type $FUNCSIG$idii) (param $0 f64) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Float64Array,f64>~anonymous|1 (; 178 ;) (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<~lib/typedarray/Float64Array,f64> (; 180 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Float64Array,f64> (; 179 ;) (type $FUNCSIG$v) (local $0 i32) i32.const 3 call $~lib/typedarray/Float64Array#constructor @@ -7940,7 +7070,7 @@ unreachable end ) - (func $std/typedarray/testArrayEvery<~lib/typedarray/Int8Array,i8>~anonymous|0 (; 181 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayEvery<~lib/typedarray/Int8Array,i8>~anonymous|0 (; 180 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 i32.const 24 i32.shl @@ -7950,7 +7080,7 @@ i32.rem_s i32.eqz ) - (func $~lib/typedarray/Int8Array#every (; 182 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Int8Array#every (; 181 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -7990,7 +7120,7 @@ i32.const 1 end ) - (func $std/typedarray/testArrayEvery<~lib/typedarray/Int8Array,i8> (; 183 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayEvery<~lib/typedarray/Int8Array,i8> (; 182 ;) (type $FUNCSIG$v) (local $0 i32) i32.const 3 call $~lib/typedarray/Int8Array#constructor @@ -8030,13 +7160,13 @@ unreachable end ) - (func $std/typedarray/testArrayEvery<~lib/typedarray/Uint8Array,u8>~anonymous|0 (; 184 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayEvery<~lib/typedarray/Uint8Array,u8>~anonymous|0 (; 183 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 i32.const 1 i32.and i32.eqz ) - (func $~lib/typedarray/Uint8Array#every (; 185 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Uint8Array#every (; 184 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -8076,7 +7206,7 @@ i32.const 1 end ) - (func $std/typedarray/testArrayEvery<~lib/typedarray/Uint8Array,u8> (; 186 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayEvery<~lib/typedarray/Uint8Array,u8> (; 185 ;) (type $FUNCSIG$v) (local $0 i32) i32.const 3 call $~lib/typedarray/Uint8Array#constructor @@ -8116,7 +7246,7 @@ unreachable end ) - (func $std/typedarray/testArrayEvery<~lib/typedarray/Uint8ClampedArray,u8> (; 187 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayEvery<~lib/typedarray/Uint8ClampedArray,u8> (; 186 ;) (type $FUNCSIG$v) (local $0 i32) i32.const 3 call $~lib/typedarray/Uint8ClampedArray#constructor @@ -8156,7 +7286,7 @@ unreachable end ) - (func $std/typedarray/testArrayEvery<~lib/typedarray/Int16Array,i16>~anonymous|0 (; 188 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayEvery<~lib/typedarray/Int16Array,i16>~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 @@ -8166,7 +7296,7 @@ i32.rem_s i32.eqz ) - (func $~lib/typedarray/Int16Array#every (; 189 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Int16Array#every (; 188 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -8210,7 +7340,7 @@ i32.const 1 end ) - (func $std/typedarray/testArrayEvery<~lib/typedarray/Int16Array,i16> (; 190 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayEvery<~lib/typedarray/Int16Array,i16> (; 189 ;) (type $FUNCSIG$v) (local $0 i32) i32.const 3 call $~lib/typedarray/Int16Array#constructor @@ -8250,7 +7380,7 @@ unreachable end ) - (func $~lib/typedarray/Uint16Array#every (; 191 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Uint16Array#every (; 190 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -8294,7 +7424,7 @@ i32.const 1 end ) - (func $std/typedarray/testArrayEvery<~lib/typedarray/Uint16Array,u16> (; 192 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayEvery<~lib/typedarray/Uint16Array,u16> (; 191 ;) (type $FUNCSIG$v) (local $0 i32) i32.const 3 call $~lib/typedarray/Uint16Array#constructor @@ -8334,13 +7464,13 @@ unreachable end ) - (func $std/typedarray/testArrayEvery<~lib/typedarray/Int32Array,i32>~anonymous|0 (; 193 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayEvery<~lib/typedarray/Int32Array,i32>~anonymous|0 (; 192 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 i32.const 2 i32.rem_s i32.eqz ) - (func $~lib/typedarray/Int32Array#every (; 194 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Int32Array#every (; 193 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -8384,7 +7514,7 @@ i32.const 1 end ) - (func $std/typedarray/testArrayEvery<~lib/typedarray/Int32Array,i32> (; 195 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayEvery<~lib/typedarray/Int32Array,i32> (; 194 ;) (type $FUNCSIG$v) (local $0 i32) i32.const 3 call $~lib/typedarray/Int32Array#constructor @@ -8424,7 +7554,7 @@ unreachable end ) - (func $std/typedarray/testArrayEvery<~lib/typedarray/Uint32Array,u32> (; 196 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayEvery<~lib/typedarray/Uint32Array,u32> (; 195 ;) (type $FUNCSIG$v) (local $0 i32) i32.const 3 call $~lib/typedarray/Uint32Array#constructor @@ -8464,14 +7594,14 @@ unreachable end ) - (func $std/typedarray/testArrayEvery<~lib/typedarray/Int64Array,i64>~anonymous|0 (; 197 ;) (type $FUNCSIG$ijii) (param $0 i64) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayEvery<~lib/typedarray/Int64Array,i64>~anonymous|0 (; 196 ;) (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 (; 198 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Int64Array#every (; 197 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -8515,7 +7645,7 @@ i32.const 1 end ) - (func $std/typedarray/testArrayEvery<~lib/typedarray/Int64Array,i64> (; 199 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayEvery<~lib/typedarray/Int64Array,i64> (; 198 ;) (type $FUNCSIG$v) (local $0 i32) i32.const 3 call $~lib/typedarray/Int64Array#constructor @@ -8555,14 +7685,14 @@ unreachable end ) - (func $std/typedarray/testArrayEvery<~lib/typedarray/Uint64Array,u64>~anonymous|0 (; 200 ;) (type $FUNCSIG$ijii) (param $0 i64) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayEvery<~lib/typedarray/Uint64Array,u64>~anonymous|0 (; 199 ;) (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 $std/typedarray/testArrayEvery<~lib/typedarray/Uint64Array,u64> (; 201 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayEvery<~lib/typedarray/Uint64Array,u64> (; 200 ;) (type $FUNCSIG$v) (local $0 i32) i32.const 3 call $~lib/typedarray/Uint64Array#constructor @@ -8602,7 +7732,7 @@ unreachable end ) - (func $~lib/math/NativeMathf.mod (; 202 ;) (type $FUNCSIG$ff) (param $0 f32) (result f32) + (func $~lib/math/NativeMathf.mod (; 201 ;) (type $FUNCSIG$ff) (param $0 f32) (result f32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -8753,13 +7883,13 @@ local.get $0 f32.mul ) - (func $std/typedarray/testArrayEvery<~lib/typedarray/Float32Array,f32>~anonymous|0 (; 203 ;) (type $FUNCSIG$ifii) (param $0 f32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayEvery<~lib/typedarray/Float32Array,f32>~anonymous|0 (; 202 ;) (type $FUNCSIG$ifii) (param $0 f32) (param $1 i32) (param $2 i32) (result i32) local.get $0 call $~lib/math/NativeMathf.mod f32.const 0 f32.eq ) - (func $~lib/typedarray/Float32Array#every (; 204 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Float32Array#every (; 203 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -8803,7 +7933,7 @@ i32.const 1 end ) - (func $std/typedarray/testArrayEvery<~lib/typedarray/Float32Array,f32> (; 205 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayEvery<~lib/typedarray/Float32Array,f32> (; 204 ;) (type $FUNCSIG$v) (local $0 i32) i32.const 3 call $~lib/typedarray/Float32Array#constructor @@ -8843,7 +7973,7 @@ unreachable end ) - (func $~lib/math/NativeMath.mod (; 206 ;) (type $FUNCSIG$dd) (param $0 f64) (result f64) + (func $~lib/math/NativeMath.mod (; 205 ;) (type $FUNCSIG$dd) (param $0 f64) (result f64) (local $1 i64) (local $2 i64) (local $3 i64) @@ -9002,13 +8132,13 @@ local.get $0 f64.mul ) - (func $std/typedarray/testArrayEvery<~lib/typedarray/Float64Array,f64>~anonymous|0 (; 207 ;) (type $FUNCSIG$idii) (param $0 f64) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayEvery<~lib/typedarray/Float64Array,f64>~anonymous|0 (; 206 ;) (type $FUNCSIG$idii) (param $0 f64) (param $1 i32) (param $2 i32) (result i32) local.get $0 call $~lib/math/NativeMath.mod f64.const 0 f64.eq ) - (func $~lib/typedarray/Float64Array#every (; 208 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Float64Array#every (; 207 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -9052,7 +8182,7 @@ i32.const 1 end ) - (func $std/typedarray/testArrayEvery<~lib/typedarray/Float64Array,f64> (; 209 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayEvery<~lib/typedarray/Float64Array,f64> (; 208 ;) (type $FUNCSIG$v) (local $0 i32) i32.const 3 call $~lib/typedarray/Float64Array#constructor @@ -9092,7 +8222,7 @@ unreachable end ) - (func $std/typedarray/testArrayForEach<~lib/typedarray/Int8Array,i8>~anonymous|0 (; 210 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $std/typedarray/testArrayForEach<~lib/typedarray/Int8Array,i8>~anonymous|0 (; 209 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) local.get $0 i32.const 255 i32.and @@ -9137,7 +8267,7 @@ i32.add global.set $std/typedarray/forEachCallCount ) - (func $~lib/typedarray/Int8Array#forEach (; 211 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/typedarray/Int8Array#forEach (; 210 ;) (type $FUNCSIG$vi) (param $0 i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -9170,7 +8300,7 @@ end end ) - (func $std/typedarray/testArrayForEach<~lib/typedarray/Int8Array,i8> (; 212 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayForEach<~lib/typedarray/Int8Array,i8> (; 211 ;) (type $FUNCSIG$v) (local $0 i32) i32.const 0 global.set $std/typedarray/forEachCallCount @@ -9222,7 +8352,7 @@ unreachable end ) - (func $~lib/typedarray/Uint8Array#forEach (; 213 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/typedarray/Uint8Array#forEach (; 212 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -9255,7 +8385,7 @@ end end ) - (func $std/typedarray/testArrayForEach<~lib/typedarray/Uint8Array,u8> (; 214 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayForEach<~lib/typedarray/Uint8Array,u8> (; 213 ;) (type $FUNCSIG$v) (local $0 i32) i32.const 0 global.set $std/typedarray/forEachCallCount @@ -9302,7 +8432,7 @@ unreachable end ) - (func $std/typedarray/testArrayForEach<~lib/typedarray/Uint8ClampedArray,u8> (; 215 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayForEach<~lib/typedarray/Uint8ClampedArray,u8> (; 214 ;) (type $FUNCSIG$v) (local $0 i32) i32.const 0 global.set $std/typedarray/forEachCallCount @@ -9349,7 +8479,7 @@ unreachable end ) - (func $std/typedarray/testArrayForEach<~lib/typedarray/Int16Array,i16>~anonymous|0 (; 216 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $std/typedarray/testArrayForEach<~lib/typedarray/Int16Array,i16>~anonymous|0 (; 215 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) local.get $0 i32.const 65535 i32.and @@ -9394,7 +8524,7 @@ i32.add global.set $std/typedarray/forEachCallCount ) - (func $~lib/typedarray/Int16Array#forEach (; 217 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/typedarray/Int16Array#forEach (; 216 ;) (type $FUNCSIG$vi) (param $0 i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -9431,7 +8561,7 @@ end end ) - (func $std/typedarray/testArrayForEach<~lib/typedarray/Int16Array,i16> (; 218 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayForEach<~lib/typedarray/Int16Array,i16> (; 217 ;) (type $FUNCSIG$v) (local $0 i32) i32.const 0 global.set $std/typedarray/forEachCallCount @@ -9483,7 +8613,7 @@ unreachable end ) - (func $~lib/typedarray/Uint16Array#forEach (; 219 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/typedarray/Uint16Array#forEach (; 218 ;) (type $FUNCSIG$vi) (param $0 i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -9520,7 +8650,7 @@ end end ) - (func $std/typedarray/testArrayForEach<~lib/typedarray/Uint16Array,u16> (; 220 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayForEach<~lib/typedarray/Uint16Array,u16> (; 219 ;) (type $FUNCSIG$v) (local $0 i32) i32.const 0 global.set $std/typedarray/forEachCallCount @@ -9566,7 +8696,7 @@ unreachable end ) - (func $std/typedarray/testArrayForEach<~lib/typedarray/Int32Array,i32>~anonymous|0 (; 221 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $std/typedarray/testArrayForEach<~lib/typedarray/Int32Array,i32>~anonymous|0 (; 220 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) global.get $std/typedarray/forEachValues local.get $1 call $~lib/array/Array#__get @@ -9607,7 +8737,7 @@ i32.add global.set $std/typedarray/forEachCallCount ) - (func $~lib/typedarray/Int32Array#forEach (; 222 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/typedarray/Int32Array#forEach (; 221 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -9644,7 +8774,7 @@ end end ) - (func $std/typedarray/testArrayForEach<~lib/typedarray/Int32Array,i32> (; 223 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayForEach<~lib/typedarray/Int32Array,i32> (; 222 ;) (type $FUNCSIG$v) (local $0 i32) i32.const 0 global.set $std/typedarray/forEachCallCount @@ -9685,7 +8815,7 @@ unreachable end ) - (func $std/typedarray/testArrayForEach<~lib/typedarray/Uint32Array,u32> (; 224 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayForEach<~lib/typedarray/Uint32Array,u32> (; 223 ;) (type $FUNCSIG$v) (local $0 i32) i32.const 0 global.set $std/typedarray/forEachCallCount @@ -9726,7 +8856,7 @@ unreachable end ) - (func $std/typedarray/testArrayForEach<~lib/typedarray/Int64Array,i64>~anonymous|0 (; 225 ;) (type $FUNCSIG$vjii) (param $0 i64) (param $1 i32) (param $2 i32) + (func $std/typedarray/testArrayForEach<~lib/typedarray/Int64Array,i64>~anonymous|0 (; 224 ;) (type $FUNCSIG$vjii) (param $0 i64) (param $1 i32) (param $2 i32) local.get $0 global.get $std/typedarray/forEachValues local.get $1 @@ -9768,7 +8898,7 @@ i32.add global.set $std/typedarray/forEachCallCount ) - (func $~lib/typedarray/Int64Array#forEach (; 226 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/typedarray/Int64Array#forEach (; 225 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -9805,7 +8935,7 @@ end end ) - (func $std/typedarray/testArrayForEach<~lib/typedarray/Int64Array,i64> (; 227 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayForEach<~lib/typedarray/Int64Array,i64> (; 226 ;) (type $FUNCSIG$v) (local $0 i32) i32.const 0 global.set $std/typedarray/forEachCallCount @@ -9849,7 +8979,7 @@ unreachable end ) - (func $std/typedarray/testArrayForEach<~lib/typedarray/Uint64Array,u64> (; 228 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayForEach<~lib/typedarray/Uint64Array,u64> (; 227 ;) (type $FUNCSIG$v) (local $0 i32) i32.const 0 global.set $std/typedarray/forEachCallCount @@ -9893,7 +9023,7 @@ unreachable end ) - (func $std/typedarray/testArrayForEach<~lib/typedarray/Float32Array,f32>~anonymous|0 (; 229 ;) (type $FUNCSIG$vfii) (param $0 f32) (param $1 i32) (param $2 i32) + (func $std/typedarray/testArrayForEach<~lib/typedarray/Float32Array,f32>~anonymous|0 (; 228 ;) (type $FUNCSIG$vfii) (param $0 f32) (param $1 i32) (param $2 i32) local.get $0 global.get $std/typedarray/forEachValues local.get $1 @@ -9935,7 +9065,7 @@ i32.add global.set $std/typedarray/forEachCallCount ) - (func $~lib/typedarray/Float32Array#forEach (; 230 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/typedarray/Float32Array#forEach (; 229 ;) (type $FUNCSIG$vi) (param $0 i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -9972,7 +9102,7 @@ end end ) - (func $std/typedarray/testArrayForEach<~lib/typedarray/Float32Array,f32> (; 231 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayForEach<~lib/typedarray/Float32Array,f32> (; 230 ;) (type $FUNCSIG$v) (local $0 i32) i32.const 0 global.set $std/typedarray/forEachCallCount @@ -10015,7 +9145,7 @@ unreachable end ) - (func $std/typedarray/testArrayForEach<~lib/typedarray/Float64Array,f64>~anonymous|0 (; 232 ;) (type $FUNCSIG$vdii) (param $0 f64) (param $1 i32) (param $2 i32) + (func $std/typedarray/testArrayForEach<~lib/typedarray/Float64Array,f64>~anonymous|0 (; 231 ;) (type $FUNCSIG$vdii) (param $0 f64) (param $1 i32) (param $2 i32) local.get $0 global.get $std/typedarray/forEachValues local.get $1 @@ -10057,7 +9187,7 @@ i32.add global.set $std/typedarray/forEachCallCount ) - (func $~lib/typedarray/Float64Array#forEach (; 233 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/typedarray/Float64Array#forEach (; 232 ;) (type $FUNCSIG$vi) (param $0 i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -10094,7 +9224,7 @@ end end ) - (func $std/typedarray/testArrayForEach<~lib/typedarray/Float64Array,f64> (; 234 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayForEach<~lib/typedarray/Float64Array,f64> (; 233 ;) (type $FUNCSIG$v) (local $0 i32) i32.const 0 global.set $std/typedarray/forEachCallCount @@ -10137,7 +9267,7 @@ unreachable end ) - (func $~lib/typedarray/Int8Array#reverse (; 235 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/typedarray/Int8Array#reverse (; 234 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -10185,7 +9315,7 @@ end local.get $0 ) - (func $std/typedarray/testArrayReverse<~lib/typedarray/Int8Array,i8> (; 236 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayReverse<~lib/typedarray/Int8Array,i8> (; 235 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -10330,7 +9460,7 @@ unreachable end ) - (func $~lib/typedarray/Uint8Array#reverse (; 237 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/typedarray/Uint8Array#reverse (; 236 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -10378,7 +9508,7 @@ end local.get $0 ) - (func $~lib/typedarray/Uint8Array#subarray (; 238 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/typedarray/Uint8Array#subarray (; 237 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -10433,7 +9563,7 @@ i32.const 5 call $~lib/runtime/runtime.register ) - (func $std/typedarray/testArrayReverse<~lib/typedarray/Uint8Array,u8> (; 239 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayReverse<~lib/typedarray/Uint8Array,u8> (; 238 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -10570,7 +9700,7 @@ unreachable end ) - (func $~lib/typedarray/Uint8ClampedArray#subarray (; 240 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/typedarray/Uint8ClampedArray#subarray (; 239 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -10625,7 +9755,7 @@ i32.const 6 call $~lib/runtime/runtime.register ) - (func $std/typedarray/testArrayReverse<~lib/typedarray/Uint8ClampedArray,u8> (; 241 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayReverse<~lib/typedarray/Uint8ClampedArray,u8> (; 240 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -10762,7 +9892,7 @@ unreachable end ) - (func $~lib/typedarray/Int16Array#reverse (; 242 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/typedarray/Int16Array#reverse (; 241 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -10816,7 +9946,7 @@ end local.get $0 ) - (func $~lib/typedarray/Int16Array#subarray (; 243 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/typedarray/Int16Array#subarray (; 242 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -10877,7 +10007,7 @@ i32.const 7 call $~lib/runtime/runtime.register ) - (func $std/typedarray/testArrayReverse<~lib/typedarray/Int16Array,i16> (; 244 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayReverse<~lib/typedarray/Int16Array,i16> (; 243 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -11020,7 +10150,7 @@ unreachable end ) - (func $~lib/typedarray/Uint16Array#reverse (; 245 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/typedarray/Uint16Array#reverse (; 244 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -11074,7 +10204,7 @@ end local.get $0 ) - (func $~lib/typedarray/Uint16Array#subarray (; 246 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/typedarray/Uint16Array#subarray (; 245 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -11135,7 +10265,7 @@ i32.const 8 call $~lib/runtime/runtime.register ) - (func $std/typedarray/testArrayReverse<~lib/typedarray/Uint16Array,u16> (; 247 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayReverse<~lib/typedarray/Uint16Array,u16> (; 246 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -11272,7 +10402,7 @@ unreachable end ) - (func $~lib/typedarray/Int32Array#reverse (; 248 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/typedarray/Int32Array#reverse (; 247 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -11326,7 +10456,7 @@ end local.get $0 ) - (func $std/typedarray/testArrayReverse<~lib/typedarray/Int32Array,i32> (; 249 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayReverse<~lib/typedarray/Int32Array,i32> (; 248 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -11459,7 +10589,7 @@ unreachable end ) - (func $~lib/typedarray/Uint32Array#subarray (; 250 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/typedarray/Uint32Array#subarray (; 249 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -11520,7 +10650,7 @@ i32.const 10 call $~lib/runtime/runtime.register ) - (func $std/typedarray/testArrayReverse<~lib/typedarray/Uint32Array,u32> (; 251 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayReverse<~lib/typedarray/Uint32Array,u32> (; 250 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -11651,7 +10781,7 @@ unreachable end ) - (func $~lib/typedarray/Int64Array#reverse (; 252 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/typedarray/Int64Array#reverse (; 251 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -11705,7 +10835,7 @@ end local.get $0 ) - (func $~lib/typedarray/Int64Array#subarray (; 253 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/typedarray/Int64Array#subarray (; 252 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -11766,7 +10896,7 @@ i32.const 11 call $~lib/runtime/runtime.register ) - (func $std/typedarray/testArrayReverse<~lib/typedarray/Int64Array,i64> (; 254 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayReverse<~lib/typedarray/Int64Array,i64> (; 253 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -11900,7 +11030,7 @@ unreachable end ) - (func $~lib/typedarray/Uint64Array#subarray (; 255 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/typedarray/Uint64Array#subarray (; 254 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -11961,7 +11091,7 @@ i32.const 12 call $~lib/runtime/runtime.register ) - (func $std/typedarray/testArrayReverse<~lib/typedarray/Uint64Array,u64> (; 256 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayReverse<~lib/typedarray/Uint64Array,u64> (; 255 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -12095,7 +11225,7 @@ unreachable end ) - (func $~lib/typedarray/Float32Array#reverse (; 257 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/typedarray/Float32Array#reverse (; 256 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -12149,7 +11279,7 @@ end local.get $0 ) - (func $~lib/typedarray/Float32Array#subarray (; 258 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/typedarray/Float32Array#subarray (; 257 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -12210,7 +11340,7 @@ i32.const 13 call $~lib/runtime/runtime.register ) - (func $std/typedarray/testArrayReverse<~lib/typedarray/Float32Array,f32> (; 259 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayReverse<~lib/typedarray/Float32Array,f32> (; 258 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -12344,7 +11474,7 @@ unreachable end ) - (func $~lib/typedarray/Float64Array#reverse (; 260 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/typedarray/Float64Array#reverse (; 259 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -12398,7 +11528,7 @@ end local.get $0 ) - (func $std/typedarray/testArrayReverse<~lib/typedarray/Float64Array,f64> (; 261 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayReverse<~lib/typedarray/Float64Array,f64> (; 260 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -12534,7 +11664,7 @@ unreachable end ) - (func $start:std/typedarray (; 262 ;) (type $FUNCSIG$v) + (func $start:std/typedarray (; 261 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) i32.const 1440 @@ -13614,10 +12744,10 @@ call $std/typedarray/testArrayReverse<~lib/typedarray/Float32Array,f32> call $std/typedarray/testArrayReverse<~lib/typedarray/Float64Array,f64> ) - (func $start (; 263 ;) (type $FUNCSIG$v) + (func $start (; 262 ;) (type $FUNCSIG$v) call $start:std/typedarray ) - (func $null (; 264 ;) (type $FUNCSIG$v) + (func $null (; 263 ;) (type $FUNCSIG$v) nop ) ) diff --git a/tests/compiler/std/typedarray.untouched.wat b/tests/compiler/std/typedarray.untouched.wat index 8007f40d..865a4b02 100644 --- a/tests/compiler/std/typedarray.untouched.wat +++ b/tests/compiler/std/typedarray.untouched.wat @@ -497,7 +497,7 @@ if i32.const 0 i32.const 136 - i32.const 117 + i32.const 82 i32.const 6 call $~lib/env/abort unreachable @@ -514,7 +514,7 @@ if i32.const 0 i32.const 136 - i32.const 119 + i32.const 84 i32.const 6 call $~lib/env/abort unreachable @@ -2437,1208 +2437,7 @@ end local.get $7 ) - (func $~lib/util/memory/memcpy (; 54 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (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 - end - end - local.get $0 - 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.get $2 - 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.get $2 - i32.const 4 - 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 $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 - 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 $~lib/memory/memory.copy (; 55 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/memory/memory.copy (; 54 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -3649,28 +2448,6 @@ 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 @@ -3869,7 +2646,7 @@ end end ) - (func $~lib/runtime/runtime.newArray (; 56 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (func $~lib/runtime/runtime.newArray (; 55 ;) (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) @@ -3931,11 +2708,11 @@ end local.get $4 ) - (func $~lib/array/Array#get:length (; 57 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/array/Array#get:length (; 56 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.load offset=12 ) - (func $~lib/typedarray/Int8Array#__get (; 58 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Int8Array#__get (; 57 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $1 local.get $0 i32.load offset=8 @@ -3954,7 +2731,7 @@ i32.add i32.load8_s ) - (func $~lib/array/Array#__unchecked_get (; 59 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#__unchecked_get (; 58 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $0 i32.load offset=4 local.get $1 @@ -3963,7 +2740,7 @@ i32.add i32.load8_s ) - (func $~lib/array/Array#__get (; 60 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#__get (; 59 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $1 local.get $0 i32.load offset=8 @@ -3973,7 +2750,7 @@ if i32.const 0 i32.const 264 - i32.const 100 + i32.const 99 i32.const 61 call $~lib/env/abort unreachable @@ -3982,7 +2759,7 @@ local.get $1 call $~lib/array/Array#__unchecked_get ) - (func $std/typedarray/isInt8ArrayEqual (; 61 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $std/typedarray/isInt8ArrayEqual (; 60 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) local.get $0 @@ -4030,7 +2807,7 @@ end i32.const 1 ) - (func $~lib/typedarray/Int8Array#subarray (; 62 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/typedarray/Int8Array#subarray (; 61 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -4159,7 +2936,7 @@ i32.const 4 call $~lib/runtime/runtime.register ) - (func $~lib/typedarray/Int32Array#fill (; 63 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (func $~lib/typedarray/Int32Array#fill (; 62 ;) (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) @@ -4257,11 +3034,11 @@ end local.get $7 ) - (func $~lib/array/Array#get:length (; 64 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/array/Array#get:length (; 63 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.load offset=12 ) - (func $~lib/array/Array#__unchecked_get (; 65 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#__unchecked_get (; 64 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $0 i32.load offset=4 local.get $1 @@ -4270,7 +3047,7 @@ i32.add i32.load ) - (func $~lib/array/Array#__get (; 66 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#__get (; 65 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $1 local.get $0 i32.load offset=8 @@ -4280,7 +3057,7 @@ if i32.const 0 i32.const 264 - i32.const 100 + i32.const 99 i32.const 61 call $~lib/env/abort unreachable @@ -4289,7 +3066,7 @@ local.get $1 call $~lib/array/Array#__unchecked_get ) - (func $std/typedarray/isInt32ArrayEqual (; 67 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $std/typedarray/isInt32ArrayEqual (; 66 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) local.get $0 @@ -4337,12 +3114,12 @@ end i32.const 1 ) - (func $std/typedarray/testReduce<~lib/typedarray/Int8Array,i8>~anonymous|0 (; 68 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (func $std/typedarray/testReduce<~lib/typedarray/Int8Array,i8>~anonymous|0 (; 67 ;) (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 (; 69 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/typedarray/Int8Array#reduce (; 68 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -4399,7 +3176,7 @@ end local.get $3 ) - (func $std/typedarray/testReduce<~lib/typedarray/Int8Array,i8> (; 70 ;) (type $FUNCSIG$v) + (func $std/typedarray/testReduce<~lib/typedarray/Int8Array,i8> (; 69 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) i32.const 0 @@ -4440,7 +3217,7 @@ unreachable end ) - (func $~lib/typedarray/Uint8Array#__set (; 71 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/typedarray/Uint8Array#__set (; 70 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) local.get $1 local.get $0 i32.load offset=8 @@ -4460,12 +3237,12 @@ local.get $2 i32.store8 ) - (func $std/typedarray/testReduce<~lib/typedarray/Uint8Array,u8>~anonymous|0 (; 72 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (func $std/typedarray/testReduce<~lib/typedarray/Uint8Array,u8>~anonymous|0 (; 71 ;) (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 (; 73 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/typedarray/Uint8Array#reduce (; 72 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -4522,7 +3299,7 @@ end local.get $3 ) - (func $std/typedarray/testReduce<~lib/typedarray/Uint8Array,u8> (; 74 ;) (type $FUNCSIG$v) + (func $std/typedarray/testReduce<~lib/typedarray/Uint8Array,u8> (; 73 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) i32.const 0 @@ -4561,12 +3338,12 @@ unreachable end ) - (func $std/typedarray/testReduce<~lib/typedarray/Uint8ClampedArray,u8>~anonymous|0 (; 75 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (func $std/typedarray/testReduce<~lib/typedarray/Uint8ClampedArray,u8>~anonymous|0 (; 74 ;) (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 (; 76 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/typedarray/Uint8ClampedArray#reduce (; 75 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -4623,7 +3400,7 @@ end local.get $3 ) - (func $std/typedarray/testReduce<~lib/typedarray/Uint8ClampedArray,u8> (; 77 ;) (type $FUNCSIG$v) + (func $std/typedarray/testReduce<~lib/typedarray/Uint8ClampedArray,u8> (; 76 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) i32.const 0 @@ -4662,7 +3439,7 @@ unreachable end ) - (func $~lib/typedarray/Int16Array#__set (; 78 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/typedarray/Int16Array#__set (; 77 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) local.get $1 local.get $0 i32.load offset=8 @@ -4686,12 +3463,12 @@ local.get $2 i32.store16 ) - (func $std/typedarray/testReduce<~lib/typedarray/Int16Array,i16>~anonymous|0 (; 79 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (func $std/typedarray/testReduce<~lib/typedarray/Int16Array,i16>~anonymous|0 (; 78 ;) (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 (; 80 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/typedarray/Int16Array#reduce (; 79 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -4748,7 +3525,7 @@ end local.get $3 ) - (func $std/typedarray/testReduce<~lib/typedarray/Int16Array,i16> (; 81 ;) (type $FUNCSIG$v) + (func $std/typedarray/testReduce<~lib/typedarray/Int16Array,i16> (; 80 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) i32.const 0 @@ -4789,7 +3566,7 @@ unreachable end ) - (func $~lib/typedarray/Uint16Array#__set (; 82 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/typedarray/Uint16Array#__set (; 81 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) local.get $1 local.get $0 i32.load offset=8 @@ -4813,12 +3590,12 @@ local.get $2 i32.store16 ) - (func $std/typedarray/testReduce<~lib/typedarray/Uint16Array,u16>~anonymous|0 (; 83 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (func $std/typedarray/testReduce<~lib/typedarray/Uint16Array,u16>~anonymous|0 (; 82 ;) (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 (; 84 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/typedarray/Uint16Array#reduce (; 83 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -4875,7 +3652,7 @@ end local.get $3 ) - (func $std/typedarray/testReduce<~lib/typedarray/Uint16Array,u16> (; 85 ;) (type $FUNCSIG$v) + (func $std/typedarray/testReduce<~lib/typedarray/Uint16Array,u16> (; 84 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) i32.const 0 @@ -4914,12 +3691,12 @@ unreachable end ) - (func $std/typedarray/testReduce<~lib/typedarray/Int32Array,i32>~anonymous|0 (; 86 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (func $std/typedarray/testReduce<~lib/typedarray/Int32Array,i32>~anonymous|0 (; 85 ;) (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 (; 87 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/typedarray/Int32Array#reduce (; 86 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -4976,7 +3753,7 @@ end local.get $3 ) - (func $std/typedarray/testReduce<~lib/typedarray/Int32Array,i32> (; 88 ;) (type $FUNCSIG$v) + (func $std/typedarray/testReduce<~lib/typedarray/Int32Array,i32> (; 87 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) i32.const 0 @@ -5013,7 +3790,7 @@ unreachable end ) - (func $~lib/typedarray/Uint32Array#__set (; 89 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/typedarray/Uint32Array#__set (; 88 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) local.get $1 local.get $0 i32.load offset=8 @@ -5037,12 +3814,12 @@ local.get $2 i32.store ) - (func $std/typedarray/testReduce<~lib/typedarray/Uint32Array,u32>~anonymous|0 (; 90 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (func $std/typedarray/testReduce<~lib/typedarray/Uint32Array,u32>~anonymous|0 (; 89 ;) (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 (; 91 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/typedarray/Uint32Array#reduce (; 90 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -5099,7 +3876,7 @@ end local.get $3 ) - (func $std/typedarray/testReduce<~lib/typedarray/Uint32Array,u32> (; 92 ;) (type $FUNCSIG$v) + (func $std/typedarray/testReduce<~lib/typedarray/Uint32Array,u32> (; 91 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) i32.const 0 @@ -5136,7 +3913,7 @@ unreachable end ) - (func $~lib/typedarray/Int64Array#__set (; 93 ;) (type $FUNCSIG$viij) (param $0 i32) (param $1 i32) (param $2 i64) + (func $~lib/typedarray/Int64Array#__set (; 92 ;) (type $FUNCSIG$viij) (param $0 i32) (param $1 i32) (param $2 i64) local.get $1 local.get $0 i32.load offset=8 @@ -5160,12 +3937,12 @@ local.get $2 i64.store ) - (func $std/typedarray/testReduce<~lib/typedarray/Int64Array,i64>~anonymous|0 (; 94 ;) (type $FUNCSIG$jjjii) (param $0 i64) (param $1 i64) (param $2 i32) (param $3 i32) (result i64) + (func $std/typedarray/testReduce<~lib/typedarray/Int64Array,i64>~anonymous|0 (; 93 ;) (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 (; 95 ;) (type $FUNCSIG$jiij) (param $0 i32) (param $1 i32) (param $2 i64) (result i64) + (func $~lib/typedarray/Int64Array#reduce (; 94 ;) (type $FUNCSIG$jiij) (param $0 i32) (param $1 i32) (param $2 i64) (result i64) (local $3 i32) (local $4 i32) (local $5 i64) @@ -5222,7 +3999,7 @@ end local.get $5 ) - (func $std/typedarray/testReduce<~lib/typedarray/Int64Array,i64> (; 96 ;) (type $FUNCSIG$v) + (func $std/typedarray/testReduce<~lib/typedarray/Int64Array,i64> (; 95 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i64) i32.const 0 @@ -5259,7 +4036,7 @@ unreachable end ) - (func $~lib/typedarray/Uint64Array#__set (; 97 ;) (type $FUNCSIG$viij) (param $0 i32) (param $1 i32) (param $2 i64) + (func $~lib/typedarray/Uint64Array#__set (; 96 ;) (type $FUNCSIG$viij) (param $0 i32) (param $1 i32) (param $2 i64) local.get $1 local.get $0 i32.load offset=8 @@ -5283,12 +4060,12 @@ local.get $2 i64.store ) - (func $std/typedarray/testReduce<~lib/typedarray/Uint64Array,u64>~anonymous|0 (; 98 ;) (type $FUNCSIG$jjjii) (param $0 i64) (param $1 i64) (param $2 i32) (param $3 i32) (result i64) + (func $std/typedarray/testReduce<~lib/typedarray/Uint64Array,u64>~anonymous|0 (; 97 ;) (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 (; 99 ;) (type $FUNCSIG$jiij) (param $0 i32) (param $1 i32) (param $2 i64) (result i64) + (func $~lib/typedarray/Uint64Array#reduce (; 98 ;) (type $FUNCSIG$jiij) (param $0 i32) (param $1 i32) (param $2 i64) (result i64) (local $3 i32) (local $4 i32) (local $5 i64) @@ -5345,7 +4122,7 @@ end local.get $5 ) - (func $std/typedarray/testReduce<~lib/typedarray/Uint64Array,u64> (; 100 ;) (type $FUNCSIG$v) + (func $std/typedarray/testReduce<~lib/typedarray/Uint64Array,u64> (; 99 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i64) i32.const 0 @@ -5382,7 +4159,7 @@ unreachable end ) - (func $~lib/typedarray/Float32Array#__set (; 101 ;) (type $FUNCSIG$viif) (param $0 i32) (param $1 i32) (param $2 f32) + (func $~lib/typedarray/Float32Array#__set (; 100 ;) (type $FUNCSIG$viif) (param $0 i32) (param $1 i32) (param $2 f32) local.get $1 local.get $0 i32.load offset=8 @@ -5406,12 +4183,12 @@ local.get $2 f32.store ) - (func $std/typedarray/testReduce<~lib/typedarray/Float32Array,f32>~anonymous|0 (; 102 ;) (type $FUNCSIG$fffii) (param $0 f32) (param $1 f32) (param $2 i32) (param $3 i32) (result f32) + (func $std/typedarray/testReduce<~lib/typedarray/Float32Array,f32>~anonymous|0 (; 101 ;) (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 (; 103 ;) (type $FUNCSIG$fiif) (param $0 i32) (param $1 i32) (param $2 f32) (result f32) + (func $~lib/typedarray/Float32Array#reduce (; 102 ;) (type $FUNCSIG$fiif) (param $0 i32) (param $1 i32) (param $2 f32) (result f32) (local $3 i32) (local $4 i32) (local $5 f32) @@ -5468,7 +4245,7 @@ end local.get $5 ) - (func $std/typedarray/testReduce<~lib/typedarray/Float32Array,f32> (; 104 ;) (type $FUNCSIG$v) + (func $std/typedarray/testReduce<~lib/typedarray/Float32Array,f32> (; 103 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 f32) i32.const 0 @@ -5505,12 +4282,12 @@ unreachable end ) - (func $std/typedarray/testReduce<~lib/typedarray/Float64Array,f64>~anonymous|0 (; 105 ;) (type $FUNCSIG$dddii) (param $0 f64) (param $1 f64) (param $2 i32) (param $3 i32) (result f64) + (func $std/typedarray/testReduce<~lib/typedarray/Float64Array,f64>~anonymous|0 (; 104 ;) (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 (; 106 ;) (type $FUNCSIG$diid) (param $0 i32) (param $1 i32) (param $2 f64) (result f64) + (func $~lib/typedarray/Float64Array#reduce (; 105 ;) (type $FUNCSIG$diid) (param $0 i32) (param $1 i32) (param $2 f64) (result f64) (local $3 i32) (local $4 i32) (local $5 f64) @@ -5567,7 +4344,7 @@ end local.get $5 ) - (func $std/typedarray/testReduce<~lib/typedarray/Float64Array,f64> (; 107 ;) (type $FUNCSIG$v) + (func $std/typedarray/testReduce<~lib/typedarray/Float64Array,f64> (; 106 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 f64) i32.const 0 @@ -5604,12 +4381,12 @@ unreachable end ) - (func $std/typedarray/testReduceRight<~lib/typedarray/Int8Array,i8>~anonymous|0 (; 108 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (func $std/typedarray/testReduceRight<~lib/typedarray/Int8Array,i8>~anonymous|0 (; 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 $~lib/typedarray/Int8Array#reduceRight (; 109 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/typedarray/Int8Array#reduceRight (; 108 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -5663,7 +4440,7 @@ end local.get $3 ) - (func $std/typedarray/testReduceRight<~lib/typedarray/Int8Array,i8> (; 110 ;) (type $FUNCSIG$v) + (func $std/typedarray/testReduceRight<~lib/typedarray/Int8Array,i8> (; 109 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) i32.const 0 @@ -5704,12 +4481,12 @@ unreachable end ) - (func $std/typedarray/testReduceRight<~lib/typedarray/Uint8Array,u8>~anonymous|0 (; 111 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (func $std/typedarray/testReduceRight<~lib/typedarray/Uint8Array,u8>~anonymous|0 (; 110 ;) (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 (; 112 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/typedarray/Uint8Array#reduceRight (; 111 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -5763,7 +4540,7 @@ end local.get $3 ) - (func $std/typedarray/testReduceRight<~lib/typedarray/Uint8Array,u8> (; 113 ;) (type $FUNCSIG$v) + (func $std/typedarray/testReduceRight<~lib/typedarray/Uint8Array,u8> (; 112 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) i32.const 0 @@ -5802,12 +4579,12 @@ unreachable end ) - (func $std/typedarray/testReduceRight<~lib/typedarray/Uint8ClampedArray,u8>~anonymous|0 (; 114 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (func $std/typedarray/testReduceRight<~lib/typedarray/Uint8ClampedArray,u8>~anonymous|0 (; 113 ;) (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 (; 115 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/typedarray/Uint8ClampedArray#reduceRight (; 114 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -5861,7 +4638,7 @@ end local.get $3 ) - (func $std/typedarray/testReduceRight<~lib/typedarray/Uint8ClampedArray,u8> (; 116 ;) (type $FUNCSIG$v) + (func $std/typedarray/testReduceRight<~lib/typedarray/Uint8ClampedArray,u8> (; 115 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) i32.const 0 @@ -5900,12 +4677,12 @@ unreachable end ) - (func $std/typedarray/testReduceRight<~lib/typedarray/Int16Array,i16>~anonymous|0 (; 117 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (func $std/typedarray/testReduceRight<~lib/typedarray/Int16Array,i16>~anonymous|0 (; 116 ;) (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 (; 118 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/typedarray/Int16Array#reduceRight (; 117 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -5959,7 +4736,7 @@ end local.get $3 ) - (func $std/typedarray/testReduceRight<~lib/typedarray/Int16Array,i16> (; 119 ;) (type $FUNCSIG$v) + (func $std/typedarray/testReduceRight<~lib/typedarray/Int16Array,i16> (; 118 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) i32.const 0 @@ -6000,12 +4777,12 @@ unreachable end ) - (func $std/typedarray/testReduceRight<~lib/typedarray/Uint16Array,u16>~anonymous|0 (; 120 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (func $std/typedarray/testReduceRight<~lib/typedarray/Uint16Array,u16>~anonymous|0 (; 119 ;) (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 (; 121 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/typedarray/Uint16Array#reduceRight (; 120 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -6059,7 +4836,7 @@ end local.get $3 ) - (func $std/typedarray/testReduceRight<~lib/typedarray/Uint16Array,u16> (; 122 ;) (type $FUNCSIG$v) + (func $std/typedarray/testReduceRight<~lib/typedarray/Uint16Array,u16> (; 121 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) i32.const 0 @@ -6098,12 +4875,12 @@ unreachable end ) - (func $std/typedarray/testReduceRight<~lib/typedarray/Int32Array,i32>~anonymous|0 (; 123 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (func $std/typedarray/testReduceRight<~lib/typedarray/Int32Array,i32>~anonymous|0 (; 122 ;) (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 (; 124 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/typedarray/Int32Array#reduceRight (; 123 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -6157,7 +4934,7 @@ end local.get $3 ) - (func $std/typedarray/testReduceRight<~lib/typedarray/Int32Array,i32> (; 125 ;) (type $FUNCSIG$v) + (func $std/typedarray/testReduceRight<~lib/typedarray/Int32Array,i32> (; 124 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) i32.const 0 @@ -6194,12 +4971,12 @@ unreachable end ) - (func $std/typedarray/testReduceRight<~lib/typedarray/Uint32Array,u32>~anonymous|0 (; 126 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (func $std/typedarray/testReduceRight<~lib/typedarray/Uint32Array,u32>~anonymous|0 (; 125 ;) (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 (; 127 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/typedarray/Uint32Array#reduceRight (; 126 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -6253,7 +5030,7 @@ end local.get $3 ) - (func $std/typedarray/testReduceRight<~lib/typedarray/Uint32Array,u32> (; 128 ;) (type $FUNCSIG$v) + (func $std/typedarray/testReduceRight<~lib/typedarray/Uint32Array,u32> (; 127 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) i32.const 0 @@ -6290,12 +5067,12 @@ unreachable end ) - (func $std/typedarray/testReduceRight<~lib/typedarray/Int64Array,i64>~anonymous|0 (; 129 ;) (type $FUNCSIG$jjjii) (param $0 i64) (param $1 i64) (param $2 i32) (param $3 i32) (result i64) + (func $std/typedarray/testReduceRight<~lib/typedarray/Int64Array,i64>~anonymous|0 (; 128 ;) (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 (; 130 ;) (type $FUNCSIG$jiij) (param $0 i32) (param $1 i32) (param $2 i64) (result i64) + (func $~lib/typedarray/Int64Array#reduceRight (; 129 ;) (type $FUNCSIG$jiij) (param $0 i32) (param $1 i32) (param $2 i64) (result i64) (local $3 i32) (local $4 i32) (local $5 i64) @@ -6349,7 +5126,7 @@ end local.get $5 ) - (func $std/typedarray/testReduceRight<~lib/typedarray/Int64Array,i64> (; 131 ;) (type $FUNCSIG$v) + (func $std/typedarray/testReduceRight<~lib/typedarray/Int64Array,i64> (; 130 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i64) i32.const 0 @@ -6386,12 +5163,12 @@ unreachable end ) - (func $std/typedarray/testReduceRight<~lib/typedarray/Uint64Array,u64>~anonymous|0 (; 132 ;) (type $FUNCSIG$jjjii) (param $0 i64) (param $1 i64) (param $2 i32) (param $3 i32) (result i64) + (func $std/typedarray/testReduceRight<~lib/typedarray/Uint64Array,u64>~anonymous|0 (; 131 ;) (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 (; 133 ;) (type $FUNCSIG$jiij) (param $0 i32) (param $1 i32) (param $2 i64) (result i64) + (func $~lib/typedarray/Uint64Array#reduceRight (; 132 ;) (type $FUNCSIG$jiij) (param $0 i32) (param $1 i32) (param $2 i64) (result i64) (local $3 i32) (local $4 i32) (local $5 i64) @@ -6445,7 +5222,7 @@ end local.get $5 ) - (func $std/typedarray/testReduceRight<~lib/typedarray/Uint64Array,u64> (; 134 ;) (type $FUNCSIG$v) + (func $std/typedarray/testReduceRight<~lib/typedarray/Uint64Array,u64> (; 133 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i64) i32.const 0 @@ -6482,12 +5259,12 @@ unreachable end ) - (func $std/typedarray/testReduceRight<~lib/typedarray/Float32Array,f32>~anonymous|0 (; 135 ;) (type $FUNCSIG$fffii) (param $0 f32) (param $1 f32) (param $2 i32) (param $3 i32) (result f32) + (func $std/typedarray/testReduceRight<~lib/typedarray/Float32Array,f32>~anonymous|0 (; 134 ;) (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 (; 136 ;) (type $FUNCSIG$fiif) (param $0 i32) (param $1 i32) (param $2 f32) (result f32) + (func $~lib/typedarray/Float32Array#reduceRight (; 135 ;) (type $FUNCSIG$fiif) (param $0 i32) (param $1 i32) (param $2 f32) (result f32) (local $3 i32) (local $4 i32) (local $5 f32) @@ -6541,7 +5318,7 @@ end local.get $5 ) - (func $std/typedarray/testReduceRight<~lib/typedarray/Float32Array,f32> (; 137 ;) (type $FUNCSIG$v) + (func $std/typedarray/testReduceRight<~lib/typedarray/Float32Array,f32> (; 136 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 f32) i32.const 0 @@ -6578,12 +5355,12 @@ unreachable end ) - (func $std/typedarray/testReduceRight<~lib/typedarray/Float64Array,f64>~anonymous|0 (; 138 ;) (type $FUNCSIG$dddii) (param $0 f64) (param $1 f64) (param $2 i32) (param $3 i32) (result f64) + (func $std/typedarray/testReduceRight<~lib/typedarray/Float64Array,f64>~anonymous|0 (; 137 ;) (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 (; 139 ;) (type $FUNCSIG$diid) (param $0 i32) (param $1 i32) (param $2 f64) (result f64) + (func $~lib/typedarray/Float64Array#reduceRight (; 138 ;) (type $FUNCSIG$diid) (param $0 i32) (param $1 i32) (param $2 f64) (result f64) (local $3 i32) (local $4 i32) (local $5 f64) @@ -6637,7 +5414,7 @@ end local.get $5 ) - (func $std/typedarray/testReduceRight<~lib/typedarray/Float64Array,f64> (; 140 ;) (type $FUNCSIG$v) + (func $std/typedarray/testReduceRight<~lib/typedarray/Float64Array,f64> (; 139 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 f64) i32.const 0 @@ -6674,12 +5451,12 @@ unreachable end ) - (func $std/typedarray/testArrayMap<~lib/typedarray/Int8Array,i8>~anonymous|0 (; 141 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayMap<~lib/typedarray/Int8Array,i8>~anonymous|0 (; 140 ;) (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 (; 142 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Int8Array#map (; 141 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -6744,7 +5521,7 @@ end local.get $6 ) - (func $std/typedarray/testArrayMap<~lib/typedarray/Int8Array,i8> (; 143 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayMap<~lib/typedarray/Int8Array,i8> (; 142 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) i32.const 0 @@ -6810,12 +5587,12 @@ unreachable end ) - (func $std/typedarray/testArrayMap<~lib/typedarray/Uint8Array,u8>~anonymous|0 (; 144 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayMap<~lib/typedarray/Uint8Array,u8>~anonymous|0 (; 143 ;) (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 (; 145 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Uint8Array#map (; 144 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -6880,7 +5657,7 @@ end local.get $6 ) - (func $~lib/typedarray/Uint8Array#__get (; 146 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Uint8Array#__get (; 145 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $1 local.get $0 i32.load offset=8 @@ -6899,7 +5676,7 @@ i32.add i32.load8_u ) - (func $std/typedarray/testArrayMap<~lib/typedarray/Uint8Array,u8> (; 147 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayMap<~lib/typedarray/Uint8Array,u8> (; 146 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) i32.const 0 @@ -6965,12 +5742,12 @@ unreachable end ) - (func $std/typedarray/testArrayMap<~lib/typedarray/Uint8ClampedArray,u8>~anonymous|0 (; 148 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayMap<~lib/typedarray/Uint8ClampedArray,u8>~anonymous|0 (; 147 ;) (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 (; 149 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Uint8ClampedArray#map (; 148 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -7035,7 +5812,7 @@ end local.get $6 ) - (func $std/typedarray/testArrayMap<~lib/typedarray/Uint8ClampedArray,u8> (; 150 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayMap<~lib/typedarray/Uint8ClampedArray,u8> (; 149 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) i32.const 0 @@ -7101,12 +5878,12 @@ unreachable end ) - (func $std/typedarray/testArrayMap<~lib/typedarray/Int16Array,i16>~anonymous|0 (; 151 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayMap<~lib/typedarray/Int16Array,i16>~anonymous|0 (; 150 ;) (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 (; 152 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Int16Array#map (; 151 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -7171,7 +5948,7 @@ end local.get $6 ) - (func $~lib/typedarray/Int16Array#__get (; 153 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Int16Array#__get (; 152 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $1 local.get $0 i32.load offset=8 @@ -7194,7 +5971,7 @@ i32.add i32.load16_s ) - (func $std/typedarray/testArrayMap<~lib/typedarray/Int16Array,i16> (; 154 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayMap<~lib/typedarray/Int16Array,i16> (; 153 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) i32.const 0 @@ -7260,12 +6037,12 @@ unreachable end ) - (func $std/typedarray/testArrayMap<~lib/typedarray/Uint16Array,u16>~anonymous|0 (; 155 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayMap<~lib/typedarray/Uint16Array,u16>~anonymous|0 (; 154 ;) (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 (; 156 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Uint16Array#map (; 155 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -7330,7 +6107,7 @@ end local.get $6 ) - (func $~lib/typedarray/Uint16Array#__get (; 157 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Uint16Array#__get (; 156 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $1 local.get $0 i32.load offset=8 @@ -7353,7 +6130,7 @@ i32.add i32.load16_u ) - (func $std/typedarray/testArrayMap<~lib/typedarray/Uint16Array,u16> (; 158 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayMap<~lib/typedarray/Uint16Array,u16> (; 157 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) i32.const 0 @@ -7419,12 +6196,12 @@ unreachable end ) - (func $std/typedarray/testArrayMap<~lib/typedarray/Int32Array,i32>~anonymous|0 (; 159 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayMap<~lib/typedarray/Int32Array,i32>~anonymous|0 (; 158 ;) (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 (; 160 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Int32Array#map (; 159 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -7489,7 +6266,7 @@ end local.get $6 ) - (func $std/typedarray/testArrayMap<~lib/typedarray/Int32Array,i32> (; 161 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayMap<~lib/typedarray/Int32Array,i32> (; 160 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) i32.const 0 @@ -7555,12 +6332,12 @@ unreachable end ) - (func $std/typedarray/testArrayMap<~lib/typedarray/Uint32Array,u32>~anonymous|0 (; 162 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayMap<~lib/typedarray/Uint32Array,u32>~anonymous|0 (; 161 ;) (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 (; 163 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Uint32Array#map (; 162 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -7625,7 +6402,7 @@ end local.get $6 ) - (func $~lib/typedarray/Uint32Array#__get (; 164 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Uint32Array#__get (; 163 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $1 local.get $0 i32.load offset=8 @@ -7648,7 +6425,7 @@ i32.add i32.load ) - (func $std/typedarray/testArrayMap<~lib/typedarray/Uint32Array,u32> (; 165 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayMap<~lib/typedarray/Uint32Array,u32> (; 164 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) i32.const 0 @@ -7714,12 +6491,12 @@ unreachable end ) - (func $std/typedarray/testArrayMap<~lib/typedarray/Int64Array,i64>~anonymous|0 (; 166 ;) (type $FUNCSIG$jjii) (param $0 i64) (param $1 i32) (param $2 i32) (result i64) + (func $std/typedarray/testArrayMap<~lib/typedarray/Int64Array,i64>~anonymous|0 (; 165 ;) (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 (; 167 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Int64Array#map (; 166 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -7784,7 +6561,7 @@ end local.get $6 ) - (func $~lib/typedarray/Int64Array#__get (; 168 ;) (type $FUNCSIG$jii) (param $0 i32) (param $1 i32) (result i64) + (func $~lib/typedarray/Int64Array#__get (; 167 ;) (type $FUNCSIG$jii) (param $0 i32) (param $1 i32) (result i64) local.get $1 local.get $0 i32.load offset=8 @@ -7807,7 +6584,7 @@ i32.add i64.load ) - (func $std/typedarray/testArrayMap<~lib/typedarray/Int64Array,i64> (; 169 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayMap<~lib/typedarray/Int64Array,i64> (; 168 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) i32.const 0 @@ -7873,12 +6650,12 @@ unreachable end ) - (func $std/typedarray/testArrayMap<~lib/typedarray/Uint64Array,u64>~anonymous|0 (; 170 ;) (type $FUNCSIG$jjii) (param $0 i64) (param $1 i32) (param $2 i32) (result i64) + (func $std/typedarray/testArrayMap<~lib/typedarray/Uint64Array,u64>~anonymous|0 (; 169 ;) (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 (; 171 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Uint64Array#map (; 170 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -7943,7 +6720,7 @@ end local.get $6 ) - (func $~lib/typedarray/Uint64Array#__get (; 172 ;) (type $FUNCSIG$jii) (param $0 i32) (param $1 i32) (result i64) + (func $~lib/typedarray/Uint64Array#__get (; 171 ;) (type $FUNCSIG$jii) (param $0 i32) (param $1 i32) (result i64) local.get $1 local.get $0 i32.load offset=8 @@ -7966,7 +6743,7 @@ i32.add i64.load ) - (func $std/typedarray/testArrayMap<~lib/typedarray/Uint64Array,u64> (; 173 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayMap<~lib/typedarray/Uint64Array,u64> (; 172 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) i32.const 0 @@ -8032,12 +6809,12 @@ unreachable end ) - (func $std/typedarray/testArrayMap<~lib/typedarray/Float32Array,f32>~anonymous|0 (; 174 ;) (type $FUNCSIG$ffii) (param $0 f32) (param $1 i32) (param $2 i32) (result f32) + (func $std/typedarray/testArrayMap<~lib/typedarray/Float32Array,f32>~anonymous|0 (; 173 ;) (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 (; 175 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Float32Array#map (; 174 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -8102,7 +6879,7 @@ end local.get $6 ) - (func $~lib/typedarray/Float32Array#__get (; 176 ;) (type $FUNCSIG$fii) (param $0 i32) (param $1 i32) (result f32) + (func $~lib/typedarray/Float32Array#__get (; 175 ;) (type $FUNCSIG$fii) (param $0 i32) (param $1 i32) (result f32) local.get $1 local.get $0 i32.load offset=8 @@ -8125,7 +6902,7 @@ i32.add f32.load ) - (func $std/typedarray/testArrayMap<~lib/typedarray/Float32Array,f32> (; 177 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayMap<~lib/typedarray/Float32Array,f32> (; 176 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) i32.const 0 @@ -8191,12 +6968,12 @@ unreachable end ) - (func $std/typedarray/testArrayMap<~lib/typedarray/Float64Array,f64>~anonymous|0 (; 178 ;) (type $FUNCSIG$ddii) (param $0 f64) (param $1 i32) (param $2 i32) (result f64) + (func $std/typedarray/testArrayMap<~lib/typedarray/Float64Array,f64>~anonymous|0 (; 177 ;) (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 (; 179 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Float64Array#map (; 178 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -8261,7 +7038,7 @@ end local.get $6 ) - (func $std/typedarray/testArrayMap<~lib/typedarray/Float64Array,f64> (; 180 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayMap<~lib/typedarray/Float64Array,f64> (; 179 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) i32.const 0 @@ -8327,7 +7104,7 @@ unreachable end ) - (func $std/typedarray/testArraySome<~lib/typedarray/Int8Array,i8>~anonymous|0 (; 181 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArraySome<~lib/typedarray/Int8Array,i8>~anonymous|0 (; 180 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 i32.const 24 i32.shl @@ -8336,7 +7113,7 @@ i32.const 2 i32.eq ) - (func $~lib/typedarray/Int8Array#some (; 182 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Int8Array#some (; 181 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -8396,7 +7173,7 @@ i32.const 0 end ) - (func $std/typedarray/testArraySome<~lib/typedarray/Int8Array,i8>~anonymous|1 (; 183 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArraySome<~lib/typedarray/Int8Array,i8>~anonymous|1 (; 182 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 i32.const 24 i32.shl @@ -8405,7 +7182,7 @@ i32.const 0 i32.eq ) - (func $std/typedarray/testArraySome<~lib/typedarray/Int8Array,i8> (; 184 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArraySome<~lib/typedarray/Int8Array,i8> (; 183 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -8459,14 +7236,14 @@ unreachable end ) - (func $std/typedarray/testArraySome<~lib/typedarray/Uint8Array,u8>~anonymous|0 (; 185 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArraySome<~lib/typedarray/Uint8Array,u8>~anonymous|0 (; 184 ;) (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 (; 186 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Uint8Array#some (; 185 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -8526,14 +7303,14 @@ i32.const 0 end ) - (func $std/typedarray/testArraySome<~lib/typedarray/Uint8Array,u8>~anonymous|1 (; 187 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArraySome<~lib/typedarray/Uint8Array,u8>~anonymous|1 (; 186 ;) (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<~lib/typedarray/Uint8Array,u8> (; 188 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArraySome<~lib/typedarray/Uint8Array,u8> (; 187 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -8587,14 +7364,14 @@ unreachable end ) - (func $std/typedarray/testArraySome<~lib/typedarray/Uint8ClampedArray,u8>~anonymous|0 (; 189 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArraySome<~lib/typedarray/Uint8ClampedArray,u8>~anonymous|0 (; 188 ;) (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 (; 190 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Uint8ClampedArray#some (; 189 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -8654,14 +7431,14 @@ i32.const 0 end ) - (func $std/typedarray/testArraySome<~lib/typedarray/Uint8ClampedArray,u8>~anonymous|1 (; 191 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArraySome<~lib/typedarray/Uint8ClampedArray,u8>~anonymous|1 (; 190 ;) (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<~lib/typedarray/Uint8ClampedArray,u8> (; 192 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArraySome<~lib/typedarray/Uint8ClampedArray,u8> (; 191 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -8715,7 +7492,7 @@ unreachable end ) - (func $std/typedarray/testArraySome<~lib/typedarray/Int16Array,i16>~anonymous|0 (; 193 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArraySome<~lib/typedarray/Int16Array,i16>~anonymous|0 (; 192 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 i32.const 16 i32.shl @@ -8724,7 +7501,7 @@ i32.const 2 i32.eq ) - (func $~lib/typedarray/Int16Array#some (; 194 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Int16Array#some (; 193 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -8784,7 +7561,7 @@ i32.const 0 end ) - (func $std/typedarray/testArraySome<~lib/typedarray/Int16Array,i16>~anonymous|1 (; 195 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArraySome<~lib/typedarray/Int16Array,i16>~anonymous|1 (; 194 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 i32.const 16 i32.shl @@ -8793,7 +7570,7 @@ i32.const 0 i32.eq ) - (func $std/typedarray/testArraySome<~lib/typedarray/Int16Array,i16> (; 196 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArraySome<~lib/typedarray/Int16Array,i16> (; 195 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -8847,14 +7624,14 @@ unreachable end ) - (func $std/typedarray/testArraySome<~lib/typedarray/Uint16Array,u16>~anonymous|0 (; 197 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArraySome<~lib/typedarray/Uint16Array,u16>~anonymous|0 (; 196 ;) (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 (; 198 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Uint16Array#some (; 197 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -8914,14 +7691,14 @@ i32.const 0 end ) - (func $std/typedarray/testArraySome<~lib/typedarray/Uint16Array,u16>~anonymous|1 (; 199 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArraySome<~lib/typedarray/Uint16Array,u16>~anonymous|1 (; 198 ;) (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<~lib/typedarray/Uint16Array,u16> (; 200 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArraySome<~lib/typedarray/Uint16Array,u16> (; 199 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -8975,12 +7752,12 @@ unreachable end ) - (func $std/typedarray/testArraySome<~lib/typedarray/Int32Array,i32>~anonymous|0 (; 201 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArraySome<~lib/typedarray/Int32Array,i32>~anonymous|0 (; 200 ;) (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 (; 202 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Int32Array#some (; 201 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -9040,12 +7817,12 @@ i32.const 0 end ) - (func $std/typedarray/testArraySome<~lib/typedarray/Int32Array,i32>~anonymous|1 (; 203 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArraySome<~lib/typedarray/Int32Array,i32>~anonymous|1 (; 202 ;) (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<~lib/typedarray/Int32Array,i32> (; 204 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArraySome<~lib/typedarray/Int32Array,i32> (; 203 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -9099,12 +7876,12 @@ unreachable end ) - (func $std/typedarray/testArraySome<~lib/typedarray/Uint32Array,u32>~anonymous|0 (; 205 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArraySome<~lib/typedarray/Uint32Array,u32>~anonymous|0 (; 204 ;) (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 (; 206 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Uint32Array#some (; 205 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -9164,12 +7941,12 @@ i32.const 0 end ) - (func $std/typedarray/testArraySome<~lib/typedarray/Uint32Array,u32>~anonymous|1 (; 207 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArraySome<~lib/typedarray/Uint32Array,u32>~anonymous|1 (; 206 ;) (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<~lib/typedarray/Uint32Array,u32> (; 208 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArraySome<~lib/typedarray/Uint32Array,u32> (; 207 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -9223,12 +8000,12 @@ unreachable end ) - (func $std/typedarray/testArraySome<~lib/typedarray/Int64Array,i64>~anonymous|0 (; 209 ;) (type $FUNCSIG$ijii) (param $0 i64) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArraySome<~lib/typedarray/Int64Array,i64>~anonymous|0 (; 208 ;) (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 (; 210 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Int64Array#some (; 209 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -9288,12 +8065,12 @@ i32.const 0 end ) - (func $std/typedarray/testArraySome<~lib/typedarray/Int64Array,i64>~anonymous|1 (; 211 ;) (type $FUNCSIG$ijii) (param $0 i64) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArraySome<~lib/typedarray/Int64Array,i64>~anonymous|1 (; 210 ;) (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<~lib/typedarray/Int64Array,i64> (; 212 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArraySome<~lib/typedarray/Int64Array,i64> (; 211 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -9347,12 +8124,12 @@ unreachable end ) - (func $std/typedarray/testArraySome<~lib/typedarray/Uint64Array,u64>~anonymous|0 (; 213 ;) (type $FUNCSIG$ijii) (param $0 i64) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArraySome<~lib/typedarray/Uint64Array,u64>~anonymous|0 (; 212 ;) (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 (; 214 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Uint64Array#some (; 213 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -9412,12 +8189,12 @@ i32.const 0 end ) - (func $std/typedarray/testArraySome<~lib/typedarray/Uint64Array,u64>~anonymous|1 (; 215 ;) (type $FUNCSIG$ijii) (param $0 i64) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArraySome<~lib/typedarray/Uint64Array,u64>~anonymous|1 (; 214 ;) (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<~lib/typedarray/Uint64Array,u64> (; 216 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArraySome<~lib/typedarray/Uint64Array,u64> (; 215 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -9471,12 +8248,12 @@ unreachable end ) - (func $std/typedarray/testArraySome<~lib/typedarray/Float32Array,f32>~anonymous|0 (; 217 ;) (type $FUNCSIG$ifii) (param $0 f32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArraySome<~lib/typedarray/Float32Array,f32>~anonymous|0 (; 216 ;) (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 (; 218 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Float32Array#some (; 217 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -9536,12 +8313,12 @@ i32.const 0 end ) - (func $std/typedarray/testArraySome<~lib/typedarray/Float32Array,f32>~anonymous|1 (; 219 ;) (type $FUNCSIG$ifii) (param $0 f32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArraySome<~lib/typedarray/Float32Array,f32>~anonymous|1 (; 218 ;) (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<~lib/typedarray/Float32Array,f32> (; 220 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArraySome<~lib/typedarray/Float32Array,f32> (; 219 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -9595,12 +8372,12 @@ unreachable end ) - (func $std/typedarray/testArraySome<~lib/typedarray/Float64Array,f64>~anonymous|0 (; 221 ;) (type $FUNCSIG$idii) (param $0 f64) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArraySome<~lib/typedarray/Float64Array,f64>~anonymous|0 (; 220 ;) (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 (; 222 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Float64Array#some (; 221 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -9660,12 +8437,12 @@ i32.const 0 end ) - (func $std/typedarray/testArraySome<~lib/typedarray/Float64Array,f64>~anonymous|1 (; 223 ;) (type $FUNCSIG$idii) (param $0 f64) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArraySome<~lib/typedarray/Float64Array,f64>~anonymous|1 (; 222 ;) (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<~lib/typedarray/Float64Array,f64> (; 224 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArraySome<~lib/typedarray/Float64Array,f64> (; 223 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -9719,7 +8496,7 @@ unreachable end ) - (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Int8Array,i8>~anonymous|0 (; 225 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Int8Array,i8>~anonymous|0 (; 224 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 i32.const 24 i32.shl @@ -9728,7 +8505,7 @@ i32.const 2 i32.eq ) - (func $~lib/typedarray/Int8Array#findIndex (; 226 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Int8Array#findIndex (; 225 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -9788,7 +8565,7 @@ i32.const -1 end ) - (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Int8Array,i8>~anonymous|1 (; 227 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Int8Array,i8>~anonymous|1 (; 226 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 i32.const 24 i32.shl @@ -9797,7 +8574,7 @@ i32.const 4 i32.eq ) - (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Int8Array,i8> (; 228 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Int8Array,i8> (; 227 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -9850,14 +8627,14 @@ unreachable end ) - (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint8Array,u8>~anonymous|0 (; 229 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint8Array,u8>~anonymous|0 (; 228 ;) (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 (; 230 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Uint8Array#findIndex (; 229 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -9917,14 +8694,14 @@ i32.const -1 end ) - (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint8Array,u8>~anonymous|1 (; 231 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint8Array,u8>~anonymous|1 (; 230 ;) (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<~lib/typedarray/Uint8Array,u8> (; 232 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint8Array,u8> (; 231 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -9977,14 +8754,14 @@ unreachable end ) - (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint8ClampedArray,u8>~anonymous|0 (; 233 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint8ClampedArray,u8>~anonymous|0 (; 232 ;) (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 (; 234 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Uint8ClampedArray#findIndex (; 233 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -10044,14 +8821,14 @@ i32.const -1 end ) - (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint8ClampedArray,u8>~anonymous|1 (; 235 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint8ClampedArray,u8>~anonymous|1 (; 234 ;) (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<~lib/typedarray/Uint8ClampedArray,u8> (; 236 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint8ClampedArray,u8> (; 235 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -10104,7 +8881,7 @@ unreachable end ) - (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Int16Array,i16>~anonymous|0 (; 237 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Int16Array,i16>~anonymous|0 (; 236 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 i32.const 16 i32.shl @@ -10113,7 +8890,7 @@ i32.const 2 i32.eq ) - (func $~lib/typedarray/Int16Array#findIndex (; 238 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Int16Array#findIndex (; 237 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -10173,7 +8950,7 @@ i32.const -1 end ) - (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Int16Array,i16>~anonymous|1 (; 239 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Int16Array,i16>~anonymous|1 (; 238 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 i32.const 16 i32.shl @@ -10182,7 +8959,7 @@ i32.const 4 i32.eq ) - (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Int16Array,i16> (; 240 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Int16Array,i16> (; 239 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -10235,14 +9012,14 @@ unreachable end ) - (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint16Array,u16>~anonymous|0 (; 241 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint16Array,u16>~anonymous|0 (; 240 ;) (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 (; 242 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Uint16Array#findIndex (; 241 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -10302,14 +9079,14 @@ i32.const -1 end ) - (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint16Array,u16>~anonymous|1 (; 243 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint16Array,u16>~anonymous|1 (; 242 ;) (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<~lib/typedarray/Uint16Array,u16> (; 244 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint16Array,u16> (; 243 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -10362,12 +9139,12 @@ unreachable end ) - (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Int32Array,i32>~anonymous|0 (; 245 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Int32Array,i32>~anonymous|0 (; 244 ;) (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 (; 246 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Int32Array#findIndex (; 245 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -10427,12 +9204,12 @@ i32.const -1 end ) - (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Int32Array,i32>~anonymous|1 (; 247 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Int32Array,i32>~anonymous|1 (; 246 ;) (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<~lib/typedarray/Int32Array,i32> (; 248 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Int32Array,i32> (; 247 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -10485,12 +9262,12 @@ unreachable end ) - (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint32Array,u32>~anonymous|0 (; 249 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint32Array,u32>~anonymous|0 (; 248 ;) (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 (; 250 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Uint32Array#findIndex (; 249 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -10550,12 +9327,12 @@ i32.const -1 end ) - (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint32Array,u32>~anonymous|1 (; 251 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint32Array,u32>~anonymous|1 (; 250 ;) (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<~lib/typedarray/Uint32Array,u32> (; 252 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint32Array,u32> (; 251 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -10608,12 +9385,12 @@ unreachable end ) - (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Int64Array,i64>~anonymous|0 (; 253 ;) (type $FUNCSIG$ijii) (param $0 i64) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Int64Array,i64>~anonymous|0 (; 252 ;) (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 (; 254 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Int64Array#findIndex (; 253 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -10673,12 +9450,12 @@ i32.const -1 end ) - (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Int64Array,i64>~anonymous|1 (; 255 ;) (type $FUNCSIG$ijii) (param $0 i64) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Int64Array,i64>~anonymous|1 (; 254 ;) (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<~lib/typedarray/Int64Array,i64> (; 256 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Int64Array,i64> (; 255 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -10731,12 +9508,12 @@ unreachable end ) - (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint64Array,u64>~anonymous|0 (; 257 ;) (type $FUNCSIG$ijii) (param $0 i64) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint64Array,u64>~anonymous|0 (; 256 ;) (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 (; 258 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Uint64Array#findIndex (; 257 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -10796,12 +9573,12 @@ i32.const -1 end ) - (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint64Array,u64>~anonymous|1 (; 259 ;) (type $FUNCSIG$ijii) (param $0 i64) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint64Array,u64>~anonymous|1 (; 258 ;) (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<~lib/typedarray/Uint64Array,u64> (; 260 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint64Array,u64> (; 259 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -10854,12 +9631,12 @@ unreachable end ) - (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Float32Array,f32>~anonymous|0 (; 261 ;) (type $FUNCSIG$ifii) (param $0 f32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Float32Array,f32>~anonymous|0 (; 260 ;) (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 (; 262 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Float32Array#findIndex (; 261 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -10919,12 +9696,12 @@ i32.const -1 end ) - (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Float32Array,f32>~anonymous|1 (; 263 ;) (type $FUNCSIG$ifii) (param $0 f32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Float32Array,f32>~anonymous|1 (; 262 ;) (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<~lib/typedarray/Float32Array,f32> (; 264 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Float32Array,f32> (; 263 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -10977,12 +9754,12 @@ unreachable end ) - (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Float64Array,f64>~anonymous|0 (; 265 ;) (type $FUNCSIG$idii) (param $0 f64) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Float64Array,f64>~anonymous|0 (; 264 ;) (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 (; 266 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Float64Array#findIndex (; 265 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -11042,12 +9819,12 @@ i32.const -1 end ) - (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Float64Array,f64>~anonymous|1 (; 267 ;) (type $FUNCSIG$idii) (param $0 f64) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Float64Array,f64>~anonymous|1 (; 266 ;) (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<~lib/typedarray/Float64Array,f64> (; 268 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Float64Array,f64> (; 267 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -11100,7 +9877,7 @@ unreachable end ) - (func $std/typedarray/testArrayEvery<~lib/typedarray/Int8Array,i8>~anonymous|0 (; 269 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayEvery<~lib/typedarray/Int8Array,i8>~anonymous|0 (; 268 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 i32.const 24 i32.shl @@ -11111,7 +9888,7 @@ i32.const 0 i32.eq ) - (func $~lib/typedarray/Int8Array#every (; 270 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Int8Array#every (; 269 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -11178,7 +9955,7 @@ i32.const 1 end ) - (func $std/typedarray/testArrayEvery<~lib/typedarray/Int8Array,i8>~anonymous|1 (; 271 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayEvery<~lib/typedarray/Int8Array,i8>~anonymous|1 (; 270 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 i32.const 24 i32.shl @@ -11187,7 +9964,7 @@ i32.const 2 i32.eq ) - (func $std/typedarray/testArrayEvery<~lib/typedarray/Int8Array,i8> (; 272 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayEvery<~lib/typedarray/Int8Array,i8> (; 271 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -11241,7 +10018,7 @@ unreachable end ) - (func $std/typedarray/testArrayEvery<~lib/typedarray/Uint8Array,u8>~anonymous|0 (; 273 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayEvery<~lib/typedarray/Uint8Array,u8>~anonymous|0 (; 272 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 i32.const 255 i32.and @@ -11250,7 +10027,7 @@ i32.const 0 i32.eq ) - (func $~lib/typedarray/Uint8Array#every (; 274 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Uint8Array#every (; 273 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -11317,14 +10094,14 @@ i32.const 1 end ) - (func $std/typedarray/testArrayEvery<~lib/typedarray/Uint8Array,u8>~anonymous|1 (; 275 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayEvery<~lib/typedarray/Uint8Array,u8>~anonymous|1 (; 274 ;) (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<~lib/typedarray/Uint8Array,u8> (; 276 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayEvery<~lib/typedarray/Uint8Array,u8> (; 275 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -11378,7 +10155,7 @@ unreachable end ) - (func $std/typedarray/testArrayEvery<~lib/typedarray/Uint8ClampedArray,u8>~anonymous|0 (; 277 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayEvery<~lib/typedarray/Uint8ClampedArray,u8>~anonymous|0 (; 276 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 i32.const 255 i32.and @@ -11387,7 +10164,7 @@ i32.const 0 i32.eq ) - (func $~lib/typedarray/Uint8ClampedArray#every (; 278 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Uint8ClampedArray#every (; 277 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -11454,14 +10231,14 @@ i32.const 1 end ) - (func $std/typedarray/testArrayEvery<~lib/typedarray/Uint8ClampedArray,u8>~anonymous|1 (; 279 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayEvery<~lib/typedarray/Uint8ClampedArray,u8>~anonymous|1 (; 278 ;) (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<~lib/typedarray/Uint8ClampedArray,u8> (; 280 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayEvery<~lib/typedarray/Uint8ClampedArray,u8> (; 279 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -11515,7 +10292,7 @@ unreachable end ) - (func $std/typedarray/testArrayEvery<~lib/typedarray/Int16Array,i16>~anonymous|0 (; 281 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayEvery<~lib/typedarray/Int16Array,i16>~anonymous|0 (; 280 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 i32.const 16 i32.shl @@ -11526,7 +10303,7 @@ i32.const 0 i32.eq ) - (func $~lib/typedarray/Int16Array#every (; 282 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Int16Array#every (; 281 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -11593,7 +10370,7 @@ i32.const 1 end ) - (func $std/typedarray/testArrayEvery<~lib/typedarray/Int16Array,i16>~anonymous|1 (; 283 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayEvery<~lib/typedarray/Int16Array,i16>~anonymous|1 (; 282 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 i32.const 16 i32.shl @@ -11602,7 +10379,7 @@ i32.const 2 i32.eq ) - (func $std/typedarray/testArrayEvery<~lib/typedarray/Int16Array,i16> (; 284 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayEvery<~lib/typedarray/Int16Array,i16> (; 283 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -11656,7 +10433,7 @@ unreachable end ) - (func $std/typedarray/testArrayEvery<~lib/typedarray/Uint16Array,u16>~anonymous|0 (; 285 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayEvery<~lib/typedarray/Uint16Array,u16>~anonymous|0 (; 284 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 i32.const 65535 i32.and @@ -11665,7 +10442,7 @@ i32.const 0 i32.eq ) - (func $~lib/typedarray/Uint16Array#every (; 286 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Uint16Array#every (; 285 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -11732,14 +10509,14 @@ i32.const 1 end ) - (func $std/typedarray/testArrayEvery<~lib/typedarray/Uint16Array,u16>~anonymous|1 (; 287 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayEvery<~lib/typedarray/Uint16Array,u16>~anonymous|1 (; 286 ;) (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<~lib/typedarray/Uint16Array,u16> (; 288 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayEvery<~lib/typedarray/Uint16Array,u16> (; 287 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -11793,14 +10570,14 @@ unreachable end ) - (func $std/typedarray/testArrayEvery<~lib/typedarray/Int32Array,i32>~anonymous|0 (; 289 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayEvery<~lib/typedarray/Int32Array,i32>~anonymous|0 (; 288 ;) (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 (; 290 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Int32Array#every (; 289 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -11867,12 +10644,12 @@ i32.const 1 end ) - (func $std/typedarray/testArrayEvery<~lib/typedarray/Int32Array,i32>~anonymous|1 (; 291 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayEvery<~lib/typedarray/Int32Array,i32>~anonymous|1 (; 290 ;) (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<~lib/typedarray/Int32Array,i32> (; 292 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayEvery<~lib/typedarray/Int32Array,i32> (; 291 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -11926,14 +10703,14 @@ unreachable end ) - (func $std/typedarray/testArrayEvery<~lib/typedarray/Uint32Array,u32>~anonymous|0 (; 293 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayEvery<~lib/typedarray/Uint32Array,u32>~anonymous|0 (; 292 ;) (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 (; 294 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Uint32Array#every (; 293 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -12000,12 +10777,12 @@ i32.const 1 end ) - (func $std/typedarray/testArrayEvery<~lib/typedarray/Uint32Array,u32>~anonymous|1 (; 295 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayEvery<~lib/typedarray/Uint32Array,u32>~anonymous|1 (; 294 ;) (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<~lib/typedarray/Uint32Array,u32> (; 296 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayEvery<~lib/typedarray/Uint32Array,u32> (; 295 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -12059,14 +10836,14 @@ unreachable end ) - (func $std/typedarray/testArrayEvery<~lib/typedarray/Int64Array,i64>~anonymous|0 (; 297 ;) (type $FUNCSIG$ijii) (param $0 i64) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayEvery<~lib/typedarray/Int64Array,i64>~anonymous|0 (; 296 ;) (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 (; 298 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Int64Array#every (; 297 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -12133,12 +10910,12 @@ i32.const 1 end ) - (func $std/typedarray/testArrayEvery<~lib/typedarray/Int64Array,i64>~anonymous|1 (; 299 ;) (type $FUNCSIG$ijii) (param $0 i64) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayEvery<~lib/typedarray/Int64Array,i64>~anonymous|1 (; 298 ;) (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<~lib/typedarray/Int64Array,i64> (; 300 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayEvery<~lib/typedarray/Int64Array,i64> (; 299 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -12192,14 +10969,14 @@ unreachable end ) - (func $std/typedarray/testArrayEvery<~lib/typedarray/Uint64Array,u64>~anonymous|0 (; 301 ;) (type $FUNCSIG$ijii) (param $0 i64) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayEvery<~lib/typedarray/Uint64Array,u64>~anonymous|0 (; 300 ;) (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 (; 302 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Uint64Array#every (; 301 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -12266,12 +11043,12 @@ i32.const 1 end ) - (func $std/typedarray/testArrayEvery<~lib/typedarray/Uint64Array,u64>~anonymous|1 (; 303 ;) (type $FUNCSIG$ijii) (param $0 i64) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayEvery<~lib/typedarray/Uint64Array,u64>~anonymous|1 (; 302 ;) (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<~lib/typedarray/Uint64Array,u64> (; 304 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayEvery<~lib/typedarray/Uint64Array,u64> (; 303 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -12325,12 +11102,12 @@ unreachable end ) - (func $~lib/builtins/isNaN (; 305 ;) (type $FUNCSIG$if) (param $0 f32) (result i32) + (func $~lib/builtins/isNaN (; 304 ;) (type $FUNCSIG$if) (param $0 f32) (result i32) local.get $0 local.get $0 f32.ne ) - (func $~lib/math/NativeMathf.mod (; 306 ;) (type $FUNCSIG$fff) (param $0 f32) (param $1 f32) (result f32) + (func $~lib/math/NativeMathf.mod (; 305 ;) (type $FUNCSIG$fff) (param $0 f32) (param $1 f32) (result f32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -12581,14 +11358,14 @@ local.get $2 f32.reinterpret_i32 ) - (func $std/typedarray/testArrayEvery<~lib/typedarray/Float32Array,f32>~anonymous|0 (; 307 ;) (type $FUNCSIG$ifii) (param $0 f32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayEvery<~lib/typedarray/Float32Array,f32>~anonymous|0 (; 306 ;) (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 (; 308 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Float32Array#every (; 307 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -12655,12 +11432,12 @@ i32.const 1 end ) - (func $std/typedarray/testArrayEvery<~lib/typedarray/Float32Array,f32>~anonymous|1 (; 309 ;) (type $FUNCSIG$ifii) (param $0 f32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayEvery<~lib/typedarray/Float32Array,f32>~anonymous|1 (; 308 ;) (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<~lib/typedarray/Float32Array,f32> (; 310 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayEvery<~lib/typedarray/Float32Array,f32> (; 309 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -12714,12 +11491,12 @@ unreachable end ) - (func $~lib/builtins/isNaN (; 311 ;) (type $FUNCSIG$id) (param $0 f64) (result i32) + (func $~lib/builtins/isNaN (; 310 ;) (type $FUNCSIG$id) (param $0 f64) (result i32) local.get $0 local.get $0 f64.ne ) - (func $~lib/math/NativeMath.mod (; 312 ;) (type $FUNCSIG$ddd) (param $0 f64) (param $1 f64) (result f64) + (func $~lib/math/NativeMath.mod (; 311 ;) (type $FUNCSIG$ddd) (param $0 f64) (param $1 f64) (result f64) (local $2 i64) (local $3 i64) (local $4 i64) @@ -12972,14 +11749,14 @@ local.get $2 f64.reinterpret_i64 ) - (func $std/typedarray/testArrayEvery<~lib/typedarray/Float64Array,f64>~anonymous|0 (; 313 ;) (type $FUNCSIG$idii) (param $0 f64) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayEvery<~lib/typedarray/Float64Array,f64>~anonymous|0 (; 312 ;) (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 (; 314 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Float64Array#every (; 313 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -13046,12 +11823,12 @@ i32.const 1 end ) - (func $std/typedarray/testArrayEvery<~lib/typedarray/Float64Array,f64>~anonymous|1 (; 315 ;) (type $FUNCSIG$idii) (param $0 f64) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayEvery<~lib/typedarray/Float64Array,f64>~anonymous|1 (; 314 ;) (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<~lib/typedarray/Float64Array,f64> (; 316 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayEvery<~lib/typedarray/Float64Array,f64> (; 315 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -13105,7 +11882,7 @@ unreachable end ) - (func $std/typedarray/testArrayForEach<~lib/typedarray/Int8Array,i8>~anonymous|0 (; 317 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $std/typedarray/testArrayForEach<~lib/typedarray/Int8Array,i8>~anonymous|0 (; 316 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) global.get $std/typedarray/forEachValues local.get $1 @@ -13160,7 +11937,7 @@ i32.add global.set $std/typedarray/forEachCallCount ) - (func $~lib/typedarray/Int8Array#forEach (; 318 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/typedarray/Int8Array#forEach (; 317 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -13205,7 +11982,7 @@ unreachable end ) - (func $std/typedarray/testArrayForEach<~lib/typedarray/Int8Array,i8> (; 319 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayForEach<~lib/typedarray/Int8Array,i8> (; 318 ;) (type $FUNCSIG$v) (local $0 i32) i32.const 0 global.set $std/typedarray/forEachCallCount @@ -13261,7 +12038,7 @@ unreachable end ) - (func $std/typedarray/testArrayForEach<~lib/typedarray/Uint8Array,u8>~anonymous|0 (; 320 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $std/typedarray/testArrayForEach<~lib/typedarray/Uint8Array,u8>~anonymous|0 (; 319 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) global.get $std/typedarray/forEachValues local.get $1 @@ -13312,7 +12089,7 @@ i32.add global.set $std/typedarray/forEachCallCount ) - (func $~lib/typedarray/Uint8Array#forEach (; 321 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/typedarray/Uint8Array#forEach (; 320 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -13357,7 +12134,7 @@ unreachable end ) - (func $std/typedarray/testArrayForEach<~lib/typedarray/Uint8Array,u8> (; 322 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayForEach<~lib/typedarray/Uint8Array,u8> (; 321 ;) (type $FUNCSIG$v) (local $0 i32) i32.const 0 global.set $std/typedarray/forEachCallCount @@ -13407,7 +12184,7 @@ unreachable end ) - (func $std/typedarray/testArrayForEach<~lib/typedarray/Uint8ClampedArray,u8>~anonymous|0 (; 323 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $std/typedarray/testArrayForEach<~lib/typedarray/Uint8ClampedArray,u8>~anonymous|0 (; 322 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) global.get $std/typedarray/forEachValues local.get $1 @@ -13458,7 +12235,7 @@ i32.add global.set $std/typedarray/forEachCallCount ) - (func $~lib/typedarray/Uint8ClampedArray#forEach (; 324 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/typedarray/Uint8ClampedArray#forEach (; 323 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -13503,7 +12280,7 @@ unreachable end ) - (func $std/typedarray/testArrayForEach<~lib/typedarray/Uint8ClampedArray,u8> (; 325 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayForEach<~lib/typedarray/Uint8ClampedArray,u8> (; 324 ;) (type $FUNCSIG$v) (local $0 i32) i32.const 0 global.set $std/typedarray/forEachCallCount @@ -13553,7 +12330,7 @@ unreachable end ) - (func $std/typedarray/testArrayForEach<~lib/typedarray/Int16Array,i16>~anonymous|0 (; 326 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $std/typedarray/testArrayForEach<~lib/typedarray/Int16Array,i16>~anonymous|0 (; 325 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) global.get $std/typedarray/forEachValues local.get $1 @@ -13608,7 +12385,7 @@ i32.add global.set $std/typedarray/forEachCallCount ) - (func $~lib/typedarray/Int16Array#forEach (; 327 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/typedarray/Int16Array#forEach (; 326 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -13653,7 +12430,7 @@ unreachable end ) - (func $std/typedarray/testArrayForEach<~lib/typedarray/Int16Array,i16> (; 328 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayForEach<~lib/typedarray/Int16Array,i16> (; 327 ;) (type $FUNCSIG$v) (local $0 i32) i32.const 0 global.set $std/typedarray/forEachCallCount @@ -13709,7 +12486,7 @@ unreachable end ) - (func $std/typedarray/testArrayForEach<~lib/typedarray/Uint16Array,u16>~anonymous|0 (; 329 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $std/typedarray/testArrayForEach<~lib/typedarray/Uint16Array,u16>~anonymous|0 (; 328 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) global.get $std/typedarray/forEachValues local.get $1 @@ -13760,7 +12537,7 @@ i32.add global.set $std/typedarray/forEachCallCount ) - (func $~lib/typedarray/Uint16Array#forEach (; 330 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/typedarray/Uint16Array#forEach (; 329 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -13805,7 +12582,7 @@ unreachable end ) - (func $std/typedarray/testArrayForEach<~lib/typedarray/Uint16Array,u16> (; 331 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayForEach<~lib/typedarray/Uint16Array,u16> (; 330 ;) (type $FUNCSIG$v) (local $0 i32) i32.const 0 global.set $std/typedarray/forEachCallCount @@ -13855,7 +12632,7 @@ unreachable end ) - (func $std/typedarray/testArrayForEach<~lib/typedarray/Int32Array,i32>~anonymous|0 (; 332 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $std/typedarray/testArrayForEach<~lib/typedarray/Int32Array,i32>~anonymous|0 (; 331 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) global.get $std/typedarray/forEachValues local.get $1 @@ -13902,7 +12679,7 @@ i32.add global.set $std/typedarray/forEachCallCount ) - (func $~lib/typedarray/Int32Array#forEach (; 333 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/typedarray/Int32Array#forEach (; 332 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -13947,7 +12724,7 @@ unreachable end ) - (func $std/typedarray/testArrayForEach<~lib/typedarray/Int32Array,i32> (; 334 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayForEach<~lib/typedarray/Int32Array,i32> (; 333 ;) (type $FUNCSIG$v) (local $0 i32) i32.const 0 global.set $std/typedarray/forEachCallCount @@ -13991,7 +12768,7 @@ unreachable end ) - (func $std/typedarray/testArrayForEach<~lib/typedarray/Uint32Array,u32>~anonymous|0 (; 335 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $std/typedarray/testArrayForEach<~lib/typedarray/Uint32Array,u32>~anonymous|0 (; 334 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) global.get $std/typedarray/forEachValues local.get $1 @@ -14038,7 +12815,7 @@ i32.add global.set $std/typedarray/forEachCallCount ) - (func $~lib/typedarray/Uint32Array#forEach (; 336 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/typedarray/Uint32Array#forEach (; 335 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -14083,7 +12860,7 @@ unreachable end ) - (func $std/typedarray/testArrayForEach<~lib/typedarray/Uint32Array,u32> (; 337 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayForEach<~lib/typedarray/Uint32Array,u32> (; 336 ;) (type $FUNCSIG$v) (local $0 i32) i32.const 0 global.set $std/typedarray/forEachCallCount @@ -14127,7 +12904,7 @@ unreachable end ) - (func $std/typedarray/testArrayForEach<~lib/typedarray/Int64Array,i64>~anonymous|0 (; 338 ;) (type $FUNCSIG$vjii) (param $0 i64) (param $1 i32) (param $2 i32) + (func $std/typedarray/testArrayForEach<~lib/typedarray/Int64Array,i64>~anonymous|0 (; 337 ;) (type $FUNCSIG$vjii) (param $0 i64) (param $1 i32) (param $2 i32) (local $3 i32) global.get $std/typedarray/forEachValues local.get $1 @@ -14175,7 +12952,7 @@ i32.add global.set $std/typedarray/forEachCallCount ) - (func $~lib/typedarray/Int64Array#forEach (; 339 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/typedarray/Int64Array#forEach (; 338 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -14220,7 +12997,7 @@ unreachable end ) - (func $std/typedarray/testArrayForEach<~lib/typedarray/Int64Array,i64> (; 340 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayForEach<~lib/typedarray/Int64Array,i64> (; 339 ;) (type $FUNCSIG$v) (local $0 i32) i32.const 0 global.set $std/typedarray/forEachCallCount @@ -14267,7 +13044,7 @@ unreachable end ) - (func $std/typedarray/testArrayForEach<~lib/typedarray/Uint64Array,u64>~anonymous|0 (; 341 ;) (type $FUNCSIG$vjii) (param $0 i64) (param $1 i32) (param $2 i32) + (func $std/typedarray/testArrayForEach<~lib/typedarray/Uint64Array,u64>~anonymous|0 (; 340 ;) (type $FUNCSIG$vjii) (param $0 i64) (param $1 i32) (param $2 i32) (local $3 i32) global.get $std/typedarray/forEachValues local.get $1 @@ -14315,7 +13092,7 @@ i32.add global.set $std/typedarray/forEachCallCount ) - (func $~lib/typedarray/Uint64Array#forEach (; 342 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/typedarray/Uint64Array#forEach (; 341 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -14360,7 +13137,7 @@ unreachable end ) - (func $std/typedarray/testArrayForEach<~lib/typedarray/Uint64Array,u64> (; 343 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayForEach<~lib/typedarray/Uint64Array,u64> (; 342 ;) (type $FUNCSIG$v) (local $0 i32) i32.const 0 global.set $std/typedarray/forEachCallCount @@ -14407,7 +13184,7 @@ unreachable end ) - (func $std/typedarray/testArrayForEach<~lib/typedarray/Float32Array,f32>~anonymous|0 (; 344 ;) (type $FUNCSIG$vfii) (param $0 f32) (param $1 i32) (param $2 i32) + (func $std/typedarray/testArrayForEach<~lib/typedarray/Float32Array,f32>~anonymous|0 (; 343 ;) (type $FUNCSIG$vfii) (param $0 f32) (param $1 i32) (param $2 i32) (local $3 i32) global.get $std/typedarray/forEachValues local.get $1 @@ -14455,7 +13232,7 @@ i32.add global.set $std/typedarray/forEachCallCount ) - (func $~lib/typedarray/Float32Array#forEach (; 345 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/typedarray/Float32Array#forEach (; 344 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -14500,7 +13277,7 @@ unreachable end ) - (func $std/typedarray/testArrayForEach<~lib/typedarray/Float32Array,f32> (; 346 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayForEach<~lib/typedarray/Float32Array,f32> (; 345 ;) (type $FUNCSIG$v) (local $0 i32) i32.const 0 global.set $std/typedarray/forEachCallCount @@ -14547,7 +13324,7 @@ unreachable end ) - (func $std/typedarray/testArrayForEach<~lib/typedarray/Float64Array,f64>~anonymous|0 (; 347 ;) (type $FUNCSIG$vdii) (param $0 f64) (param $1 i32) (param $2 i32) + (func $std/typedarray/testArrayForEach<~lib/typedarray/Float64Array,f64>~anonymous|0 (; 346 ;) (type $FUNCSIG$vdii) (param $0 f64) (param $1 i32) (param $2 i32) (local $3 i32) global.get $std/typedarray/forEachValues local.get $1 @@ -14595,7 +13372,7 @@ i32.add global.set $std/typedarray/forEachCallCount ) - (func $~lib/typedarray/Float64Array#forEach (; 348 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/typedarray/Float64Array#forEach (; 347 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -14640,7 +13417,7 @@ unreachable end ) - (func $std/typedarray/testArrayForEach<~lib/typedarray/Float64Array,f64> (; 349 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayForEach<~lib/typedarray/Float64Array,f64> (; 348 ;) (type $FUNCSIG$v) (local $0 i32) i32.const 0 global.set $std/typedarray/forEachCallCount @@ -14687,7 +13464,7 @@ unreachable end ) - (func $~lib/typedarray/Int8Array#reverse (; 350 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/typedarray/Int8Array#reverse (; 349 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -14757,7 +13534,7 @@ end local.get $1 ) - (func $std/typedarray/testArrayReverse<~lib/typedarray/Int8Array,i8> (; 351 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayReverse<~lib/typedarray/Int8Array,i8> (; 350 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -14921,7 +13698,7 @@ unreachable end ) - (func $~lib/typedarray/Uint8Array#reverse (; 352 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/typedarray/Uint8Array#reverse (; 351 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -14991,7 +13768,7 @@ end local.get $1 ) - (func $~lib/typedarray/Uint8Array#subarray (; 353 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/typedarray/Uint8Array#subarray (; 352 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -15120,7 +13897,7 @@ i32.const 5 call $~lib/runtime/runtime.register ) - (func $std/typedarray/testArrayReverse<~lib/typedarray/Uint8Array,u8> (; 354 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayReverse<~lib/typedarray/Uint8Array,u8> (; 353 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -15278,7 +14055,7 @@ unreachable end ) - (func $~lib/typedarray/Uint8ClampedArray#reverse (; 355 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/typedarray/Uint8ClampedArray#reverse (; 354 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -15348,7 +14125,7 @@ end local.get $1 ) - (func $~lib/typedarray/Uint8ClampedArray#subarray (; 356 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/typedarray/Uint8ClampedArray#subarray (; 355 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -15477,7 +14254,7 @@ i32.const 6 call $~lib/runtime/runtime.register ) - (func $std/typedarray/testArrayReverse<~lib/typedarray/Uint8ClampedArray,u8> (; 357 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayReverse<~lib/typedarray/Uint8ClampedArray,u8> (; 356 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -15635,7 +14412,7 @@ unreachable end ) - (func $~lib/typedarray/Int16Array#reverse (; 358 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/typedarray/Int16Array#reverse (; 357 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -15705,7 +14482,7 @@ end local.get $1 ) - (func $~lib/typedarray/Int16Array#subarray (; 359 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/typedarray/Int16Array#subarray (; 358 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -15834,7 +14611,7 @@ i32.const 7 call $~lib/runtime/runtime.register ) - (func $std/typedarray/testArrayReverse<~lib/typedarray/Int16Array,i16> (; 360 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayReverse<~lib/typedarray/Int16Array,i16> (; 359 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -15998,7 +14775,7 @@ unreachable end ) - (func $~lib/typedarray/Uint16Array#reverse (; 361 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/typedarray/Uint16Array#reverse (; 360 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -16068,7 +14845,7 @@ end local.get $1 ) - (func $~lib/typedarray/Uint16Array#subarray (; 362 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/typedarray/Uint16Array#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) @@ -16197,7 +14974,7 @@ i32.const 8 call $~lib/runtime/runtime.register ) - (func $std/typedarray/testArrayReverse<~lib/typedarray/Uint16Array,u16> (; 363 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayReverse<~lib/typedarray/Uint16Array,u16> (; 362 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -16355,7 +15132,7 @@ unreachable end ) - (func $~lib/typedarray/Int32Array#reverse (; 364 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/typedarray/Int32Array#reverse (; 363 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -16425,7 +15202,7 @@ end local.get $1 ) - (func $std/typedarray/testArrayReverse<~lib/typedarray/Int32Array,i32> (; 365 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayReverse<~lib/typedarray/Int32Array,i32> (; 364 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -16577,7 +15354,7 @@ unreachable end ) - (func $~lib/typedarray/Uint32Array#reverse (; 366 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/typedarray/Uint32Array#reverse (; 365 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -16647,7 +15424,7 @@ end local.get $1 ) - (func $~lib/typedarray/Uint32Array#subarray (; 367 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/typedarray/Uint32Array#subarray (; 366 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -16776,7 +15553,7 @@ i32.const 10 call $~lib/runtime/runtime.register ) - (func $std/typedarray/testArrayReverse<~lib/typedarray/Uint32Array,u32> (; 368 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayReverse<~lib/typedarray/Uint32Array,u32> (; 367 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -16928,7 +15705,7 @@ unreachable end ) - (func $~lib/typedarray/Int64Array#reverse (; 369 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/typedarray/Int64Array#reverse (; 368 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -16998,7 +15775,7 @@ end local.get $1 ) - (func $~lib/typedarray/Int64Array#subarray (; 370 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/typedarray/Int64Array#subarray (; 369 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -17127,7 +15904,7 @@ i32.const 11 call $~lib/runtime/runtime.register ) - (func $std/typedarray/testArrayReverse<~lib/typedarray/Int64Array,i64> (; 371 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayReverse<~lib/typedarray/Int64Array,i64> (; 370 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -17282,7 +16059,7 @@ unreachable end ) - (func $~lib/typedarray/Uint64Array#reverse (; 372 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/typedarray/Uint64Array#reverse (; 371 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -17352,7 +16129,7 @@ end local.get $1 ) - (func $~lib/typedarray/Uint64Array#subarray (; 373 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/typedarray/Uint64Array#subarray (; 372 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -17481,7 +16258,7 @@ i32.const 12 call $~lib/runtime/runtime.register ) - (func $std/typedarray/testArrayReverse<~lib/typedarray/Uint64Array,u64> (; 374 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayReverse<~lib/typedarray/Uint64Array,u64> (; 373 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -17636,7 +16413,7 @@ unreachable end ) - (func $~lib/typedarray/Float32Array#reverse (; 375 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/typedarray/Float32Array#reverse (; 374 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -17706,7 +16483,7 @@ end local.get $1 ) - (func $~lib/typedarray/Float32Array#subarray (; 376 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/typedarray/Float32Array#subarray (; 375 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -17835,7 +16612,7 @@ i32.const 13 call $~lib/runtime/runtime.register ) - (func $std/typedarray/testArrayReverse<~lib/typedarray/Float32Array,f32> (; 377 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayReverse<~lib/typedarray/Float32Array,f32> (; 376 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -17990,7 +16767,7 @@ unreachable end ) - (func $~lib/typedarray/Float64Array#reverse (; 378 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/typedarray/Float64Array#reverse (; 377 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -18060,7 +16837,7 @@ end local.get $1 ) - (func $std/typedarray/testArrayReverse<~lib/typedarray/Float64Array,f64> (; 379 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayReverse<~lib/typedarray/Float64Array,f64> (; 378 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -18215,7 +16992,7 @@ unreachable end ) - (func $start:std/typedarray (; 380 ;) (type $FUNCSIG$v) + (func $start:std/typedarray (; 379 ;) (type $FUNCSIG$v) (local $0 i32) global.get $~lib/typedarray/Int8Array.BYTES_PER_ELEMENT i32.const 1 @@ -19449,9 +18226,9 @@ call $std/typedarray/testArrayReverse<~lib/typedarray/Float32Array,f32> call $std/typedarray/testArrayReverse<~lib/typedarray/Float64Array,f64> ) - (func $start (; 381 ;) (type $FUNCSIG$v) + (func $start (; 380 ;) (type $FUNCSIG$v) call $start:std/typedarray ) - (func $null (; 382 ;) (type $FUNCSIG$v) + (func $null (; 381 ;) (type $FUNCSIG$v) ) ) diff --git a/tests/compiler/wasi.json b/tests/compiler/wasi.json new file mode 100644 index 00000000..b1da366f --- /dev/null +++ b/tests/compiler/wasi.json @@ -0,0 +1,5 @@ +{ + "asc_flags": [ + "--runtime none" + ] +} \ No newline at end of file diff --git a/tests/compiler/wasi.optimized.wat b/tests/compiler/wasi.optimized.wat index 72ac147a..dd129858 100644 --- a/tests/compiler/wasi.optimized.wat +++ b/tests/compiler/wasi.optimized.wat @@ -1,15 +1,12 @@ (module (type $FUNCSIG$v (func)) (memory $0 1) - (data (i32.const 8) "\01\00\00\00\0e") - (data (i32.const 24) "w\00a\00s\00i\00.\00t\00s") + (data (i32.const 8) "\01\00\00\00\0e\00\00\00w\00a\00s\00i\00.\00t\00s") (table $0 1 funcref) (elem (i32.const 0) $null) (global $wasi/sig (mut i32) (i32.const 1)) - (global $~lib/capabilities i32 (i32.const 2)) (export "memory" (memory $0)) (export "table" (table $0)) - (export ".capabilities" (global $~lib/capabilities)) (start $start) (func $start (; 0 ;) (type $FUNCSIG$v) i32.const 9 diff --git a/tests/compiler/wasi.untouched.wat b/tests/compiler/wasi.untouched.wat index 31eff441..b2cb630c 100644 --- a/tests/compiler/wasi.untouched.wat +++ b/tests/compiler/wasi.untouched.wat @@ -3,18 +3,16 @@ (type $FUNCSIG$v (func)) (import "env" "abort" (func $~lib/env/abort (param i32 i32 i32 i32))) (memory $0 1) - (data (i32.const 8) "\01\00\00\00\0e\00\00\00\00\00\00\00\00\00\00\00w\00a\00s\00i\00.\00t\00s\00") + (data (i32.const 8) "\01\00\00\00\0e\00\00\00w\00a\00s\00i\00.\00t\00s\00") (table $0 1 funcref) (elem (i32.const 0) $null) (global $wasi/WASM32 i32 (i32.const 1)) (global $wasi/WASM64 i32 (i32.const 2)) (global $~lib/ASC_TARGET i32 (i32.const 0)) (global $wasi/sig (mut i32) (i32.const 1)) - (global $~lib/memory/HEAP_BASE i32 (i32.const 40)) - (global $~lib/capabilities i32 (i32.const 2)) + (global $~lib/memory/HEAP_BASE i32 (i32.const 32)) (export "memory" (memory $0)) (export "table" (table $0)) - (export ".capabilities" (global $~lib/capabilities)) (start $start) (func $start:wasi (; 1 ;) (type $FUNCSIG$v) i32.const 0 @@ -23,7 +21,7 @@ i32.eqz if i32.const 0 - i32.const 24 + i32.const 16 i32.const 6 i32.const 0 call $~lib/env/abort @@ -35,7 +33,7 @@ i32.eqz if i32.const 0 - i32.const 24 + i32.const 16 i32.const 7 i32.const 0 call $~lib/env/abort @@ -47,7 +45,7 @@ i32.eqz if i32.const 0 - i32.const 24 + i32.const 16 i32.const 8 i32.const 0 call $~lib/env/abort @@ -59,7 +57,7 @@ i32.eqz if i32.const 0 - i32.const 24 + i32.const 16 i32.const 9 i32.const 0 call $~lib/env/abort @@ -71,7 +69,7 @@ i32.eqz if i32.const 0 - i32.const 24 + i32.const 16 i32.const 10 i32.const 0 call $~lib/env/abort @@ -83,7 +81,7 @@ i32.eqz if i32.const 0 - i32.const 24 + i32.const 16 i32.const 12 i32.const 0 call $~lib/env/abort @@ -95,7 +93,7 @@ i32.eqz if i32.const 0 - i32.const 24 + i32.const 16 i32.const 13 i32.const 0 call $~lib/env/abort @@ -107,7 +105,7 @@ i32.eqz if i32.const 0 - i32.const 24 + i32.const 16 i32.const 14 i32.const 0 call $~lib/env/abort @@ -119,7 +117,7 @@ i32.eqz if i32.const 0 - i32.const 24 + i32.const 16 i32.const 15 i32.const 0 call $~lib/env/abort @@ -131,7 +129,7 @@ i32.eqz if i32.const 0 - i32.const 24 + i32.const 16 i32.const 16 i32.const 0 call $~lib/env/abort @@ -143,7 +141,7 @@ i32.eqz if i32.const 0 - i32.const 24 + i32.const 16 i32.const 17 i32.const 0 call $~lib/env/abort @@ -155,7 +153,7 @@ i32.eqz if i32.const 0 - i32.const 24 + i32.const 16 i32.const 19 i32.const 0 call $~lib/env/abort @@ -167,7 +165,7 @@ i32.eqz if i32.const 0 - i32.const 24 + i32.const 16 i32.const 20 i32.const 0 call $~lib/env/abort @@ -179,7 +177,7 @@ i32.eqz if i32.const 0 - i32.const 24 + i32.const 16 i32.const 21 i32.const 0 call $~lib/env/abort @@ -191,7 +189,7 @@ i32.eqz if i32.const 0 - i32.const 24 + i32.const 16 i32.const 22 i32.const 0 call $~lib/env/abort @@ -203,7 +201,7 @@ i32.eqz if i32.const 0 - i32.const 24 + i32.const 16 i32.const 23 i32.const 0 call $~lib/env/abort @@ -215,7 +213,7 @@ i32.eqz if i32.const 0 - i32.const 24 + i32.const 16 i32.const 25 i32.const 0 call $~lib/env/abort @@ -227,7 +225,7 @@ i32.eqz if i32.const 0 - i32.const 24 + i32.const 16 i32.const 26 i32.const 0 call $~lib/env/abort @@ -239,7 +237,7 @@ i32.eqz if i32.const 0 - i32.const 24 + i32.const 16 i32.const 27 i32.const 0 call $~lib/env/abort @@ -251,7 +249,7 @@ i32.eqz if i32.const 0 - i32.const 24 + i32.const 16 i32.const 28 i32.const 0 call $~lib/env/abort @@ -263,7 +261,7 @@ i32.eqz if i32.const 0 - i32.const 24 + i32.const 16 i32.const 29 i32.const 0 call $~lib/env/abort @@ -275,7 +273,7 @@ i32.eqz if i32.const 0 - i32.const 24 + i32.const 16 i32.const 30 i32.const 0 call $~lib/env/abort @@ -287,7 +285,7 @@ i32.eqz if i32.const 0 - i32.const 24 + i32.const 16 i32.const 31 i32.const 0 call $~lib/env/abort @@ -299,7 +297,7 @@ i32.eqz if i32.const 0 - i32.const 24 + i32.const 16 i32.const 32 i32.const 0 call $~lib/env/abort @@ -311,7 +309,7 @@ i32.eqz if i32.const 0 - i32.const 24 + i32.const 16 i32.const 33 i32.const 0 call $~lib/env/abort @@ -323,7 +321,7 @@ i32.eqz if i32.const 0 - i32.const 24 + i32.const 16 i32.const 35 i32.const 0 call $~lib/env/abort @@ -336,7 +334,7 @@ i32.eqz if i32.const 0 - i32.const 24 + i32.const 16 i32.const 37 i32.const 2 call $~lib/env/abort @@ -348,7 +346,7 @@ i32.eqz if i32.const 0 - i32.const 24 + i32.const 16 i32.const 38 i32.const 2 call $~lib/env/abort @@ -361,7 +359,7 @@ i32.eqz if i32.const 0 - i32.const 24 + i32.const 16 i32.const 46 i32.const 0 call $~lib/env/abort @@ -373,7 +371,7 @@ i32.eqz if i32.const 0 - i32.const 24 + i32.const 16 i32.const 47 i32.const 0 call $~lib/env/abort @@ -385,7 +383,7 @@ i32.eqz if i32.const 0 - i32.const 24 + i32.const 16 i32.const 48 i32.const 0 call $~lib/env/abort @@ -397,7 +395,7 @@ i32.eqz if i32.const 0 - i32.const 24 + i32.const 16 i32.const 49 i32.const 0 call $~lib/env/abort @@ -409,7 +407,7 @@ i32.eqz if i32.const 0 - i32.const 24 + i32.const 16 i32.const 50 i32.const 0 call $~lib/env/abort @@ -421,7 +419,7 @@ i32.eqz if i32.const 0 - i32.const 24 + i32.const 16 i32.const 51 i32.const 0 call $~lib/env/abort @@ -433,7 +431,7 @@ i32.eqz if i32.const 0 - i32.const 24 + i32.const 16 i32.const 52 i32.const 0 call $~lib/env/abort @@ -445,7 +443,7 @@ i32.eqz if i32.const 0 - i32.const 24 + i32.const 16 i32.const 53 i32.const 0 call $~lib/env/abort @@ -457,7 +455,7 @@ i32.eqz if i32.const 0 - i32.const 24 + i32.const 16 i32.const 55 i32.const 0 call $~lib/env/abort @@ -469,7 +467,7 @@ i32.eqz if i32.const 0 - i32.const 24 + i32.const 16 i32.const 56 i32.const 0 call $~lib/env/abort @@ -481,7 +479,7 @@ i32.eqz if i32.const 0 - i32.const 24 + i32.const 16 i32.const 57 i32.const 0 call $~lib/env/abort @@ -493,7 +491,7 @@ i32.eqz if i32.const 0 - i32.const 24 + i32.const 16 i32.const 58 i32.const 0 call $~lib/env/abort @@ -505,7 +503,7 @@ i32.eqz if i32.const 0 - i32.const 24 + i32.const 16 i32.const 60 i32.const 0 call $~lib/env/abort @@ -518,7 +516,7 @@ i32.eqz if i32.const 0 - i32.const 24 + i32.const 16 i32.const 62 i32.const 2 call $~lib/env/abort @@ -530,7 +528,7 @@ i32.eqz if i32.const 0 - i32.const 24 + i32.const 16 i32.const 63 i32.const 2 call $~lib/env/abort