From da9c32cec54cdb0fd6bfcfac35c074c6aa4db0bb Mon Sep 17 00:00:00 2001 From: dcode Date: Fri, 14 Feb 2020 23:04:17 +0100 Subject: [PATCH 1/7] Tackle the case of === --- src/compiler.ts | 4 +- std/assembly/array.ts | 15 +- std/assembly/arraybuffer.ts | 30 +- std/assembly/map.ts | 2 +- std/assembly/set.ts | 2 +- std/assembly/string.ts | 52 +- std/assembly/symbol.ts | 9 +- std/assembly/util/hash.ts | 6 +- std/assembly/util/memory.ts | 2 +- std/assembly/util/sort.ts | 6 +- std/assembly/util/string.ts | 13 +- tests/compiler/assert-nonnull.optimized.wat | 6 +- tests/compiler/assert-nonnull.untouched.wat | 6 +- tests/compiler/builtins.untouched.wat | 6 +- tests/compiler/infer-array.optimized.wat | 4 +- tests/compiler/infer-array.untouched.wat | 18 +- tests/compiler/number.untouched.wat | 6 +- tests/compiler/resolve-access.optimized.wat | 2 +- tests/compiler/resolve-access.untouched.wat | 2 +- tests/compiler/resolve-binary.optimized.wat | 4 +- tests/compiler/resolve-binary.untouched.wat | 10 +- .../resolve-elementaccess.untouched.wat | 6 +- .../resolve-function-expression.untouched.wat | 6 +- .../resolve-propertyaccess.untouched.wat | 6 +- tests/compiler/resolve-ternary.untouched.wat | 6 +- tests/compiler/resolve-unary.untouched.wat | 6 +- .../retain-release-sanity.optimized.wat | 24 +- .../retain-release-sanity.untouched.wat | 58 +- tests/compiler/std/array-access.optimized.wat | 7 +- tests/compiler/std/array-access.untouched.wat | 56 +- .../compiler/std/array-literal.optimized.wat | 4 +- .../compiler/std/array-literal.untouched.wat | 4 +- tests/compiler/std/array.optimized.wat | 623 +++++++++--------- tests/compiler/std/array.ts | 4 +- tests/compiler/std/array.untouched.wat | 177 ++--- tests/compiler/std/arraybuffer.untouched.wat | 14 +- tests/compiler/std/hash.untouched.wat | 2 - tests/compiler/std/map.optimized.wat | 30 +- tests/compiler/std/map.untouched.wat | 42 +- .../compiler/std/object-literal.untouched.wat | 6 +- tests/compiler/std/object.untouched.wat | 6 +- tests/compiler/std/set.optimized.wat | 30 +- tests/compiler/std/set.untouched.wat | 42 +- tests/compiler/std/static-array.optimized.wat | 8 +- tests/compiler/std/static-array.untouched.wat | 16 +- .../std/string-encoding.optimized.wat | 4 +- .../std/string-encoding.untouched.wat | 10 +- tests/compiler/std/string.optimized.wat | 300 ++++----- tests/compiler/std/string.untouched.wat | 376 +++++------ tests/compiler/std/symbol.optimized.wat | 12 +- tests/compiler/std/symbol.untouched.wat | 70 +- tests/compiler/std/typedarray.optimized.wat | 6 +- tests/compiler/std/typedarray.untouched.wat | 12 +- tests/compiler/typeof.optimized.wat | 82 ++- tests/compiler/typeof.untouched.wat | 90 +-- 55 files changed, 1053 insertions(+), 1297 deletions(-) diff --git a/src/compiler.ts b/src/compiler.ts index fc21184697..dc55fa2777 100644 --- a/src/compiler.ts +++ b/src/compiler.ts @@ -3935,8 +3935,8 @@ export class Compiler extends DiagnosticEmitter { leftExpr = this.compileExpression(left, contextualType); leftType = this.currentType; - // check operator overload - if (operator == Token.EQUALS_EQUALS && this.currentType.is(TypeFlags.REFERENCE)) { + // check operator overload + if (this.currentType.is(TypeFlags.REFERENCE)) { let classReference = leftType.classReference; if (classReference) { let overload = classReference.lookupOverload(OperatorKind.EQ); diff --git a/std/assembly/array.ts b/std/assembly/array.ts index c00b91c9a4..5a07e6adbc 100644 --- a/std/assembly/array.ts +++ b/std/assembly/array.ts @@ -16,7 +16,7 @@ function ensureSize(array: usize, minSize: usize, alignLog2: u32): void { let newCapacity = minSize << alignLog2; let newData = __realloc(oldData, newCapacity); // keeps RC memory.fill(newData + oldCapacity, 0, newCapacity - oldCapacity); - if (newData !== oldData) { // oldData has been free'd + if (changetype(newData) != changetype(oldData)) { // oldData has been free'd store(array, newData, offsetof("buffer")); store(array, newData, offsetof("dataStart")); } @@ -38,7 +38,10 @@ export class Array extends ArrayBufferView { private length_: i32; static isArray(value: U): bool { - return isReference() ? builtin_isArray(value) && value !== null : false; + if (isReference()) { + return value instanceof Array && changetype(value) != 0; + } + return false; } static create(capacity: i32 = 0): Array { @@ -213,7 +216,7 @@ export class Array extends ArrayBufferView { concat(other: Array): Array { var thisLen = this.length_; - var otherLen = select(0, other.length_, other === null); + var otherLen = select(0, other.length_, changetype(other) == 0); var outLen = thisLen + otherLen; if (outLen > BLOCK_MAXSIZE >>> alignof()) throw new Error(E_INVALIDLENGTH); var out = changetype>(__allocArray(outLen, alignof(), idof>())); // retains @@ -472,11 +475,7 @@ export class Array extends ArrayBufferView { if (isBoolean()) return joinBooleanArray(dataStart, length, separator); if (isInteger()) return joinIntegerArray(dataStart, length, separator); if (isFloat()) return joinFloatArray(dataStart, length, separator); - - if (ASC_SHRINK_LEVEL < 1) { - if (isString()) return joinStringArray(dataStart, length, separator); - } - // For rest objects and arrays use general join routine + if (isString()) return joinStringArray(dataStart, length, separator); if (isReference()) return joinReferenceArray(dataStart, length, separator); ERROR("unspported element type"); return unreachable(); diff --git a/std/assembly/arraybuffer.ts b/std/assembly/arraybuffer.ts index 5e948c9bfe..63036c876b 100644 --- a/std/assembly/arraybuffer.ts +++ b/std/assembly/arraybuffer.ts @@ -32,21 +32,23 @@ export abstract class ArrayBufferView { @sealed export class ArrayBuffer { static isView(value: T): bool { - if (isNullable()) { - if (value === null) return false; + if (isReference()) { + if (isNullable()) { + if (!changetype(value)) return false; + } + if (value instanceof Int8Array) return true; + if (value instanceof Uint8Array) return true; + if (value instanceof Uint8ClampedArray) return true; + if (value instanceof Int16Array) return true; + if (value instanceof Uint16Array) return true; + if (value instanceof Int32Array) return true; + if (value instanceof Uint32Array) return true; + if (value instanceof Int64Array) return true; + if (value instanceof Uint64Array) return true; + if (value instanceof Float32Array) return true; + if (value instanceof Float64Array) return true; + if (value instanceof DataView) return true; } - if (value instanceof Int8Array) return true; - if (value instanceof Uint8Array) return true; - if (value instanceof Uint8ClampedArray) return true; - if (value instanceof Int16Array) return true; - if (value instanceof Uint16Array) return true; - if (value instanceof Int32Array) return true; - if (value instanceof Uint32Array) return true; - if (value instanceof Int64Array) return true; - if (value instanceof Uint64Array) return true; - if (value instanceof Float32Array) return true; - if (value instanceof Float64Array) return true; - if (value instanceof DataView) return true; return false; } diff --git a/std/assembly/map.ts b/std/assembly/map.ts index 51fdf243af..2cea116cfa 100644 --- a/std/assembly/map.ts +++ b/std/assembly/map.ts @@ -102,7 +102,7 @@ export class Map { } has(key: K): bool { - return this.find(key, HASH(key)) !== null; + return changetype(this.find(key, HASH(key))) != 0; } @operator("[]") diff --git a/std/assembly/set.ts b/std/assembly/set.ts index 76a7b66ed3..07b6aa1e52 100644 --- a/std/assembly/set.ts +++ b/std/assembly/set.ts @@ -98,7 +98,7 @@ export class Set { @operator("[]") has(key: T): bool { - return this.find(key, HASH(key)) !== null; + return changetype(this.find(key, HASH(key))) != 0; } add(key: T): this { diff --git a/std/assembly/string.ts b/std/assembly/string.ts index 7e158e25e8..da302dc497 100644 --- a/std/assembly/string.ts +++ b/std/assembly/string.ts @@ -61,11 +61,10 @@ import { idof } from "./builtins"; } @operator("+") private static __concat(left: String, right: String): String { - return select(left, changetype("null"), left !== null).concat(right); + return select(left, changetype("null"), changetype(left) != 0).concat(right); } concat(other: String): String { - if (other === null) other = changetype("null"); var thisSize: isize = this.length << 1; var otherSize: isize = other.length << 1; var outSize: usize = thisSize + otherSize; @@ -77,7 +76,6 @@ import { idof } from "./builtins"; } endsWith(search: String, end: i32 = String.MAX_LENGTH): bool { - if (search === null) return false; end = min(max(end, 0), this.length); var searchLength = search.length; var searchStart = end - searchLength; @@ -87,17 +85,17 @@ import { idof } from "./builtins"; } @operator("==") private static __eq(left: String | null, right: String | null): bool { - if (left === right) return true; - if (left === null || right === null) return false; - var leftLength = left.length; - if (leftLength != right.length) return false; + if (changetype(left) == changetype(right)) return true; + if (!changetype(left) || !changetype(right)) return false; + var leftLength = changetype(left).length; + if (leftLength != changetype(right).length) return false; // @ts-ignore: string <-> String return !compareImpl(left, 0, right, 0, leftLength); } @operator.prefix("!") private static __not(str: String | null): bool { - return str === null || !str.length; + return !changetype(str) || !changetype(str).length; } @operator("!=") @@ -106,30 +104,37 @@ import { idof } from "./builtins"; } @operator(">") private static __gt(left: String | null, right: String | null): bool { - if (left === right || left === null || right === null) return false; - var leftLength = left.length; + if ( + changetype(left) == changetype(right) || + !changetype(left) || + !changetype(right) + ) return false; + var leftLength = changetype(left).length; if (!leftLength) return false; - var rightLength = right.length; + var rightLength = changetype(right).length; if (!rightLength) return true; // @ts-ignore: string <-> String return compareImpl(left, 0, right, 0, min(leftLength, rightLength)) > 0; } - @operator(">=") private static __gte(left: String, right: String): bool { + @operator(">=") private static __gte(left: String | null, right: String | null): bool { return !this.__lt(left, right); } - @operator("<") private static __lt(left: String, right: String): bool { - if (left === right || left === null || right === null) return false; - var rightLength = right.length; + @operator("<") private static __lt(left: String | null, right: String | null): bool { + if ( + changetype(left) == changetype(right) || + !changetype(left) || + !changetype(right) + ) return false; + var rightLength = changetype(right).length; if (!rightLength) return false; - var leftLength = left.length; + var leftLength = changetype(left).length; if (!leftLength) return true; - // @ts-ignore: string <-> String - return compareImpl(left, 0, right, 0, min(leftLength, rightLength)) < 0; + return compareImpl(changetype(left), 0, changetype(right), 0, min(leftLength, rightLength)) < 0; } - @operator("<=") private static __lte(left: String, right: String): bool { + @operator("<=") private static __lte(left: String | null, right: String | null): bool { return !this.__gt(left, right); } @@ -165,7 +170,7 @@ import { idof } from "./builtins"; // TODO: implement full locale comparison with locales and Collator options localeCompare(other: String): i32 { - if (other === this) return 0; // compare pointers + if (changetype(other) == changetype(this)) return 0; var len: isize = this.length; var otherLen: isize = other.length; if (otherLen != len) return select(1, -1, len > otherLen); @@ -175,7 +180,6 @@ import { idof } from "./builtins"; } startsWith(search: String, start: i32 = 0): bool { - if (search === null) search = changetype("null"); var len = this.length; var searchStart = min(max(start, 0), len); var searchLength = search.length; @@ -445,9 +449,9 @@ import { idof } from "./builtins"; split(separator: String | null = null, limit: i32 = i32.MAX_VALUE): String[] { if (!limit) return changetype>(__allocArray(0, alignof(), idof>())); // retains - if (separator === null) return [this]; + if (!changetype(separator)) return [this]; var length: isize = this.length; - var sepLen: isize = separator.length; + var sepLen: isize = changetype(separator).length; if (limit < 0) limit = i32.MAX_VALUE; if (!sepLen) { if (!length) return changetype>(__allocArray(0, alignof(), idof>())); // retains @@ -471,7 +475,7 @@ import { idof } from "./builtins"; } var result = changetype>(__allocArray(0, alignof(), idof>())); // retains var end = 0, start = 0, i = 0; - while (~(end = this.indexOf(separator, start))) { + while (~(end = this.indexOf(changetype(separator), start))) { let len = end - start; if (len > 0) { let out = __alloc(len << 1, idof()); diff --git a/std/assembly/symbol.ts b/std/assembly/symbol.ts index 97baef4d58..cde93db466 100644 --- a/std/assembly/symbol.ts +++ b/std/assembly/symbol.ts @@ -67,7 +67,10 @@ var nextId: usize = 12; // Symbol.unscopables + 1 static readonly unscopables: symbol = changetype(11); static for(key: string): symbol { - if (!stringToId) { stringToId = new Map(); idToString = new Map(); } + if (!stringToId) { + stringToId = new Map(); + idToString = new Map(); + } else if (stringToId.has(key)) return changetype(stringToId.get(key)); var id = nextId++; if (!id) unreachable(); // out of ids @@ -77,7 +80,7 @@ var nextId: usize = 12; // Symbol.unscopables + 1 } static keyFor(sym: symbol): string | null { - return idToString !== null && idToString.has(changetype(sym)) + return idToString != null && idToString.has(changetype(sym)) ? idToString.get(changetype(sym)) : null; } @@ -98,7 +101,7 @@ var nextId: usize = 12; // Symbol.unscopables + 1 case 10: { str = "toStringTag"; break; } case 11: { str = "unscopables"; break; } default: { - if (idToString !== null && idToString.has(id)) str = idToString.get(id); + if (idToString != null && idToString.has(id)) str = idToString.get(id); break; } } diff --git a/std/assembly/util/hash.ts b/std/assembly/util/hash.ts index 2d58d92909..e0b70ce8f9 100644 --- a/std/assembly/util/hash.ts +++ b/std/assembly/util/hash.ts @@ -63,10 +63,10 @@ function hash64(key: u64): u32 { return v; } -function hashStr(key: string): u32 { +function hashStr(key: string | null): u32 { var v = FNV_OFFSET; - if (key !== null) { - for (let i: usize = 0, k: usize = key.length << 1; i < k; ++i) { + if (changetype(key)) { + for (let i: usize = 0, k: usize = changetype(key).length << 1; i < k; ++i) { v = (v ^ load(changetype(key) + i)) * FNV_PRIME; } } diff --git a/std/assembly/util/memory.ts b/std/assembly/util/memory.ts index 26d42b883b..bdacd73f2e 100644 --- a/std/assembly/util/memory.ts +++ b/std/assembly/util/memory.ts @@ -144,7 +144,7 @@ export function memcpy(dest: usize, src: usize, n: usize): void { // see: musl/s // @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 (dest == src) return; if (ASC_SHRINK_LEVEL < 1) { if (src + n <= dest || dest + n <= src) { memcpy(dest, src, n); diff --git a/std/assembly/util/sort.ts b/std/assembly/util/sort.ts index 0bd18f0a52..bb06ca11be 100644 --- a/std/assembly/util/sort.ts +++ b/std/assembly/util/sort.ts @@ -29,7 +29,11 @@ export function COMPARATOR(): (a: T, b: T) => i32 { } } else if (isString()) { return (a: T, b: T): i32 => { - if (a === b || a === null || b === null) return 0; + if ( + changetype(a) == changetype(b) || + !changetype(a) || + !changetype(b) + ) return 0; var alen = changetype(a).length; var blen = changetype(b).length; if (!alen && !blen) return 0; diff --git a/std/assembly/util/string.ts b/std/assembly/util/string.ts index b4f8ffe1a8..c76d5805e9 100644 --- a/std/assembly/util/string.ts +++ b/std/assembly/util/string.ts @@ -412,14 +412,14 @@ export function joinStringArray(dataStart: usize, length: i32, separator: string for (let i = 0; i < length; ++i) { value = load(dataStart + (i << alignof())); // @ts-ignore: type - if (value !== null) estLen += value.length; + if (changetype(value)) estLen += value.length; } var offset = 0; var sepLen = separator.length; var result = __alloc((estLen + sepLen * lastIndex) << 1, idof()); for (let i = 0; i < lastIndex; ++i) { value = load(dataStart + (i << alignof())); - if (value !== null) { + if (changetype(value)) { let valueLen = value.length; memory.copy( result + (offset << 1), @@ -438,7 +438,7 @@ export function joinStringArray(dataStart: usize, length: i32, separator: string } } value = load(dataStart + (lastIndex << alignof())); - if (value !== null) { + if (changetype(value)) { memory.copy( result + (offset << 1), changetype(value), @@ -449,25 +449,26 @@ export function joinStringArray(dataStart: usize, length: i32, separator: string } export function joinReferenceArray(dataStart: usize, length: i32, separator: string): string { + assert(!isString()); var lastIndex = length - 1; if (lastIndex < 0) return ""; var value: T; if (!lastIndex) { value = load(dataStart); // @ts-ignore: type - return value !== null ? value.toString() : ""; + return value ? value.toString() : ""; } var result = ""; var sepLen = separator.length; for (let i = 0; i < lastIndex; ++i) { value = load(dataStart + (i << alignof())); // @ts-ignore: type - if (value !== null) result += value.toString(); + if (value) result += value.toString(); if (sepLen) result += separator; } value = load(dataStart + (lastIndex << alignof())); // @ts-ignore: type - if (value !== null) result += value.toString(); + if (value) result += value.toString(); return result; } diff --git a/tests/compiler/assert-nonnull.optimized.wat b/tests/compiler/assert-nonnull.optimized.wat index 041fbf0e86..68926e824c 100644 --- a/tests/compiler/assert-nonnull.optimized.wat +++ b/tests/compiler/assert-nonnull.optimized.wat @@ -80,7 +80,7 @@ if i32.const 96 i32.const 160 - i32.const 93 + i32.const 96 i32.const 41 call $~lib/builtins/abort unreachable @@ -92,7 +92,7 @@ if i32.const 208 i32.const 160 - i32.const 97 + i32.const 100 i32.const 39 call $~lib/builtins/abort unreachable @@ -121,7 +121,7 @@ if i32.const 96 i32.const 160 - i32.const 93 + i32.const 96 i32.const 41 call $~lib/builtins/abort unreachable diff --git a/tests/compiler/assert-nonnull.untouched.wat b/tests/compiler/assert-nonnull.untouched.wat index fd2c4c4913..235d778923 100644 --- a/tests/compiler/assert-nonnull.untouched.wat +++ b/tests/compiler/assert-nonnull.untouched.wat @@ -122,7 +122,7 @@ if i32.const 96 i32.const 160 - i32.const 93 + i32.const 96 i32.const 41 call $~lib/builtins/abort unreachable @@ -138,7 +138,7 @@ call $~lib/rt/stub/__release i32.const 208 i32.const 160 - i32.const 97 + i32.const 100 i32.const 39 call $~lib/builtins/abort unreachable @@ -188,7 +188,7 @@ if i32.const 96 i32.const 160 - i32.const 93 + i32.const 96 i32.const 41 call $~lib/builtins/abort unreachable diff --git a/tests/compiler/builtins.untouched.wat b/tests/compiler/builtins.untouched.wat index fc9bc709a1..2ff5198efd 100644 --- a/tests/compiler/builtins.untouched.wat +++ b/tests/compiler/builtins.untouched.wat @@ -255,14 +255,12 @@ return end local.get $0 - i32.const 0 - i32.eq + i32.eqz if (result i32) i32.const 1 else local.get $1 - i32.const 0 - i32.eq + i32.eqz end if i32.const 0 diff --git a/tests/compiler/infer-array.optimized.wat b/tests/compiler/infer-array.optimized.wat index c97244c34c..a173391d8a 100644 --- a/tests/compiler/infer-array.optimized.wat +++ b/tests/compiler/infer-array.optimized.wat @@ -332,7 +332,7 @@ if i32.const 64 i32.const 128 - i32.const 93 + i32.const 96 i32.const 41 call $~lib/builtins/abort unreachable @@ -351,7 +351,7 @@ if i32.const 64 i32.const 128 - i32.const 93 + i32.const 96 i32.const 41 call $~lib/builtins/abort unreachable diff --git a/tests/compiler/infer-array.untouched.wat b/tests/compiler/infer-array.untouched.wat index 69a43d7834..ce97ca4123 100644 --- a/tests/compiler/infer-array.untouched.wat +++ b/tests/compiler/infer-array.untouched.wat @@ -1444,7 +1444,7 @@ if i32.const 64 i32.const 128 - i32.const 93 + i32.const 96 i32.const 41 call $~lib/builtins/abort unreachable @@ -1476,7 +1476,7 @@ if i32.const 64 i32.const 128 - i32.const 93 + i32.const 96 i32.const 41 call $~lib/builtins/abort unreachable @@ -1505,7 +1505,7 @@ if i32.const 64 i32.const 128 - i32.const 93 + i32.const 96 i32.const 41 call $~lib/builtins/abort unreachable @@ -1534,7 +1534,7 @@ if i32.const 64 i32.const 128 - i32.const 93 + i32.const 96 i32.const 41 call $~lib/builtins/abort unreachable @@ -1576,7 +1576,7 @@ if i32.const 64 i32.const 128 - i32.const 93 + i32.const 96 i32.const 41 call $~lib/builtins/abort unreachable @@ -1606,7 +1606,7 @@ if i32.const 64 i32.const 128 - i32.const 93 + i32.const 96 i32.const 41 call $~lib/builtins/abort unreachable @@ -1635,7 +1635,7 @@ if i32.const 64 i32.const 128 - i32.const 93 + i32.const 96 i32.const 41 call $~lib/builtins/abort unreachable @@ -1665,7 +1665,7 @@ if i32.const 64 i32.const 128 - i32.const 93 + i32.const 96 i32.const 41 call $~lib/builtins/abort unreachable @@ -1681,7 +1681,7 @@ call $~lib/rt/stub/__release i32.const 640 i32.const 128 - i32.const 97 + i32.const 100 i32.const 39 call $~lib/builtins/abort unreachable diff --git a/tests/compiler/number.untouched.wat b/tests/compiler/number.untouched.wat index 41ed83255b..3d8b237c31 100644 --- a/tests/compiler/number.untouched.wat +++ b/tests/compiler/number.untouched.wat @@ -600,14 +600,12 @@ return end local.get $0 - i32.const 0 - i32.eq + i32.eqz if (result i32) i32.const 1 else local.get $1 - i32.const 0 - i32.eq + i32.eqz end if i32.const 0 diff --git a/tests/compiler/resolve-access.optimized.wat b/tests/compiler/resolve-access.optimized.wat index 7f447fd521..45a4fb8ad6 100644 --- a/tests/compiler/resolve-access.optimized.wat +++ b/tests/compiler/resolve-access.optimized.wat @@ -313,7 +313,7 @@ if i32.const 64 i32.const 128 - i32.const 93 + i32.const 96 i32.const 41 call $~lib/builtins/abort unreachable diff --git a/tests/compiler/resolve-access.untouched.wat b/tests/compiler/resolve-access.untouched.wat index 2489d8dbc8..d46f53f518 100644 --- a/tests/compiler/resolve-access.untouched.wat +++ b/tests/compiler/resolve-access.untouched.wat @@ -1439,7 +1439,7 @@ if i32.const 64 i32.const 128 - i32.const 93 + i32.const 96 i32.const 41 call $~lib/builtins/abort unreachable diff --git a/tests/compiler/resolve-binary.optimized.wat b/tests/compiler/resolve-binary.optimized.wat index 5267674116..3585d36b96 100644 --- a/tests/compiler/resolve-binary.optimized.wat +++ b/tests/compiler/resolve-binary.optimized.wat @@ -1564,7 +1564,9 @@ call $~lib/builtins/abort unreachable end - i32.const 1 + i32.const 160 + i32.const 160 + call $~lib/string/String.__eq call $~lib/number/Bool#toString i32.const 32 call $~lib/string/String.__eq diff --git a/tests/compiler/resolve-binary.untouched.wat b/tests/compiler/resolve-binary.untouched.wat index c8f480d381..ee61a69514 100644 --- a/tests/compiler/resolve-binary.untouched.wat +++ b/tests/compiler/resolve-binary.untouched.wat @@ -247,14 +247,12 @@ return end local.get $0 - i32.const 0 - i32.eq + i32.eqz if (result i32) i32.const 1 else local.get $1 - i32.const 0 - i32.eq + i32.eqz end if i32.const 0 @@ -4699,7 +4697,9 @@ call $~lib/builtins/abort unreachable end - i32.const 1 + i32.const 160 + i32.const 160 + call $~lib/string/String.__eq call $~lib/number/Bool#toString local.tee $6 i32.const 32 diff --git a/tests/compiler/resolve-elementaccess.untouched.wat b/tests/compiler/resolve-elementaccess.untouched.wat index 677f0aede7..646f805108 100644 --- a/tests/compiler/resolve-elementaccess.untouched.wat +++ b/tests/compiler/resolve-elementaccess.untouched.wat @@ -3658,14 +3658,12 @@ return end local.get $0 - i32.const 0 - i32.eq + i32.eqz if (result i32) i32.const 1 else local.get $1 - i32.const 0 - i32.eq + i32.eqz end if i32.const 0 diff --git a/tests/compiler/resolve-function-expression.untouched.wat b/tests/compiler/resolve-function-expression.untouched.wat index 4474c4bead..c96017fbdc 100644 --- a/tests/compiler/resolve-function-expression.untouched.wat +++ b/tests/compiler/resolve-function-expression.untouched.wat @@ -581,14 +581,12 @@ return end local.get $0 - i32.const 0 - i32.eq + i32.eqz if (result i32) i32.const 1 else local.get $1 - i32.const 0 - i32.eq + i32.eqz end if i32.const 0 diff --git a/tests/compiler/resolve-propertyaccess.untouched.wat b/tests/compiler/resolve-propertyaccess.untouched.wat index 3df95e0a47..81d82bd8b9 100644 --- a/tests/compiler/resolve-propertyaccess.untouched.wat +++ b/tests/compiler/resolve-propertyaccess.untouched.wat @@ -577,14 +577,12 @@ return end local.get $0 - i32.const 0 - i32.eq + i32.eqz if (result i32) i32.const 1 else local.get $1 - i32.const 0 - i32.eq + i32.eqz end if i32.const 0 diff --git a/tests/compiler/resolve-ternary.untouched.wat b/tests/compiler/resolve-ternary.untouched.wat index ac8b01b6de..b02e17509e 100644 --- a/tests/compiler/resolve-ternary.untouched.wat +++ b/tests/compiler/resolve-ternary.untouched.wat @@ -1921,14 +1921,12 @@ return end local.get $0 - i32.const 0 - i32.eq + i32.eqz if (result i32) i32.const 1 else local.get $1 - i32.const 0 - i32.eq + i32.eqz end if i32.const 0 diff --git a/tests/compiler/resolve-unary.untouched.wat b/tests/compiler/resolve-unary.untouched.wat index b188d61cc7..8239683e51 100644 --- a/tests/compiler/resolve-unary.untouched.wat +++ b/tests/compiler/resolve-unary.untouched.wat @@ -576,14 +576,12 @@ return end local.get $0 - i32.const 0 - i32.eq + i32.eqz if (result i32) i32.const 1 else local.get $1 - i32.const 0 - i32.eq + i32.eqz end if i32.const 0 diff --git a/tests/compiler/retain-release-sanity.optimized.wat b/tests/compiler/retain-release-sanity.optimized.wat index 5597a09b0e..4f8f9cadd8 100644 --- a/tests/compiler/retain-release-sanity.optimized.wat +++ b/tests/compiler/retain-release-sanity.optimized.wat @@ -1835,7 +1835,7 @@ if i32.const 352 i32.const 304 - i32.const 288 + i32.const 291 i32.const 20 call $~lib/builtins/abort unreachable @@ -1890,23 +1890,6 @@ (local $2 i32) (local $3 i32) (local $4 i32) - local.get $1 - call $~lib/rt/pure/__retain - local.tee $1 - i32.eqz - if - i32.const 480 - local.set $3 - local.get $1 - i32.const 480 - i32.ne - if - local.get $1 - call $~lib/rt/pure/__release - end - i32.const 480 - local.set $1 - end local.get $0 call $~lib/string/String#get:length i32.const 1 @@ -1921,10 +1904,7 @@ local.tee $2 i32.eqz if - local.get $1 - call $~lib/rt/pure/__release i32.const 400 - local.tee $0 return end local.get $2 @@ -1941,8 +1921,6 @@ local.get $1 local.get $4 call $~lib/memory/memory.copy - local.get $1 - call $~lib/rt/pure/__release local.get $2 ) (func $~lib/string/String.__concat (; 31 ;) (param $0 i32) (param $1 i32) (result i32) diff --git a/tests/compiler/retain-release-sanity.untouched.wat b/tests/compiler/retain-release-sanity.untouched.wat index 0bc41adb22..539c223558 100644 --- a/tests/compiler/retain-release-sanity.untouched.wat +++ b/tests/compiler/retain-release-sanity.untouched.wat @@ -3371,7 +3371,7 @@ if i32.const 352 i32.const 304 - i32.const 288 + i32.const 291 i32.const 20 call $~lib/builtins/abort unreachable @@ -3486,75 +3486,55 @@ (local $4 i32) (local $5 i32) (local $6 i32) - (local $7 i32) local.get $1 call $~lib/rt/pure/__retain local.set $1 - local.get $1 - i32.const 0 - i32.eq - if - i32.const 480 - local.tee $2 - local.get $1 - local.tee $3 - i32.ne - if - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $3 - call $~lib/rt/pure/__release - end - local.get $2 - local.set $1 - end local.get $0 call $~lib/string/String#get:length i32.const 1 i32.shl - local.set $4 + local.set $2 local.get $1 call $~lib/string/String#get:length i32.const 1 i32.shl - local.set $5 - local.get $4 - local.get $5 + local.set $3 + local.get $2 + local.get $3 i32.add - local.set $6 - local.get $6 + local.set $4 + local.get $4 i32.const 0 i32.eq if i32.const 400 call $~lib/rt/pure/__retain - local.set $2 + local.set $5 local.get $1 call $~lib/rt/pure/__release - local.get $2 + local.get $5 return end - local.get $6 + local.get $4 i32.const 1 call $~lib/rt/tlsf/__alloc call $~lib/rt/pure/__retain - local.set $7 - local.get $7 + local.set $6 + local.get $6 local.get $0 - local.get $4 + local.get $2 call $~lib/memory/memory.copy - local.get $7 - local.get $4 + local.get $6 + local.get $2 i32.add local.get $1 - local.get $5 + local.get $3 call $~lib/memory/memory.copy - local.get $7 - local.set $2 + local.get $6 + local.set $5 local.get $1 call $~lib/rt/pure/__release - local.get $2 + local.get $5 ) (func $~lib/string/String.__concat (; 36 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) diff --git a/tests/compiler/std/array-access.optimized.wat b/tests/compiler/std/array-access.optimized.wat index 6aaa67dcd0..f72d5e39ee 100644 --- a/tests/compiler/std/array-access.optimized.wat +++ b/tests/compiler/std/array-access.optimized.wat @@ -9,7 +9,6 @@ (data (i32.const 80) "\1a\00\00\00\01\00\00\00\01\00\00\00\1a\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s") (data (i32.const 128) "^\00\00\00\01\00\00\00\01\00\00\00^\00\00\00E\00l\00e\00m\00e\00n\00t\00 \00t\00y\00p\00e\00 \00m\00u\00s\00t\00 \00b\00e\00 \00n\00u\00l\00l\00a\00b\00l\00e\00 \00i\00f\00 \00a\00r\00r\00a\00y\00 \00i\00s\00 \00h\00o\00l\00e\00y") (data (i32.const 244) "\01\00\00\00\01") - (data (i32.const 256) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\00n\00u\00l\00l") (export "memory" (memory $0)) (export "i32ArrayArrayElementAccess" (func $std/array-access/i32ArrayArrayElementAccess)) (export "stringArrayPropertyAccess" (func $std/array-access/stringArrayPropertyAccess)) @@ -24,7 +23,7 @@ if i32.const 32 i32.const 96 - i32.const 93 + i32.const 96 i32.const 41 call $~lib/builtins/abort unreachable @@ -41,7 +40,7 @@ if i32.const 144 i32.const 96 - i32.const 97 + i32.const 100 i32.const 39 call $~lib/builtins/abort unreachable @@ -56,7 +55,7 @@ if i32.const 32 i32.const 96 - i32.const 93 + i32.const 96 i32.const 41 call $~lib/builtins/abort unreachable diff --git a/tests/compiler/std/array-access.untouched.wat b/tests/compiler/std/array-access.untouched.wat index 82898f2501..7e5710a3d0 100644 --- a/tests/compiler/std/array-access.untouched.wat +++ b/tests/compiler/std/array-access.untouched.wat @@ -11,7 +11,6 @@ (data (i32.const 80) "\1a\00\00\00\01\00\00\00\01\00\00\00\1a\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s\00") (data (i32.const 128) "^\00\00\00\01\00\00\00\01\00\00\00^\00\00\00E\00l\00e\00m\00e\00n\00t\00 \00t\00y\00p\00e\00 \00m\00u\00s\00t\00 \00b\00e\00 \00n\00u\00l\00l\00a\00b\00l\00e\00 \00i\00f\00 \00a\00r\00r\00a\00y\00 \00i\00s\00 \00h\00o\00l\00e\00y\00") (data (i32.const 240) "\00\00\00\00\01\00\00\00\01\00\00\00\00\00\00\00") - (data (i32.const 256) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\00n\00u\00l\00l\00") (table $0 1 funcref) (global $~lib/ASC_SHRINK_LEVEL i32 (i32.const 0)) (export "memory" (memory $0)) @@ -45,7 +44,7 @@ if i32.const 32 i32.const 96 - i32.const 93 + i32.const 96 i32.const 41 call $~lib/builtins/abort unreachable @@ -61,7 +60,7 @@ call $~lib/rt/stub/__release i32.const 144 i32.const 96 - i32.const 97 + i32.const 100 i32.const 39 call $~lib/builtins/abort unreachable @@ -86,7 +85,7 @@ if i32.const 32 i32.const 96 - i32.const 93 + i32.const 96 i32.const 41 call $~lib/builtins/abort unreachable @@ -135,7 +134,7 @@ if i32.const 32 i32.const 96 - i32.const 93 + i32.const 96 i32.const 41 call $~lib/builtins/abort unreachable @@ -151,7 +150,7 @@ call $~lib/rt/stub/__release i32.const 144 i32.const 96 - i32.const 97 + i32.const 100 i32.const 39 call $~lib/builtins/abort unreachable @@ -315,41 +314,22 @@ local.get $1 call $~lib/rt/stub/__retain local.set $1 - local.get $1 - i32.const 0 - i32.eq - if - i32.const 272 - local.tee $3 - local.get $1 - local.tee $4 - i32.ne - if - local.get $3 - call $~lib/rt/stub/__retain - local.set $3 - local.get $4 - call $~lib/rt/stub/__release - end - local.get $3 - local.set $1 - end local.get $0 call $~lib/string/String#get:length - local.set $5 + local.set $3 local.get $2 - local.tee $3 - i32.const 0 local.tee $4 - local.get $3 + i32.const 0 + local.tee $5 local.get $4 + local.get $5 i32.gt_s select - local.tee $3 - local.get $5 local.tee $4 local.get $3 + local.tee $5 local.get $4 + local.get $5 i32.lt_s select local.set $6 @@ -359,14 +339,14 @@ local.get $7 local.get $6 i32.add - local.get $5 + local.get $3 i32.gt_s if i32.const 0 - local.set $3 + local.set $4 local.get $1 call $~lib/rt/stub/__release - local.get $3 + local.get $4 return end local.get $0 @@ -376,10 +356,10 @@ local.get $7 call $~lib/util/string/compareImpl i32.eqz - local.set $3 + local.set $4 local.get $1 call $~lib/rt/stub/__release - local.get $3 + local.get $4 ) (func $std/array-access/stringArrayMethodCall (; 14 ;) (param $0 i32) (result i32) (local $1 i32) @@ -420,7 +400,7 @@ if i32.const 32 i32.const 96 - i32.const 93 + i32.const 96 i32.const 41 call $~lib/builtins/abort unreachable @@ -436,7 +416,7 @@ call $~lib/rt/stub/__release i32.const 144 i32.const 96 - i32.const 97 + i32.const 100 i32.const 39 call $~lib/builtins/abort unreachable diff --git a/tests/compiler/std/array-literal.optimized.wat b/tests/compiler/std/array-literal.optimized.wat index 483763b972..ba3856cb88 100644 --- a/tests/compiler/std/array-literal.optimized.wat +++ b/tests/compiler/std/array-literal.optimized.wat @@ -43,7 +43,7 @@ if i32.const 160 i32.const 224 - i32.const 93 + i32.const 96 i32.const 41 call $~lib/builtins/abort unreachable @@ -62,7 +62,7 @@ if i32.const 160 i32.const 224 - i32.const 93 + i32.const 96 i32.const 41 call $~lib/builtins/abort unreachable diff --git a/tests/compiler/std/array-literal.untouched.wat b/tests/compiler/std/array-literal.untouched.wat index a7c5ae6447..a04aaa7f8d 100644 --- a/tests/compiler/std/array-literal.untouched.wat +++ b/tests/compiler/std/array-literal.untouched.wat @@ -65,7 +65,7 @@ if i32.const 160 i32.const 224 - i32.const 93 + i32.const 96 i32.const 41 call $~lib/builtins/abort unreachable @@ -98,7 +98,7 @@ if i32.const 160 i32.const 224 - i32.const 93 + i32.const 96 i32.const 41 call $~lib/builtins/abort unreachable diff --git a/tests/compiler/std/array.optimized.wat b/tests/compiler/std/array.optimized.wat index 09b4f7e5cf..2606dda6eb 100644 --- a/tests/compiler/std/array.optimized.wat +++ b/tests/compiler/std/array.optimized.wat @@ -1648,12 +1648,7 @@ i32.store offset=12 local.get $1 ) - (func $~lib/array/Array.isArray<~lib/array/Array | null> (; 23 ;) (param $0 i32) (result i32) - local.get $0 - i32.const 0 - i32.ne - ) - (func $std/array/Ref#constructor (; 24 ;) (param $0 i32) (result i32) + (func $std/array/Ref#constructor (; 23 ;) (param $0 i32) (result i32) (local $1 i32) i32.const 4 i32.const 4 @@ -1664,7 +1659,7 @@ i32.store local.get $1 ) - (func $~lib/memory/memory.copy (; 25 ;) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/memory/memory.copy (; 24 ;) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) block $~lib/util/memory/memmove|inlined.0 @@ -1837,7 +1832,7 @@ end end ) - (func $~lib/rt/__allocArray (; 26 ;) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (func $~lib/rt/__allocArray (; 25 ;) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) (local $4 i32) i32.const 16 local.get $2 @@ -1870,7 +1865,7 @@ end local.get $2 ) - (func $~lib/array/Array#fill (; 27 ;) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (func $~lib/array/Array#fill (; 26 ;) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) (local $4 i32) (local $5 i32) local.get $0 @@ -1937,7 +1932,7 @@ local.get $0 call $~lib/rt/pure/__retain ) - (func $~lib/array/Array#__get (; 28 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#__get (; 27 ;) (param $0 i32) (param $1 i32) (result i32) local.get $1 local.get $0 i32.load offset=12 @@ -1945,7 +1940,7 @@ if i32.const 448 i32.const 512 - i32.const 93 + i32.const 96 i32.const 41 call $~lib/builtins/abort unreachable @@ -1956,7 +1951,7 @@ i32.add i32.load8_u ) - (func $std/array/isArraysEqual (; 29 ;) (param $0 i32) (param $1 i32) (result i32) + (func $std/array/isArraysEqual (; 28 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) local.get $0 @@ -2001,7 +1996,7 @@ end i32.const 1 ) - (func $~lib/array/Array#fill (; 30 ;) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (func $~lib/array/Array#fill (; 29 ;) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) (local $4 i32) (local $5 i32) local.get $0 @@ -2076,7 +2071,7 @@ local.get $0 call $~lib/rt/pure/__retain ) - (func $~lib/array/Array#__get (; 31 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#__get (; 30 ;) (param $0 i32) (param $1 i32) (result i32) local.get $1 local.get $0 i32.load offset=12 @@ -2084,7 +2079,7 @@ if i32.const 448 i32.const 512 - i32.const 93 + i32.const 96 i32.const 41 call $~lib/builtins/abort unreachable @@ -2097,7 +2092,7 @@ i32.add i32.load ) - (func $std/array/isArraysEqual (; 32 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/array/isArraysEqual (; 31 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $2 i32.eqz @@ -2145,7 +2140,7 @@ end i32.const 1 ) - (func $std/array/internalCapacity (; 33 ;) (param $0 i32) (result i32) + (func $std/array/internalCapacity (; 32 ;) (param $0 i32) (result i32) local.get $0 i32.load i32.const 16 @@ -2154,7 +2149,7 @@ i32.const 2 i32.shr_s ) - (func $~lib/rt/tlsf/checkUsedBlock (; 34 ;) (param $0 i32) (result i32) + (func $~lib/rt/tlsf/checkUsedBlock (; 33 ;) (param $0 i32) (result i32) (local $1 i32) local.get $0 i32.const 16 @@ -2196,7 +2191,7 @@ end local.get $1 ) - (func $~lib/rt/tlsf/freeBlock (; 35 ;) (param $0 i32) (param $1 i32) + (func $~lib/rt/tlsf/freeBlock (; 34 ;) (param $0 i32) (param $1 i32) local.get $1 local.get $1 i32.load @@ -2209,7 +2204,7 @@ local.get $1 call $~lib/rt/rtrace/onfree ) - (func $~lib/rt/tlsf/reallocateBlock (; 36 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/rt/tlsf/reallocateBlock (; 35 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -2312,7 +2307,7 @@ end local.get $3 ) - (func $~lib/array/ensureSize (; 37 ;) (param $0 i32) (param $1 i32) + (func $~lib/array/ensureSize (; 36 ;) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -2372,7 +2367,7 @@ i32.store offset=8 end ) - (func $~lib/array/Array#push (; 38 ;) (param $0 i32) (param $1 i32) + (func $~lib/array/Array#push (; 37 ;) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) local.get $0 @@ -2395,7 +2390,7 @@ local.get $3 i32.store offset=12 ) - (func $~lib/array/Array#pop (; 39 ;) (param $0 i32) (result i32) + (func $~lib/array/Array#pop (; 38 ;) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) local.get $0 @@ -2406,7 +2401,7 @@ if i32.const 976 i32.const 512 - i32.const 288 + i32.const 291 i32.const 20 call $~lib/builtins/abort unreachable @@ -2425,7 +2420,7 @@ local.get $1 i32.store offset=12 ) - (func $~lib/array/Array#set:length (; 40 ;) (param $0 i32) + (func $~lib/array/Array#set:length (; 39 ;) (param $0 i32) (local $1 i32) (local $2 i32) local.get $0 @@ -2463,7 +2458,7 @@ i32.const 0 i32.store offset=12 ) - (func $~lib/array/Array#concat (; 41 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#concat (; 40 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -2484,7 +2479,7 @@ if i32.const 32 i32.const 512 - i32.const 218 + i32.const 221 i32.const 59 call $~lib/builtins/abort unreachable @@ -2516,7 +2511,7 @@ call $~lib/memory/memory.copy local.get $2 ) - (func $~lib/array/Array#copyWithin (; 42 ;) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (func $~lib/array/Array#copyWithin (; 41 ;) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) (local $4 i32) (local $5 i32) local.get $3 @@ -2620,7 +2615,7 @@ local.get $0 call $~lib/rt/pure/__retain ) - (func $~lib/array/Array#unshift (; 43 ;) (param $0 i32) (param $1 i32) + (func $~lib/array/Array#unshift (; 42 ;) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) local.get $0 @@ -2649,7 +2644,7 @@ local.get $2 i32.store offset=12 ) - (func $~lib/array/Array#shift (; 44 ;) (param $0 i32) (result i32) + (func $~lib/array/Array#shift (; 43 ;) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -2662,7 +2657,7 @@ if i32.const 976 i32.const 512 - i32.const 349 + i32.const 352 i32.const 20 call $~lib/builtins/abort unreachable @@ -2692,7 +2687,7 @@ local.get $1 i32.store offset=12 ) - (func $~lib/array/Array#reverse (; 45 ;) (param $0 i32) (result i32) + (func $~lib/array/Array#reverse (; 44 ;) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -2742,7 +2737,7 @@ local.get $0 call $~lib/rt/pure/__retain ) - (func $~lib/array/Array#indexOf (; 46 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/array/Array#indexOf (; 45 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $0 i32.load offset=12 @@ -2802,7 +2797,7 @@ end i32.const -1 ) - (func $~lib/array/Array#indexOf (; 47 ;) (param $0 i32) (result i32) + (func $~lib/array/Array#indexOf (; 46 ;) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) local.get $0 @@ -2848,7 +2843,7 @@ end i32.const -1 ) - (func $~lib/array/Array#indexOf (; 48 ;) (param $0 i32) (result i32) + (func $~lib/array/Array#indexOf (; 47 ;) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) local.get $0 @@ -2894,7 +2889,7 @@ end i32.const -1 ) - (func $~lib/array/Array#includes (; 49 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/array/Array#includes (; 48 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 local.get $1 local.get $2 @@ -2902,7 +2897,7 @@ i32.const 0 i32.ge_s ) - (func $~lib/array/Array#includes (; 50 ;) (param $0 i32) (result i32) + (func $~lib/array/Array#includes (; 49 ;) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 f32) @@ -2957,7 +2952,7 @@ end i32.const 0 ) - (func $~lib/array/Array#includes (; 51 ;) (param $0 i32) (result i32) + (func $~lib/array/Array#includes (; 50 ;) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 f64) @@ -3012,7 +3007,7 @@ end i32.const 0 ) - (func $~lib/array/Array#splice (; 52 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/array/Array#splice (; 51 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -3102,7 +3097,7 @@ i32.store offset=12 local.get $4 ) - (func $~lib/array/Array#splice (; 53 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#splice (; 52 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -3193,7 +3188,7 @@ i32.store offset=12 local.get $4 ) - (func $~lib/array/Array#__unchecked_get (; 54 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#__unchecked_get (; 53 ;) (param $0 i32) (param $1 i32) (result i32) local.get $0 i32.load offset=4 local.get $1 @@ -3203,7 +3198,7 @@ i32.load call $~lib/rt/pure/__retain ) - (func $~lib/array/Array#__get (; 55 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#__get (; 54 ;) (param $0 i32) (param $1 i32) (result i32) local.get $1 local.get $0 i32.load offset=12 @@ -3211,7 +3206,7 @@ if i32.const 448 i32.const 512 - i32.const 93 + i32.const 96 i32.const 41 call $~lib/builtins/abort unreachable @@ -3226,14 +3221,14 @@ call $~lib/rt/pure/__release i32.const 3920 i32.const 512 - i32.const 97 + i32.const 100 i32.const 39 call $~lib/builtins/abort unreachable end local.get $0 ) - (func $~lib/array/Array#splice (; 56 ;) (param $0 i32) (result i32) + (func $~lib/array/Array#splice (; 55 ;) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -3311,7 +3306,7 @@ i32.store offset=12 local.get $4 ) - (func $~lib/array/Array#__get (; 57 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#__get (; 56 ;) (param $0 i32) (param $1 i32) (result i32) local.get $1 local.get $0 i32.load offset=12 @@ -3319,7 +3314,7 @@ if i32.const 448 i32.const 512 - i32.const 93 + i32.const 96 i32.const 41 call $~lib/builtins/abort unreachable @@ -3328,7 +3323,7 @@ local.get $1 call $~lib/array/Array#__unchecked_get ) - (func $~lib/array/Array#__set (; 58 ;) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/array/Array#__set (; 57 ;) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) local.get $1 local.get $0 @@ -3341,7 +3336,7 @@ if i32.const 448 i32.const 512 - i32.const 109 + i32.const 112 i32.const 21 call $~lib/builtins/abort unreachable @@ -3365,15 +3360,15 @@ local.get $2 i32.store ) - (func $start:std/array~anonymous|0 (; 59 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $start:std/array~anonymous|0 (; 58 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 i32.eqz ) - (func $~setArgumentsLength (; 60 ;) (param $0 i32) + (func $~setArgumentsLength (; 59 ;) (param $0 i32) local.get $0 global.set $~argumentsLength ) - (func $~lib/array/Array#findIndex (; 61 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#findIndex (; 60 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -3418,17 +3413,17 @@ end i32.const -1 ) - (func $start:std/array~anonymous|1 (; 62 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $start:std/array~anonymous|1 (; 61 ;) (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 (; 63 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $start:std/array~anonymous|2 (; 62 ;) (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 (; 64 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $start:std/array~anonymous|3 (; 63 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $2 i32.const 100 call $~lib/array/Array#push @@ -3436,7 +3431,7 @@ i32.const 100 i32.eq ) - (func $start:std/array~anonymous|5 (; 65 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $start:std/array~anonymous|5 (; 64 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $2 call $~lib/array/Array#pop drop @@ -3444,12 +3439,12 @@ i32.const 100 i32.eq ) - (func $start:std/array~anonymous|6 (; 66 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $start:std/array~anonymous|6 (; 65 ;) (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 (; 67 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#every (; 66 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -3495,12 +3490,12 @@ end i32.const 1 ) - (func $start:std/array~anonymous|7 (; 68 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $start:std/array~anonymous|7 (; 67 ;) (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 (; 69 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $start:std/array~anonymous|8 (; 68 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $2 i32.const 100 call $~lib/array/Array#push @@ -3508,12 +3503,12 @@ i32.const 10 i32.lt_s ) - (func $start:std/array~anonymous|9 (; 70 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $start:std/array~anonymous|9 (; 69 ;) (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 (; 71 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $start:std/array~anonymous|10 (; 70 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $2 call $~lib/array/Array#pop drop @@ -3521,12 +3516,12 @@ i32.const 3 i32.lt_s ) - (func $start:std/array~anonymous|11 (; 72 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $start:std/array~anonymous|11 (; 71 ;) (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 (; 73 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#some (; 72 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -3571,12 +3566,12 @@ end i32.const 0 ) - (func $start:std/array~anonymous|12 (; 74 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $start:std/array~anonymous|12 (; 73 ;) (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 (; 75 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $start:std/array~anonymous|13 (; 74 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $2 i32.const 100 call $~lib/array/Array#push @@ -3584,12 +3579,12 @@ i32.const 10 i32.gt_s ) - (func $start:std/array~anonymous|14 (; 76 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $start:std/array~anonymous|14 (; 75 ;) (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 (; 77 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $start:std/array~anonymous|15 (; 76 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $2 call $~lib/array/Array#pop drop @@ -3597,13 +3592,13 @@ i32.const 3 i32.gt_s ) - (func $start:std/array~anonymous|16 (; 78 ;) (param $0 i32) (param $1 i32) (param $2 i32) + (func $start:std/array~anonymous|16 (; 77 ;) (param $0 i32) (param $1 i32) (param $2 i32) local.get $0 global.get $std/array/i i32.add global.set $std/array/i ) - (func $~lib/array/Array#forEach (; 79 ;) (param $0 i32) (param $1 i32) + (func $~lib/array/Array#forEach (; 78 ;) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -3643,7 +3638,7 @@ end end ) - (func $start:std/array~anonymous|17 (; 80 ;) (param $0 i32) (param $1 i32) (param $2 i32) + (func $start:std/array~anonymous|17 (; 79 ;) (param $0 i32) (param $1 i32) (param $2 i32) local.get $2 i32.const 100 call $~lib/array/Array#push @@ -3652,7 +3647,7 @@ i32.add global.set $std/array/i ) - (func $start:std/array~anonymous|19 (; 81 ;) (param $0 i32) (param $1 i32) (param $2 i32) + (func $start:std/array~anonymous|19 (; 80 ;) (param $0 i32) (param $1 i32) (param $2 i32) local.get $2 call $~lib/array/Array#pop drop @@ -3661,7 +3656,7 @@ i32.add global.set $std/array/i ) - (func $start:std/array~anonymous|20 (; 82 ;) (param $0 i32) (param $1 i32) (param $2 i32) + (func $start:std/array~anonymous|20 (; 81 ;) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) local.get $1 i32.eqz @@ -3754,11 +3749,11 @@ end end ) - (func $start:std/array~anonymous|21 (; 83 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result f32) + (func $start:std/array~anonymous|21 (; 82 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result f32) local.get $0 f32.convert_i32_s ) - (func $~lib/array/Array#map (; 84 ;) (param $0 i32) (result i32) + (func $~lib/array/Array#map (; 83 ;) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -3814,7 +3809,7 @@ end local.get $4 ) - (func $~lib/array/Array#__get (; 85 ;) (param $0 i32) (param $1 i32) (result f32) + (func $~lib/array/Array#__get (; 84 ;) (param $0 i32) (param $1 i32) (result f32) local.get $1 local.get $0 i32.load offset=12 @@ -3822,7 +3817,7 @@ if i32.const 448 i32.const 512 - i32.const 93 + i32.const 96 i32.const 41 call $~lib/builtins/abort unreachable @@ -3835,7 +3830,7 @@ i32.add f32.load ) - (func $start:std/array~anonymous|22 (; 86 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $start:std/array~anonymous|22 (; 85 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $2 i32.const 100 call $~lib/array/Array#push @@ -3845,7 +3840,7 @@ global.set $std/array/i local.get $0 ) - (func $~lib/array/Array#map (; 87 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#map (; 86 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -3904,14 +3899,14 @@ end local.get $5 ) - (func $start:std/array~anonymous|23 (; 88 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $start:std/array~anonymous|23 (; 87 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 global.get $std/array/i i32.add global.set $std/array/i local.get $0 ) - (func $start:std/array~anonymous|24 (; 89 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $start:std/array~anonymous|24 (; 88 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $2 call $~lib/array/Array#pop drop @@ -3921,12 +3916,12 @@ global.set $std/array/i local.get $0 ) - (func $start:std/array~anonymous|25 (; 90 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $start:std/array~anonymous|25 (; 89 ;) (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 (; 91 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#filter (; 90 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -3982,7 +3977,7 @@ end local.get $4 ) - (func $start:std/array~anonymous|26 (; 92 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $start:std/array~anonymous|26 (; 91 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $2 i32.const 100 call $~lib/array/Array#push @@ -3994,7 +3989,7 @@ i32.const 2 i32.ge_s ) - (func $start:std/array~anonymous|27 (; 93 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $start:std/array~anonymous|27 (; 92 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 global.get $std/array/i i32.add @@ -4003,7 +3998,7 @@ i32.const 2 i32.ge_s ) - (func $start:std/array~anonymous|28 (; 94 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $start:std/array~anonymous|28 (; 93 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $2 call $~lib/array/Array#pop drop @@ -4015,12 +4010,12 @@ i32.const 2 i32.ge_s ) - (func $start:std/array~anonymous|29 (; 95 ;) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (func $start:std/array~anonymous|29 (; 94 ;) (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 (; 96 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/array/Array#reduce (; 95 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -4063,7 +4058,7 @@ end local.get $2 ) - (func $start:std/array~anonymous|31 (; 97 ;) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (func $start:std/array~anonymous|31 (; 96 ;) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) i32.const 1 local.get $1 i32.const 2 @@ -4071,7 +4066,7 @@ local.get $0 select ) - (func $start:std/array~anonymous|32 (; 98 ;) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (func $start:std/array~anonymous|32 (; 97 ;) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) i32.const 1 local.get $1 i32.const 100 @@ -4079,7 +4074,7 @@ local.get $0 select ) - (func $start:std/array~anonymous|33 (; 99 ;) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (func $start:std/array~anonymous|33 (; 98 ;) (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 @@ -4087,7 +4082,7 @@ local.get $1 i32.add ) - (func $start:std/array~anonymous|35 (; 100 ;) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (func $start:std/array~anonymous|35 (; 99 ;) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) local.get $3 call $~lib/array/Array#pop drop @@ -4095,7 +4090,7 @@ local.get $1 i32.add ) - (func $~lib/array/Array#reduceRight (; 101 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/array/Array#reduceRight (; 100 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $0 i32.load offset=12 @@ -4131,7 +4126,7 @@ end local.get $2 ) - (func $~lib/math/murmurHash3 (; 102 ;) (param $0 i64) (result i64) + (func $~lib/math/murmurHash3 (; 101 ;) (param $0 i64) (result i64) local.get $0 local.get $0 i64.const 33 @@ -4152,7 +4147,7 @@ i64.shr_u i64.xor ) - (func $~lib/math/splitMix32 (; 103 ;) (param $0 i32) (result i32) + (func $~lib/math/splitMix32 (; 102 ;) (param $0 i32) (result i32) local.get $0 i32.const 1831565813 i32.add @@ -4184,7 +4179,7 @@ i32.shr_u i32.xor ) - (func $~lib/math/NativeMath.seedRandom (; 104 ;) (param $0 i64) + (func $~lib/math/NativeMath.seedRandom (; 103 ;) (param $0 i64) i32.const 1 global.set $~lib/math/random_seeded local.get $0 @@ -4228,7 +4223,7 @@ unreachable end ) - (func $~lib/util/sort/insertionSort (; 105 ;) (param $0 i32) (param $1 i32) + (func $~lib/util/sort/insertionSort (; 104 ;) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 f32) @@ -4306,13 +4301,13 @@ end end ) - (func $~lib/rt/tlsf/__free (; 106 ;) (param $0 i32) + (func $~lib/rt/tlsf/__free (; 105 ;) (param $0 i32) call $~lib/rt/tlsf/maybeInitialize local.get $0 call $~lib/rt/tlsf/checkUsedBlock call $~lib/rt/tlsf/freeBlock ) - (func $~lib/util/sort/weakHeapSort (; 107 ;) (param $0 i32) (param $1 i32) + (func $~lib/util/sort/weakHeapSort (; 106 ;) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 f32) @@ -4569,7 +4564,7 @@ local.get $4 f32.store ) - (func $~lib/array/Array#sort (; 108 ;) (param $0 i32) (result i32) + (func $~lib/array/Array#sort (; 107 ;) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 f32) @@ -4631,7 +4626,7 @@ local.get $0 call $~lib/rt/pure/__retain ) - (func $~lib/util/sort/COMPARATOR~anonymous|0 (; 109 ;) (param $0 f32) (param $1 f32) (result i32) + (func $~lib/util/sort/COMPARATOR~anonymous|0 (; 108 ;) (param $0 f32) (param $1 f32) (result i32) (local $2 i32) (local $3 i32) local.get $0 @@ -4660,7 +4655,7 @@ i32.lt_s i32.sub ) - (func $std/array/isArraysEqual (; 110 ;) (param $0 i32) (param $1 i32) (result i32) + (func $std/array/isArraysEqual (; 109 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 f32) (local $4 i32) @@ -4725,7 +4720,7 @@ end i32.const 1 ) - (func $~lib/util/sort/insertionSort (; 111 ;) (param $0 i32) (param $1 i32) + (func $~lib/util/sort/insertionSort (; 110 ;) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 f64) @@ -4803,7 +4798,7 @@ end end ) - (func $~lib/util/sort/weakHeapSort (; 112 ;) (param $0 i32) (param $1 i32) + (func $~lib/util/sort/weakHeapSort (; 111 ;) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 f64) @@ -5060,7 +5055,7 @@ local.get $4 f64.store ) - (func $~lib/array/Array#sort (; 113 ;) (param $0 i32) (result i32) + (func $~lib/array/Array#sort (; 112 ;) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 f64) @@ -5122,7 +5117,7 @@ local.get $0 call $~lib/rt/pure/__retain ) - (func $~lib/util/sort/COMPARATOR~anonymous|0 (; 114 ;) (param $0 f64) (param $1 f64) (result i32) + (func $~lib/util/sort/COMPARATOR~anonymous|0 (; 113 ;) (param $0 f64) (param $1 f64) (result i32) (local $2 i64) (local $3 i64) local.get $0 @@ -5151,7 +5146,7 @@ i64.lt_s i32.sub ) - (func $~lib/array/Array#__get (; 115 ;) (param $0 i32) (param $1 i32) (result f64) + (func $~lib/array/Array#__get (; 114 ;) (param $0 i32) (param $1 i32) (result f64) local.get $1 local.get $0 i32.load offset=12 @@ -5159,7 +5154,7 @@ if i32.const 448 i32.const 512 - i32.const 93 + i32.const 96 i32.const 41 call $~lib/builtins/abort unreachable @@ -5172,7 +5167,7 @@ i32.add f64.load ) - (func $std/array/isArraysEqual (; 116 ;) (param $0 i32) (param $1 i32) (result i32) + (func $std/array/isArraysEqual (; 115 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 f64) (local $4 i32) @@ -5237,7 +5232,7 @@ end i32.const 1 ) - (func $~lib/util/sort/insertionSort (; 117 ;) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/util/sort/insertionSort (; 116 ;) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -5316,7 +5311,7 @@ end end ) - (func $~lib/util/sort/weakHeapSort (; 118 ;) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/util/sort/weakHeapSort (; 117 ;) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -5575,7 +5570,7 @@ local.get $1 i32.store ) - (func $~lib/array/Array#sort (; 119 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#sort (; 118 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -5639,12 +5634,12 @@ local.get $0 call $~lib/rt/pure/__retain ) - (func $~lib/util/sort/COMPARATOR~anonymous|0 (; 120 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/util/sort/COMPARATOR~anonymous|0 (; 119 ;) (param $0 i32) (param $1 i32) (result i32) local.get $0 local.get $1 i32.sub ) - (func $~lib/util/sort/COMPARATOR~anonymous|0 (; 121 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/util/sort/COMPARATOR~anonymous|0 (; 120 ;) (param $0 i32) (param $1 i32) (result i32) local.get $0 local.get $1 i32.gt_u @@ -5653,7 +5648,7 @@ i32.lt_u i32.sub ) - (func $std/array/createReverseOrderedArray (; 122 ;) (param $0 i32) (result i32) + (func $std/array/createReverseOrderedArray (; 121 ;) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) local.get $0 @@ -5681,7 +5676,7 @@ end local.get $2 ) - (func $~lib/math/NativeMath.random (; 123 ;) (result f64) + (func $~lib/math/NativeMath.random (; 122 ;) (result f64) (local $0 i64) (local $1 i64) global.get $~lib/math/random_seeded @@ -5725,7 +5720,7 @@ f64.const 1 f64.sub ) - (func $std/array/createRandomOrderedArray (; 124 ;) (param $0 i32) (result i32) + (func $std/array/createRandomOrderedArray (; 123 ;) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) local.get $0 @@ -5753,7 +5748,7 @@ end local.get $2 ) - (func $std/array/isSorted (; 125 ;) (param $0 i32) (param $1 i32) (result i32) + (func $std/array/isSorted (; 124 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) i32.const 1 @@ -5793,7 +5788,7 @@ end i32.const 1 ) - (func $std/array/assertSorted (; 126 ;) (param $0 i32) (param $1 i32) + (func $std/array/assertSorted (; 125 ;) (param $0 i32) (param $1 i32) local.get $0 local.get $1 call $~lib/array/Array#sort @@ -5812,17 +5807,17 @@ local.get $0 call $~lib/rt/pure/__release ) - (func $std/array/assertSortedDefault (; 127 ;) (param $0 i32) + (func $std/array/assertSortedDefault (; 126 ;) (param $0 i32) local.get $0 i32.const 48 call $std/array/assertSorted ) - (func $start:std/array~anonymous|44 (; 128 ;) (param $0 i32) (param $1 i32) (result i32) + (func $start:std/array~anonymous|44 (; 127 ;) (param $0 i32) (param $1 i32) (result i32) local.get $1 local.get $0 i32.sub ) - (func $~lib/array/Array<~lib/array/Array>#__unchecked_set (; 129 ;) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/array/Array<~lib/array/Array>#__unchecked_set (; 128 ;) (param $0 i32) (param $1 i32) (param $2 i32) local.get $0 i32.load offset=4 local.get $1 @@ -5843,7 +5838,7 @@ call $~lib/rt/pure/__release end ) - (func $~lib/array/Array<~lib/array/Array>#__set (; 130 ;) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/array/Array<~lib/array/Array>#__set (; 129 ;) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) local.get $1 local.get $0 @@ -5856,7 +5851,7 @@ if i32.const 448 i32.const 512 - i32.const 109 + i32.const 112 i32.const 21 call $~lib/builtins/abort unreachable @@ -5876,7 +5871,7 @@ local.get $2 call $~lib/array/Array<~lib/array/Array>#__unchecked_set ) - (func $std/array/createReverseOrderedNestedArray (; 131 ;) (result i32) + (func $std/array/createReverseOrderedNestedArray (; 130 ;) (result i32) (local $0 i32) (local $1 i32) (local $2 i32) @@ -5921,7 +5916,7 @@ end local.get $1 ) - (func $start:std/array~anonymous|47 (; 132 ;) (param $0 i32) (param $1 i32) (result i32) + (func $start:std/array~anonymous|47 (; 131 ;) (param $0 i32) (param $1 i32) (result i32) local.get $0 i32.const 0 call $~lib/array/Array#__get @@ -5930,7 +5925,7 @@ call $~lib/array/Array#__get i32.sub ) - (func $~lib/array/Array<~lib/array/Array>#sort (; 133 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array<~lib/array/Array>#sort (; 132 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -5984,7 +5979,7 @@ local.get $0 call $~lib/rt/pure/__retain ) - (func $std/array/isSorted<~lib/array/Array> (; 134 ;) (param $0 i32) (param $1 i32) (result i32) + (func $std/array/isSorted<~lib/array/Array> (; 133 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -6036,7 +6031,7 @@ end i32.const 1 ) - (func $std/array/assertSorted<~lib/array/Array> (; 135 ;) (param $0 i32) (param $1 i32) + (func $std/array/assertSorted<~lib/array/Array> (; 134 ;) (param $0 i32) (param $1 i32) local.get $0 local.get $1 call $~lib/array/Array<~lib/array/Array>#sort @@ -6055,7 +6050,7 @@ local.get $0 call $~lib/rt/pure/__release ) - (func $std/array/createReverseOrderedElementsArray (; 136 ;) (result i32) + (func $std/array/createReverseOrderedElementsArray (; 135 ;) (result i32) (local $0 i32) (local $1 i32) (local $2 i32) @@ -6101,14 +6096,14 @@ end local.get $1 ) - (func $start:std/array~anonymous|48 (; 137 ;) (param $0 i32) (param $1 i32) (result i32) + (func $start:std/array~anonymous|48 (; 136 ;) (param $0 i32) (param $1 i32) (result i32) local.get $0 i32.load local.get $1 i32.load i32.sub ) - (func $std/array/isSorted<~lib/string/String | null> (; 138 ;) (param $0 i32) (result i32) + (func $std/array/isSorted<~lib/string/String | null> (; 137 ;) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -6159,7 +6154,7 @@ end i32.const 1 ) - (func $std/array/assertSorted<~lib/string/String | null> (; 139 ;) (param $0 i32) + (func $std/array/assertSorted<~lib/string/String | null> (; 138 ;) (param $0 i32) local.get $0 i32.const 55 call $~lib/array/Array<~lib/array/Array>#sort @@ -6177,7 +6172,7 @@ local.get $0 call $~lib/rt/pure/__release ) - (func $~lib/string/String#get:length (; 140 ;) (param $0 i32) (result i32) + (func $~lib/string/String#get:length (; 139 ;) (param $0 i32) (result i32) local.get $0 i32.const 16 i32.sub @@ -6185,7 +6180,7 @@ i32.const 1 i32.shr_u ) - (func $~lib/util/string/compareImpl (; 141 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/util/string/compareImpl (; 140 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) local.get $0 @@ -6261,7 +6256,7 @@ end i32.const 0 ) - (func $~lib/util/sort/COMPARATOR<~lib/string/String | null>~anonymous|0 (; 142 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/util/sort/COMPARATOR<~lib/string/String | null>~anonymous|0 (; 141 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) i32.const 1 @@ -6315,7 +6310,7 @@ select call $~lib/util/string/compareImpl ) - (func $~lib/string/String.__eq (; 143 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/string/String.__eq (; 142 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) local.get $0 local.get $1 @@ -6349,7 +6344,7 @@ call $~lib/util/string/compareImpl i32.eqz ) - (func $std/array/isArraysEqual<~lib/string/String | null> (; 144 ;) (param $0 i32) (param $1 i32) (result i32) + (func $std/array/isArraysEqual<~lib/string/String | null> (; 143 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -6407,7 +6402,7 @@ end i32.const 1 ) - (func $~lib/string/String#charAt (; 145 ;) (param $0 i32) (result i32) + (func $~lib/string/String#charAt (; 144 ;) (param $0 i32) (result i32) (local $1 i32) local.get $0 i32.const 4080 @@ -6431,27 +6426,10 @@ local.get $1 call $~lib/rt/pure/__retain ) - (func $~lib/string/String#concat (; 146 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/string/String#concat (; 145 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) - local.get $1 - call $~lib/rt/pure/__retain - local.tee $1 - i32.eqz - if - i32.const 5232 - local.set $3 - local.get $1 - i32.const 5232 - i32.ne - if - local.get $1 - call $~lib/rt/pure/__release - end - i32.const 5232 - local.set $1 - end local.get $0 call $~lib/string/String#get:length i32.const 1 @@ -6466,10 +6444,7 @@ local.tee $2 i32.eqz if - local.get $1 - call $~lib/rt/pure/__release i32.const 5120 - local.tee $0 return end local.get $2 @@ -6486,11 +6461,9 @@ local.get $1 local.get $4 call $~lib/memory/memory.copy - local.get $1 - call $~lib/rt/pure/__release local.get $2 ) - (func $~lib/string/String.__concat (; 147 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/string/String.__concat (; 146 ;) (param $0 i32) (param $1 i32) (result i32) local.get $0 i32.const 5232 local.get $0 @@ -6498,7 +6471,7 @@ local.get $1 call $~lib/string/String#concat ) - (func $std/array/createRandomString (; 148 ;) (param $0 i32) (result i32) + (func $std/array/createRandomString (; 147 ;) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -6547,7 +6520,7 @@ end local.get $1 ) - (func $std/array/createRandomStringArray (; 149 ;) (result i32) + (func $std/array/createRandomStringArray (; 148 ;) (result i32) (local $0 i32) (local $1 i32) (local $2 i32) @@ -6589,7 +6562,7 @@ end local.get $0 ) - (func $~lib/string/String#substring (; 150 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/string/String#substring (; 149 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -6663,7 +6636,7 @@ local.get $2 call $~lib/rt/pure/__retain ) - (func $~lib/util/string/joinBooleanArray (; 151 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/util/string/joinBooleanArray (; 150 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -6803,7 +6776,7 @@ end local.get $3 ) - (func $~lib/util/number/decimalCount32 (; 152 ;) (param $0 i32) (result i32) + (func $~lib/util/number/decimalCount32 (; 151 ;) (param $0 i32) (result i32) i32.const 1 i32.const 2 local.get $0 @@ -6851,7 +6824,7 @@ i32.lt_u select ) - (func $~lib/util/number/utoa_simple (; 153 ;) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/util/number/utoa_simple (; 152 ;) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) loop $do-continue|0 local.get $1 @@ -6875,7 +6848,7 @@ br_if $do-continue|0 end ) - (func $~lib/util/number/itoa32 (; 154 ;) (param $0 i32) (result i32) + (func $~lib/util/number/itoa32 (; 153 ;) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -6917,7 +6890,7 @@ local.get $2 call $~lib/rt/pure/__retain ) - (func $~lib/util/number/itoa_stream (; 155 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/util/number/itoa_stream (; 154 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 local.get $1 i32.const 1 @@ -6959,7 +6932,7 @@ end local.get $2 ) - (func $~lib/util/string/joinIntegerArray (; 156 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/util/string/joinIntegerArray (; 155 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -7066,7 +7039,7 @@ end local.get $3 ) - (func $~lib/array/Array#join (; 157 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#join (; 156 ;) (param $0 i32) (param $1 i32) (result i32) local.get $0 i32.load offset=4 local.get $0 @@ -7074,7 +7047,7 @@ local.get $1 call $~lib/util/string/joinIntegerArray ) - (func $~lib/util/number/utoa32 (; 158 ;) (param $0 i32) (result i32) + (func $~lib/util/number/utoa32 (; 157 ;) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) local.get $0 @@ -7097,7 +7070,7 @@ local.get $2 call $~lib/rt/pure/__retain ) - (func $~lib/util/number/itoa_stream (; 159 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/util/number/itoa_stream (; 158 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 local.get $1 i32.const 1 @@ -7121,7 +7094,7 @@ call $~lib/util/number/utoa_simple local.get $0 ) - (func $~lib/util/string/joinIntegerArray (; 160 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/util/string/joinIntegerArray (; 159 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -7228,7 +7201,7 @@ end local.get $3 ) - (func $~lib/array/Array#join (; 161 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#join (; 160 ;) (param $0 i32) (param $1 i32) (result i32) local.get $0 i32.load offset=4 local.get $0 @@ -7236,7 +7209,7 @@ local.get $1 call $~lib/util/string/joinIntegerArray ) - (func $~lib/util/number/genDigits (; 162 ;) (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 (; 161 ;) (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) @@ -7630,7 +7603,7 @@ local.get $6 end ) - (func $~lib/util/number/prettify (; 163 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/util/number/prettify (; 162 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $2 i32.eqz @@ -7875,7 +7848,7 @@ end end ) - (func $~lib/util/number/dtoa_core (; 164 ;) (param $0 i32) (param $1 f64) (result i32) + (func $~lib/util/number/dtoa_core (; 163 ;) (param $0 i32) (param $1 f64) (result i32) (local $2 i64) (local $3 i32) (local $4 i64) @@ -8163,7 +8136,7 @@ local.get $10 i32.add ) - (func $~lib/util/number/dtoa (; 165 ;) (param $0 f64) (result i32) + (func $~lib/util/number/dtoa (; 164 ;) (param $0 f64) (result i32) (local $1 i32) (local $2 i32) local.get $0 @@ -8215,7 +8188,7 @@ local.get $1 call $~lib/rt/tlsf/__free ) - (func $~lib/util/number/dtoa_stream (; 166 ;) (param $0 i32) (param $1 i32) (param $2 f64) (result i32) + (func $~lib/util/number/dtoa_stream (; 165 ;) (param $0 i32) (param $1 i32) (param $2 f64) (result i32) (local $3 i32) local.get $0 local.get $1 @@ -8286,7 +8259,7 @@ local.get $2 call $~lib/util/number/dtoa_core ) - (func $~lib/util/string/joinFloatArray (; 167 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/util/string/joinFloatArray (; 166 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -8393,64 +8366,50 @@ end local.get $2 ) - (func $~lib/util/string/joinReferenceArray<~lib/string/String | null> (; 168 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/util/string/joinStringArray (; 167 ;) (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 $9 i32) - local.get $2 - local.set $5 local.get $1 i32.const 1 i32.sub - local.tee $6 + local.tee $7 i32.const 0 i32.lt_s if i32.const 5120 return end - i32.const 0 - local.set $2 - local.get $6 + local.get $7 i32.eqz if local.get $0 i32.load - local.tee $4 - if - local.get $4 - call $~lib/rt/pure/__retain - local.set $4 - end - local.get $4 + local.tee $0 if (result i32) - local.get $4 + local.get $0 call $~lib/rt/pure/__retain else i32.const 5120 end - local.get $4 - call $~lib/rt/pure/__release return end - i32.const 5120 - local.set $1 - local.get $5 - call $~lib/string/String#get:length + local.get $2 local.set $8 + i32.const 0 + local.set $2 loop $for-loop|0 - local.get $4 - local.get $6 + local.get $3 + local.get $1 i32.lt_s if local.get $2 - local.tee $3 + local.tee $6 local.get $0 - local.get $4 + local.get $3 i32.const 2 i32.shl i32.add @@ -8461,115 +8420,148 @@ local.get $2 call $~lib/rt/pure/__retain local.set $2 - local.get $3 + local.get $6 call $~lib/rt/pure/__release end local.get $2 if local.get $2 - call $~lib/rt/pure/__retain - local.tee $3 - local.get $1 + call $~lib/string/String#get:length + local.get $4 + i32.add + local.set $4 + end + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $for-loop|0 + end + end + local.get $4 + local.get $7 + local.get $8 + call $~lib/string/String#get:length + local.tee $6 + i32.mul + i32.add + i32.const 1 + i32.shl + i32.const 1 + call $~lib/rt/tlsf/__alloc + local.set $4 + i32.const 0 + local.set $3 + loop $for-loop|1 + local.get $3 + local.get $7 + i32.lt_s + if + local.get $2 + local.get $0 + local.get $3 + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $1 + i32.ne + if local.get $1 - local.get $3 - call $~lib/string/String.__concat - local.tee $9 - local.tee $3 - i32.ne - if - local.get $3 - call $~lib/rt/pure/__retain - local.set $3 - local.get $1 - call $~lib/rt/pure/__release - end - call $~lib/rt/pure/__release - local.get $9 - call $~lib/rt/pure/__release - local.get $3 + call $~lib/rt/pure/__retain local.set $1 + local.get $2 + call $~lib/rt/pure/__release end - local.get $8 + local.get $1 + local.tee $2 if - local.get $1 - local.tee $3 + local.get $4 local.get $5 - call $~lib/string/String.__concat - local.tee $7 + i32.const 1 + i32.shl + i32.add + local.get $2 + local.get $2 + call $~lib/string/String#get:length local.tee $1 - local.get $3 - i32.ne - if - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $3 - call $~lib/rt/pure/__release - end - local.get $7 - call $~lib/rt/pure/__release + i32.const 1 + i32.shl + call $~lib/memory/memory.copy + local.get $1 + local.get $5 + i32.add + local.set $5 end - local.get $4 + local.get $6 + if + local.get $4 + local.get $5 + i32.const 1 + i32.shl + i32.add + local.get $8 + local.get $6 + i32.const 1 + i32.shl + call $~lib/memory/memory.copy + local.get $5 + local.get $6 + i32.add + local.set $5 + end + local.get $3 i32.const 1 i32.add - local.set $4 - br $for-loop|0 + local.set $3 + br $for-loop|1 end end local.get $2 + local.tee $1 local.get $0 - local.get $6 + local.get $7 i32.const 2 i32.shl i32.add i32.load - local.tee $3 + local.tee $2 i32.ne if - local.get $3 - call $~lib/rt/pure/__retain - local.set $3 local.get $2 - call $~lib/rt/pure/__release - end - local.get $3 - if - local.get $3 call $~lib/rt/pure/__retain - local.tee $0 - local.get $1 + local.set $2 local.get $1 - local.get $0 - call $~lib/string/String.__concat - local.tee $0 - local.tee $2 - i32.ne - if - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $1 - call $~lib/rt/pure/__release - end - call $~lib/rt/pure/__release - local.get $0 call $~lib/rt/pure/__release + end + local.get $2 + if + local.get $4 + local.get $5 + i32.const 1 + i32.shl + i32.add local.get $2 - local.set $1 + local.get $2 + call $~lib/string/String#get:length + i32.const 1 + i32.shl + call $~lib/memory/memory.copy end - local.get $3 + local.get $4 + call $~lib/rt/pure/__retain + local.get $2 call $~lib/rt/pure/__release - local.get $1 ) - (func $~lib/array/Array<~lib/string/String | null>#join (; 169 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array<~lib/string/String | null>#join (; 168 ;) (param $0 i32) (param $1 i32) (result i32) local.get $0 i32.load offset=4 local.get $0 i32.load offset=12 local.get $1 - call $~lib/util/string/joinReferenceArray<~lib/string/String | null> + call $~lib/util/string/joinStringArray ) - (func $~lib/util/string/joinReferenceArray (; 170 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/util/string/joinReferenceArray (; 169 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -8721,19 +8713,19 @@ call $~lib/rt/pure/__release local.get $1 ) - (func $~lib/array/Array#join (; 171 ;) (param $0 i32) (result i32) + (func $~lib/array/Array#join (; 170 ;) (param $0 i32) (result i32) local.get $0 i32.load offset=4 local.get $0 i32.load offset=12 call $~lib/util/string/joinReferenceArray ) - (func $~lib/array/Array#toString (; 172 ;) (param $0 i32) (result i32) + (func $~lib/array/Array#toString (; 171 ;) (param $0 i32) (result i32) local.get $0 i32.const 5360 call $~lib/array/Array#join ) - (func $~lib/util/number/itoa_stream (; 173 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/util/number/itoa_stream (; 172 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $0 local.get $1 @@ -8788,7 +8780,7 @@ end local.get $2 ) - (func $~lib/util/string/joinIntegerArray (; 174 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/util/string/joinIntegerArray (; 173 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -8891,7 +8883,7 @@ end local.get $2 ) - (func $~lib/util/number/itoa_stream (; 175 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/util/number/itoa_stream (; 174 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 local.get $1 i32.const 1 @@ -8921,7 +8913,7 @@ call $~lib/util/number/utoa_simple local.get $1 ) - (func $~lib/util/string/joinIntegerArray (; 176 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/util/string/joinIntegerArray (; 175 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -9028,7 +9020,7 @@ end local.get $2 ) - (func $~lib/util/number/decimalCount64 (; 177 ;) (param $0 i64) (result i32) + (func $~lib/util/number/decimalCount64 (; 176 ;) (param $0 i64) (result i32) i32.const 10 i32.const 11 i32.const 12 @@ -9081,7 +9073,7 @@ i64.lt_u select ) - (func $~lib/util/number/utoa_simple (; 178 ;) (param $0 i32) (param $1 i64) (param $2 i32) + (func $~lib/util/number/utoa_simple (; 177 ;) (param $0 i32) (param $1 i64) (param $2 i32) (local $3 i64) loop $do-continue|0 local.get $1 @@ -9108,7 +9100,7 @@ br_if $do-continue|0 end ) - (func $~lib/util/number/utoa64 (; 179 ;) (param $0 i64) (result i32) + (func $~lib/util/number/utoa64 (; 178 ;) (param $0 i64) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -9151,7 +9143,7 @@ local.get $2 call $~lib/rt/pure/__retain ) - (func $~lib/util/number/itoa_stream (; 180 ;) (param $0 i32) (param $1 i32) (param $2 i64) (result i32) + (func $~lib/util/number/itoa_stream (; 179 ;) (param $0 i32) (param $1 i32) (param $2 i64) (result i32) (local $3 i32) local.get $0 local.get $1 @@ -9191,7 +9183,7 @@ end local.get $1 ) - (func $~lib/util/string/joinIntegerArray (; 181 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/util/string/joinIntegerArray (; 180 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -9298,7 +9290,7 @@ end local.get $2 ) - (func $~lib/util/number/itoa64 (; 182 ;) (param $0 i64) (result i32) + (func $~lib/util/number/itoa64 (; 181 ;) (param $0 i64) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -9362,7 +9354,7 @@ local.get $3 call $~lib/rt/pure/__retain ) - (func $~lib/util/number/itoa_stream (; 183 ;) (param $0 i32) (param $1 i32) (param $2 i64) (result i32) + (func $~lib/util/number/itoa_stream (; 182 ;) (param $0 i32) (param $1 i32) (param $2 i64) (result i32) (local $3 i32) (local $4 i32) local.get $0 @@ -9423,7 +9415,7 @@ end local.get $3 ) - (func $~lib/util/string/joinIntegerArray (; 184 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/util/string/joinIntegerArray (; 183 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -9530,12 +9522,12 @@ end local.get $2 ) - (func $~lib/array/Array<~lib/string/String | null>#toString (; 185 ;) (param $0 i32) (result i32) + (func $~lib/array/Array<~lib/string/String | null>#toString (; 184 ;) (param $0 i32) (result i32) local.get $0 i32.const 5360 call $~lib/array/Array<~lib/string/String | null>#join ) - (func $~lib/util/string/joinReferenceArray<~lib/array/Array> (; 186 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/util/string/joinReferenceArray<~lib/array/Array> (; 185 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -9699,7 +9691,7 @@ call $~lib/rt/pure/__release local.get $1 ) - (func $~lib/util/number/itoa_stream (; 187 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/util/number/itoa_stream (; 186 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 local.get $1 i32.const 1 @@ -9729,7 +9721,7 @@ call $~lib/util/number/utoa_simple local.get $1 ) - (func $~lib/util/string/joinIntegerArray (; 188 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/util/string/joinIntegerArray (; 187 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -9832,14 +9824,14 @@ end local.get $2 ) - (func $~lib/array/Array#toString (; 189 ;) (param $0 i32) (result i32) + (func $~lib/array/Array#toString (; 188 ;) (param $0 i32) (result i32) local.get $0 i32.load offset=4 local.get $0 i32.load offset=12 call $~lib/util/string/joinIntegerArray ) - (func $~lib/util/string/joinReferenceArray<~lib/array/Array> (; 190 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/util/string/joinReferenceArray<~lib/array/Array> (; 189 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -10003,12 +9995,12 @@ call $~lib/rt/pure/__release local.get $1 ) - (func $~lib/array/Array#toString (; 191 ;) (param $0 i32) (result i32) + (func $~lib/array/Array#toString (; 190 ;) (param $0 i32) (result i32) local.get $0 i32.const 5360 call $~lib/array/Array#join ) - (func $~lib/util/string/joinReferenceArray<~lib/array/Array> (; 192 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/util/string/joinReferenceArray<~lib/array/Array> (; 191 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -10172,14 +10164,14 @@ call $~lib/rt/pure/__release local.get $1 ) - (func $~lib/array/Array<~lib/array/Array>#toString (; 193 ;) (param $0 i32) (result i32) + (func $~lib/array/Array<~lib/array/Array>#toString (; 192 ;) (param $0 i32) (result i32) local.get $0 i32.load offset=4 local.get $0 i32.load offset=12 call $~lib/util/string/joinReferenceArray<~lib/array/Array> ) - (func $~lib/util/string/joinReferenceArray<~lib/array/Array<~lib/array/Array>> (; 194 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/util/string/joinReferenceArray<~lib/array/Array<~lib/array/Array>> (; 193 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -10343,7 +10335,7 @@ call $~lib/rt/pure/__release local.get $1 ) - (func $start:std/array (; 195 ;) + (func $start:std/array (; 194 ;) (local $0 i32) (local $1 i32) (local $2 i32) @@ -10411,16 +10403,6 @@ call $~lib/array/Array#constructor global.set $std/array/arr i32.const 0 - call $~lib/array/Array.isArray<~lib/array/Array | null> - if - i32.const 0 - i32.const 304 - i32.const 40 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - i32.const 0 call $std/array/Ref#constructor i32.const 12 i32.const 5 @@ -10431,7 +10413,6 @@ call $~lib/arraybuffer/ArrayBufferView#constructor local.set $1 global.get $std/array/arr - call $~lib/array/Array.isArray<~lib/array/Array | null> i32.eqz if i32.const 0 @@ -15809,7 +15790,7 @@ local.get $3 call $~lib/rt/pure/__release ) - (func $~start (; 196 ;) + (func $~start (; 195 ;) global.get $~started if return @@ -15819,7 +15800,7 @@ end call $start:std/array ) - (func $~lib/rt/pure/decrement (; 197 ;) (param $0 i32) + (func $~lib/rt/pure/decrement (; 196 ;) (param $0 i32) (local $1 i32) (local $2 i32) local.get $0 @@ -15887,7 +15868,7 @@ i32.store offset=4 end ) - (func $~lib/rt/pure/__visit (; 198 ;) (param $0 i32) + (func $~lib/rt/pure/__visit (; 197 ;) (param $0 i32) local.get $0 i32.const 8388 i32.lt_u @@ -15899,7 +15880,7 @@ i32.sub call $~lib/rt/pure/decrement ) - (func $~lib/array/Array#__visit_impl (; 199 ;) (param $0 i32) + (func $~lib/array/Array#__visit_impl (; 198 ;) (param $0 i32) (local $1 i32) (local $2 i32) local.get $0 @@ -15931,7 +15912,7 @@ end end ) - (func $~lib/rt/__visit_members (; 200 ;) (param $0 i32) + (func $~lib/rt/__visit_members (; 199 ;) (param $0 i32) block $block$4$break block $switch$1$default block $switch$1$case$27 diff --git a/tests/compiler/std/array.ts b/tests/compiler/std/array.ts index 7113b7c741..e1ee98227b 100644 --- a/tests/compiler/std/array.ts +++ b/tests/compiler/std/array.ts @@ -1,11 +1,11 @@ -import { Array } from "array"; +import { ArrayBufferView } from "arraybuffer"; import { COMPARATOR } from "util/sort"; // Obtains the internal capacity of an array from its backing buffer. function internalCapacity(array: Array): i32 { // the memory region used by the backing buffer might still be larger in that the ArrayBuffer // pre-allocates a power of 2 sized buffer itself and reuses it as long as it isn't exceeded. - var buffer: ArrayBuffer = array.buffer; + var buffer: ArrayBuffer = changetype(array).buffer; return buffer.byteLength >> alignof(); } diff --git a/tests/compiler/std/array.untouched.wat b/tests/compiler/std/array.untouched.wat index f3babfe343..51685cf655 100644 --- a/tests/compiler/std/array.untouched.wat +++ b/tests/compiler/std/array.untouched.wat @@ -2046,7 +2046,9 @@ local.get $0 call $~lib/rt/pure/__retain local.set $0 - i32.const 1 + local.get $0 + i32.const 0 + i32.ne if (result i32) local.get $0 i32.const 0 @@ -2058,6 +2060,7 @@ local.get $0 call $~lib/rt/pure/__release local.get $1 + return ) (func $std/array/Ref#constructor (; 24 ;) (param $0 i32) (param $1 i32) (result i32) local.get $0 @@ -2079,6 +2082,8 @@ local.get $0 call $~lib/rt/pure/__retain local.set $0 + local.get $0 + drop i32.const 0 if (result i32) local.get $0 @@ -2091,6 +2096,7 @@ local.get $0 call $~lib/rt/pure/__release local.get $1 + return ) (func $~lib/typedarray/Uint8Array#constructor (; 26 ;) (param $0 i32) (param $1 i32) (result i32) local.get $0 @@ -2113,6 +2119,8 @@ local.get $0 call $~lib/rt/pure/__retain local.set $0 + local.get $0 + drop i32.const 0 if (result i32) local.get $0 @@ -2125,6 +2133,7 @@ local.get $0 call $~lib/rt/pure/__release local.get $1 + return ) (func $~lib/array/Array.isArray (; 28 ;) (param $0 i32) (result i32) i32.const 0 @@ -2134,6 +2143,8 @@ local.get $0 call $~lib/rt/pure/__retain local.set $0 + local.get $0 + drop i32.const 0 if (result i32) local.get $0 @@ -2146,12 +2157,15 @@ local.get $0 call $~lib/rt/pure/__release local.get $1 + return ) (func $~lib/array/Array.isArray<~lib/array/Array> (; 30 ;) (param $0 i32) (result i32) (local $1 i32) local.get $0 call $~lib/rt/pure/__retain local.set $0 + local.get $0 + drop i32.const 1 if (result i32) local.get $0 @@ -2164,6 +2178,7 @@ local.get $0 call $~lib/rt/pure/__release local.get $1 + return ) (func $~lib/util/memory/memcpy (; 31 ;) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) @@ -3546,7 +3561,7 @@ if i32.const 448 i32.const 512 - i32.const 93 + i32.const 96 i32.const 41 call $~lib/builtins/abort unreachable @@ -3749,7 +3764,7 @@ if i32.const 448 i32.const 512 - i32.const 93 + i32.const 96 i32.const 41 call $~lib/builtins/abort unreachable @@ -4173,7 +4188,7 @@ if i32.const 448 i32.const 512 - i32.const 93 + i32.const 96 i32.const 41 call $~lib/builtins/abort unreachable @@ -4196,7 +4211,7 @@ if i32.const 976 i32.const 512 - i32.const 288 + i32.const 291 i32.const 20 call $~lib/builtins/abort unreachable @@ -4307,7 +4322,7 @@ call $~lib/rt/pure/__release i32.const 32 i32.const 512 - i32.const 218 + i32.const 221 i32.const 59 call $~lib/builtins/abort unreachable @@ -4607,7 +4622,7 @@ if i32.const 976 i32.const 512 - i32.const 349 + i32.const 352 i32.const 20 call $~lib/builtins/abort unreachable @@ -5314,7 +5329,7 @@ if i32.const 448 i32.const 512 - i32.const 93 + i32.const 96 i32.const 41 call $~lib/builtins/abort unreachable @@ -5330,7 +5345,7 @@ call $~lib/rt/pure/__release i32.const 3920 i32.const 512 - i32.const 97 + i32.const 100 i32.const 39 call $~lib/builtins/abort unreachable @@ -5468,7 +5483,7 @@ if i32.const 448 i32.const 512 - i32.const 93 + i32.const 96 i32.const 41 call $~lib/builtins/abort unreachable @@ -5501,7 +5516,7 @@ if i32.const 448 i32.const 512 - i32.const 109 + i32.const 112 i32.const 21 call $~lib/builtins/abort unreachable @@ -6222,7 +6237,7 @@ if i32.const 448 i32.const 512 - i32.const 93 + i32.const 96 i32.const 41 call $~lib/builtins/abort unreachable @@ -8153,7 +8168,7 @@ if i32.const 448 i32.const 512 - i32.const 93 + i32.const 96 i32.const 41 call $~lib/builtins/abort unreachable @@ -9537,7 +9552,7 @@ call $~lib/rt/pure/__release i32.const 448 i32.const 512 - i32.const 109 + i32.const 112 i32.const 21 call $~lib/builtins/abort unreachable @@ -9820,7 +9835,7 @@ if i32.const 448 i32.const 512 - i32.const 93 + i32.const 96 i32.const 41 call $~lib/builtins/abort unreachable @@ -9836,7 +9851,7 @@ call $~lib/rt/pure/__release i32.const 3920 i32.const 512 - i32.const 97 + i32.const 100 i32.const 39 call $~lib/builtins/abort unreachable @@ -10019,7 +10034,7 @@ call $~lib/rt/pure/__release i32.const 448 i32.const 512 - i32.const 109 + i32.const 112 i32.const 21 call $~lib/builtins/abort unreachable @@ -10295,7 +10310,7 @@ if i32.const 448 i32.const 512 - i32.const 93 + i32.const 96 i32.const 41 call $~lib/builtins/abort unreachable @@ -10311,7 +10326,7 @@ call $~lib/rt/pure/__release i32.const 3920 i32.const 512 - i32.const 97 + i32.const 100 i32.const 39 call $~lib/builtins/abort unreachable @@ -10602,7 +10617,7 @@ if i32.const 448 i32.const 512 - i32.const 93 + i32.const 96 i32.const 41 call $~lib/builtins/abort unreachable @@ -10853,15 +10868,13 @@ i32.const 1 else local.get $0 - i32.const 0 - i32.eq + i32.eqz end if (result i32) i32.const 1 else local.get $1 - i32.const 0 - i32.eq + i32.eqz end if i32.const 0 @@ -10985,14 +10998,12 @@ return end local.get $0 - i32.const 0 - i32.eq + i32.eqz if (result i32) i32.const 1 else local.get $1 - i32.const 0 - i32.eq + i32.eqz end if i32.const 0 @@ -11205,75 +11216,55 @@ (local $4 i32) (local $5 i32) (local $6 i32) - (local $7 i32) local.get $1 call $~lib/rt/pure/__retain local.set $1 - local.get $1 - i32.const 0 - i32.eq - if - i32.const 5232 - local.tee $2 - local.get $1 - local.tee $3 - i32.ne - if - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $3 - call $~lib/rt/pure/__release - end - local.get $2 - local.set $1 - end local.get $0 call $~lib/string/String#get:length i32.const 1 i32.shl - local.set $4 + local.set $2 local.get $1 call $~lib/string/String#get:length i32.const 1 i32.shl - local.set $5 - local.get $4 - local.get $5 + local.set $3 + local.get $2 + local.get $3 i32.add - local.set $6 - local.get $6 + local.set $4 + local.get $4 i32.const 0 i32.eq if i32.const 5120 call $~lib/rt/pure/__retain - local.set $2 + local.set $5 local.get $1 call $~lib/rt/pure/__release - local.get $2 + local.get $5 return end - local.get $6 + local.get $4 i32.const 1 call $~lib/rt/tlsf/__alloc call $~lib/rt/pure/__retain - local.set $7 - local.get $7 + local.set $6 + local.get $6 local.get $0 - local.get $4 + local.get $2 call $~lib/memory/memory.copy - local.get $7 - local.get $4 + local.get $6 + local.get $2 i32.add local.get $1 - local.get $5 + local.get $3 call $~lib/memory/memory.copy - local.get $7 - local.set $2 + local.get $6 + local.set $5 local.get $1 call $~lib/rt/pure/__release - local.get $2 + local.get $5 ) (func $~lib/string/String.__concat (; 220 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) @@ -11406,7 +11397,7 @@ call $~lib/rt/pure/__release i32.const 448 i32.const 512 - i32.const 109 + i32.const 112 i32.const 21 call $~lib/builtins/abort unreachable @@ -11660,7 +11651,7 @@ if i32.const 448 i32.const 512 - i32.const 93 + i32.const 96 i32.const 41 call $~lib/builtins/abort unreachable @@ -11676,7 +11667,7 @@ call $~lib/rt/pure/__release i32.const 3920 i32.const 512 - i32.const 97 + i32.const 100 i32.const 39 call $~lib/builtins/abort unreachable @@ -11793,15 +11784,13 @@ i32.const 1 else local.get $0 - i32.const 0 - i32.eq + i32.eqz end if (result i32) i32.const 1 else local.get $1 - i32.const 0 - i32.eq + i32.eqz end if i32.const 0 @@ -14586,8 +14575,6 @@ local.get $8 local.set $6 local.get $6 - i32.const 0 - i32.ne if local.get $5 local.get $6 @@ -14646,8 +14633,6 @@ local.get $9 local.set $6 local.get $6 - i32.const 0 - i32.ne if local.get $6 call $~lib/string/String#get:length @@ -14711,8 +14696,6 @@ local.get $8 local.set $6 local.get $6 - i32.const 0 - i32.ne if local.get $12 local.get $10 @@ -14811,8 +14794,6 @@ local.get $4 local.set $5 local.get $5 - i32.const 0 - i32.ne if (result i32) local.get $5 call $std/array/Ref#toString @@ -14861,8 +14842,6 @@ local.get $9 local.set $5 local.get $5 - i32.const 0 - i32.ne if local.get $7 local.get $5 @@ -14937,8 +14916,6 @@ local.get $11 local.set $5 local.get $5 - i32.const 0 - i32.ne if local.get $7 local.get $5 @@ -15045,8 +15022,6 @@ local.get $4 local.set $5 local.get $5 - i32.const 0 - i32.ne if (result i32) local.get $5 call $std/array/Ref#toString @@ -15095,8 +15070,6 @@ local.get $9 local.set $5 local.get $5 - i32.const 0 - i32.ne if local.get $7 local.get $5 @@ -15171,8 +15144,6 @@ local.get $11 local.set $5 local.get $5 - i32.const 0 - i32.ne if local.get $7 local.get $5 @@ -16617,8 +16588,6 @@ local.get $4 local.set $5 local.get $5 - i32.const 0 - i32.ne if (result i32) local.get $5 call $~lib/array/Array#toString @@ -16667,8 +16636,6 @@ local.get $9 local.set $5 local.get $5 - i32.const 0 - i32.ne if local.get $7 local.get $5 @@ -16743,8 +16710,6 @@ local.get $11 local.set $5 local.get $5 - i32.const 0 - i32.ne if local.get $7 local.get $5 @@ -17077,8 +17042,6 @@ local.get $4 local.set $5 local.get $5 - i32.const 0 - i32.ne if (result i32) local.get $5 call $~lib/array/Array#toString @@ -17127,8 +17090,6 @@ local.get $9 local.set $5 local.get $5 - i32.const 0 - i32.ne if local.get $7 local.get $5 @@ -17203,8 +17164,6 @@ local.get $11 local.set $5 local.get $5 - i32.const 0 - i32.ne if local.get $7 local.get $5 @@ -17321,8 +17280,6 @@ local.get $4 local.set $5 local.get $5 - i32.const 0 - i32.ne if (result i32) local.get $5 call $~lib/array/Array#toString @@ -17371,8 +17328,6 @@ local.get $9 local.set $5 local.get $5 - i32.const 0 - i32.ne if local.get $7 local.get $5 @@ -17447,8 +17402,6 @@ local.get $11 local.set $5 local.get $5 - i32.const 0 - i32.ne if local.get $7 local.get $5 @@ -17560,8 +17513,6 @@ local.get $4 local.set $5 local.get $5 - i32.const 0 - i32.ne if (result i32) local.get $5 call $~lib/array/Array<~lib/array/Array>#toString @@ -17610,8 +17561,6 @@ local.get $9 local.set $5 local.get $5 - i32.const 0 - i32.ne if local.get $7 local.get $5 @@ -17686,8 +17635,6 @@ local.get $11 local.set $5 local.get $5 - i32.const 0 - i32.ne if local.get $7 local.get $5 diff --git a/tests/compiler/std/arraybuffer.untouched.wat b/tests/compiler/std/arraybuffer.untouched.wat index 8b41a1e88f..457b1efb7b 100644 --- a/tests/compiler/std/arraybuffer.untouched.wat +++ b/tests/compiler/std/arraybuffer.untouched.wat @@ -1730,7 +1730,7 @@ if i32.const 32 i32.const 80 - i32.const 54 + i32.const 56 i32.const 42 call $~lib/builtins/abort unreachable @@ -3096,8 +3096,7 @@ call $~lib/rt/pure/__retain local.set $0 local.get $0 - i32.const 0 - i32.eq + i32.eqz if i32.const 0 local.set $1 @@ -3121,8 +3120,7 @@ call $~lib/rt/pure/__retain local.set $0 local.get $0 - i32.const 0 - i32.eq + i32.eqz if i32.const 0 local.set $1 @@ -3144,8 +3142,7 @@ call $~lib/rt/pure/__retain local.set $0 local.get $0 - i32.const 0 - i32.eq + i32.eqz if i32.const 0 local.set $1 @@ -3167,8 +3164,7 @@ call $~lib/rt/pure/__retain local.set $0 local.get $0 - i32.const 0 - i32.eq + i32.eqz if i32.const 0 local.set $1 diff --git a/tests/compiler/std/hash.untouched.wat b/tests/compiler/std/hash.untouched.wat index 18b53a3def..6f625fe122 100644 --- a/tests/compiler/std/hash.untouched.wat +++ b/tests/compiler/std/hash.untouched.wat @@ -36,8 +36,6 @@ i32.const -2128831035 local.set $1 local.get $0 - i32.const 0 - i32.ne if i32.const 0 local.set $2 diff --git a/tests/compiler/std/map.optimized.wat b/tests/compiler/std/map.optimized.wat index 41c95dca5e..52f5de33de 100644 --- a/tests/compiler/std/map.optimized.wat +++ b/tests/compiler/std/map.optimized.wat @@ -1353,7 +1353,7 @@ if i32.const 192 i32.const 240 - i32.const 54 + i32.const 56 i32.const 42 call $~lib/builtins/abort unreachable @@ -2222,7 +2222,7 @@ if i32.const 464 i32.const 528 - i32.const 109 + i32.const 112 i32.const 21 call $~lib/builtins/abort unreachable @@ -2354,7 +2354,7 @@ if i32.const 464 i32.const 528 - i32.const 109 + i32.const 112 i32.const 21 call $~lib/builtins/abort unreachable @@ -2544,7 +2544,7 @@ if i32.const 464 i32.const 528 - i32.const 93 + i32.const 96 i32.const 41 call $~lib/builtins/abort unreachable @@ -2563,7 +2563,7 @@ if i32.const 464 i32.const 528 - i32.const 93 + i32.const 96 i32.const 41 call $~lib/builtins/abort unreachable @@ -4053,7 +4053,7 @@ if i32.const 464 i32.const 528 - i32.const 93 + i32.const 96 i32.const 41 call $~lib/builtins/abort unreachable @@ -5153,7 +5153,7 @@ if i32.const 464 i32.const 528 - i32.const 109 + i32.const 112 i32.const 21 call $~lib/builtins/abort unreachable @@ -5293,7 +5293,7 @@ if i32.const 464 i32.const 528 - i32.const 93 + i32.const 96 i32.const 41 call $~lib/builtins/abort unreachable @@ -6490,7 +6490,7 @@ if i32.const 464 i32.const 528 - i32.const 93 + i32.const 96 i32.const 41 call $~lib/builtins/abort unreachable @@ -8774,7 +8774,7 @@ if i32.const 464 i32.const 528 - i32.const 109 + i32.const 112 i32.const 21 call $~lib/builtins/abort unreachable @@ -9003,7 +9003,7 @@ if i32.const 464 i32.const 528 - i32.const 93 + i32.const 96 i32.const 41 call $~lib/builtins/abort unreachable @@ -10654,7 +10654,7 @@ if i32.const 464 i32.const 528 - i32.const 109 + i32.const 112 i32.const 21 call $~lib/builtins/abort unreachable @@ -10782,7 +10782,7 @@ if i32.const 464 i32.const 528 - i32.const 93 + i32.const 96 i32.const 41 call $~lib/builtins/abort unreachable @@ -11843,7 +11843,7 @@ if i32.const 464 i32.const 528 - i32.const 109 + i32.const 112 i32.const 21 call $~lib/builtins/abort unreachable @@ -11971,7 +11971,7 @@ if i32.const 464 i32.const 528 - i32.const 93 + i32.const 96 i32.const 41 call $~lib/builtins/abort unreachable diff --git a/tests/compiler/std/map.untouched.wat b/tests/compiler/std/map.untouched.wat index 39a7e482ff..0a8f35d9c9 100644 --- a/tests/compiler/std/map.untouched.wat +++ b/tests/compiler/std/map.untouched.wat @@ -1746,7 +1746,7 @@ if i32.const 192 i32.const 240 - i32.const 54 + i32.const 56 i32.const 42 call $~lib/builtins/abort unreachable @@ -3836,7 +3836,7 @@ if i32.const 464 i32.const 528 - i32.const 109 + i32.const 112 i32.const 21 call $~lib/builtins/abort unreachable @@ -3980,7 +3980,7 @@ if i32.const 464 i32.const 528 - i32.const 109 + i32.const 112 i32.const 21 call $~lib/builtins/abort unreachable @@ -4246,7 +4246,7 @@ if i32.const 464 i32.const 528 - i32.const 93 + i32.const 96 i32.const 41 call $~lib/builtins/abort unreachable @@ -4275,7 +4275,7 @@ if i32.const 464 i32.const 528 - i32.const 93 + i32.const 96 i32.const 41 call $~lib/builtins/abort unreachable @@ -6029,7 +6029,7 @@ if i32.const 464 i32.const 528 - i32.const 109 + i32.const 112 i32.const 21 call $~lib/builtins/abort unreachable @@ -6288,7 +6288,7 @@ if i32.const 464 i32.const 528 - i32.const 93 + i32.const 96 i32.const 41 call $~lib/builtins/abort unreachable @@ -7688,7 +7688,7 @@ if i32.const 464 i32.const 528 - i32.const 109 + i32.const 112 i32.const 21 call $~lib/builtins/abort unreachable @@ -7947,7 +7947,7 @@ if i32.const 464 i32.const 528 - i32.const 93 + i32.const 96 i32.const 41 call $~lib/builtins/abort unreachable @@ -9345,7 +9345,7 @@ if i32.const 464 i32.const 528 - i32.const 109 + i32.const 112 i32.const 21 call $~lib/builtins/abort unreachable @@ -9604,7 +9604,7 @@ if i32.const 464 i32.const 528 - i32.const 93 + i32.const 96 i32.const 41 call $~lib/builtins/abort unreachable @@ -11677,7 +11677,7 @@ if i32.const 464 i32.const 528 - i32.const 109 + i32.const 112 i32.const 21 call $~lib/builtins/abort unreachable @@ -11936,7 +11936,7 @@ if i32.const 464 i32.const 528 - i32.const 93 + i32.const 96 i32.const 41 call $~lib/builtins/abort unreachable @@ -13358,7 +13358,7 @@ if i32.const 464 i32.const 528 - i32.const 109 + i32.const 112 i32.const 21 call $~lib/builtins/abort unreachable @@ -13617,7 +13617,7 @@ if i32.const 464 i32.const 528 - i32.const 93 + i32.const 96 i32.const 41 call $~lib/builtins/abort unreachable @@ -14962,7 +14962,7 @@ if i32.const 464 i32.const 528 - i32.const 109 + i32.const 112 i32.const 21 call $~lib/builtins/abort unreachable @@ -15221,7 +15221,7 @@ if i32.const 464 i32.const 528 - i32.const 93 + i32.const 96 i32.const 41 call $~lib/builtins/abort unreachable @@ -16570,7 +16570,7 @@ if i32.const 464 i32.const 528 - i32.const 109 + i32.const 112 i32.const 21 call $~lib/builtins/abort unreachable @@ -16829,7 +16829,7 @@ if i32.const 464 i32.const 528 - i32.const 93 + i32.const 96 i32.const 41 call $~lib/builtins/abort unreachable @@ -18181,7 +18181,7 @@ if i32.const 464 i32.const 528 - i32.const 109 + i32.const 112 i32.const 21 call $~lib/builtins/abort unreachable @@ -18440,7 +18440,7 @@ if i32.const 464 i32.const 528 - i32.const 93 + i32.const 96 i32.const 41 call $~lib/builtins/abort unreachable diff --git a/tests/compiler/std/object-literal.untouched.wat b/tests/compiler/std/object-literal.untouched.wat index ff967f734b..5260c9ecc9 100644 --- a/tests/compiler/std/object-literal.untouched.wat +++ b/tests/compiler/std/object-literal.untouched.wat @@ -282,14 +282,12 @@ return end local.get $0 - i32.const 0 - i32.eq + i32.eqz if (result i32) i32.const 1 else local.get $1 - i32.const 0 - i32.eq + i32.eqz end if i32.const 0 diff --git a/tests/compiler/std/object.untouched.wat b/tests/compiler/std/object.untouched.wat index 7bc72352bb..dc29bd87ef 100644 --- a/tests/compiler/std/object.untouched.wat +++ b/tests/compiler/std/object.untouched.wat @@ -233,14 +233,12 @@ return end local.get $0 - i32.const 0 - i32.eq + i32.eqz if (result i32) i32.const 1 else local.get $1 - i32.const 0 - i32.eq + i32.eqz end if i32.const 0 diff --git a/tests/compiler/std/set.optimized.wat b/tests/compiler/std/set.optimized.wat index 733734f5a0..2b7d039cac 100644 --- a/tests/compiler/std/set.optimized.wat +++ b/tests/compiler/std/set.optimized.wat @@ -1348,7 +1348,7 @@ if i32.const 192 i32.const 240 - i32.const 54 + i32.const 56 i32.const 42 call $~lib/builtins/abort unreachable @@ -2183,7 +2183,7 @@ if i32.const 352 i32.const 416 - i32.const 109 + i32.const 112 i32.const 21 call $~lib/builtins/abort unreachable @@ -2278,7 +2278,7 @@ if i32.const 352 i32.const 416 - i32.const 93 + i32.const 96 i32.const 41 call $~lib/builtins/abort unreachable @@ -2994,7 +2994,7 @@ if i32.const 352 i32.const 416 - i32.const 93 + i32.const 96 i32.const 41 call $~lib/builtins/abort unreachable @@ -3703,7 +3703,7 @@ if i32.const 352 i32.const 416 - i32.const 109 + i32.const 112 i32.const 21 call $~lib/builtins/abort unreachable @@ -3800,7 +3800,7 @@ if i32.const 352 i32.const 416 - i32.const 93 + i32.const 96 i32.const 41 call $~lib/builtins/abort unreachable @@ -4518,7 +4518,7 @@ if i32.const 352 i32.const 416 - i32.const 93 + i32.const 96 i32.const 41 call $~lib/builtins/abort unreachable @@ -5235,7 +5235,7 @@ if i32.const 352 i32.const 416 - i32.const 109 + i32.const 112 i32.const 21 call $~lib/builtins/abort unreachable @@ -5332,7 +5332,7 @@ if i32.const 352 i32.const 416 - i32.const 93 + i32.const 96 i32.const 41 call $~lib/builtins/abort unreachable @@ -6502,7 +6502,7 @@ if i32.const 352 i32.const 416 - i32.const 109 + i32.const 112 i32.const 21 call $~lib/builtins/abort unreachable @@ -6599,7 +6599,7 @@ if i32.const 352 i32.const 416 - i32.const 93 + i32.const 96 i32.const 41 call $~lib/builtins/abort unreachable @@ -7672,7 +7672,7 @@ if i32.const 352 i32.const 416 - i32.const 109 + i32.const 112 i32.const 21 call $~lib/builtins/abort unreachable @@ -7769,7 +7769,7 @@ if i32.const 352 i32.const 416 - i32.const 93 + i32.const 96 i32.const 41 call $~lib/builtins/abort unreachable @@ -8449,7 +8449,7 @@ if i32.const 352 i32.const 416 - i32.const 109 + i32.const 112 i32.const 21 call $~lib/builtins/abort unreachable @@ -8546,7 +8546,7 @@ if i32.const 352 i32.const 416 - i32.const 93 + i32.const 96 i32.const 41 call $~lib/builtins/abort unreachable diff --git a/tests/compiler/std/set.untouched.wat b/tests/compiler/std/set.untouched.wat index 53d2732bd0..459b808110 100644 --- a/tests/compiler/std/set.untouched.wat +++ b/tests/compiler/std/set.untouched.wat @@ -1741,7 +1741,7 @@ if i32.const 192 i32.const 240 - i32.const 54 + i32.const 56 i32.const 42 call $~lib/builtins/abort unreachable @@ -3784,7 +3784,7 @@ if i32.const 352 i32.const 416 - i32.const 109 + i32.const 112 i32.const 21 call $~lib/builtins/abort unreachable @@ -3890,7 +3890,7 @@ if i32.const 352 i32.const 416 - i32.const 93 + i32.const 96 i32.const 41 call $~lib/builtins/abort unreachable @@ -4768,7 +4768,7 @@ if i32.const 352 i32.const 416 - i32.const 109 + i32.const 112 i32.const 21 call $~lib/builtins/abort unreachable @@ -4874,7 +4874,7 @@ if i32.const 352 i32.const 416 - i32.const 93 + i32.const 96 i32.const 41 call $~lib/builtins/abort unreachable @@ -5770,7 +5770,7 @@ if i32.const 352 i32.const 416 - i32.const 109 + i32.const 112 i32.const 21 call $~lib/builtins/abort unreachable @@ -5876,7 +5876,7 @@ if i32.const 352 i32.const 416 - i32.const 93 + i32.const 96 i32.const 41 call $~lib/builtins/abort unreachable @@ -6754,7 +6754,7 @@ if i32.const 352 i32.const 416 - i32.const 109 + i32.const 112 i32.const 21 call $~lib/builtins/abort unreachable @@ -6860,7 +6860,7 @@ if i32.const 352 i32.const 416 - i32.const 93 + i32.const 96 i32.const 41 call $~lib/builtins/abort unreachable @@ -7764,7 +7764,7 @@ if i32.const 352 i32.const 416 - i32.const 109 + i32.const 112 i32.const 21 call $~lib/builtins/abort unreachable @@ -7870,7 +7870,7 @@ if i32.const 352 i32.const 416 - i32.const 93 + i32.const 96 i32.const 41 call $~lib/builtins/abort unreachable @@ -8718,7 +8718,7 @@ if i32.const 352 i32.const 416 - i32.const 109 + i32.const 112 i32.const 21 call $~lib/builtins/abort unreachable @@ -8824,7 +8824,7 @@ if i32.const 352 i32.const 416 - i32.const 93 + i32.const 96 i32.const 41 call $~lib/builtins/abort unreachable @@ -9762,7 +9762,7 @@ if i32.const 352 i32.const 416 - i32.const 109 + i32.const 112 i32.const 21 call $~lib/builtins/abort unreachable @@ -9868,7 +9868,7 @@ if i32.const 352 i32.const 416 - i32.const 93 + i32.const 96 i32.const 41 call $~lib/builtins/abort unreachable @@ -10720,7 +10720,7 @@ if i32.const 352 i32.const 416 - i32.const 109 + i32.const 112 i32.const 21 call $~lib/builtins/abort unreachable @@ -10826,7 +10826,7 @@ if i32.const 352 i32.const 416 - i32.const 93 + i32.const 96 i32.const 41 call $~lib/builtins/abort unreachable @@ -11681,7 +11681,7 @@ if i32.const 352 i32.const 416 - i32.const 109 + i32.const 112 i32.const 21 call $~lib/builtins/abort unreachable @@ -11787,7 +11787,7 @@ if i32.const 352 i32.const 416 - i32.const 93 + i32.const 96 i32.const 41 call $~lib/builtins/abort unreachable @@ -12643,7 +12643,7 @@ if i32.const 352 i32.const 416 - i32.const 109 + i32.const 112 i32.const 21 call $~lib/builtins/abort unreachable @@ -12749,7 +12749,7 @@ if i32.const 352 i32.const 416 - i32.const 93 + i32.const 96 i32.const 41 call $~lib/builtins/abort unreachable diff --git a/tests/compiler/std/static-array.optimized.wat b/tests/compiler/std/static-array.optimized.wat index 916f5a9d87..5b333c9c72 100644 --- a/tests/compiler/std/static-array.optimized.wat +++ b/tests/compiler/std/static-array.optimized.wat @@ -37,7 +37,7 @@ if i32.const 352 i32.const 416 - i32.const 93 + i32.const 96 i32.const 41 call $~lib/builtins/abort unreachable @@ -714,7 +714,7 @@ if i32.const 352 i32.const 416 - i32.const 93 + i32.const 96 i32.const 41 call $~lib/builtins/abort unreachable @@ -753,7 +753,7 @@ if i32.const 352 i32.const 416 - i32.const 93 + i32.const 96 i32.const 41 call $~lib/builtins/abort unreachable @@ -792,7 +792,7 @@ if i32.const 352 i32.const 416 - i32.const 93 + i32.const 96 i32.const 41 call $~lib/builtins/abort unreachable diff --git a/tests/compiler/std/static-array.untouched.wat b/tests/compiler/std/static-array.untouched.wat index 6f0ad8398a..f2892f3fd5 100644 --- a/tests/compiler/std/static-array.untouched.wat +++ b/tests/compiler/std/static-array.untouched.wat @@ -59,7 +59,7 @@ if i32.const 352 i32.const 416 - i32.const 93 + i32.const 96 i32.const 41 call $~lib/builtins/abort unreachable @@ -1892,7 +1892,7 @@ if i32.const 352 i32.const 416 - i32.const 109 + i32.const 112 i32.const 21 call $~lib/builtins/abort unreachable @@ -1936,7 +1936,7 @@ if i32.const 352 i32.const 416 - i32.const 93 + i32.const 96 i32.const 41 call $~lib/builtins/abort unreachable @@ -1969,7 +1969,7 @@ if i32.const 352 i32.const 416 - i32.const 109 + i32.const 112 i32.const 21 call $~lib/builtins/abort unreachable @@ -2013,7 +2013,7 @@ if i32.const 352 i32.const 416 - i32.const 93 + i32.const 96 i32.const 41 call $~lib/builtins/abort unreachable @@ -2046,7 +2046,7 @@ if i32.const 352 i32.const 416 - i32.const 109 + i32.const 112 i32.const 21 call $~lib/builtins/abort unreachable @@ -2090,7 +2090,7 @@ if i32.const 352 i32.const 416 - i32.const 93 + i32.const 96 i32.const 41 call $~lib/builtins/abort unreachable @@ -2123,7 +2123,7 @@ if i32.const 352 i32.const 416 - i32.const 109 + i32.const 112 i32.const 21 call $~lib/builtins/abort unreachable diff --git a/tests/compiler/std/string-encoding.optimized.wat b/tests/compiler/std/string-encoding.optimized.wat index cb8ad9bd81..63da50a5de 100644 --- a/tests/compiler/std/string-encoding.optimized.wat +++ b/tests/compiler/std/string-encoding.optimized.wat @@ -2111,7 +2111,7 @@ if i32.const 0 i32.const 432 - i32.const 703 + i32.const 707 i32.const 6 call $~lib/builtins/abort unreachable @@ -2592,7 +2592,7 @@ if i32.const 0 i32.const 432 - i32.const 719 + i32.const 723 i32.const 6 call $~lib/builtins/abort unreachable diff --git a/tests/compiler/std/string-encoding.untouched.wat b/tests/compiler/std/string-encoding.untouched.wat index f01ce1e805..26393fce1f 100644 --- a/tests/compiler/std/string-encoding.untouched.wat +++ b/tests/compiler/std/string-encoding.untouched.wat @@ -3146,14 +3146,12 @@ return end local.get $0 - i32.const 0 - i32.eq + i32.eqz if (result i32) i32.const 1 else local.get $1 - i32.const 0 - i32.eq + i32.eqz end if i32.const 0 @@ -3745,7 +3743,7 @@ if i32.const 0 i32.const 432 - i32.const 703 + i32.const 707 i32.const 6 call $~lib/builtins/abort unreachable @@ -4300,7 +4298,7 @@ if i32.const 0 i32.const 432 - i32.const 719 + i32.const 723 i32.const 6 call $~lib/builtins/abort unreachable diff --git a/tests/compiler/std/string.optimized.wat b/tests/compiler/std/string.optimized.wat index d2b157e0e1..3196fac69d 100644 --- a/tests/compiler/std/string.optimized.wat +++ b/tests/compiler/std/string.optimized.wat @@ -44,24 +44,24 @@ (data (i32.const 512) "\1c\00\00\00\01\00\00\00\01\00\00\00\1c\00\00\00~\00l\00i\00b\00/\00s\00t\00r\00i\00n\00g\00.\00t\00s") (data (i32.const 560) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\004\d8\06\df") (data (i32.const 592) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00h\00i") - (data (i32.const 624) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\00n\00u\00l\00l") - (data (i32.const 656) "\0c\00\00\00\01\00\00\00\01\00\00\00\0c\00\00\00s\00t\00r\00i\00n\00g") - (data (i32.const 688) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00I\00\'\00m") - (data (i32.const 720) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00 ") - (data (i32.const 752) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00 \00 \00 ") - (data (i32.const 784) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00a\00b\00c") - (data (i32.const 816) "\n\00\00\00\01\00\00\00\01\00\00\00\n\00\00\00 \00 \00a\00b\00c") - (data (i32.const 848) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\001\002\003") - (data (i32.const 880) "\0c\00\00\00\01\00\00\00\01\00\00\00\0c\00\00\001\002\003\00a\00b\00c") - (data (i32.const 912) "\10\00\00\00\01\00\00\00\01\00\00\00\10\00\00\001\002\003\001\002\00a\00b\00c") - (data (i32.const 944) "\n\00\00\00\01\00\00\00\01\00\00\00\n\00\00\00a\00b\00c\00 \00 ") - (data (i32.const 976) "\0c\00\00\00\01\00\00\00\01\00\00\00\0c\00\00\00a\00b\00c\00a\00b\00c") - (data (i32.const 1008) "\10\00\00\00\01\00\00\00\01\00\00\00\10\00\00\00a\00b\00c\00a\00b\00c\00a\00b") - (data (i32.const 1040) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00,") - (data (i32.const 1072) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00x") - (data (i32.const 1104) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00,\00 \00I") - (data (i32.const 1136) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00g") - (data (i32.const 1168) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00i") + (data (i32.const 624) "\0c\00\00\00\01\00\00\00\01\00\00\00\0c\00\00\00s\00t\00r\00i\00n\00g") + (data (i32.const 656) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00I\00\'\00m") + (data (i32.const 688) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00 ") + (data (i32.const 720) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00 \00 \00 ") + (data (i32.const 752) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00a\00b\00c") + (data (i32.const 784) "\n\00\00\00\01\00\00\00\01\00\00\00\n\00\00\00 \00 \00a\00b\00c") + (data (i32.const 816) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\001\002\003") + (data (i32.const 848) "\0c\00\00\00\01\00\00\00\01\00\00\00\0c\00\00\001\002\003\00a\00b\00c") + (data (i32.const 880) "\10\00\00\00\01\00\00\00\01\00\00\00\10\00\00\001\002\003\001\002\00a\00b\00c") + (data (i32.const 912) "\n\00\00\00\01\00\00\00\01\00\00\00\n\00\00\00a\00b\00c\00 \00 ") + (data (i32.const 944) "\0c\00\00\00\01\00\00\00\01\00\00\00\0c\00\00\00a\00b\00c\00a\00b\00c") + (data (i32.const 976) "\10\00\00\00\01\00\00\00\01\00\00\00\10\00\00\00a\00b\00c\00a\00b\00c\00a\00b") + (data (i32.const 1008) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00,") + (data (i32.const 1040) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00x") + (data (i32.const 1072) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00,\00 \00I") + (data (i32.const 1104) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00g") + (data (i32.const 1136) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00i") + (data (i32.const 1168) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\00n\00u\00l\00l") (data (i32.const 1200) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00a\00b\00d") (data (i32.const 1232) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\00a\00b\00c\00d") (data (i32.const 1264) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\00a\00b\00 \00c") @@ -1838,47 +1838,31 @@ (local $1 i32) (local $2 i32) (local $3 i32) - (local $4 i32) - i32.const 608 - local.tee $1 - i32.eqz - if - i32.const 640 - local.set $2 - i32.const 608 - call $~lib/rt/pure/__release - i32.const 640 - local.set $1 - end i32.const 0 local.get $0 call $~lib/string/String#get:length - local.tee $3 + local.tee $1 i32.const 0 - local.get $3 + local.get $1 i32.lt_s select - local.tee $4 - local.get $1 - call $~lib/string/String#get:length local.tee $2 + i32.const 608 + call $~lib/string/String#get:length + local.tee $3 i32.add - local.get $3 + local.get $1 i32.gt_s if - local.get $1 - call $~lib/rt/pure/__release i32.const 0 return end local.get $0 - local.get $4 - local.get $1 local.get $2 + i32.const 608 + local.get $3 call $~lib/util/string/compareImpl i32.eqz - local.get $1 - call $~lib/rt/pure/__release ) (func $~lib/string/String#endsWith (; 31 ;) (param $0 i32) (result i32) (local $1 i32) @@ -1891,7 +1875,7 @@ local.get $1 i32.lt_s select - i32.const 672 + i32.const 640 call $~lib/string/String#get:length local.tee $1 i32.sub @@ -1904,7 +1888,7 @@ end local.get $0 local.get $2 - i32.const 672 + i32.const 640 local.get $1 call $~lib/util/string/compareImpl i32.eqz @@ -4210,23 +4194,6 @@ (local $2 i32) (local $3 i32) (local $4 i32) - local.get $1 - call $~lib/rt/pure/__retain - local.tee $1 - i32.eqz - if - i32.const 640 - local.set $3 - local.get $1 - i32.const 640 - i32.ne - if - local.get $1 - call $~lib/rt/pure/__release - end - i32.const 640 - local.set $1 - end local.get $0 call $~lib/string/String#get:length i32.const 1 @@ -4241,10 +4208,7 @@ local.tee $2 i32.eqz if - local.get $1 - call $~lib/rt/pure/__release i32.const 272 - local.tee $0 return end local.get $2 @@ -4261,13 +4225,11 @@ local.get $1 local.get $4 call $~lib/memory/memory.copy - local.get $1 - call $~lib/rt/pure/__release local.get $2 ) (func $~lib/string/String.__concat (; 50 ;) (param $0 i32) (param $1 i32) (result i32) local.get $0 - i32.const 640 + i32.const 1184 local.get $0 select local.get $1 @@ -4405,7 +4367,7 @@ if i32.const 10928 i32.const 528 - i32.const 312 + i32.const 316 i32.const 6 call $~lib/builtins/abort unreachable @@ -5748,7 +5710,7 @@ if i32.const 12240 i32.const 12192 - i32.const 93 + i32.const 96 i32.const 41 call $~lib/builtins/abort unreachable @@ -5768,7 +5730,7 @@ call $~lib/rt/pure/__release i32.const 12304 i32.const 12192 - i32.const 97 + i32.const 100 i32.const 39 call $~lib/builtins/abort unreachable @@ -8352,7 +8314,7 @@ unreachable end global.get $std/string/str - i32.const 704 + i32.const 672 i32.const 0 call $~lib/string/String#indexOf i32.const -1 @@ -8367,7 +8329,7 @@ end global.get $std/string/str i32.const 0 - i32.const 736 + i32.const 704 call $~lib/string/String#padStart local.tee $21 global.get $std/string/str @@ -8383,7 +8345,7 @@ end global.get $std/string/str i32.const 15 - i32.const 736 + i32.const 704 call $~lib/string/String#padStart local.tee $22 global.get $std/string/str @@ -8399,10 +8361,10 @@ end i32.const 272 i32.const 3 - i32.const 736 + i32.const 704 call $~lib/string/String#padStart local.tee $23 - i32.const 768 + i32.const 736 call $~lib/string/String.__eq i32.eqz if @@ -8445,12 +8407,12 @@ call $~lib/builtins/abort unreachable end - i32.const 800 + i32.const 768 i32.const 5 - i32.const 736 + i32.const 704 call $~lib/string/String#padStart local.tee $26 - i32.const 832 + i32.const 800 call $~lib/string/String.__eq i32.eqz if @@ -8461,12 +8423,12 @@ call $~lib/builtins/abort unreachable end - i32.const 800 + i32.const 768 i32.const 6 - i32.const 864 + i32.const 832 call $~lib/string/String#padStart local.tee $27 - i32.const 896 + i32.const 864 call $~lib/string/String.__eq i32.eqz if @@ -8477,12 +8439,12 @@ call $~lib/builtins/abort unreachable end - i32.const 800 + i32.const 768 i32.const 8 - i32.const 864 + i32.const 832 call $~lib/string/String#padStart local.tee $28 - i32.const 928 + i32.const 896 call $~lib/string/String.__eq i32.eqz if @@ -8495,7 +8457,7 @@ end global.get $std/string/str i32.const 0 - i32.const 736 + i32.const 704 call $~lib/string/String#padEnd local.tee $29 global.get $std/string/str @@ -8511,7 +8473,7 @@ end global.get $std/string/str i32.const 15 - i32.const 736 + i32.const 704 call $~lib/string/String#padEnd local.tee $30 global.get $std/string/str @@ -8527,10 +8489,10 @@ end i32.const 272 i32.const 3 - i32.const 736 + i32.const 704 call $~lib/string/String#padEnd local.tee $31 - i32.const 768 + i32.const 736 call $~lib/string/String.__eq i32.eqz if @@ -8573,12 +8535,12 @@ call $~lib/builtins/abort unreachable end - i32.const 800 + i32.const 768 i32.const 5 - i32.const 736 + i32.const 704 call $~lib/string/String#padEnd local.tee $34 - i32.const 960 + i32.const 928 call $~lib/string/String.__eq i32.eqz if @@ -8589,12 +8551,12 @@ call $~lib/builtins/abort unreachable end - i32.const 800 + i32.const 768 i32.const 6 - i32.const 800 + i32.const 768 call $~lib/string/String#padEnd local.tee $35 - i32.const 992 + i32.const 960 call $~lib/string/String.__eq i32.eqz if @@ -8605,12 +8567,12 @@ call $~lib/builtins/abort unreachable end - i32.const 800 + i32.const 768 i32.const 8 - i32.const 800 + i32.const 768 call $~lib/string/String#padEnd local.tee $36 - i32.const 1024 + i32.const 992 call $~lib/string/String.__eq i32.eqz if @@ -8684,7 +8646,7 @@ unreachable end global.get $std/string/str - i32.const 1056 + i32.const 1024 i32.const 0 call $~lib/string/String#indexOf i32.const 2 @@ -8698,7 +8660,7 @@ unreachable end global.get $std/string/str - i32.const 1088 + i32.const 1056 i32.const 0 call $~lib/string/String#indexOf i32.const -1 @@ -8712,7 +8674,7 @@ unreachable end global.get $std/string/str - i32.const 1056 + i32.const 1024 i32.const 2 call $~lib/string/String#indexOf i32.const 2 @@ -8726,7 +8688,7 @@ unreachable end global.get $std/string/str - i32.const 1056 + i32.const 1024 i32.const 3 call $~lib/string/String#indexOf i32.const -1 @@ -8740,7 +8702,7 @@ unreachable end global.get $std/string/str - i32.const 1120 + i32.const 1088 i32.const -1 call $~lib/string/String#indexOf i32.const 2 @@ -8795,7 +8757,7 @@ unreachable end global.get $std/string/str - i32.const 1056 + i32.const 1024 i32.const 2147483647 call $~lib/string/String#lastIndexOf i32.const 2 @@ -8809,7 +8771,7 @@ unreachable end global.get $std/string/str - i32.const 1088 + i32.const 1056 i32.const 2147483647 call $~lib/string/String#lastIndexOf i32.const -1 @@ -8823,7 +8785,7 @@ unreachable end global.get $std/string/str - i32.const 1152 + i32.const 1120 i32.const 2147483647 call $~lib/string/String#lastIndexOf i32.const 15 @@ -8837,7 +8799,7 @@ unreachable end global.get $std/string/str - i32.const 1056 + i32.const 1024 i32.const 2 call $~lib/string/String#lastIndexOf i32.const 2 @@ -8851,7 +8813,7 @@ unreachable end global.get $std/string/str - i32.const 1056 + i32.const 1024 i32.const 3 call $~lib/string/String#lastIndexOf i32.const 2 @@ -8865,7 +8827,7 @@ unreachable end global.get $std/string/str - i32.const 1120 + i32.const 1088 i32.const -1 call $~lib/string/String#lastIndexOf i32.const -1 @@ -8879,7 +8841,7 @@ unreachable end global.get $std/string/str - i32.const 1184 + i32.const 1152 i32.const 0 call $~lib/string/String#lastIndexOf i32.const -1 @@ -8941,8 +8903,8 @@ call $~lib/builtins/abort unreachable end - i32.const 640 - i32.const 640 + i32.const 1184 + i32.const 1184 call $~lib/string/String#localeCompare if i32.const 0 @@ -8952,7 +8914,7 @@ call $~lib/builtins/abort unreachable end - i32.const 800 + i32.const 768 i32.const 1216 call $~lib/string/String#localeCompare i32.const -1 @@ -8966,7 +8928,7 @@ unreachable end i32.const 1216 - i32.const 800 + i32.const 768 call $~lib/string/String#localeCompare i32.const 1 i32.ne @@ -8979,7 +8941,7 @@ unreachable end i32.const 1248 - i32.const 800 + i32.const 768 call $~lib/string/String#localeCompare i32.const 1 i32.ne @@ -8991,7 +8953,7 @@ call $~lib/builtins/abort unreachable end - i32.const 800 + i32.const 768 i32.const 1248 call $~lib/string/String#localeCompare i32.const -1 @@ -9005,7 +8967,7 @@ unreachable end i32.const 272 - i32.const 768 + i32.const 736 call $~lib/string/String#localeCompare i32.const -1 i32.ne @@ -9145,7 +9107,7 @@ i32.const 1312 call $~lib/string/String#trim local.tee $45 - i32.const 800 + i32.const 768 call $~lib/string/String.__eq i32.eqz if @@ -11409,7 +11371,7 @@ call $~lib/builtins/abort unreachable end - i32.const 800 + i32.const 768 i32.const 272 call $~lib/string/String.__gt i32.eqz @@ -11422,7 +11384,7 @@ unreachable end i32.const 272 - i32.const 800 + i32.const 768 call $~lib/string/String.__lt i32.eqz if @@ -11433,7 +11395,7 @@ call $~lib/builtins/abort unreachable end - i32.const 800 + i32.const 768 i32.const 272 call $~lib/string/String.__gte i32.eqz @@ -11445,7 +11407,7 @@ call $~lib/builtins/abort unreachable end - i32.const 800 + i32.const 768 call $~lib/string/String.__lte i32.eqz if @@ -11456,7 +11418,7 @@ call $~lib/builtins/abort unreachable end - i32.const 800 + i32.const 768 i32.const 272 call $~lib/string/String.__lt if @@ -11468,7 +11430,7 @@ unreachable end i32.const 272 - i32.const 800 + i32.const 768 call $~lib/string/String.__gt if i32.const 0 @@ -11552,7 +11514,7 @@ call $~lib/rt/pure/__release local.get $1 call $~lib/rt/pure/__release - i32.const 864 + i32.const 832 call $~lib/string/String#get:length i32.const 3 i32.ne @@ -11763,12 +11725,12 @@ call $~lib/builtins/abort unreachable end - i32.const 800 + i32.const 768 i32.const 4640 i32.const 4608 call $~lib/string/String#replace local.tee $63 - i32.const 800 + i32.const 768 call $~lib/string/String.__eq i32.eqz if @@ -11779,8 +11741,8 @@ call $~lib/builtins/abort unreachable end - i32.const 800 - i32.const 800 + i32.const 768 + i32.const 768 i32.const 4608 call $~lib/string/String#replace local.tee $64 @@ -11795,12 +11757,12 @@ call $~lib/builtins/abort unreachable end - i32.const 800 + i32.const 768 i32.const 1248 i32.const 4608 call $~lib/string/String#replace local.tee $65 - i32.const 800 + i32.const 768 call $~lib/string/String.__eq i32.eqz if @@ -11811,12 +11773,12 @@ call $~lib/builtins/abort unreachable end - i32.const 800 + i32.const 768 i32.const 10480 i32.const 10480 call $~lib/string/String#replace local.tee $66 - i32.const 800 + i32.const 768 call $~lib/string/String.__eq i32.eqz if @@ -11843,7 +11805,7 @@ call $~lib/builtins/abort unreachable end - i32.const 800 + i32.const 768 i32.const 272 i32.const 4608 call $~lib/string/String#replace @@ -11875,7 +11837,7 @@ call $~lib/builtins/abort unreachable end - i32.const 800 + i32.const 768 i32.const 11296 i32.const 11328 call $~lib/string/String#replace @@ -11891,7 +11853,7 @@ call $~lib/builtins/abort unreachable end - i32.const 800 + i32.const 768 i32.const 11296 i32.const 272 call $~lib/string/String#replace @@ -11909,10 +11871,10 @@ end i32.const 272 i32.const 272 - i32.const 800 + i32.const 768 call $~lib/string/String#replaceAll local.tee $72 - i32.const 800 + i32.const 768 call $~lib/string/String.__eq i32.eqz if @@ -11923,12 +11885,12 @@ call $~lib/builtins/abort unreachable end - i32.const 800 + i32.const 768 i32.const 4640 i32.const 4608 call $~lib/string/String#replaceAll local.tee $73 - i32.const 800 + i32.const 768 call $~lib/string/String.__eq i32.eqz if @@ -11939,8 +11901,8 @@ call $~lib/builtins/abort unreachable end - i32.const 992 - i32.const 800 + i32.const 960 + i32.const 768 i32.const 4608 call $~lib/string/String#replaceAll local.tee $74 @@ -11956,7 +11918,7 @@ unreachable end i32.const 11392 - i32.const 800 + i32.const 768 i32.const 4608 call $~lib/string/String#replaceAll local.tee $75 @@ -11971,12 +11933,12 @@ call $~lib/builtins/abort unreachable end - i32.const 992 + i32.const 960 i32.const 10480 i32.const 10480 call $~lib/string/String#replaceAll local.tee $76 - i32.const 992 + i32.const 960 call $~lib/string/String.__eq i32.eqz if @@ -12003,7 +11965,7 @@ call $~lib/builtins/abort unreachable end - i32.const 992 + i32.const 960 i32.const 10480 i32.const 11328 call $~lib/string/String#replaceAll @@ -12035,12 +11997,12 @@ call $~lib/builtins/abort unreachable end - i32.const 800 + i32.const 768 i32.const 1248 i32.const 4608 call $~lib/string/String#replaceAll local.tee $80 - i32.const 800 + i32.const 768 call $~lib/string/String.__eq i32.eqz if @@ -12067,7 +12029,7 @@ call $~lib/builtins/abort unreachable end - i32.const 800 + i32.const 768 i32.const 11712 i32.const 4608 call $~lib/string/String#replaceAll @@ -12179,8 +12141,8 @@ call $~lib/builtins/abort unreachable end - i32.const 800 - i32.const 800 + i32.const 768 + i32.const 768 i32.const 4640 call $~lib/string/String#replaceAll local.tee $89 @@ -12195,12 +12157,12 @@ call $~lib/builtins/abort unreachable end - i32.const 800 + i32.const 768 i32.const 1216 i32.const 4640 call $~lib/string/String#replaceAll local.tee $90 - i32.const 800 + i32.const 768 call $~lib/string/String.__eq i32.eqz if @@ -12211,7 +12173,7 @@ call $~lib/builtins/abort unreachable end - i32.const 800 + i32.const 768 i32.const 272 i32.const 4608 call $~lib/string/String#replaceAll @@ -12227,12 +12189,12 @@ call $~lib/builtins/abort unreachable end - i32.const 800 + i32.const 768 i32.const 272 i32.const 272 call $~lib/string/String#replaceAll local.tee $92 - i32.const 800 + i32.const 768 call $~lib/string/String.__eq i32.eqz if @@ -12729,7 +12691,7 @@ unreachable end i32.const 272 - i32.const 1056 + i32.const 1024 i32.const 2147483647 call $~lib/string/String#split local.get $2 @@ -12797,7 +12759,7 @@ unreachable end i32.const 12416 - i32.const 1056 + i32.const 1024 i32.const 2147483647 call $~lib/string/String#split local.get $2 @@ -12925,7 +12887,7 @@ unreachable end i32.const 12512 - i32.const 1056 + i32.const 1024 i32.const 2147483647 call $~lib/string/String#split local.get $2 @@ -13004,7 +12966,7 @@ unreachable end i32.const 12544 - i32.const 1056 + i32.const 1024 i32.const 2147483647 call $~lib/string/String#split local.get $2 @@ -13083,7 +13045,7 @@ unreachable end i32.const 12576 - i32.const 1056 + i32.const 1024 i32.const 2147483647 call $~lib/string/String#split local.get $2 @@ -13161,7 +13123,7 @@ call $~lib/builtins/abort unreachable end - i32.const 800 + i32.const 768 i32.const 272 i32.const 2147483647 call $~lib/string/String#split @@ -13226,7 +13188,7 @@ call $~lib/builtins/abort unreachable end - i32.const 800 + i32.const 768 i32.const 272 i32.const 0 call $~lib/string/String#split @@ -13243,7 +13205,7 @@ call $~lib/builtins/abort unreachable end - i32.const 800 + i32.const 768 i32.const 272 i32.const 1 call $~lib/string/String#split @@ -13278,7 +13240,7 @@ unreachable end i32.const 12416 - i32.const 1056 + i32.const 1024 i32.const 1 call $~lib/string/String#split local.get $2 @@ -13311,7 +13273,7 @@ call $~lib/builtins/abort unreachable end - i32.const 800 + i32.const 768 i32.const 272 i32.const 4 call $~lib/string/String#split @@ -13375,7 +13337,7 @@ call $~lib/builtins/abort unreachable end - i32.const 800 + i32.const 768 i32.const 272 i32.const -1 call $~lib/string/String#split @@ -13440,7 +13402,7 @@ unreachable end i32.const 12416 - i32.const 1056 + i32.const 1024 i32.const -1 call $~lib/string/String#split local.set $1 @@ -13565,7 +13527,7 @@ i32.const 123 call $~lib/util/number/itoa32 local.tee $124 - i32.const 864 + i32.const 832 call $~lib/string/String.__eq i32.eqz if @@ -13845,7 +13807,7 @@ i64.const 123 call $~lib/util/number/utoa64 local.tee $144 - i32.const 864 + i32.const 832 call $~lib/string/String.__eq i32.eqz if diff --git a/tests/compiler/std/string.untouched.wat b/tests/compiler/std/string.untouched.wat index 1c6b1d32d8..c3d4153deb 100644 --- a/tests/compiler/std/string.untouched.wat +++ b/tests/compiler/std/string.untouched.wat @@ -46,24 +46,24 @@ (data (i32.const 512) "\1c\00\00\00\01\00\00\00\01\00\00\00\1c\00\00\00~\00l\00i\00b\00/\00s\00t\00r\00i\00n\00g\00.\00t\00s\00") (data (i32.const 560) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\004\d8\06\df") (data (i32.const 592) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00h\00i\00") - (data (i32.const 624) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\00n\00u\00l\00l\00") - (data (i32.const 656) "\0c\00\00\00\01\00\00\00\01\00\00\00\0c\00\00\00s\00t\00r\00i\00n\00g\00") - (data (i32.const 688) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00I\00\'\00m\00") - (data (i32.const 720) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00 \00") - (data (i32.const 752) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00 \00 \00 \00") - (data (i32.const 784) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00a\00b\00c\00") - (data (i32.const 816) "\n\00\00\00\01\00\00\00\01\00\00\00\n\00\00\00 \00 \00a\00b\00c\00") - (data (i32.const 848) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\001\002\003\00") - (data (i32.const 880) "\0c\00\00\00\01\00\00\00\01\00\00\00\0c\00\00\001\002\003\00a\00b\00c\00") - (data (i32.const 912) "\10\00\00\00\01\00\00\00\01\00\00\00\10\00\00\001\002\003\001\002\00a\00b\00c\00") - (data (i32.const 944) "\n\00\00\00\01\00\00\00\01\00\00\00\n\00\00\00a\00b\00c\00 \00 \00") - (data (i32.const 976) "\0c\00\00\00\01\00\00\00\01\00\00\00\0c\00\00\00a\00b\00c\00a\00b\00c\00") - (data (i32.const 1008) "\10\00\00\00\01\00\00\00\01\00\00\00\10\00\00\00a\00b\00c\00a\00b\00c\00a\00b\00") - (data (i32.const 1040) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00,\00") - (data (i32.const 1072) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00x\00") - (data (i32.const 1104) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00,\00 \00I\00") - (data (i32.const 1136) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00g\00") - (data (i32.const 1168) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00i\00") + (data (i32.const 624) "\0c\00\00\00\01\00\00\00\01\00\00\00\0c\00\00\00s\00t\00r\00i\00n\00g\00") + (data (i32.const 656) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00I\00\'\00m\00") + (data (i32.const 688) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00 \00") + (data (i32.const 720) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00 \00 \00 \00") + (data (i32.const 752) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00a\00b\00c\00") + (data (i32.const 784) "\n\00\00\00\01\00\00\00\01\00\00\00\n\00\00\00 \00 \00a\00b\00c\00") + (data (i32.const 816) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\001\002\003\00") + (data (i32.const 848) "\0c\00\00\00\01\00\00\00\01\00\00\00\0c\00\00\001\002\003\00a\00b\00c\00") + (data (i32.const 880) "\10\00\00\00\01\00\00\00\01\00\00\00\10\00\00\001\002\003\001\002\00a\00b\00c\00") + (data (i32.const 912) "\n\00\00\00\01\00\00\00\01\00\00\00\n\00\00\00a\00b\00c\00 \00 \00") + (data (i32.const 944) "\0c\00\00\00\01\00\00\00\01\00\00\00\0c\00\00\00a\00b\00c\00a\00b\00c\00") + (data (i32.const 976) "\10\00\00\00\01\00\00\00\01\00\00\00\10\00\00\00a\00b\00c\00a\00b\00c\00a\00b\00") + (data (i32.const 1008) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00,\00") + (data (i32.const 1040) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00x\00") + (data (i32.const 1072) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00,\00 \00I\00") + (data (i32.const 1104) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00g\00") + (data (i32.const 1136) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00i\00") + (data (i32.const 1168) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\00n\00u\00l\00l\00") (data (i32.const 1200) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00a\00b\00d\00") (data (i32.const 1232) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\00a\00b\00c\00d\00") (data (i32.const 1264) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\00a\00b\00 \00c\00") @@ -740,14 +740,12 @@ return end local.get $0 - i32.const 0 - i32.eq + i32.eqz if (result i32) i32.const 1 else local.get $1 - i32.const 0 - i32.eq + i32.eqz end if i32.const 0 @@ -812,8 +810,7 @@ call $~lib/rt/pure/__retain local.set $0 local.get $0 - i32.const 0 - i32.eq + i32.eqz if (result i32) i32.const 1 else @@ -2311,41 +2308,22 @@ local.get $1 call $~lib/rt/pure/__retain local.set $1 - local.get $1 - i32.const 0 - i32.eq - if - i32.const 640 - local.tee $3 - local.get $1 - local.tee $4 - i32.ne - if - local.get $3 - call $~lib/rt/pure/__retain - local.set $3 - local.get $4 - call $~lib/rt/pure/__release - end - local.get $3 - local.set $1 - end local.get $0 call $~lib/string/String#get:length - local.set $5 + local.set $3 local.get $2 - local.tee $3 - i32.const 0 local.tee $4 - local.get $3 + i32.const 0 + local.tee $5 local.get $4 + local.get $5 i32.gt_s select - local.tee $3 - local.get $5 local.tee $4 local.get $3 + local.tee $5 local.get $4 + local.get $5 i32.lt_s select local.set $6 @@ -2355,14 +2333,14 @@ local.get $7 local.get $6 i32.add - local.get $5 + local.get $3 i32.gt_s if i32.const 0 - local.set $3 + local.set $4 local.get $1 call $~lib/rt/pure/__release - local.get $3 + local.get $4 return end local.get $0 @@ -2372,10 +2350,10 @@ local.get $7 call $~lib/util/string/compareImpl i32.eqz - local.set $3 + local.set $4 local.get $1 call $~lib/rt/pure/__release - local.get $3 + local.get $4 ) (func $~lib/string/String#endsWith (; 32 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) @@ -2385,17 +2363,6 @@ local.get $1 call $~lib/rt/pure/__retain local.set $1 - local.get $1 - i32.const 0 - i32.eq - if - i32.const 0 - local.set $3 - local.get $1 - call $~lib/rt/pure/__release - local.get $3 - return - end local.get $2 local.tee $3 i32.const 0 @@ -6670,75 +6637,55 @@ (local $4 i32) (local $5 i32) (local $6 i32) - (local $7 i32) local.get $1 call $~lib/rt/pure/__retain local.set $1 - local.get $1 - i32.const 0 - i32.eq - if - i32.const 640 - local.tee $2 - local.get $1 - local.tee $3 - i32.ne - if - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $3 - call $~lib/rt/pure/__release - end - local.get $2 - local.set $1 - end local.get $0 call $~lib/string/String#get:length i32.const 1 i32.shl - local.set $4 + local.set $2 local.get $1 call $~lib/string/String#get:length i32.const 1 i32.shl - local.set $5 - local.get $4 - local.get $5 + local.set $3 + local.get $2 + local.get $3 i32.add - local.set $6 - local.get $6 + local.set $4 + local.get $4 i32.const 0 i32.eq if i32.const 272 call $~lib/rt/pure/__retain - local.set $2 + local.set $5 local.get $1 call $~lib/rt/pure/__release - local.get $2 + local.get $5 return end - local.get $6 + local.get $4 i32.const 1 call $~lib/rt/tlsf/__alloc call $~lib/rt/pure/__retain - local.set $7 - local.get $7 + local.set $6 + local.get $6 local.get $0 - local.get $4 + local.get $2 call $~lib/memory/memory.copy - local.get $7 - local.get $4 + local.get $6 + local.get $2 i32.add local.get $1 - local.get $5 + local.get $3 call $~lib/memory/memory.copy - local.get $7 - local.set $2 + local.get $6 + local.set $5 local.get $1 call $~lib/rt/pure/__release - local.get $2 + local.get $5 ) (func $~lib/string/String.__concat (; 57 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) @@ -6749,7 +6696,7 @@ call $~lib/rt/pure/__retain local.set $1 local.get $0 - i32.const 640 + i32.const 1184 local.get $0 i32.const 0 i32.ne @@ -6800,15 +6747,13 @@ i32.const 1 else local.get $0 - i32.const 0 - i32.eq + i32.eqz end if (result i32) i32.const 1 else local.get $1 - i32.const 0 - i32.eq + i32.eqz end if i32.const 0 @@ -6890,15 +6835,13 @@ i32.const 1 else local.get $0 - i32.const 0 - i32.eq + i32.eqz end if (result i32) i32.const 1 else local.get $1 - i32.const 0 - i32.eq + i32.eqz end if i32.const 0 @@ -7023,7 +6966,7 @@ if i32.const 10928 i32.const 528 - i32.const 312 + i32.const 316 i32.const 6 call $~lib/builtins/abort unreachable @@ -8459,8 +8402,7 @@ return end local.get $1 - i32.const 0 - i32.eq + i32.eqz if i32.const 1 i32.const 2 @@ -8756,7 +8698,7 @@ if i32.const 12240 i32.const 12192 - i32.const 93 + i32.const 96 i32.const 41 call $~lib/builtins/abort unreachable @@ -8772,7 +8714,7 @@ call $~lib/rt/pure/__release i32.const 12304 i32.const 12192 - i32.const 97 + i32.const 100 i32.const 39 call $~lib/builtins/abort unreachable @@ -12161,7 +12103,7 @@ unreachable end global.get $std/string/str - i32.const 672 + i32.const 640 i32.const 536870904 call $~lib/string/String#endsWith i32.eqz @@ -12174,7 +12116,7 @@ unreachable end global.get $std/string/str - i32.const 704 + i32.const 672 i32.const 0 call $~lib/string/String#includes i32.eqz @@ -12188,7 +12130,7 @@ end global.get $std/string/str i32.const 0 - i32.const 736 + i32.const 704 call $~lib/string/String#padStart local.tee $7 global.get $std/string/str @@ -12204,7 +12146,7 @@ end global.get $std/string/str i32.const 15 - i32.const 736 + i32.const 704 call $~lib/string/String#padStart local.tee $8 global.get $std/string/str @@ -12220,10 +12162,10 @@ end i32.const 272 i32.const 3 - i32.const 736 + i32.const 704 call $~lib/string/String#padStart local.tee $9 - i32.const 768 + i32.const 736 call $~lib/string/String.__eq i32.eqz if @@ -12266,12 +12208,12 @@ call $~lib/builtins/abort unreachable end - i32.const 800 + i32.const 768 i32.const 5 - i32.const 736 + i32.const 704 call $~lib/string/String#padStart local.tee $12 - i32.const 832 + i32.const 800 call $~lib/string/String.__eq i32.eqz if @@ -12282,12 +12224,12 @@ call $~lib/builtins/abort unreachable end - i32.const 800 + i32.const 768 i32.const 6 - i32.const 864 + i32.const 832 call $~lib/string/String#padStart local.tee $13 - i32.const 896 + i32.const 864 call $~lib/string/String.__eq i32.eqz if @@ -12298,12 +12240,12 @@ call $~lib/builtins/abort unreachable end - i32.const 800 + i32.const 768 i32.const 8 - i32.const 864 + i32.const 832 call $~lib/string/String#padStart local.tee $14 - i32.const 928 + i32.const 896 call $~lib/string/String.__eq i32.eqz if @@ -12316,7 +12258,7 @@ end global.get $std/string/str i32.const 0 - i32.const 736 + i32.const 704 call $~lib/string/String#padEnd local.tee $15 global.get $std/string/str @@ -12332,7 +12274,7 @@ end global.get $std/string/str i32.const 15 - i32.const 736 + i32.const 704 call $~lib/string/String#padEnd local.tee $16 global.get $std/string/str @@ -12348,10 +12290,10 @@ end i32.const 272 i32.const 3 - i32.const 736 + i32.const 704 call $~lib/string/String#padEnd local.tee $17 - i32.const 768 + i32.const 736 call $~lib/string/String.__eq i32.eqz if @@ -12394,12 +12336,12 @@ call $~lib/builtins/abort unreachable end - i32.const 800 + i32.const 768 i32.const 5 - i32.const 736 + i32.const 704 call $~lib/string/String#padEnd local.tee $20 - i32.const 960 + i32.const 928 call $~lib/string/String.__eq i32.eqz if @@ -12410,12 +12352,12 @@ call $~lib/builtins/abort unreachable end - i32.const 800 + i32.const 768 i32.const 6 - i32.const 800 + i32.const 768 call $~lib/string/String#padEnd local.tee $21 - i32.const 992 + i32.const 960 call $~lib/string/String.__eq i32.eqz if @@ -12426,12 +12368,12 @@ call $~lib/builtins/abort unreachable end - i32.const 800 + i32.const 768 i32.const 8 - i32.const 800 + i32.const 768 call $~lib/string/String#padEnd local.tee $22 - i32.const 1024 + i32.const 992 call $~lib/string/String.__eq i32.eqz if @@ -12518,7 +12460,7 @@ unreachable end global.get $std/string/str - i32.const 1056 + i32.const 1024 i32.const 0 call $~lib/string/String#indexOf i32.const 2 @@ -12533,7 +12475,7 @@ unreachable end global.get $std/string/str - i32.const 1088 + i32.const 1056 i32.const 0 call $~lib/string/String#indexOf i32.const -1 @@ -12548,7 +12490,7 @@ unreachable end global.get $std/string/str - i32.const 1056 + i32.const 1024 i32.const 2 call $~lib/string/String#indexOf i32.const 2 @@ -12563,7 +12505,7 @@ unreachable end global.get $std/string/str - i32.const 1056 + i32.const 1024 i32.const 3 call $~lib/string/String#indexOf i32.const -1 @@ -12578,7 +12520,7 @@ unreachable end global.get $std/string/str - i32.const 1120 + i32.const 1088 i32.const -1 call $~lib/string/String#indexOf i32.const 2 @@ -12639,7 +12581,7 @@ unreachable end global.get $std/string/str - i32.const 1056 + i32.const 1024 i32.const 2147483647 call $~lib/string/String#lastIndexOf i32.const 2 @@ -12654,7 +12596,7 @@ unreachable end global.get $std/string/str - i32.const 1088 + i32.const 1056 i32.const 2147483647 call $~lib/string/String#lastIndexOf i32.const -1 @@ -12669,7 +12611,7 @@ unreachable end global.get $std/string/str - i32.const 1152 + i32.const 1120 i32.const 2147483647 call $~lib/string/String#lastIndexOf i32.const 15 @@ -12684,7 +12626,7 @@ unreachable end global.get $std/string/str - i32.const 1056 + i32.const 1024 i32.const 2 call $~lib/string/String#lastIndexOf i32.const 2 @@ -12699,7 +12641,7 @@ unreachable end global.get $std/string/str - i32.const 1056 + i32.const 1024 i32.const 3 call $~lib/string/String#lastIndexOf i32.const 2 @@ -12714,7 +12656,7 @@ unreachable end global.get $std/string/str - i32.const 1120 + i32.const 1088 i32.const -1 call $~lib/string/String#lastIndexOf i32.const -1 @@ -12729,7 +12671,7 @@ unreachable end global.get $std/string/str - i32.const 1184 + i32.const 1152 i32.const 0 call $~lib/string/String#lastIndexOf i32.const -1 @@ -12800,8 +12742,8 @@ call $~lib/builtins/abort unreachable end - i32.const 640 - i32.const 640 + i32.const 1184 + i32.const 1184 call $~lib/string/String#localeCompare i32.const 0 i32.eq @@ -12814,7 +12756,7 @@ call $~lib/builtins/abort unreachable end - i32.const 800 + i32.const 768 i32.const 1216 call $~lib/string/String#localeCompare i32.const -1 @@ -12829,7 +12771,7 @@ unreachable end i32.const 1216 - i32.const 800 + i32.const 768 call $~lib/string/String#localeCompare i32.const 1 i32.eq @@ -12843,7 +12785,7 @@ unreachable end i32.const 1248 - i32.const 800 + i32.const 768 call $~lib/string/String#localeCompare i32.const 1 i32.eq @@ -12856,7 +12798,7 @@ call $~lib/builtins/abort unreachable end - i32.const 800 + i32.const 768 i32.const 1248 call $~lib/string/String#localeCompare i32.const -1 @@ -12871,7 +12813,7 @@ unreachable end i32.const 272 - i32.const 768 + i32.const 736 call $~lib/string/String#localeCompare i32.const -1 i32.eq @@ -13013,7 +12955,7 @@ i32.const 1312 call $~lib/string/String#trim local.tee $31 - i32.const 800 + i32.const 768 call $~lib/string/String.__eq i32.eqz if @@ -15471,7 +15413,7 @@ call $~lib/builtins/abort unreachable end - i32.const 800 + i32.const 768 i32.const 272 call $~lib/string/String.__gt i32.eqz @@ -15484,7 +15426,7 @@ unreachable end i32.const 272 - i32.const 800 + i32.const 768 call $~lib/string/String.__lt i32.eqz if @@ -15495,7 +15437,7 @@ call $~lib/builtins/abort unreachable end - i32.const 800 + i32.const 768 i32.const 272 call $~lib/string/String.__gte i32.eqz @@ -15508,7 +15450,7 @@ unreachable end i32.const 272 - i32.const 800 + i32.const 768 call $~lib/string/String.__lte i32.eqz if @@ -15519,7 +15461,7 @@ call $~lib/builtins/abort unreachable end - i32.const 800 + i32.const 768 i32.const 272 call $~lib/string/String.__lt i32.eqz @@ -15533,7 +15475,7 @@ unreachable end i32.const 272 - i32.const 800 + i32.const 768 call $~lib/string/String.__gt i32.eqz i32.eqz @@ -15630,7 +15572,7 @@ call $~lib/rt/pure/__release local.get $41 call $~lib/rt/pure/__release - i32.const 864 + i32.const 832 call $~lib/string/String#get:length i32.const 3 i32.eq @@ -15842,12 +15784,12 @@ call $~lib/builtins/abort unreachable end - i32.const 800 + i32.const 768 i32.const 4640 i32.const 4608 call $~lib/string/String#replace local.tee $50 - i32.const 800 + i32.const 768 call $~lib/string/String.__eq i32.eqz if @@ -15858,8 +15800,8 @@ call $~lib/builtins/abort unreachable end - i32.const 800 - i32.const 800 + i32.const 768 + i32.const 768 i32.const 4608 call $~lib/string/String#replace local.tee $51 @@ -15874,12 +15816,12 @@ call $~lib/builtins/abort unreachable end - i32.const 800 + i32.const 768 i32.const 1248 i32.const 4608 call $~lib/string/String#replace local.tee $52 - i32.const 800 + i32.const 768 call $~lib/string/String.__eq i32.eqz if @@ -15890,12 +15832,12 @@ call $~lib/builtins/abort unreachable end - i32.const 800 + i32.const 768 i32.const 10480 i32.const 10480 call $~lib/string/String#replace local.tee $53 - i32.const 800 + i32.const 768 call $~lib/string/String.__eq i32.eqz if @@ -15922,7 +15864,7 @@ call $~lib/builtins/abort unreachable end - i32.const 800 + i32.const 768 i32.const 272 i32.const 4608 call $~lib/string/String#replace @@ -15954,7 +15896,7 @@ call $~lib/builtins/abort unreachable end - i32.const 800 + i32.const 768 i32.const 11296 i32.const 11328 call $~lib/string/String#replace @@ -15970,7 +15912,7 @@ call $~lib/builtins/abort unreachable end - i32.const 800 + i32.const 768 i32.const 11296 i32.const 272 call $~lib/string/String#replace @@ -15988,10 +15930,10 @@ end i32.const 272 i32.const 272 - i32.const 800 + i32.const 768 call $~lib/string/String#replaceAll local.tee $59 - i32.const 800 + i32.const 768 call $~lib/string/String.__eq i32.eqz if @@ -16002,12 +15944,12 @@ call $~lib/builtins/abort unreachable end - i32.const 800 + i32.const 768 i32.const 4640 i32.const 4608 call $~lib/string/String#replaceAll local.tee $60 - i32.const 800 + i32.const 768 call $~lib/string/String.__eq i32.eqz if @@ -16018,8 +15960,8 @@ call $~lib/builtins/abort unreachable end - i32.const 992 - i32.const 800 + i32.const 960 + i32.const 768 i32.const 4608 call $~lib/string/String#replaceAll local.tee $61 @@ -16035,7 +15977,7 @@ unreachable end i32.const 11392 - i32.const 800 + i32.const 768 i32.const 4608 call $~lib/string/String#replaceAll local.tee $62 @@ -16050,12 +15992,12 @@ call $~lib/builtins/abort unreachable end - i32.const 992 + i32.const 960 i32.const 10480 i32.const 10480 call $~lib/string/String#replaceAll local.tee $63 - i32.const 992 + i32.const 960 call $~lib/string/String.__eq i32.eqz if @@ -16082,7 +16024,7 @@ call $~lib/builtins/abort unreachable end - i32.const 992 + i32.const 960 i32.const 10480 i32.const 11328 call $~lib/string/String#replaceAll @@ -16114,12 +16056,12 @@ call $~lib/builtins/abort unreachable end - i32.const 800 + i32.const 768 i32.const 1248 i32.const 4608 call $~lib/string/String#replaceAll local.tee $67 - i32.const 800 + i32.const 768 call $~lib/string/String.__eq i32.eqz if @@ -16146,7 +16088,7 @@ call $~lib/builtins/abort unreachable end - i32.const 800 + i32.const 768 i32.const 11712 i32.const 4608 call $~lib/string/String#replaceAll @@ -16258,8 +16200,8 @@ call $~lib/builtins/abort unreachable end - i32.const 800 - i32.const 800 + i32.const 768 + i32.const 768 i32.const 4640 call $~lib/string/String#replaceAll local.tee $76 @@ -16274,12 +16216,12 @@ call $~lib/builtins/abort unreachable end - i32.const 800 + i32.const 768 i32.const 1216 i32.const 4640 call $~lib/string/String#replaceAll local.tee $77 - i32.const 800 + i32.const 768 call $~lib/string/String.__eq i32.eqz if @@ -16290,7 +16232,7 @@ call $~lib/builtins/abort unreachable end - i32.const 800 + i32.const 768 i32.const 272 i32.const 4608 call $~lib/string/String#replaceAll @@ -16306,12 +16248,12 @@ call $~lib/builtins/abort unreachable end - i32.const 800 + i32.const 768 i32.const 272 i32.const 272 call $~lib/string/String#replaceAll local.tee $79 - i32.const 800 + i32.const 768 call $~lib/string/String.__eq i32.eqz if @@ -16823,7 +16765,7 @@ unreachable end i32.const 272 - i32.const 1056 + i32.const 1024 global.get $~lib/builtins/i32.MAX_VALUE call $~lib/string/String#split local.set $108 @@ -16899,7 +16841,7 @@ unreachable end i32.const 12416 - i32.const 1056 + i32.const 1024 global.get $~lib/builtins/i32.MAX_VALUE call $~lib/string/String#split local.set $108 @@ -17039,7 +16981,7 @@ unreachable end i32.const 12512 - i32.const 1056 + i32.const 1024 global.get $~lib/builtins/i32.MAX_VALUE call $~lib/string/String#split local.set $108 @@ -17125,7 +17067,7 @@ unreachable end i32.const 12544 - i32.const 1056 + i32.const 1024 global.get $~lib/builtins/i32.MAX_VALUE call $~lib/string/String#split local.set $109 @@ -17211,7 +17153,7 @@ unreachable end i32.const 12576 - i32.const 1056 + i32.const 1024 global.get $~lib/builtins/i32.MAX_VALUE call $~lib/string/String#split local.set $108 @@ -17296,7 +17238,7 @@ call $~lib/builtins/abort unreachable end - i32.const 800 + i32.const 768 i32.const 272 global.get $~lib/builtins/i32.MAX_VALUE call $~lib/string/String#split @@ -17366,7 +17308,7 @@ call $~lib/builtins/abort unreachable end - i32.const 800 + i32.const 768 i32.const 272 i32.const 0 call $~lib/string/String#split @@ -17388,7 +17330,7 @@ call $~lib/builtins/abort unreachable end - i32.const 800 + i32.const 768 i32.const 272 i32.const 1 call $~lib/string/String#split @@ -17427,7 +17369,7 @@ unreachable end i32.const 12416 - i32.const 1056 + i32.const 1024 i32.const 1 call $~lib/string/String#split local.set $108 @@ -17464,7 +17406,7 @@ call $~lib/builtins/abort unreachable end - i32.const 800 + i32.const 768 i32.const 272 i32.const 4 call $~lib/string/String#split @@ -17534,7 +17476,7 @@ call $~lib/builtins/abort unreachable end - i32.const 800 + i32.const 768 i32.const 272 i32.const -1 call $~lib/string/String#split @@ -17605,7 +17547,7 @@ unreachable end i32.const 12416 - i32.const 1056 + i32.const 1024 i32.const -1 call $~lib/string/String#split local.set $109 @@ -17735,7 +17677,7 @@ i32.const 123 call $~lib/util/number/itoa32 local.tee $111 - i32.const 864 + i32.const 832 call $~lib/string/String.__eq i32.eqz if @@ -18015,7 +17957,7 @@ i64.const 123 call $~lib/util/number/utoa64 local.tee $131 - i32.const 864 + i32.const 832 call $~lib/string/String.__eq i32.eqz if diff --git a/tests/compiler/std/symbol.optimized.wat b/tests/compiler/std/symbol.optimized.wat index 5f401ce42c..09ffcfd4cc 100644 --- a/tests/compiler/std/symbol.optimized.wat +++ b/tests/compiler/std/symbol.optimized.wat @@ -372,7 +372,7 @@ if i32.const 112 i32.const 160 - i32.const 54 + i32.const 56 i32.const 42 call $~lib/builtins/abort unreachable @@ -1431,10 +1431,6 @@ i32.shl local.tee $3 local.get $1 - i32.const 832 - local.get $1 - select - local.tee $1 call $~lib/string/String#get:length i32.const 1 i32.shl @@ -1588,6 +1584,9 @@ call $~lib/symbol/_Symbol.keyFor global.set $std/symbol/key2 global.get $std/symbol/key1 + i32.const 0 + call $~lib/string/String.__eq + i32.eqz if i32.const 0 i32.const 64 @@ -1597,6 +1596,9 @@ unreachable end global.get $std/symbol/key2 + i32.const 0 + call $~lib/string/String.__eq + i32.eqz if i32.const 0 i32.const 64 diff --git a/tests/compiler/std/symbol.untouched.wat b/tests/compiler/std/symbol.untouched.wat index 5752a839c6..ea29faa19c 100644 --- a/tests/compiler/std/symbol.untouched.wat +++ b/tests/compiler/std/symbol.untouched.wat @@ -466,7 +466,7 @@ if i32.const 112 i32.const 160 - i32.const 54 + i32.const 56 i32.const 42 call $~lib/builtins/abort unreachable @@ -645,8 +645,6 @@ i32.const -2128831035 local.set $1 local.get $0 - i32.const 0 - i32.ne if i32.const 0 local.set $2 @@ -830,14 +828,12 @@ return end local.get $0 - i32.const 0 - i32.eq + i32.eqz if (result i32) i32.const 1 else local.get $1 - i32.const 0 - i32.eq + i32.eqz end if i32.const 0 @@ -3040,75 +3036,55 @@ (local $4 i32) (local $5 i32) (local $6 i32) - (local $7 i32) local.get $1 call $~lib/rt/stub/__retain local.set $1 - local.get $1 - i32.const 0 - i32.eq - if - i32.const 832 - local.tee $2 - local.get $1 - local.tee $3 - i32.ne - if - local.get $2 - call $~lib/rt/stub/__retain - local.set $2 - local.get $3 - call $~lib/rt/stub/__release - end - local.get $2 - local.set $1 - end local.get $0 call $~lib/string/String#get:length i32.const 1 i32.shl - local.set $4 + local.set $2 local.get $1 call $~lib/string/String#get:length i32.const 1 i32.shl - local.set $5 - local.get $4 - local.get $5 + local.set $3 + local.get $2 + local.get $3 i32.add - local.set $6 - local.get $6 + local.set $4 + local.get $4 i32.const 0 i32.eq if i32.const 336 call $~lib/rt/stub/__retain - local.set $2 + local.set $5 local.get $1 call $~lib/rt/stub/__release - local.get $2 + local.get $5 return end - local.get $6 + local.get $4 i32.const 1 call $~lib/rt/stub/__alloc call $~lib/rt/stub/__retain - local.set $7 - local.get $7 + local.set $6 + local.get $6 local.get $0 - local.get $4 + local.get $2 call $~lib/memory/memory.copy - local.get $7 - local.get $4 + local.get $6 + local.get $2 i32.add local.get $1 - local.get $5 + local.get $3 call $~lib/memory/memory.copy - local.get $7 - local.set $2 + local.get $6 + local.set $5 local.get $1 call $~lib/rt/stub/__release - local.get $2 + local.get $5 ) (func $~lib/string/String.__concat (; 32 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) @@ -3387,7 +3363,7 @@ global.set $std/symbol/key2 global.get $std/symbol/key1 i32.const 0 - i32.eq + call $~lib/string/String.__eq i32.eqz if i32.const 0 @@ -3399,7 +3375,7 @@ end global.get $std/symbol/key2 i32.const 0 - i32.eq + call $~lib/string/String.__eq i32.eqz if i32.const 0 diff --git a/tests/compiler/std/typedarray.optimized.wat b/tests/compiler/std/typedarray.optimized.wat index 0882aa4a6f..09b8d7c619 100644 --- a/tests/compiler/std/typedarray.optimized.wat +++ b/tests/compiler/std/typedarray.optimized.wat @@ -3300,7 +3300,7 @@ if i32.const 368 i32.const 528 - i32.const 93 + i32.const 96 i32.const 41 call $~lib/builtins/abort unreachable @@ -3523,7 +3523,7 @@ if i32.const 368 i32.const 528 - i32.const 93 + i32.const 96 i32.const 41 call $~lib/builtins/abort unreachable @@ -24885,7 +24885,7 @@ if i32.const 32 i32.const 80 - i32.const 54 + i32.const 56 i32.const 42 call $~lib/builtins/abort unreachable diff --git a/tests/compiler/std/typedarray.untouched.wat b/tests/compiler/std/typedarray.untouched.wat index 67dc9ecda7..4b33149cbb 100644 --- a/tests/compiler/std/typedarray.untouched.wat +++ b/tests/compiler/std/typedarray.untouched.wat @@ -5148,7 +5148,7 @@ if i32.const 368 i32.const 528 - i32.const 93 + i32.const 96 i32.const 41 call $~lib/builtins/abort unreachable @@ -5455,7 +5455,7 @@ if i32.const 368 i32.const 528 - i32.const 93 + i32.const 96 i32.const 41 call $~lib/builtins/abort unreachable @@ -32446,14 +32446,12 @@ return end local.get $0 - i32.const 0 - i32.eq + i32.eqz if (result i32) i32.const 1 else local.get $1 - i32.const 0 - i32.eq + i32.eqz end if i32.const 0 @@ -36999,7 +36997,7 @@ if i32.const 32 i32.const 80 - i32.const 54 + i32.const 56 i32.const 42 call $~lib/builtins/abort unreachable diff --git a/tests/compiler/typeof.optimized.wat b/tests/compiler/typeof.optimized.wat index 95ef342a17..35026d727d 100644 --- a/tests/compiler/typeof.optimized.wat +++ b/tests/compiler/typeof.optimized.wat @@ -9,8 +9,8 @@ (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (memory $0 1) (data (i32.const 16) "\0c\00\00\00\01\00\00\00\01\00\00\00\0c\00\00\00n\00u\00m\00b\00e\00r") - (data (i32.const 48) "\0c\00\00\00\01\00\00\00\01\00\00\00\0c\00\00\00o\00b\00j\00e\00c\00t") - (data (i32.const 80) "\12\00\00\00\01\00\00\00\01\00\00\00\12\00\00\00t\00y\00p\00e\00o\00f\00.\00t\00s") + (data (i32.const 48) "\12\00\00\00\01\00\00\00\01\00\00\00\12\00\00\00t\00y\00p\00e\00o\00f\00.\00t\00s") + (data (i32.const 96) "\0c\00\00\00\01\00\00\00\01\00\00\00\0c\00\00\00o\00b\00j\00e\00c\00t") (data (i32.const 128) "\10\00\00\00\01\00\00\00\01\00\00\00\10\00\00\00f\00u\00n\00c\00t\00i\00o\00n") (data (i32.const 160) "\0e\00\00\00\01\00\00\00\01\00\00\00\0e\00\00\00b\00o\00o\00l\00e\00a\00n") (data (i32.const 192) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\001") @@ -208,37 +208,49 @@ local.get $1 ) (func $start:typeof (; 6 ;) - i32.const 64 - i32.const 64 + i32.const 32 + i32.const 32 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 64 + i32.const 1 + i32.const 0 + call $~lib/builtins/abort + unreachable + end + i32.const 112 + i32.const 112 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 64 i32.const 13 i32.const 0 call $~lib/builtins/abort unreachable end - i32.const 64 - i32.const 64 + i32.const 112 + i32.const 112 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 64 i32.const 14 i32.const 0 call $~lib/builtins/abort unreachable end - i32.const 64 - i32.const 64 + i32.const 112 + i32.const 112 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 64 i32.const 15 i32.const 0 call $~lib/builtins/abort @@ -250,7 +262,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 64 i32.const 16 i32.const 0 call $~lib/builtins/abort @@ -262,7 +274,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 64 i32.const 17 i32.const 0 call $~lib/builtins/abort @@ -274,19 +286,19 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 64 i32.const 19 i32.const 0 call $~lib/builtins/abort unreachable end - i32.const 64 - i32.const 64 + i32.const 112 + i32.const 112 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 64 i32.const 20 i32.const 0 call $~lib/builtins/abort @@ -298,7 +310,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 64 i32.const 21 i32.const 0 call $~lib/builtins/abort @@ -310,7 +322,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 64 i32.const 22 i32.const 0 call $~lib/builtins/abort @@ -322,7 +334,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 64 i32.const 23 i32.const 0 call $~lib/builtins/abort @@ -334,7 +346,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 64 i32.const 24 i32.const 0 call $~lib/builtins/abort @@ -346,7 +358,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 64 i32.const 27 i32.const 0 call $~lib/builtins/abort @@ -358,7 +370,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 64 i32.const 29 i32.const 0 call $~lib/builtins/abort @@ -370,7 +382,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 64 i32.const 31 i32.const 0 call $~lib/builtins/abort @@ -382,7 +394,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 64 i32.const 33 i32.const 0 call $~lib/builtins/abort @@ -394,7 +406,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 64 i32.const 35 i32.const 0 call $~lib/builtins/abort @@ -406,7 +418,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 64 i32.const 37 i32.const 0 call $~lib/builtins/abort @@ -418,7 +430,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 64 i32.const 39 i32.const 0 call $~lib/builtins/abort @@ -430,13 +442,13 @@ global.set $~lib/rt/stub/offset call $~lib/rt/stub/__alloc global.set $typeof/c - i32.const 64 - i32.const 64 + i32.const 112 + i32.const 112 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 64 i32.const 41 i32.const 0 call $~lib/builtins/abort @@ -448,7 +460,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 64 i32.const 42 i32.const 0 call $~lib/builtins/abort @@ -460,7 +472,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 64 i32.const 46 i32.const 0 call $~lib/builtins/abort @@ -472,7 +484,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 64 i32.const 47 i32.const 0 call $~lib/builtins/abort @@ -484,7 +496,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 64 i32.const 48 i32.const 0 call $~lib/builtins/abort diff --git a/tests/compiler/typeof.untouched.wat b/tests/compiler/typeof.untouched.wat index d1c59de29b..3b9eba59b1 100644 --- a/tests/compiler/typeof.untouched.wat +++ b/tests/compiler/typeof.untouched.wat @@ -8,8 +8,8 @@ (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (memory $0 1) (data (i32.const 16) "\0c\00\00\00\01\00\00\00\01\00\00\00\0c\00\00\00n\00u\00m\00b\00e\00r\00") - (data (i32.const 48) "\0c\00\00\00\01\00\00\00\01\00\00\00\0c\00\00\00o\00b\00j\00e\00c\00t\00") - (data (i32.const 80) "\12\00\00\00\01\00\00\00\01\00\00\00\12\00\00\00t\00y\00p\00e\00o\00f\00.\00t\00s\00") + (data (i32.const 48) "\12\00\00\00\01\00\00\00\01\00\00\00\12\00\00\00t\00y\00p\00e\00o\00f\00.\00t\00s\00") + (data (i32.const 96) "\0c\00\00\00\01\00\00\00\01\00\00\00\0c\00\00\00o\00b\00j\00e\00c\00t\00") (data (i32.const 128) "\10\00\00\00\01\00\00\00\01\00\00\00\10\00\00\00f\00u\00n\00c\00t\00i\00o\00n\00") (data (i32.const 160) "\0e\00\00\00\01\00\00\00\01\00\00\00\0e\00\00\00b\00o\00o\00l\00e\00a\00n\00") (data (i32.const 192) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\001\00") @@ -17,8 +17,8 @@ (data (i32.const 256) "\12\00\00\00\01\00\00\00\01\00\00\00\12\00\00\00u\00n\00d\00e\00f\00i\00n\00e\00d\00") (table $0 2 funcref) (elem (i32.const 1) $start:typeof~anonymous|0) - (global $typeof/SomeNamespace.a i32 (i32.const 1)) (global $~lib/ASC_SHRINK_LEVEL i32 (i32.const 0)) + (global $typeof/SomeNamespace.a i32 (i32.const 1)) (global $typeof/b (mut i32) (i32.const 1)) (global $typeof/i (mut i32) (i32.const 1)) (global $typeof/f (mut f32) (f32.const 1)) @@ -192,14 +192,12 @@ return end local.get $0 - i32.const 0 - i32.eq + i32.eqz if (result i32) i32.const 1 else local.get $1 - i32.const 0 - i32.eq + i32.eqz end if i32.const 0 @@ -365,37 +363,49 @@ local.get $0 ) (func $start:typeof (; 10 ;) - i32.const 64 - i32.const 64 + i32.const 32 + i32.const 32 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 64 + i32.const 1 + i32.const 0 + call $~lib/builtins/abort + unreachable + end + i32.const 112 + i32.const 112 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 64 i32.const 13 i32.const 0 call $~lib/builtins/abort unreachable end - i32.const 64 - i32.const 64 + i32.const 112 + i32.const 112 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 64 i32.const 14 i32.const 0 call $~lib/builtins/abort unreachable end - i32.const 64 - i32.const 64 + i32.const 112 + i32.const 112 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 64 i32.const 15 i32.const 0 call $~lib/builtins/abort @@ -407,7 +417,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 64 i32.const 16 i32.const 0 call $~lib/builtins/abort @@ -419,7 +429,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 64 i32.const 17 i32.const 0 call $~lib/builtins/abort @@ -431,19 +441,19 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 64 i32.const 19 i32.const 0 call $~lib/builtins/abort unreachable end - i32.const 64 - i32.const 64 + i32.const 112 + i32.const 112 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 64 i32.const 20 i32.const 0 call $~lib/builtins/abort @@ -455,7 +465,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 64 i32.const 21 i32.const 0 call $~lib/builtins/abort @@ -467,7 +477,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 64 i32.const 22 i32.const 0 call $~lib/builtins/abort @@ -479,7 +489,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 64 i32.const 23 i32.const 0 call $~lib/builtins/abort @@ -491,7 +501,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 64 i32.const 24 i32.const 0 call $~lib/builtins/abort @@ -503,7 +513,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 64 i32.const 27 i32.const 0 call $~lib/builtins/abort @@ -515,7 +525,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 64 i32.const 29 i32.const 0 call $~lib/builtins/abort @@ -527,7 +537,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 64 i32.const 31 i32.const 0 call $~lib/builtins/abort @@ -539,7 +549,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 64 i32.const 33 i32.const 0 call $~lib/builtins/abort @@ -551,7 +561,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 64 i32.const 35 i32.const 0 call $~lib/builtins/abort @@ -563,7 +573,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 64 i32.const 37 i32.const 0 call $~lib/builtins/abort @@ -575,7 +585,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 64 i32.const 39 i32.const 0 call $~lib/builtins/abort @@ -594,13 +604,13 @@ i32.const 0 call $typeof/SomeClass#constructor global.set $typeof/c - i32.const 64 - i32.const 64 + i32.const 112 + i32.const 112 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 64 i32.const 41 i32.const 0 call $~lib/builtins/abort @@ -612,7 +622,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 64 i32.const 42 i32.const 0 call $~lib/builtins/abort @@ -624,7 +634,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 64 i32.const 46 i32.const 0 call $~lib/builtins/abort @@ -636,7 +646,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 64 i32.const 47 i32.const 0 call $~lib/builtins/abort @@ -648,7 +658,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 64 i32.const 48 i32.const 0 call $~lib/builtins/abort From 7c9115b309d3eee5704ba6a31e74df88f7d47641 Mon Sep 17 00:00:00 2001 From: dcode Date: Fri, 14 Feb 2020 23:25:35 +0100 Subject: [PATCH 2/7] same goes for !== --- src/compiler.ts | 2 +- tests/compiler/resolve-binary.optimized.wat | 5 +- tests/compiler/resolve-binary.untouched.wat | 99 +++++++++++++-------- 3 files changed, 65 insertions(+), 41 deletions(-) diff --git a/src/compiler.ts b/src/compiler.ts index dc55fa2777..dbe99de668 100644 --- a/src/compiler.ts +++ b/src/compiler.ts @@ -4033,7 +4033,7 @@ export class Compiler extends DiagnosticEmitter { leftType = this.currentType; // check operator overload - if (operator == Token.EXCLAMATION_EQUALS && this.currentType.is(TypeFlags.REFERENCE)) { + if (this.currentType.is(TypeFlags.REFERENCE)) { let classReference = leftType.classReference; if (classReference) { let overload = classReference.lookupOverload(OperatorKind.NE); diff --git a/tests/compiler/resolve-binary.optimized.wat b/tests/compiler/resolve-binary.optimized.wat index 3585d36b96..f49fbb92e0 100644 --- a/tests/compiler/resolve-binary.optimized.wat +++ b/tests/compiler/resolve-binary.optimized.wat @@ -1579,7 +1579,10 @@ call $~lib/builtins/abort unreachable end - i32.const 0 + i32.const 160 + i32.const 160 + call $~lib/string/String.__eq + i32.eqz call $~lib/number/Bool#toString i32.const 64 call $~lib/string/String.__eq diff --git a/tests/compiler/resolve-binary.untouched.wat b/tests/compiler/resolve-binary.untouched.wat index ee61a69514..01cf90f051 100644 --- a/tests/compiler/resolve-binary.untouched.wat +++ b/tests/compiler/resolve-binary.untouched.wat @@ -295,7 +295,26 @@ call $~lib/rt/stub/__release local.get $2 ) - (func $~lib/util/number/decimalCount32 (; 7 ;) (param $0 i32) (result i32) + (func $~lib/string/String.__ne (; 7 ;) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $0 + call $~lib/rt/stub/__retain + local.set $0 + local.get $1 + call $~lib/rt/stub/__retain + local.set $1 + local.get $0 + local.get $1 + call $~lib/string/String.__eq + i32.eqz + local.set $2 + local.get $0 + call $~lib/rt/stub/__release + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + ) + (func $~lib/util/number/decimalCount32 (; 8 ;) (param $0 i32) (result i32) (local $1 i32) local.get $0 i32.const 100000 @@ -361,7 +380,7 @@ end unreachable ) - (func $~lib/rt/stub/maybeGrowMemory (; 8 ;) (param $0 i32) + (func $~lib/rt/stub/maybeGrowMemory (; 9 ;) (param $0 i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -415,7 +434,7 @@ local.get $0 global.set $~lib/rt/stub/offset ) - (func $~lib/rt/stub/__alloc (; 9 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/rt/stub/__alloc (; 10 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -468,7 +487,7 @@ i32.store offset=12 local.get $2 ) - (func $~lib/util/number/utoa32_lut (; 10 ;) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/util/number/utoa32_lut (; 11 ;) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -612,7 +631,7 @@ i32.store16 end ) - (func $~lib/util/number/itoa32 (; 11 ;) (param $0 i32) (result i32) + (func $~lib/util/number/itoa32 (; 12 ;) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -666,16 +685,16 @@ local.get $3 call $~lib/rt/stub/__retain ) - (func $~lib/util/number/itoa (; 12 ;) (param $0 i32) (result i32) + (func $~lib/util/number/itoa (; 13 ;) (param $0 i32) (result i32) local.get $0 call $~lib/util/number/itoa32 return ) - (func $~lib/number/I32#toString (; 13 ;) (param $0 i32) (result i32) + (func $~lib/number/I32#toString (; 14 ;) (param $0 i32) (result i32) local.get $0 call $~lib/util/number/itoa ) - (func $~lib/math/NativeMath.pow (; 14 ;) (param $0 f64) (param $1 f64) (result f64) + (func $~lib/math/NativeMath.pow (; 15 ;) (param $0 f64) (param $1 f64) (result f64) (local $2 f64) (local $3 f64) (local $4 i32) @@ -1643,7 +1662,7 @@ end return ) - (func $~lib/array/Array#__unchecked_get (; 15 ;) (param $0 i32) (param $1 i32) (result i64) + (func $~lib/array/Array#__unchecked_get (; 16 ;) (param $0 i32) (param $1 i32) (result i64) local.get $0 i32.load offset=4 local.get $1 @@ -1652,7 +1671,7 @@ i32.add i64.load ) - (func $~lib/array/Array#__unchecked_get (; 16 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#__unchecked_get (; 17 ;) (param $0 i32) (param $1 i32) (result i32) local.get $0 i32.load offset=4 local.get $1 @@ -1661,7 +1680,7 @@ i32.add i32.load16_s ) - (func $~lib/util/number/genDigits (; 17 ;) (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 (; 18 ;) (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) @@ -2168,7 +2187,7 @@ end local.get $15 ) - (func $~lib/util/memory/memcpy (; 18 ;) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/util/memory/memcpy (; 19 ;) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -3192,7 +3211,7 @@ i32.store8 end ) - (func $~lib/memory/memory.copy (; 19 ;) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/memory/memory.copy (; 20 ;) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -3412,7 +3431,7 @@ end end ) - (func $~lib/util/number/prettify (; 20 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/util/number/prettify (; 21 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -3729,7 +3748,7 @@ end unreachable ) - (func $~lib/util/number/dtoa_core (; 21 ;) (param $0 i32) (param $1 f64) (result i32) + (func $~lib/util/number/dtoa_core (; 22 ;) (param $0 i32) (param $1 f64) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -4151,7 +4170,7 @@ local.get $2 i32.add ) - (func $~lib/string/String#substring (; 22 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/string/String#substring (; 23 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -4258,7 +4277,7 @@ local.get $11 call $~lib/rt/stub/__retain ) - (func $~lib/rt/stub/__free (; 23 ;) (param $0 i32) + (func $~lib/rt/stub/__free (; 24 ;) (param $0 i32) (local $1 i32) local.get $0 i32.const 0 @@ -4308,7 +4327,7 @@ global.set $~lib/rt/stub/offset end ) - (func $~lib/util/number/dtoa (; 24 ;) (param $0 f64) (result i32) + (func $~lib/util/number/dtoa (; 25 ;) (param $0 f64) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -4369,11 +4388,11 @@ call $~lib/rt/stub/__free local.get $3 ) - (func $~lib/number/F64#toString (; 25 ;) (param $0 f64) (param $1 i32) (result i32) + (func $~lib/number/F64#toString (; 26 ;) (param $0 f64) (param $1 i32) (result i32) local.get $0 call $~lib/util/number/dtoa ) - (func $resolve-binary/Foo#constructor (; 26 ;) (param $0 i32) (result i32) + (func $resolve-binary/Foo#constructor (; 27 ;) (param $0 i32) (result i32) local.get $0 i32.eqz if @@ -4385,7 +4404,7 @@ end local.get $0 ) - (func $resolve-binary/Foo#lt (; 27 ;) (param $0 i32) (param $1 i32) (result i32) + (func $resolve-binary/Foo#lt (; 28 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) local.get $1 call $~lib/rt/stub/__retain @@ -4396,11 +4415,11 @@ call $~lib/rt/stub/__release local.get $2 ) - (func $~lib/string/String#toString (; 28 ;) (param $0 i32) (result i32) + (func $~lib/string/String#toString (; 29 ;) (param $0 i32) (result i32) local.get $0 call $~lib/rt/stub/__retain ) - (func $resolve-binary/Foo#gt (; 29 ;) (param $0 i32) (param $1 i32) (result i32) + (func $resolve-binary/Foo#gt (; 30 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) local.get $1 call $~lib/rt/stub/__retain @@ -4411,7 +4430,7 @@ call $~lib/rt/stub/__release local.get $2 ) - (func $resolve-binary/Foo#le (; 30 ;) (param $0 i32) (param $1 i32) (result i32) + (func $resolve-binary/Foo#le (; 31 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) local.get $1 call $~lib/rt/stub/__retain @@ -4422,7 +4441,7 @@ call $~lib/rt/stub/__release local.get $2 ) - (func $resolve-binary/Foo#ge (; 31 ;) (param $0 i32) (param $1 i32) (result i32) + (func $resolve-binary/Foo#ge (; 32 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) local.get $1 call $~lib/rt/stub/__retain @@ -4433,7 +4452,7 @@ call $~lib/rt/stub/__release local.get $2 ) - (func $resolve-binary/Foo#eq (; 32 ;) (param $0 i32) (param $1 i32) (result i32) + (func $resolve-binary/Foo#eq (; 33 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) local.get $1 call $~lib/rt/stub/__retain @@ -4444,7 +4463,7 @@ call $~lib/rt/stub/__release local.get $2 ) - (func $resolve-binary/Foo#ne (; 33 ;) (param $0 i32) (param $1 i32) (result i32) + (func $resolve-binary/Foo#ne (; 34 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) local.get $1 call $~lib/rt/stub/__retain @@ -4455,7 +4474,7 @@ call $~lib/rt/stub/__release local.get $2 ) - (func $resolve-binary/Foo#add (; 34 ;) (param $0 i32) (param $1 i32) (result i32) + (func $resolve-binary/Foo#add (; 35 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) local.get $1 call $~lib/rt/stub/__retain @@ -4466,7 +4485,7 @@ call $~lib/rt/stub/__release local.get $2 ) - (func $resolve-binary/Foo.sub (; 35 ;) (param $0 i32) (param $1 i32) (result i32) + (func $resolve-binary/Foo.sub (; 36 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) local.get $0 call $~lib/rt/stub/__retain @@ -4482,7 +4501,7 @@ call $~lib/rt/stub/__release local.get $2 ) - (func $resolve-binary/Foo#mul (; 36 ;) (param $0 i32) (param $1 i32) (result i32) + (func $resolve-binary/Foo#mul (; 37 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) local.get $1 call $~lib/rt/stub/__retain @@ -4493,7 +4512,7 @@ call $~lib/rt/stub/__release local.get $2 ) - (func $resolve-binary/Foo#div (; 37 ;) (param $0 i32) (param $1 i32) (result i32) + (func $resolve-binary/Foo#div (; 38 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) local.get $1 call $~lib/rt/stub/__retain @@ -4504,7 +4523,7 @@ call $~lib/rt/stub/__release local.get $2 ) - (func $resolve-binary/Foo#rem (; 38 ;) (param $0 i32) (param $1 i32) (result i32) + (func $resolve-binary/Foo#rem (; 39 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) local.get $1 call $~lib/rt/stub/__retain @@ -4515,7 +4534,7 @@ call $~lib/rt/stub/__release local.get $2 ) - (func $resolve-binary/Foo#pow (; 39 ;) (param $0 i32) (param $1 i32) (result i32) + (func $resolve-binary/Foo#pow (; 40 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) local.get $1 call $~lib/rt/stub/__retain @@ -4526,7 +4545,7 @@ call $~lib/rt/stub/__release local.get $2 ) - (func $resolve-binary/Bar#constructor (; 40 ;) (param $0 i32) (result i32) + (func $resolve-binary/Bar#constructor (; 41 ;) (param $0 i32) (result i32) local.get $0 i32.eqz if @@ -4538,17 +4557,17 @@ end local.get $0 ) - (func $resolve-binary/Bar#add (; 41 ;) (param $0 i32) (param $1 i32) (result i32) + (func $resolve-binary/Bar#add (; 42 ;) (param $0 i32) (param $1 i32) (result i32) local.get $1 call $~lib/rt/stub/__retain local.set $1 local.get $1 ) - (func $resolve-binary/Bar#self (; 42 ;) (param $0 i32) (result i32) + (func $resolve-binary/Bar#self (; 43 ;) (param $0 i32) (result i32) local.get $0 call $~lib/rt/stub/__retain ) - (func $start:resolve-binary (; 43 ;) + (func $start:resolve-binary (; 44 ;) (local $0 i32) (local $1 i32) (local $2 i32) @@ -4713,7 +4732,9 @@ call $~lib/builtins/abort unreachable end - i32.const 0 + i32.const 160 + i32.const 160 + call $~lib/string/String.__ne call $~lib/number/Bool#toString local.tee $7 i32.const 64 @@ -5584,7 +5605,7 @@ local.get $62 call $~lib/rt/stub/__release ) - (func $~start (; 44 ;) + (func $~start (; 45 ;) call $start:resolve-binary ) ) From 3de338d0c00c9d92ae11605fa25f4e3b8d45cb50 Mon Sep 17 00:00:00 2001 From: dcode Date: Sat, 15 Feb 2020 11:29:38 +0100 Subject: [PATCH 3/7] proper overload argument types --- src/compiler.ts | 99 ++++++++++++++++----------------- src/program.ts | 31 +++++++++++ tests/compiler/resolve-unary.ts | 8 +-- 3 files changed, 82 insertions(+), 56 deletions(-) diff --git a/src/compiler.ts b/src/compiler.ts index dbe99de668..9cf187bf2a 100644 --- a/src/compiler.ts +++ b/src/compiler.ts @@ -158,6 +158,7 @@ import { TernaryExpression, ArrayLiteralExpression, StringLiteralExpression, + UnaryExpression, UnaryPostfixExpression, UnaryPrefixExpression, @@ -3534,7 +3535,7 @@ export class Compiler extends DiagnosticEmitter { if (classReference) { let overload = classReference.lookupOverload(OperatorKind.LT); if (overload) { - expr = this.compileBinaryOverload(overload, left, leftExpr, right, expression); + expr = this.compileBinaryOverload(overload, leftExpr, leftType, right, expression); break; } } @@ -3634,7 +3635,7 @@ export class Compiler extends DiagnosticEmitter { if (classReference) { let overload = classReference.lookupOverload(OperatorKind.GT); if (overload) { - expr = this.compileBinaryOverload(overload, left, leftExpr, right, expression); + expr = this.compileBinaryOverload(overload, leftExpr, leftType, right, expression); break; } } @@ -3734,7 +3735,7 @@ export class Compiler extends DiagnosticEmitter { if (classReference) { let overload = classReference.lookupOverload(OperatorKind.LE); if (overload) { - expr = this.compileBinaryOverload(overload, left, leftExpr, right, expression); + expr = this.compileBinaryOverload(overload, leftExpr, leftType, right, expression); break; } } @@ -3834,7 +3835,7 @@ export class Compiler extends DiagnosticEmitter { if (classReference) { let overload = classReference.lookupOverload(OperatorKind.GE); if (overload) { - expr = this.compileBinaryOverload(overload, left, leftExpr, right, expression); + expr = this.compileBinaryOverload(overload, leftExpr, leftType, right, expression); break; } } @@ -3941,7 +3942,7 @@ export class Compiler extends DiagnosticEmitter { if (classReference) { let overload = classReference.lookupOverload(OperatorKind.EQ); if (overload) { - expr = this.compileBinaryOverload(overload, left, leftExpr, right, expression); + expr = this.compileBinaryOverload(overload, leftExpr, leftType, right, expression); break; } } @@ -4038,7 +4039,7 @@ export class Compiler extends DiagnosticEmitter { if (classReference) { let overload = classReference.lookupOverload(OperatorKind.NE); if (overload) { - expr = this.compileBinaryOverload(overload, left, leftExpr, right, expression); + expr = this.compileBinaryOverload(overload, leftExpr, leftType, right, expression); break; } } @@ -4138,7 +4139,7 @@ export class Compiler extends DiagnosticEmitter { if (classReference) { let overload = classReference.lookupOverload(OperatorKind.ADD); if (overload) { - expr = this.compileBinaryOverload(overload, left, leftExpr, right, expression); + expr = this.compileBinaryOverload(overload, leftExpr, leftType, right, expression); break; } } @@ -4227,7 +4228,7 @@ export class Compiler extends DiagnosticEmitter { if (classReference) { let overload = classReference.lookupOverload(OperatorKind.SUB); if (overload) { - expr = this.compileBinaryOverload(overload, left, leftExpr, right, expression); + expr = this.compileBinaryOverload(overload, leftExpr, leftType, right, expression); break; } } @@ -4317,7 +4318,7 @@ export class Compiler extends DiagnosticEmitter { if (classReference) { let overload = classReference.lookupOverload(OperatorKind.MUL); if (overload) { - expr = this.compileBinaryOverload(overload, left, leftExpr, right, expression); + expr = this.compileBinaryOverload(overload, leftExpr, leftType, right, expression); break; } } @@ -4407,7 +4408,7 @@ export class Compiler extends DiagnosticEmitter { if (classReference) { let overload = classReference.lookupOverload(OperatorKind.POW); if (overload) { - expr = this.compileBinaryOverload(overload, left, leftExpr, right, expression); + expr = this.compileBinaryOverload(overload, leftExpr, leftType, right, expression); break; } } @@ -4504,7 +4505,7 @@ export class Compiler extends DiagnosticEmitter { if (classReference) { let overload = classReference.lookupOverload(OperatorKind.DIV); if (overload) { - expr = this.compileBinaryOverload(overload, left, leftExpr, right, expression); + expr = this.compileBinaryOverload(overload, leftExpr, leftType, right, expression); break; } } @@ -4613,7 +4614,7 @@ export class Compiler extends DiagnosticEmitter { if (classReference) { let overload = classReference.lookupOverload(OperatorKind.REM); if (overload) { - expr = this.compileBinaryOverload(overload, left, leftExpr, right, expression); + expr = this.compileBinaryOverload(overload, leftExpr, leftType, right, expression); break; } } @@ -4779,7 +4780,7 @@ export class Compiler extends DiagnosticEmitter { if (classReference) { let overload = classReference.lookupOverload(OperatorKind.BITWISE_SHL); if (overload) { - expr = this.compileBinaryOverload(overload, left, leftExpr, right, expression); + expr = this.compileBinaryOverload(overload, leftExpr, leftType, right, expression); break; } } @@ -4845,7 +4846,7 @@ export class Compiler extends DiagnosticEmitter { if (classReference) { let overload = classReference.lookupOverload(OperatorKind.BITWISE_SHR); if (overload) { - expr = this.compileBinaryOverload(overload, left, leftExpr, right, expression); + expr = this.compileBinaryOverload(overload, leftExpr, leftType, right, expression); break; } } @@ -4933,7 +4934,7 @@ export class Compiler extends DiagnosticEmitter { if (classReference) { let overload = classReference.lookupOverload(OperatorKind.BITWISE_SHR_U); if (overload) { - expr = this.compileBinaryOverload(overload, left, leftExpr, right, expression); + expr = this.compileBinaryOverload(overload, leftExpr, leftType, right, expression); break; } } @@ -5002,7 +5003,7 @@ export class Compiler extends DiagnosticEmitter { if (classReference) { let overload = classReference.lookupOverload(OperatorKind.BITWISE_AND); if (overload) { - expr = this.compileBinaryOverload(overload, left, leftExpr, right, expression); + expr = this.compileBinaryOverload(overload, leftExpr, leftType, right, expression); break; } } @@ -5092,7 +5093,7 @@ export class Compiler extends DiagnosticEmitter { if (classReference) { let overload = classReference.lookupOverload(OperatorKind.BITWISE_OR); if (overload) { - expr = this.compileBinaryOverload(overload, left, leftExpr, right, expression); + expr = this.compileBinaryOverload(overload, leftExpr, leftType, right, expression); break; } } @@ -5185,7 +5186,7 @@ export class Compiler extends DiagnosticEmitter { if (classReference) { let overload = classReference.lookupOverload(OperatorKind.BITWISE_XOR); if (overload) { - expr = this.compileBinaryOverload(overload, left, leftExpr, right, expression); + expr = this.compileBinaryOverload(overload, leftExpr, leftType, right, expression); break; } } @@ -5505,40 +5506,34 @@ export class Compiler extends DiagnosticEmitter { } private compileUnaryOverload( - operatorInstance: Function, - value: Expression, + /** Overload function instance. */ + overload: Function, + /** Compiled value expression. */ valueExpr: ExpressionRef, - reportNode: Node + /** Value type. */ + valueType: Type, + /** Report node. */ + reportNode: UnaryExpression ): ExpressionRef { - // FIXME: see comment in compileBinaryOverload below why recompiling on type mismatch - // is a bad idea currently. so this assumes that the type matches. - return this.makeCallDirect(operatorInstance, [ valueExpr ], reportNode, false); + valueExpr = this.convertExpression(valueExpr, valueType, overload.unaryOverloadValueType, false, false, reportNode); + return this.makeCallDirect(overload, [ valueExpr ], reportNode, false); } private compileBinaryOverload( - operatorInstance: Function, - left: Expression, + /** Overload function instance. */ + overload: Function, + /** Compiled left expression. */ leftExpr: ExpressionRef, + /** Left expression type. */ + leftType: Type, + /** Right expression to compile. */ right: Expression, - reportNode: Node + /** Report node. */ + reportNode: BinaryExpression ): ExpressionRef { - var rightType: Type; - if (operatorInstance.is(CommonFlags.INSTANCE)) { - let classInstance = assert(operatorInstance.parent); assert(classInstance.kind == ElementKind.CLASS); - rightType = operatorInstance.signature.parameterTypes[0]; - } else { - // FIXME: if LHS type differs we can't recompile left because that'd completely confuse - // local states, like having retained locals that actually do not even exist, possibly - // releasing something random in that local before and evil things like that. Hence this - // assumes that LHS type matches, which in turn means that static overloads must be - // guaranteed to never mismatch LHS type, which in turn means that we can't have shiny - // things like multiple static overloads for different combinations of LHS/RHS types. - // We might want that at some point of course, but requires to complete the resolver so - // it can actually resolve every kind of expression without ever having to recompile. - rightType = operatorInstance.signature.parameterTypes[1]; - } - var rightExpr = this.compileExpression(right, rightType, Constraints.CONV_IMPLICIT); - return this.makeCallDirect(operatorInstance, [ leftExpr, rightExpr ], reportNode); + leftExpr = this.convertExpression(leftExpr, leftType, overload.binaryOverloadLeftType, false, false, reportNode); + var rightExpr = this.compileExpression(right, overload.binaryOverloadRightType, Constraints.CONV_IMPLICIT); + return this.makeCallDirect(overload, [ leftExpr, rightExpr ], reportNode); } private compileAssignment(expression: Expression, valueExpression: Expression, contextualType: Type): ExpressionRef { @@ -8640,7 +8635,7 @@ export class Compiler extends DiagnosticEmitter { flow.freeTempLocal(tempLocal); tempLocal = null; } - expr = this.compileUnaryOverload(overload, expression.operand, getValue, expression); + expr = this.compileUnaryOverload(overload, getValue, this.currentType, expression); if (isInstance) break; return expr; // here } @@ -8729,7 +8724,7 @@ export class Compiler extends DiagnosticEmitter { flow.freeTempLocal(tempLocal); tempLocal = null; } - expr = this.compileUnaryOverload(overload, expression.operand, getValue, expression); + expr = this.compileUnaryOverload(overload, getValue, this.currentType, expression); if (overload.is(CommonFlags.INSTANCE)) break; return expr; // here } @@ -8873,7 +8868,7 @@ export class Compiler extends DiagnosticEmitter { let classReference = this.currentType.classReference; if (classReference) { let overload = classReference.lookupOverload(OperatorKind.PLUS); - if (overload) return this.compileUnaryOverload(overload, expression.operand, expr, expression); + if (overload) return this.compileUnaryOverload(overload, expr, this.currentType, expression); } this.error( DiagnosticCode.The_0_operator_cannot_be_applied_to_type_1, @@ -8908,7 +8903,7 @@ export class Compiler extends DiagnosticEmitter { let classReference = this.currentType.classReference; if (classReference) { let overload = classReference.lookupOverload(OperatorKind.MINUS); - if (overload) return this.compileUnaryOverload(overload, expression.operand, expr, expression); + if (overload) return this.compileUnaryOverload(overload, expr, this.currentType, expression); } this.error( DiagnosticCode.The_0_operator_cannot_be_applied_to_type_1, @@ -8976,7 +8971,7 @@ export class Compiler extends DiagnosticEmitter { if (classReference) { let overload = classReference.lookupOverload(OperatorKind.PREFIX_INC); if (overload) { - expr = this.compileUnaryOverload(overload, expression.operand, expr, expression); + expr = this.compileUnaryOverload(overload, expr, this.currentType, expression); if (overload.is(CommonFlags.INSTANCE)) break; // re-assign return expr; // skip re-assign } @@ -9047,7 +9042,7 @@ export class Compiler extends DiagnosticEmitter { if (classReference) { let overload = classReference.lookupOverload(OperatorKind.PREFIX_DEC); if (overload) { - expr = this.compileUnaryOverload(overload, expression.operand, expr, expression); + expr = this.compileUnaryOverload(overload, expr, this.currentType, expression); if (overload.is(CommonFlags.INSTANCE)) break; // re-assign return expr; // skip re-assign } @@ -9116,7 +9111,7 @@ export class Compiler extends DiagnosticEmitter { let classReference = this.currentType.classReference; if (classReference) { let overload = classReference.lookupOverload(OperatorKind.NOT); - if (overload) return this.compileUnaryOverload(overload, expression.operand, expr, expression); + if (overload) return this.compileUnaryOverload(overload, expr, this.currentType, expression); } // allow '!' for references even without an overload } @@ -9141,7 +9136,7 @@ export class Compiler extends DiagnosticEmitter { let classReference = this.currentType.classReference; if (classReference) { let overload = classReference.lookupOverload(OperatorKind.BITWISE_NOT); - if (overload) return this.compileUnaryOverload(overload, expression.operand, expr, expression); + if (overload) return this.compileUnaryOverload(overload, expr, this.currentType, expression); } this.error( DiagnosticCode.The_0_operator_cannot_be_applied_to_type_1, diff --git a/src/program.ts b/src/program.ts index cd7d486aa8..c8bf1b445e 100644 --- a/src/program.ts +++ b/src/program.ts @@ -2959,6 +2959,37 @@ export class Function extends TypedElement { } } } + + /** Gets the value type of an unary operator overload. */ + get unaryOverloadValueType(): Type { + if (this.is(CommonFlags.INSTANCE)) { + return assert(this.signature.thisType); + } + var parameterTypes = this.signature.parameterTypes; + assert(parameterTypes.length >= 1); + return parameterTypes[0]; + } + + /** Gets the left type of a binary operator overload. */ + get binaryOverloadLeftType(): Type { + if (this.is(CommonFlags.INSTANCE)) { + return assert(this.signature.thisType); + } + var parameterTypes = this.signature.parameterTypes; + assert(parameterTypes.length >= 2); + return parameterTypes[0]; + } + + /** Gets the right type of a binary operator overload. */ + get binaryOverloadRightType(): Type { + var parameterTypes = this.signature.parameterTypes; + if (this.is(CommonFlags.INSTANCE)) { + assert(parameterTypes.length >= 1); + return parameterTypes[0]; + } + assert(parameterTypes.length >= 2); + return parameterTypes[1]; + } } var nextFunctionTarget = 0; diff --git a/tests/compiler/resolve-unary.ts b/tests/compiler/resolve-unary.ts index ff598b7f60..810ac6600a 100644 --- a/tests/compiler/resolve-unary.ts +++ b/tests/compiler/resolve-unary.ts @@ -131,19 +131,19 @@ assert( class Bar { // static inc/dec don't reassign and can have different return type @operator.prefix("++") - static prefix_inc(a: Foo): string { + static prefix_inc(a: Bar): string { return "++i"; } @operator.prefix("--") - static prefix_dec(a: Foo): string { + static prefix_dec(a: Bar): string { return "--i"; } @operator.postfix("++") - static postfix_inc(a: Foo): string { + static postfix_inc(a: Bar): string { return "i++"; } @operator.postfix("--") - static postfix_dec(a: Foo): string { + static postfix_dec(a: Bar): string { return "i--"; } } From 37619191f4ecbbe827c04be0f40a0b1fb8ea4dea Mon Sep 17 00:00:00 2001 From: dcode Date: Sat, 14 Mar 2020 16:49:26 +0100 Subject: [PATCH 4/7] account for #1121 --- std/assembly/staticarray.ts | 40 ++++++++++++++++++------------------- std/assembly/string.ts | 2 +- 2 files changed, 21 insertions(+), 21 deletions(-) diff --git a/std/assembly/staticarray.ts b/std/assembly/staticarray.ts index 8a3bbcb06c..81d36b0a1e 100644 --- a/std/assembly/staticarray.ts +++ b/std/assembly/staticarray.ts @@ -19,22 +19,22 @@ export class StaticArray { static fromArray(source: Array): StaticArray { var length = source.length; var outSize = length << alignof(); - var out = __alloc(outSize, idof>()); + var outPtr = __alloc(outSize, idof>()); + var srcPtr = load(changetype(source), offsetof>("dataStart")); if (isManaged()) { - let sourcePtr = source.dataStart; for (let i = 0; i < length; ++i) { let off = i << alignof(); - store(out + off, __retain(load(sourcePtr + off))); + store(outPtr + off, __retain(load(srcPtr + off))); } } else { - memory.copy(out, source.dataStart, outSize); + memory.copy(outPtr, srcPtr, outSize); } - return changetype>(out); + return changetype>(outPtr); } static concat(source: StaticArray, other: StaticArray): StaticArray { var sourceLen = source.length; - var otherLen = select(0, other.length, other === null); + var otherLen = select(0, other.length, changetype(other) == 0); var outLen = sourceLen + otherLen; if (outLen > BLOCK_MAXSIZE >>> alignof()) throw new Error(E_INVALIDLENGTH); var out = changetype>(__alloc(outLen << alignof(), idof>())); // retains @@ -166,28 +166,28 @@ export class StaticArray { concat(other: Array): Array { var thisLen = this.length; - var otherLen = select(0, other.length, other === null); + var otherLen = select(0, other.length, changetype(other) == 0); var outLen = thisLen + otherLen; if (outLen > BLOCK_MAXSIZE >>> alignof()) throw new Error(E_INVALIDLENGTH); var out = changetype>(__allocArray(outLen, alignof(), idof>())); // retains - var outStart = out.dataStart; + var outPtr = load(changetype(out), offsetof>("dataStart")); + var otherPtr = load(changetype(other), offsetof>("dataStart")); var thisSize = thisLen << alignof(); if (isManaged()) { let thisStart = changetype(this); for (let offset: usize = 0; offset < thisSize; offset += sizeof()) { let ref = load(thisStart + offset); - store(outStart + offset, __retain(ref)); + store(outPtr + offset, __retain(ref)); } - outStart += thisSize; - let otherStart = other.dataStart; + outPtr += thisSize; let otherSize = otherLen << alignof(); for (let offset: usize = 0; offset < otherSize; offset += sizeof()) { - let ref = load(otherStart + offset); - store(outStart + offset, __retain(ref)); + let ref = load(otherPtr + offset); + store(outPtr + offset, __retain(ref)); } } else { - memory.copy(outStart, changetype(this), thisSize); - memory.copy(outStart + thisSize, other.dataStart, otherLen << alignof()); + memory.copy(outPtr, changetype(this), thisSize); + memory.copy(outPtr + thisSize, otherPtr, otherLen << alignof()); } return out; } @@ -198,18 +198,18 @@ export class StaticArray { end = end < 0 ? max(end + length, 0) : min(end , length); length = max(end - start, 0); var slice = changetype>(__allocArray(length, alignof(), idof>())); // retains - var sliceBase = slice.dataStart; - var thisBase = changetype(this) + (start << alignof()); + var slicePtr = load(changetype(slice), offsetof>("dataStart")); + var thisPtr = changetype(this) + (start << alignof()); if (isManaged()) { let off = 0; let end = length << alignof(); while (off < end) { - let ref = load(thisBase + off); - store(sliceBase + off, __retain(ref)); + let ref = load(thisPtr + off); + store(slicePtr + off, __retain(ref)); off += sizeof(); } } else { - memory.copy(sliceBase, thisBase, length << alignof()); + memory.copy(slicePtr, thisPtr, length << alignof()); } return slice; } diff --git a/std/assembly/string.ts b/std/assembly/string.ts index 443e3b36e3..352fc2fbc3 100644 --- a/std/assembly/string.ts +++ b/std/assembly/string.ts @@ -22,7 +22,7 @@ import { Array } from "./array"; static fromCharCodes(units: Array): String { var length = units.length; var out = __alloc(length << 1, idof()); - var ptr = units.dataStart; + var ptr = load(changetype(units), offsetof>("dataStart")); for (let i = 0; i < length; ++i) { store(out + (i << 1), load(ptr + (i << 2))); } From e940130676f69e45635586f80fbc51f5afd4dd65 Mon Sep 17 00:00:00 2001 From: dcode Date: Sat, 14 Mar 2020 17:25:01 +0100 Subject: [PATCH 5/7] try special-casing literal null --- src/compiler.ts | 4 +- tests/compiler/std/symbol.optimized.wat | 6 - tests/compiler/std/symbol.untouched.wat | 4 +- tests/compiler/wasi/abort.optimized.wat | 56 ++---- tests/compiler/wasi/abort.untouched.wat | 237 ++--------------------- tests/compiler/wasi/seed.optimized.wat | 148 ++++++--------- tests/compiler/wasi/seed.untouched.wat | 242 ++---------------------- tests/compiler/wasi/trace.optimized.wat | 50 +---- tests/compiler/wasi/trace.untouched.wat | 229 +--------------------- 9 files changed, 121 insertions(+), 855 deletions(-) diff --git a/src/compiler.ts b/src/compiler.ts index 5cd7684f84..a78e60482c 100644 --- a/src/compiler.ts +++ b/src/compiler.ts @@ -4147,7 +4147,7 @@ export class Compiler extends DiagnosticEmitter { leftType = this.currentType; // check operator overload - if (this.currentType.is(TypeFlags.REFERENCE)) { + if (this.currentType.is(TypeFlags.REFERENCE) && left.kind != NodeKind.NULL && right.kind != NodeKind.NULL) { let classReference = leftType.classReference; if (classReference) { let overload = classReference.lookupOverload(OperatorKind.EQ); @@ -4247,7 +4247,7 @@ export class Compiler extends DiagnosticEmitter { leftType = this.currentType; // check operator overload - if (this.currentType.is(TypeFlags.REFERENCE)) { + if (this.currentType.is(TypeFlags.REFERENCE) && left.kind != NodeKind.NULL && right.kind != NodeKind.NULL) { let classReference = leftType.classReference; if (classReference) { let overload = classReference.lookupOverload(OperatorKind.NE); diff --git a/tests/compiler/std/symbol.optimized.wat b/tests/compiler/std/symbol.optimized.wat index 1984e22723..7880fad6c6 100644 --- a/tests/compiler/std/symbol.optimized.wat +++ b/tests/compiler/std/symbol.optimized.wat @@ -1506,9 +1506,6 @@ call $~lib/symbol/_Symbol.keyFor global.set $std/symbol/key2 global.get $std/symbol/key1 - i32.const 0 - call $~lib/string/String.__eq - i32.eqz if i32.const 0 i32.const 1072 @@ -1518,9 +1515,6 @@ unreachable end global.get $std/symbol/key2 - i32.const 0 - call $~lib/string/String.__eq - i32.eqz if i32.const 0 i32.const 1072 diff --git a/tests/compiler/std/symbol.untouched.wat b/tests/compiler/std/symbol.untouched.wat index 84ff6d1b3a..7f3444876b 100644 --- a/tests/compiler/std/symbol.untouched.wat +++ b/tests/compiler/std/symbol.untouched.wat @@ -3308,7 +3308,7 @@ global.set $std/symbol/key2 global.get $std/symbol/key1 i32.const 0 - call $~lib/string/String.__eq + i32.eq i32.eqz if i32.const 0 @@ -3320,7 +3320,7 @@ end global.get $std/symbol/key2 i32.const 0 - call $~lib/string/String.__eq + i32.eq i32.eqz if i32.const 0 diff --git a/tests/compiler/wasi/abort.optimized.wat b/tests/compiler/wasi/abort.optimized.wat index 984144fc40..c93dcefe34 100644 --- a/tests/compiler/wasi/abort.optimized.wat +++ b/tests/compiler/wasi/abort.optimized.wat @@ -20,14 +20,7 @@ i32.const 1 i32.shr_u ) - (func $~lib/string/String.__ne (; 3 ;) (param $0 i32) (result i32) - i32.const 0 - i32.const 1 - local.get $0 - select - i32.eqz - ) - (func $~lib/string/String.UTF8.encodeUnsafe (; 4 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/string/String.UTF8.encodeUnsafe (; 3 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -199,7 +192,7 @@ local.get $2 i32.sub ) - (func $~lib/util/number/decimalCount32 (; 5 ;) (param $0 i32) (result i32) + (func $~lib/util/number/decimalCount32 (; 4 ;) (param $0 i32) (result i32) local.get $0 i32.const 10 i32.ge_u @@ -241,7 +234,7 @@ i32.lt_u select ) - (func $~lib/wasi/index/abort (; 6 ;) + (func $~lib/wasi/index/abort (; 5 ;) (local $0 i32) (local $1 i32) (local $2 i32) @@ -257,40 +250,27 @@ i32.const 12 i64.const 9071471065260641 i64.store - i32.const 19 - local.set $3 i32.const 1040 - call $~lib/string/String.__ne - if - i32.const 1040 - i32.const 1040 - call $~lib/string/String#get:length - i32.const 19 - call $~lib/string/String.UTF8.encodeUnsafe - i32.const 19 - i32.add - local.set $3 - end - local.get $3 + i32.const 1040 + call $~lib/string/String#get:length + i32.const 19 + call $~lib/string/String.UTF8.encodeUnsafe + i32.const 19 + i32.add + local.tee $3 i32.const 544106784 i32.store local.get $3 i32.const 4 i32.add - local.set $3 + local.tee $3 i32.const 1088 - call $~lib/string/String.__ne - if - i32.const 1088 - i32.const 1088 - call $~lib/string/String#get:length - local.get $3 - call $~lib/string/String.UTF8.encodeUnsafe - local.get $3 - i32.add - local.set $3 - end + i32.const 1088 + call $~lib/string/String#get:length local.get $3 + call $~lib/string/String.UTF8.encodeUnsafe + i32.add + local.tee $3 i32.const 40 i32.store8 i32.const 4 @@ -369,11 +349,11 @@ i32.const 255 call $~lib/bindings/wasi_snapshot_preview1/proc_exit ) - (func $wasi/abort/test (; 7 ;) + (func $wasi/abort/test (; 6 ;) call $~lib/wasi/index/abort unreachable ) - (func $~start (; 8 ;) + (func $~start (; 7 ;) nop ) ) diff --git a/tests/compiler/wasi/abort.untouched.wat b/tests/compiler/wasi/abort.untouched.wat index b6bb983b34..2ef0c79d27 100644 --- a/tests/compiler/wasi/abort.untouched.wat +++ b/tests/compiler/wasi/abort.untouched.wat @@ -2,27 +2,21 @@ (type $i32_=>_i32 (func (param i32) (result i32))) (type $none_=>_none (func)) (type $i32_=>_none (func (param i32))) - (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) (type $i32_i32_i32_i32_=>_i32 (func (param i32 i32 i32 i32) (result i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) - (type $i32_i32_i32_i32_i32_=>_i32 (func (param i32 i32 i32 i32 i32) (result i32))) (import "wasi_snapshot_preview1" "fd_write" (func $~lib/bindings/wasi_snapshot_preview1/fd_write (param i32 i32 i32 i32) (result i32))) (import "wasi_snapshot_preview1" "proc_exit" (func $~lib/bindings/wasi_snapshot_preview1/proc_exit (param i32))) (memory $0 1) (data (i32.const 16) "\16\00\00\00\01\00\00\00\01\00\00\00\16\00\00\00t\00h\00e\00 \00m\00e\00s\00s\00a\00g\00e\00") (data (i32.const 64) "\1a\00\00\00\01\00\00\00\01\00\00\00\1a\00\00\00w\00a\00s\00i\00/\00a\00b\00o\00r\00t\00.\00t\00s\00") (table $0 1 funcref) - (global $~lib/ASC_SHRINK_LEVEL i32 (i32.const 0)) (export "_start" (func $~start)) (export "memory" (memory $0)) (export "test" (func $wasi/abort/test)) (func $~lib/rt/stub/__retain (; 2 ;) (param $0 i32) (result i32) local.get $0 ) - (func $~lib/rt/stub/__release (; 3 ;) (param $0 i32) - nop - ) - (func $~lib/string/String#get:length (; 4 ;) (param $0 i32) (result i32) + (func $~lib/string/String#get:length (; 3 ;) (param $0 i32) (result i32) local.get $0 i32.const 16 i32.sub @@ -30,219 +24,7 @@ i32.const 1 i32.shr_u ) - (func $~lib/util/string/compareImpl (; 5 ;) (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) - (local $8 i32) - (local $9 i32) - (local $10 i32) - local.get $0 - call $~lib/rt/stub/__retain - local.set $0 - local.get $2 - call $~lib/rt/stub/__retain - local.set $2 - local.get $0 - local.get $1 - i32.const 1 - i32.shl - i32.add - local.set $5 - local.get $2 - local.get $3 - i32.const 1 - i32.shl - i32.add - local.set $6 - local.get $4 - i32.const 4 - i32.ge_u - if (result i32) - local.get $5 - i32.const 7 - i32.and - local.get $6 - i32.const 7 - i32.and - i32.or - i32.eqz - else - i32.const 0 - end - if - block $do-break|0 - loop $do-continue|0 - local.get $5 - i64.load - local.get $6 - i64.load - i64.ne - if - br $do-break|0 - end - local.get $5 - i32.const 8 - i32.add - local.set $5 - local.get $6 - i32.const 8 - i32.add - local.set $6 - local.get $4 - i32.const 4 - i32.sub - local.set $4 - local.get $4 - i32.const 4 - i32.ge_u - local.set $7 - local.get $7 - br_if $do-continue|0 - end - end - end - loop $while-continue|1 - local.get $4 - local.tee $7 - i32.const 1 - i32.sub - local.set $4 - local.get $7 - local.set $7 - local.get $7 - if - local.get $5 - i32.load16_u - local.set $8 - local.get $6 - i32.load16_u - local.set $9 - local.get $8 - local.get $9 - i32.ne - if - local.get $8 - local.get $9 - i32.sub - local.set $10 - local.get $0 - call $~lib/rt/stub/__release - local.get $2 - call $~lib/rt/stub/__release - local.get $10 - return - end - local.get $5 - i32.const 2 - i32.add - local.set $5 - local.get $6 - i32.const 2 - i32.add - local.set $6 - br $while-continue|1 - end - end - i32.const 0 - local.set $7 - local.get $0 - call $~lib/rt/stub/__release - local.get $2 - call $~lib/rt/stub/__release - local.get $7 - ) - (func $~lib/string/String.__eq (; 6 ;) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - local.get $0 - call $~lib/rt/stub/__retain - local.set $0 - local.get $1 - call $~lib/rt/stub/__retain - local.set $1 - local.get $0 - local.get $1 - i32.eq - if - i32.const 1 - local.set $2 - local.get $0 - call $~lib/rt/stub/__release - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - return - end - local.get $0 - i32.eqz - if (result i32) - i32.const 1 - else - local.get $1 - i32.eqz - end - if - i32.const 0 - local.set $2 - local.get $0 - call $~lib/rt/stub/__release - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - return - end - local.get $0 - call $~lib/string/String#get:length - local.set $3 - local.get $3 - local.get $1 - call $~lib/string/String#get:length - i32.ne - if - i32.const 0 - local.set $2 - local.get $0 - call $~lib/rt/stub/__release - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - return - end - local.get $0 - i32.const 0 - local.get $1 - i32.const 0 - local.get $3 - call $~lib/util/string/compareImpl - i32.eqz - local.set $2 - local.get $0 - call $~lib/rt/stub/__release - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - ) - (func $~lib/string/String.__ne (; 7 ;) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $0 - call $~lib/rt/stub/__retain - local.set $0 - local.get $1 - call $~lib/rt/stub/__retain - local.set $1 - local.get $0 - local.get $1 - call $~lib/string/String.__eq - i32.eqz - local.set $2 - local.get $0 - call $~lib/rt/stub/__release - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - ) - (func $~lib/string/String.UTF8.encodeUnsafe (; 8 ;) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (func $~lib/string/String.UTF8.encodeUnsafe (; 4 ;) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) (local $4 i32) (local $5 i32) (local $6 i32) @@ -458,7 +240,7 @@ local.get $2 i32.sub ) - (func $~lib/util/number/decimalCount32 (; 9 ;) (param $0 i32) (result i32) + (func $~lib/util/number/decimalCount32 (; 5 ;) (param $0 i32) (result i32) local.get $0 i32.const 100000 i32.lt_u @@ -513,7 +295,10 @@ end unreachable ) - (func $~lib/wasi/index/abort (; 10 ;) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) + (func $~lib/rt/stub/__release (; 6 ;) (param $0 i32) + nop + ) + (func $~lib/wasi/index/abort (; 7 ;) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (local $4 i32) (local $5 i32) (local $6 i32) @@ -539,7 +324,7 @@ local.set $4 local.get $0 i32.const 0 - call $~lib/string/String.__ne + i32.ne if local.get $4 local.get $0 @@ -560,7 +345,7 @@ local.set $4 local.get $1 i32.const 0 - call $~lib/string/String.__ne + i32.ne if local.get $4 local.get $1 @@ -679,7 +464,7 @@ local.get $1 call $~lib/rt/stub/__release ) - (func $wasi/abort/test (; 11 ;) + (func $wasi/abort/test (; 8 ;) i32.const 0 i32.eqz if @@ -691,7 +476,7 @@ unreachable end ) - (func $~start (; 12 ;) + (func $~start (; 9 ;) nop ) ) diff --git a/tests/compiler/wasi/seed.optimized.wat b/tests/compiler/wasi/seed.optimized.wat index 29419f1f0d..07dc208657 100644 --- a/tests/compiler/wasi/seed.optimized.wat +++ b/tests/compiler/wasi/seed.optimized.wat @@ -4,7 +4,6 @@ (type $none_=>_f64 (func (result f64))) (type $i32_=>_none (func (param i32))) (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) - (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) (type $i32_i32_i32_i32_=>_i32 (func (param i32 i32 i32 i32) (result i32))) (type $i64_=>_i64 (func (param i64) (result i64))) (import "wasi_snapshot_preview1" "random_get" (func $~lib/bindings/wasi_snapshot_preview1/random_get (param i32 i32) (result i32))) @@ -73,62 +72,50 @@ i32.shr_u i32.xor ) - (func $~lib/string/String#get:length (; 5 ;) (param $0 i32) (result i32) - local.get $0 - i32.const 16 - i32.sub - i32.load offset=12 - i32.const 1 - i32.shr_u - ) - (func $~lib/string/String.__ne (; 6 ;) (param $0 i32) (result i32) - i32.const 0 - i32.const 1 - local.get $0 - select - i32.eqz - ) - (func $~lib/string/String.UTF8.encodeUnsafe (; 7 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/string/String.UTF8.encodeUnsafe (; 5 ;) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) (local $3 i32) (local $4 i32) - (local $5 i32) + i32.const 1040 + local.set $2 local.get $0 - local.get $1 i32.const 1 i32.shl + i32.const 1040 i32.add - local.set $4 - local.get $2 - local.set $1 + local.set $3 + i32.const 23 + local.set $0 loop $while-continue|0 - local.get $0 - local.get $4 + local.get $2 + local.get $3 i32.lt_u if - local.get $0 + local.get $2 i32.load16_u - local.tee $3 + local.tee $1 i32.const 128 i32.lt_u if (result i32) + local.get $0 local.get $1 - local.get $3 i32.store8 - local.get $1 + local.get $0 i32.const 1 i32.add else - local.get $3 + local.get $1 i32.const 2048 i32.lt_u if (result i32) + local.get $0 local.get $1 - local.get $3 i32.const 6 i32.shr_u i32.const 192 i32.or - local.get $3 + local.get $1 i32.const 63 i32.and i32.const 128 @@ -137,51 +124,51 @@ i32.shl i32.or i32.store16 - local.get $1 + local.get $0 i32.const 2 i32.add else - local.get $0 + local.get $2 i32.const 2 i32.add - local.get $4 + local.get $3 i32.lt_u i32.const 0 - local.get $3 + local.get $1 i32.const 64512 i32.and i32.const 55296 i32.eq select if - local.get $0 + local.get $2 i32.load16_u offset=2 - local.tee $5 + local.tee $4 i32.const 64512 i32.and i32.const 56320 i32.eq if + local.get $0 local.get $1 - local.get $3 i32.const 1023 i32.and i32.const 10 i32.shl i32.const 65536 i32.add - local.get $5 + local.get $4 i32.const 1023 i32.and i32.or - local.tee $3 + local.tee $1 i32.const 63 i32.and i32.const 128 i32.or i32.const 24 i32.shl - local.get $3 + local.get $1 i32.const 6 i32.shr_u i32.const 63 @@ -191,7 +178,7 @@ i32.const 16 i32.shl i32.or - local.get $3 + local.get $1 i32.const 12 i32.shr_u i32.const 63 @@ -201,31 +188,31 @@ i32.const 8 i32.shl i32.or - local.get $3 + local.get $1 i32.const 18 i32.shr_u i32.const 240 i32.or i32.or i32.store - local.get $1 - i32.const 4 - i32.add - local.set $1 local.get $0 i32.const 4 i32.add local.set $0 + local.get $2 + i32.const 4 + i32.add + local.set $2 br $while-continue|0 end end + local.get $0 local.get $1 - local.get $3 i32.const 12 i32.shr_u i32.const 224 i32.or - local.get $3 + local.get $1 i32.const 6 i32.shr_u i32.const 63 @@ -236,31 +223,31 @@ i32.shl i32.or i32.store16 + local.get $0 local.get $1 - local.get $3 i32.const 63 i32.and i32.const 128 i32.or i32.store8 offset=2 - local.get $1 + local.get $0 i32.const 3 i32.add end end - local.set $1 - local.get $0 + local.set $0 + local.get $2 i32.const 2 i32.add - local.set $0 + local.set $2 br $while-continue|0 end end - local.get $1 - local.get $2 + local.get $0 + i32.const 23 i32.sub ) - (func $~lib/util/number/decimalCount32 (; 8 ;) (param $0 i32) (result i32) + (func $~lib/util/number/decimalCount32 (; 6 ;) (param $0 i32) (result i32) local.get $0 i32.const 10 i32.ge_u @@ -302,7 +289,7 @@ i32.lt_u select ) - (func $~lib/wasi/index/abort (; 9 ;) + (func $~lib/wasi/index/abort (; 7 ;) (local $0 i32) (local $1 i32) (local $2 i32) @@ -319,45 +306,22 @@ i64.const 9071471065260641 i64.store i32.const 19 - local.set $3 - i32.const 0 - call $~lib/string/String.__ne - if - i32.const 0 - i32.const 0 - call $~lib/string/String#get:length - i32.const 19 - call $~lib/string/String.UTF8.encodeUnsafe - i32.const 19 - i32.add - local.set $3 - end - local.get $3 i32.const 544106784 i32.store - local.get $3 - i32.const 4 + i32.const 1036 + i32.load + i32.const 1 + i32.shr_u + call $~lib/string/String.UTF8.encodeUnsafe + i32.const 23 i32.add - local.set $3 - i32.const 1040 - call $~lib/string/String.__ne - if - i32.const 1040 - i32.const 1040 - call $~lib/string/String#get:length - local.get $3 - call $~lib/string/String.UTF8.encodeUnsafe - local.get $3 - i32.add - local.set $3 - end - local.get $3 + local.tee $2 i32.const 40 i32.store8 i32.const 1406 call $~lib/util/number/decimalCount32 local.tee $4 - local.get $3 + local.get $2 i32.const 1 i32.add i32.add @@ -430,7 +394,7 @@ i32.const 255 call $~lib/bindings/wasi_snapshot_preview1/proc_exit ) - (func $~lib/math/NativeMath.random (; 10 ;) (result f64) + (func $~lib/math/NativeMath.random (; 8 ;) (result f64) (local $0 i64) (local $1 i64) global.get $~lib/math/random_seeded @@ -526,10 +490,10 @@ f64.const 1 f64.sub ) - (func $wasi/seed/test (; 11 ;) (result f64) + (func $wasi/seed/test (; 9 ;) (result f64) call $~lib/math/NativeMath.random ) - (func $~start (; 12 ;) + (func $~start (; 10 ;) nop ) ) diff --git a/tests/compiler/wasi/seed.untouched.wat b/tests/compiler/wasi/seed.untouched.wat index 12db0767b6..6152d6aecb 100644 --- a/tests/compiler/wasi/seed.untouched.wat +++ b/tests/compiler/wasi/seed.untouched.wat @@ -1,13 +1,12 @@ (module (type $i32_=>_i32 (func (param i32) (result i32))) - (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) (type $none_=>_f64 (func (result f64))) (type $i32_=>_none (func (param i32))) (type $i32_i32_i32_i32_=>_i32 (func (param i32 i32 i32 i32) (result i32))) (type $none_=>_none (func)) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (type $i64_=>_none (func (param i64))) - (type $i32_i32_i32_i32_i32_=>_i32 (func (param i32 i32 i32 i32 i32) (result i32))) + (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) (type $i64_=>_i64 (func (param i64) (result i64))) (import "wasi_snapshot_preview1" "random_get" (func $~lib/bindings/wasi_snapshot_preview1/random_get (param i32 i32) (result i32))) (import "wasi_snapshot_preview1" "fd_write" (func $~lib/bindings/wasi_snapshot_preview1/fd_write (param i32 i32 i32 i32) (result i32))) @@ -20,7 +19,6 @@ (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 $~lib/ASC_SHRINK_LEVEL i32 (i32.const 0)) (export "_start" (func $~start)) (export "memory" (memory $0)) (export "test" (func $wasi/seed/test)) @@ -120,10 +118,7 @@ (func $~lib/rt/stub/__retain (; 6 ;) (param $0 i32) (result i32) local.get $0 ) - (func $~lib/rt/stub/__release (; 7 ;) (param $0 i32) - nop - ) - (func $~lib/string/String#get:length (; 8 ;) (param $0 i32) (result i32) + (func $~lib/string/String#get:length (; 7 ;) (param $0 i32) (result i32) local.get $0 i32.const 16 i32.sub @@ -131,219 +126,7 @@ i32.const 1 i32.shr_u ) - (func $~lib/util/string/compareImpl (; 9 ;) (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) - (local $8 i32) - (local $9 i32) - (local $10 i32) - local.get $0 - call $~lib/rt/stub/__retain - local.set $0 - local.get $2 - call $~lib/rt/stub/__retain - local.set $2 - local.get $0 - local.get $1 - i32.const 1 - i32.shl - i32.add - local.set $5 - local.get $2 - local.get $3 - i32.const 1 - i32.shl - i32.add - local.set $6 - local.get $4 - i32.const 4 - i32.ge_u - if (result i32) - local.get $5 - i32.const 7 - i32.and - local.get $6 - i32.const 7 - i32.and - i32.or - i32.eqz - else - i32.const 0 - end - if - block $do-break|0 - loop $do-continue|0 - local.get $5 - i64.load - local.get $6 - i64.load - i64.ne - if - br $do-break|0 - end - local.get $5 - i32.const 8 - i32.add - local.set $5 - local.get $6 - i32.const 8 - i32.add - local.set $6 - local.get $4 - i32.const 4 - i32.sub - local.set $4 - local.get $4 - i32.const 4 - i32.ge_u - local.set $7 - local.get $7 - br_if $do-continue|0 - end - end - end - loop $while-continue|1 - local.get $4 - local.tee $7 - i32.const 1 - i32.sub - local.set $4 - local.get $7 - local.set $7 - local.get $7 - if - local.get $5 - i32.load16_u - local.set $8 - local.get $6 - i32.load16_u - local.set $9 - local.get $8 - local.get $9 - i32.ne - if - local.get $8 - local.get $9 - i32.sub - local.set $10 - local.get $0 - call $~lib/rt/stub/__release - local.get $2 - call $~lib/rt/stub/__release - local.get $10 - return - end - local.get $5 - i32.const 2 - i32.add - local.set $5 - local.get $6 - i32.const 2 - i32.add - local.set $6 - br $while-continue|1 - end - end - i32.const 0 - local.set $7 - local.get $0 - call $~lib/rt/stub/__release - local.get $2 - call $~lib/rt/stub/__release - local.get $7 - ) - (func $~lib/string/String.__eq (; 10 ;) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - local.get $0 - call $~lib/rt/stub/__retain - local.set $0 - local.get $1 - call $~lib/rt/stub/__retain - local.set $1 - local.get $0 - local.get $1 - i32.eq - if - i32.const 1 - local.set $2 - local.get $0 - call $~lib/rt/stub/__release - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - return - end - local.get $0 - i32.eqz - if (result i32) - i32.const 1 - else - local.get $1 - i32.eqz - end - if - i32.const 0 - local.set $2 - local.get $0 - call $~lib/rt/stub/__release - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - return - end - local.get $0 - call $~lib/string/String#get:length - local.set $3 - local.get $3 - local.get $1 - call $~lib/string/String#get:length - i32.ne - if - i32.const 0 - local.set $2 - local.get $0 - call $~lib/rt/stub/__release - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - return - end - local.get $0 - i32.const 0 - local.get $1 - i32.const 0 - local.get $3 - call $~lib/util/string/compareImpl - i32.eqz - local.set $2 - local.get $0 - call $~lib/rt/stub/__release - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - ) - (func $~lib/string/String.__ne (; 11 ;) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $0 - call $~lib/rt/stub/__retain - local.set $0 - local.get $1 - call $~lib/rt/stub/__retain - local.set $1 - local.get $0 - local.get $1 - call $~lib/string/String.__eq - i32.eqz - local.set $2 - local.get $0 - call $~lib/rt/stub/__release - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - ) - (func $~lib/string/String.UTF8.encodeUnsafe (; 12 ;) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (func $~lib/string/String.UTF8.encodeUnsafe (; 8 ;) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) (local $4 i32) (local $5 i32) (local $6 i32) @@ -559,7 +342,7 @@ local.get $2 i32.sub ) - (func $~lib/util/number/decimalCount32 (; 13 ;) (param $0 i32) (result i32) + (func $~lib/util/number/decimalCount32 (; 9 ;) (param $0 i32) (result i32) local.get $0 i32.const 100000 i32.lt_u @@ -614,7 +397,10 @@ end unreachable ) - (func $~lib/wasi/index/abort (; 14 ;) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) + (func $~lib/rt/stub/__release (; 10 ;) (param $0 i32) + nop + ) + (func $~lib/wasi/index/abort (; 11 ;) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (local $4 i32) (local $5 i32) (local $6 i32) @@ -640,7 +426,7 @@ local.set $4 local.get $0 i32.const 0 - call $~lib/string/String.__ne + i32.ne if local.get $4 local.get $0 @@ -661,7 +447,7 @@ local.set $4 local.get $1 i32.const 0 - call $~lib/string/String.__ne + i32.ne if local.get $4 local.get $1 @@ -780,7 +566,7 @@ local.get $1 call $~lib/rt/stub/__release ) - (func $~lib/math/NativeMath.seedRandom (; 15 ;) (param $0 i64) + (func $~lib/math/NativeMath.seedRandom (; 12 ;) (param $0 i64) i32.const 1 global.set $~lib/math/random_seeded local.get $0 @@ -832,7 +618,7 @@ unreachable end ) - (func $~lib/math/NativeMath.random (; 16 ;) (result f64) + (func $~lib/math/NativeMath.random (; 13 ;) (result f64) (local $0 i64) (local $1 i64) (local $2 i64) @@ -884,10 +670,10 @@ f64.const 1 f64.sub ) - (func $wasi/seed/test (; 17 ;) (result f64) + (func $wasi/seed/test (; 14 ;) (result f64) call $~lib/math/NativeMath.random ) - (func $~start (; 18 ;) + (func $~start (; 15 ;) nop ) ) diff --git a/tests/compiler/wasi/trace.optimized.wat b/tests/compiler/wasi/trace.optimized.wat index 5ff7b11e66..d5130021d4 100644 --- a/tests/compiler/wasi/trace.optimized.wat +++ b/tests/compiler/wasi/trace.optimized.wat @@ -1614,14 +1614,7 @@ local.get $1 call $~lib/util/number/dtoa_core ) - (func $~lib/string/String.__ne (; 13 ;) (param $0 i32) (result i32) - i32.const 0 - i32.const 1 - local.get $0 - select - i32.eqz - ) - (func $~lib/wasi/index/abort (; 14 ;) (param $0 i32) (param $1 i32) + (func $~lib/wasi/index/abort (; 13 ;) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -1632,39 +1625,16 @@ i64.const 9071471065260641 i64.store i32.const 19 - local.set $3 - i32.const 0 - call $~lib/string/String.__ne - if - i32.const 0 - i32.const 0 - call $~lib/string/String#get:length - i32.const 19 - call $~lib/string/String.UTF8.encodeUnsafe - i32.const 19 - i32.add - local.set $3 - end - local.get $3 i32.const 544106784 i32.store - local.get $3 - i32.const 4 - i32.add - local.set $3 i32.const 2064 - call $~lib/string/String.__ne - if - i32.const 2064 - i32.const 2064 - call $~lib/string/String#get:length - local.get $3 - call $~lib/string/String.UTF8.encodeUnsafe - local.get $3 - i32.add - local.set $3 - end - local.get $3 + i32.const 2064 + call $~lib/string/String#get:length + i32.const 23 + call $~lib/string/String.UTF8.encodeUnsafe + i32.const 23 + i32.add + local.tee $3 i32.const 40 i32.store8 local.get $0 @@ -1743,7 +1713,7 @@ i32.const 255 call $~lib/bindings/wasi_snapshot_preview1/proc_exit ) - (func $~lib/wasi/index/trace (; 15 ;) (param $0 i32) (param $1 f64) (param $2 f64) (param $3 f64) (param $4 f64) (param $5 f64) + (func $~lib/wasi/index/trace (; 14 ;) (param $0 i32) (param $1 f64) (param $2 f64) (param $3 f64) (param $4 f64) (param $5 f64) (local $6 i32) (local $7 i32) (local $8 i32) @@ -1955,7 +1925,7 @@ global.set $~lib/rt/stub/offset end ) - (func $~start (; 16 ;) + (func $~start (; 15 ;) global.get $~started if return diff --git a/tests/compiler/wasi/trace.untouched.wat b/tests/compiler/wasi/trace.untouched.wat index a4ecc81fd7..cb9d76a2eb 100644 --- a/tests/compiler/wasi/trace.untouched.wat +++ b/tests/compiler/wasi/trace.untouched.wat @@ -1,14 +1,13 @@ (module (type $i32_=>_none (func (param i32))) - (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $i32_=>_i32 (func (param i32) (result i32))) (type $none_=>_none (func)) + (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) (type $i32_i32_i32_i32_=>_i32 (func (param i32 i32 i32 i32) (result i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (type $i32_i32_f64_f64_f64_f64_f64_=>_none (func (param i32 i32 f64 f64 f64 f64 f64))) (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) - (type $i32_i32_i32_i32_i32_=>_i32 (func (param i32 i32 i32 i32 i32) (result i32))) (type $i32_i32_f64_=>_i32 (func (param i32 i32 f64) (result i32))) (type $i32_i64_i32_i64_i32_i64_i32_=>_i32 (func (param i32 i64 i32 i64 i32 i64 i32) (result i32))) (type $i32_f64_=>_i32 (func (param i32 f64) (result i32))) @@ -3246,219 +3245,7 @@ local.get $2 call $~lib/util/number/dtoa_core ) - (func $~lib/util/string/compareImpl (; 17 ;) (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) - (local $8 i32) - (local $9 i32) - (local $10 i32) - local.get $0 - call $~lib/rt/stub/__retain - local.set $0 - local.get $2 - call $~lib/rt/stub/__retain - local.set $2 - local.get $0 - local.get $1 - i32.const 1 - i32.shl - i32.add - local.set $5 - local.get $2 - local.get $3 - i32.const 1 - i32.shl - i32.add - local.set $6 - local.get $4 - i32.const 4 - i32.ge_u - if (result i32) - local.get $5 - i32.const 7 - i32.and - local.get $6 - i32.const 7 - i32.and - i32.or - i32.eqz - else - i32.const 0 - end - if - block $do-break|0 - loop $do-continue|0 - local.get $5 - i64.load - local.get $6 - i64.load - i64.ne - if - br $do-break|0 - end - local.get $5 - i32.const 8 - i32.add - local.set $5 - local.get $6 - i32.const 8 - i32.add - local.set $6 - local.get $4 - i32.const 4 - i32.sub - local.set $4 - local.get $4 - i32.const 4 - i32.ge_u - local.set $7 - local.get $7 - br_if $do-continue|0 - end - end - end - loop $while-continue|1 - local.get $4 - local.tee $7 - i32.const 1 - i32.sub - local.set $4 - local.get $7 - local.set $7 - local.get $7 - if - local.get $5 - i32.load16_u - local.set $8 - local.get $6 - i32.load16_u - local.set $9 - local.get $8 - local.get $9 - i32.ne - if - local.get $8 - local.get $9 - i32.sub - local.set $10 - local.get $0 - call $~lib/rt/stub/__release - local.get $2 - call $~lib/rt/stub/__release - local.get $10 - return - end - local.get $5 - i32.const 2 - i32.add - local.set $5 - local.get $6 - i32.const 2 - i32.add - local.set $6 - br $while-continue|1 - end - end - i32.const 0 - local.set $7 - local.get $0 - call $~lib/rt/stub/__release - local.get $2 - call $~lib/rt/stub/__release - local.get $7 - ) - (func $~lib/string/String.__eq (; 18 ;) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - local.get $0 - call $~lib/rt/stub/__retain - local.set $0 - local.get $1 - call $~lib/rt/stub/__retain - local.set $1 - local.get $0 - local.get $1 - i32.eq - if - i32.const 1 - local.set $2 - local.get $0 - call $~lib/rt/stub/__release - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - return - end - local.get $0 - i32.eqz - if (result i32) - i32.const 1 - else - local.get $1 - i32.eqz - end - if - i32.const 0 - local.set $2 - local.get $0 - call $~lib/rt/stub/__release - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - return - end - local.get $0 - call $~lib/string/String#get:length - local.set $3 - local.get $3 - local.get $1 - call $~lib/string/String#get:length - i32.ne - if - i32.const 0 - local.set $2 - local.get $0 - call $~lib/rt/stub/__release - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - return - end - local.get $0 - i32.const 0 - local.get $1 - i32.const 0 - local.get $3 - call $~lib/util/string/compareImpl - i32.eqz - local.set $2 - local.get $0 - call $~lib/rt/stub/__release - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - ) - (func $~lib/string/String.__ne (; 19 ;) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $0 - call $~lib/rt/stub/__retain - local.set $0 - local.get $1 - call $~lib/rt/stub/__retain - local.set $1 - local.get $0 - local.get $1 - call $~lib/string/String.__eq - i32.eqz - local.set $2 - local.get $0 - call $~lib/rt/stub/__release - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - ) - (func $~lib/wasi/index/abort (; 20 ;) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) + (func $~lib/wasi/index/abort (; 17 ;) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (local $4 i32) (local $5 i32) (local $6 i32) @@ -3484,7 +3271,7 @@ local.set $4 local.get $0 i32.const 0 - call $~lib/string/String.__ne + i32.ne if local.get $4 local.get $0 @@ -3505,7 +3292,7 @@ local.set $4 local.get $1 i32.const 0 - call $~lib/string/String.__ne + i32.ne if local.get $4 local.get $1 @@ -3624,7 +3411,7 @@ local.get $1 call $~lib/rt/stub/__release ) - (func $~lib/rt/stub/__free (; 21 ;) (param $0 i32) + (func $~lib/rt/stub/__free (; 18 ;) (param $0 i32) (local $1 i32) local.get $0 i32.const 0 @@ -3674,7 +3461,7 @@ global.set $~lib/rt/stub/offset end ) - (func $~lib/wasi/index/trace (; 22 ;) (param $0 i32) (param $1 i32) (param $2 f64) (param $3 f64) (param $4 f64) (param $5 f64) (param $6 f64) + (func $~lib/wasi/index/trace (; 19 ;) (param $0 i32) (param $1 i32) (param $2 f64) (param $3 f64) (param $4 f64) (param $5 f64) (param $6 f64) (local $7 i32) (local $8 i32) (local $9 i32) @@ -3883,7 +3670,7 @@ local.get $0 call $~lib/rt/stub/__release ) - (func $start:wasi/trace (; 23 ;) + (func $start:wasi/trace (; 20 ;) global.get $~lib/heap/__heap_base i32.const 15 i32.add @@ -3920,7 +3707,7 @@ f64.neg call $~lib/wasi/index/trace ) - (func $~start (; 24 ;) + (func $~start (; 21 ;) global.get $~started if return From e6de02c1beeadeb4474abe83970719a0cd837efc Mon Sep 17 00:00:00 2001 From: dcode Date: Sun, 15 Mar 2020 15:46:29 +0100 Subject: [PATCH 6/7] try inlining --- src/compiler.ts | 4 +- std/assembly/string.ts | 40 +- tests/compiler/builtins.optimized.wat | 34 +- tests/compiler/builtins.untouched.wat | 593 +- tests/compiler/number.optimized.wat | 161 +- tests/compiler/number.untouched.wat | 369 +- tests/compiler/resolve-binary.optimized.wat | 407 +- tests/compiler/resolve-binary.untouched.wat | 1642 ++- .../resolve-elementaccess.optimized.wat | 106 +- .../resolve-elementaccess.untouched.wat | 226 +- .../resolve-function-expression.optimized.wat | 26 +- .../resolve-function-expression.untouched.wat | 83 +- .../resolve-propertyaccess.optimized.wat | 154 +- .../resolve-propertyaccess.untouched.wat | 330 +- tests/compiler/resolve-ternary.optimized.wat | 62 +- tests/compiler/resolve-ternary.untouched.wat | 106 +- tests/compiler/resolve-unary.optimized.wat | 142 +- tests/compiler/resolve-unary.untouched.wat | 563 +- tests/compiler/std/array.optimized.wat | 662 +- tests/compiler/std/array.untouched.wat | 1139 +- .../compiler/std/object-literal.optimized.wat | 34 +- .../compiler/std/object-literal.untouched.wat | 83 +- tests/compiler/std/object.optimized.wat | 29 +- tests/compiler/std/object.untouched.wat | 123 +- .../std/string-casemapping.optimized.wat | 1136 +- .../std/string-casemapping.untouched.wat | 2268 +++- .../std/string-encoding.optimized.wat | 455 +- .../std/string-encoding.untouched.wat | 754 +- tests/compiler/std/string.optimized.wat | 4974 ++++++--- tests/compiler/std/string.untouched.wat | 8088 ++++++++++++-- tests/compiler/std/symbol.optimized.wat | 144 +- tests/compiler/std/symbol.untouched.wat | 245 +- tests/compiler/std/typedarray.optimized.wat | 9403 +++++++++-------- tests/compiler/std/typedarray.untouched.wat | 716 +- tests/compiler/typeof.optimized.wat | 34 +- tests/compiler/typeof.untouched.wat | 704 +- 36 files changed, 26933 insertions(+), 9106 deletions(-) diff --git a/src/compiler.ts b/src/compiler.ts index a78e60482c..1b616367c2 100644 --- a/src/compiler.ts +++ b/src/compiler.ts @@ -4146,7 +4146,7 @@ export class Compiler extends DiagnosticEmitter { leftExpr = this.compileExpression(left, contextualType); leftType = this.currentType; - // check operator overload + // check operator overload (cannot overload explicit null comparison) if (this.currentType.is(TypeFlags.REFERENCE) && left.kind != NodeKind.NULL && right.kind != NodeKind.NULL) { let classReference = leftType.classReference; if (classReference) { @@ -4246,7 +4246,7 @@ export class Compiler extends DiagnosticEmitter { leftExpr = this.compileExpression(left, contextualType); leftType = this.currentType; - // check operator overload + // check operator overload (cannot overload explicit null comparison) if (this.currentType.is(TypeFlags.REFERENCE) && left.kind != NodeKind.NULL && right.kind != NodeKind.NULL) { let classReference = leftType.classReference; if (classReference) { diff --git a/std/assembly/string.ts b/std/assembly/string.ts index 352fc2fbc3..6c50278447 100644 --- a/std/assembly/string.ts +++ b/std/assembly/string.ts @@ -94,26 +94,31 @@ import { Array } from "./array"; return !compareImpl(this, searchStart, search, 0, searchLength); } - @operator("==") private static __eq(left: String | null, right: String | null): bool { - if (changetype(left) == changetype(right)) return true; - if (!changetype(left) || !changetype(right)) return false; - var leftLength = changetype(left).length; - if (leftLength != changetype(right).length) return false; - // @ts-ignore: string <-> String + @operator("==") @inline + private static __eqi(left: String | null, right: String | null): bool { + return i32(!changetype(left)) | i32(!changetype(right)) // one or both null + ? changetype(left) == changetype(right) + : String.__eq(changetype(left), changetype(right)); + } + + private static __eq(left: string, right: string): bool { + var leftLength = left.length; + if (leftLength != right.length) return false; return !compareImpl(left, 0, right, 0, leftLength); } - @operator.prefix("!") + @operator.prefix("!") @inline private static __not(str: String | null): bool { - return !changetype(str) || !changetype(str).length; + return !changetype(str) ? true : !changetype(str).length; } - @operator("!=") + @operator("!=") @inline private static __ne(left: String | null, right: String | null): bool { - return !this.__eq(left, right); + return !String.__eqi(left, right); } - @operator(">") private static __gt(left: String | null, right: String | null): bool { + @operator(">") + private static __gt(left: String | null, right: String | null): bool { if ( changetype(left) == changetype(right) || !changetype(left) || @@ -127,11 +132,13 @@ import { Array } from "./array"; return compareImpl(left, 0, right, 0, min(leftLength, rightLength)) > 0; } - @operator(">=") private static __gte(left: String | null, right: String | null): bool { - return !this.__lt(left, right); + @operator(">=") + private static __gte(left: String | null, right: String | null): bool { + return !String.__lt(left, right); } - @operator("<") private static __lt(left: String | null, right: String | null): bool { + @operator("<") + private static __lt(left: String | null, right: String | null): bool { if ( changetype(left) == changetype(right) || !changetype(left) || @@ -144,8 +151,9 @@ import { Array } from "./array"; return compareImpl(changetype(left), 0, changetype(right), 0, min(leftLength, rightLength)) < 0; } - @operator("<=") private static __lte(left: String | null, right: String | null): bool { - return !this.__gt(left, right); + @operator("<=") + private static __lte(left: String | null, right: String | null): bool { + return !String.__gt(left, right); } includes(search: String, start: i32 = 0): bool { diff --git a/tests/compiler/builtins.optimized.wat b/tests/compiler/builtins.optimized.wat index 7964ff82de..eb2d773440 100644 --- a/tests/compiler/builtins.optimized.wat +++ b/tests/compiler/builtins.optimized.wat @@ -144,34 +144,20 @@ (func $~lib/string/String.__eq (; 5 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) local.get $0 + call $~lib/string/String#get:length + local.tee $2 local.get $1 - i32.eq + call $~lib/string/String#get:length + i32.ne if - i32.const 1 - return - end - block $folding-inner0 - local.get $1 - i32.eqz - i32.const 1 - local.get $0 - select - br_if $folding-inner0 - local.get $0 - call $~lib/string/String#get:length - local.tee $2 - local.get $1 - call $~lib/string/String#get:length - i32.ne - br_if $folding-inner0 - local.get $0 - local.get $1 - local.get $2 - call $~lib/util/string/compareImpl - i32.eqz + i32.const 0 return end - i32.const 0 + local.get $0 + local.get $1 + local.get $2 + call $~lib/util/string/compareImpl + i32.eqz ) (func $start:builtins~anonymous|0 (; 6 ;) nop diff --git a/tests/compiler/builtins.untouched.wat b/tests/compiler/builtins.untouched.wat index 49a618430a..110b17f624 100644 --- a/tests/compiler/builtins.untouched.wat +++ b/tests/compiler/builtins.untouched.wat @@ -99,10 +99,7 @@ (func $~lib/rt/stub/__retain (; 3 ;) (param $0 i32) (result i32) local.get $0 ) - (func $~lib/rt/stub/__release (; 4 ;) (param $0 i32) - nop - ) - (func $~lib/string/String#get:length (; 5 ;) (param $0 i32) (result i32) + (func $~lib/string/String#get:length (; 4 ;) (param $0 i32) (result i32) local.get $0 i32.const 16 i32.sub @@ -110,6 +107,9 @@ i32.const 1 i32.shr_u ) + (func $~lib/rt/stub/__release (; 5 ;) (param $0 i32) + nop + ) (func $~lib/util/string/compareImpl (; 6 ;) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (result i32) (local $5 i32) (local $6 i32) @@ -242,66 +242,35 @@ call $~lib/rt/stub/__retain local.set $1 local.get $0 - local.get $1 - i32.eq - if - i32.const 1 - local.set $2 - local.get $0 - call $~lib/rt/stub/__release - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - return - end - local.get $0 - i32.eqz - if (result i32) - i32.const 1 - else - local.get $1 - i32.eqz - end - if - i32.const 0 - local.set $2 - local.get $0 - call $~lib/rt/stub/__release - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - return - end - local.get $0 call $~lib/string/String#get:length - local.set $3 - local.get $3 + local.set $2 + local.get $2 local.get $1 call $~lib/string/String#get:length i32.ne if i32.const 0 - local.set $2 + local.set $3 local.get $0 call $~lib/rt/stub/__release local.get $1 call $~lib/rt/stub/__release - local.get $2 + local.get $3 return end local.get $0 i32.const 0 local.get $1 i32.const 0 - local.get $3 + local.get $2 call $~lib/util/string/compareImpl i32.eqz - local.set $2 + local.set $3 local.get $0 call $~lib/rt/stub/__release local.get $1 call $~lib/rt/stub/__release - local.get $2 + local.get $3 ) (func $start:builtins~anonymous|0 (; 8 ;) nop @@ -1627,8 +1596,33 @@ unreachable end i32.const 208 + call $~lib/rt/stub/__retain + local.set $1 i32.const 208 - call $~lib/string/String.__eq + call $~lib/rt/stub/__retain + local.set $0 + local.get $1 + i32.eqz + local.get $0 + i32.eqz + i32.or + if (result i32) + local.get $1 + local.get $0 + i32.eq + else + local.get $1 + local.get $0 + call $~lib/string/String.__eq + end + local.set $8 + local.get $0 + call $~lib/rt/stub/__release + local.get $1 + call $~lib/rt/stub/__release + local.get $8 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -1639,8 +1633,33 @@ unreachable end i32.const 208 + call $~lib/rt/stub/__retain + local.set $7 i32.const 208 - call $~lib/string/String.__eq + call $~lib/rt/stub/__retain + local.set $6 + local.get $7 + i32.eqz + local.get $6 + i32.eqz + i32.or + if (result i32) + local.get $7 + local.get $6 + i32.eq + else + local.get $7 + local.get $6 + call $~lib/string/String.__eq + end + local.set $1 + local.get $6 + call $~lib/rt/stub/__release + local.get $7 + call $~lib/rt/stub/__release + local.get $1 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -1651,8 +1670,33 @@ unreachable end i32.const 240 + call $~lib/rt/stub/__retain + local.set $0 i32.const 240 - call $~lib/string/String.__eq + call $~lib/rt/stub/__retain + local.set $8 + local.get $0 + i32.eqz + local.get $8 + i32.eqz + i32.or + if (result i32) + local.get $0 + local.get $8 + i32.eq + else + local.get $0 + local.get $8 + call $~lib/string/String.__eq + end + local.set $7 + local.get $8 + call $~lib/rt/stub/__release + local.get $0 + call $~lib/rt/stub/__release + local.get $7 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -1663,8 +1707,33 @@ unreachable end i32.const 272 + call $~lib/rt/stub/__retain + local.set $6 i32.const 272 - call $~lib/string/String.__eq + call $~lib/rt/stub/__retain + local.set $1 + local.get $6 + i32.eqz + local.get $1 + i32.eqz + i32.or + if (result i32) + local.get $6 + local.get $1 + i32.eq + else + local.get $6 + local.get $1 + call $~lib/string/String.__eq + end + local.set $0 + local.get $1 + call $~lib/rt/stub/__release + local.get $6 + call $~lib/rt/stub/__release + local.get $0 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -1675,8 +1744,33 @@ unreachable end i32.const 304 + call $~lib/rt/stub/__retain + local.set $8 i32.const 304 - call $~lib/string/String.__eq + call $~lib/rt/stub/__retain + local.set $7 + local.get $8 + i32.eqz + local.get $7 + i32.eqz + i32.or + if (result i32) + local.get $8 + local.get $7 + i32.eq + else + local.get $8 + local.get $7 + call $~lib/string/String.__eq + end + local.set $6 + local.get $7 + call $~lib/rt/stub/__release + local.get $8 + call $~lib/rt/stub/__release + local.get $6 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -1687,8 +1781,33 @@ unreachable end i32.const 336 + call $~lib/rt/stub/__retain + local.set $1 i32.const 336 - call $~lib/string/String.__eq + call $~lib/rt/stub/__retain + local.set $0 + local.get $1 + i32.eqz + local.get $0 + i32.eqz + i32.or + if (result i32) + local.get $1 + local.get $0 + i32.eq + else + local.get $1 + local.get $0 + call $~lib/string/String.__eq + end + local.set $8 + local.get $0 + call $~lib/rt/stub/__release + local.get $1 + call $~lib/rt/stub/__release + local.get $8 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -1699,8 +1818,33 @@ unreachable end i32.const 368 + call $~lib/rt/stub/__retain + local.set $7 i32.const 368 - call $~lib/string/String.__eq + call $~lib/rt/stub/__retain + local.set $6 + local.get $7 + i32.eqz + local.get $6 + i32.eqz + i32.or + if (result i32) + local.get $7 + local.get $6 + i32.eq + else + local.get $7 + local.get $6 + call $~lib/string/String.__eq + end + local.set $1 + local.get $6 + call $~lib/rt/stub/__release + local.get $7 + call $~lib/rt/stub/__release + local.get $1 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -1711,8 +1855,33 @@ unreachable end i32.const 400 + call $~lib/rt/stub/__retain + local.set $0 i32.const 400 - call $~lib/string/String.__eq + call $~lib/rt/stub/__retain + local.set $8 + local.get $0 + i32.eqz + local.get $8 + i32.eqz + i32.or + if (result i32) + local.get $0 + local.get $8 + i32.eq + else + local.get $0 + local.get $8 + call $~lib/string/String.__eq + end + local.set $7 + local.get $8 + call $~lib/rt/stub/__release + local.get $0 + call $~lib/rt/stub/__release + local.get $7 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -1723,8 +1892,33 @@ unreachable end i32.const 432 + call $~lib/rt/stub/__retain + local.set $6 i32.const 432 - call $~lib/string/String.__eq + call $~lib/rt/stub/__retain + local.set $1 + local.get $6 + i32.eqz + local.get $1 + i32.eqz + i32.or + if (result i32) + local.get $6 + local.get $1 + i32.eq + else + local.get $6 + local.get $1 + call $~lib/string/String.__eq + end + local.set $0 + local.get $1 + call $~lib/rt/stub/__release + local.get $6 + call $~lib/rt/stub/__release + local.get $0 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -1735,8 +1929,33 @@ unreachable end i32.const 464 + call $~lib/rt/stub/__retain + local.set $8 i32.const 464 - call $~lib/string/String.__eq + call $~lib/rt/stub/__retain + local.set $7 + local.get $8 + i32.eqz + local.get $7 + i32.eqz + i32.or + if (result i32) + local.get $8 + local.get $7 + i32.eq + else + local.get $8 + local.get $7 + call $~lib/string/String.__eq + end + local.set $6 + local.get $7 + call $~lib/rt/stub/__release + local.get $8 + call $~lib/rt/stub/__release + local.get $6 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -1747,8 +1966,33 @@ unreachable end i32.const 496 + call $~lib/rt/stub/__retain + local.set $1 i32.const 496 - call $~lib/string/String.__eq + call $~lib/rt/stub/__retain + local.set $0 + local.get $1 + i32.eqz + local.get $0 + i32.eqz + i32.or + if (result i32) + local.get $1 + local.get $0 + i32.eq + else + local.get $1 + local.get $0 + call $~lib/string/String.__eq + end + local.set $8 + local.get $0 + call $~lib/rt/stub/__release + local.get $1 + call $~lib/rt/stub/__release + local.get $8 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -1759,8 +2003,33 @@ unreachable end i32.const 528 + call $~lib/rt/stub/__retain + local.set $7 i32.const 528 - call $~lib/string/String.__eq + call $~lib/rt/stub/__retain + local.set $6 + local.get $7 + i32.eqz + local.get $6 + i32.eqz + i32.or + if (result i32) + local.get $7 + local.get $6 + i32.eq + else + local.get $7 + local.get $6 + call $~lib/string/String.__eq + end + local.set $1 + local.get $6 + call $~lib/rt/stub/__release + local.get $7 + call $~lib/rt/stub/__release + local.get $1 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -1771,8 +2040,33 @@ unreachable end i32.const 560 + call $~lib/rt/stub/__retain + local.set $0 i32.const 560 - call $~lib/string/String.__eq + call $~lib/rt/stub/__retain + local.set $8 + local.get $0 + i32.eqz + local.get $8 + i32.eqz + i32.or + if (result i32) + local.get $0 + local.get $8 + i32.eq + else + local.get $0 + local.get $8 + call $~lib/string/String.__eq + end + local.set $7 + local.get $8 + call $~lib/rt/stub/__release + local.get $0 + call $~lib/rt/stub/__release + local.get $7 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -1783,8 +2077,33 @@ unreachable end i32.const 592 + call $~lib/rt/stub/__retain + local.set $6 i32.const 592 - call $~lib/string/String.__eq + call $~lib/rt/stub/__retain + local.set $1 + local.get $6 + i32.eqz + local.get $1 + i32.eqz + i32.or + if (result i32) + local.get $6 + local.get $1 + i32.eq + else + local.get $6 + local.get $1 + call $~lib/string/String.__eq + end + local.set $0 + local.get $1 + call $~lib/rt/stub/__release + local.get $6 + call $~lib/rt/stub/__release + local.get $0 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -1795,8 +2114,33 @@ unreachable end i32.const 624 + call $~lib/rt/stub/__retain + local.set $8 i32.const 624 - call $~lib/string/String.__eq + call $~lib/rt/stub/__retain + local.set $7 + local.get $8 + i32.eqz + local.get $7 + i32.eqz + i32.or + if (result i32) + local.get $8 + local.get $7 + i32.eq + else + local.get $8 + local.get $7 + call $~lib/string/String.__eq + end + local.set $6 + local.get $7 + call $~lib/rt/stub/__release + local.get $8 + call $~lib/rt/stub/__release + local.get $6 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -1807,8 +2151,33 @@ unreachable end i32.const 656 + call $~lib/rt/stub/__retain + local.set $1 i32.const 656 - call $~lib/string/String.__eq + call $~lib/rt/stub/__retain + local.set $0 + local.get $1 + i32.eqz + local.get $0 + i32.eqz + i32.or + if (result i32) + local.get $1 + local.get $0 + i32.eq + else + local.get $1 + local.get $0 + call $~lib/string/String.__eq + end + local.set $8 + local.get $0 + call $~lib/rt/stub/__release + local.get $1 + call $~lib/rt/stub/__release + local.get $8 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -1819,8 +2188,33 @@ unreachable end i32.const 688 + call $~lib/rt/stub/__retain + local.set $7 i32.const 688 - call $~lib/string/String.__eq + call $~lib/rt/stub/__retain + local.set $6 + local.get $7 + i32.eqz + local.get $6 + i32.eqz + i32.or + if (result i32) + local.get $7 + local.get $6 + i32.eq + else + local.get $7 + local.get $6 + call $~lib/string/String.__eq + end + local.set $1 + local.get $6 + call $~lib/rt/stub/__release + local.get $7 + call $~lib/rt/stub/__release + local.get $1 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -1831,8 +2225,33 @@ unreachable end i32.const 720 + call $~lib/rt/stub/__retain + local.set $0 i32.const 720 - call $~lib/string/String.__eq + call $~lib/rt/stub/__retain + local.set $8 + local.get $0 + i32.eqz + local.get $8 + i32.eqz + i32.or + if (result i32) + local.get $0 + local.get $8 + i32.eq + else + local.get $0 + local.get $8 + call $~lib/string/String.__eq + end + local.set $7 + local.get $8 + call $~lib/rt/stub/__release + local.get $0 + call $~lib/rt/stub/__release + local.get $7 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -1843,8 +2262,33 @@ unreachable end i32.const 272 + call $~lib/rt/stub/__retain + local.set $6 i32.const 272 - call $~lib/string/String.__eq + call $~lib/rt/stub/__retain + local.set $1 + local.get $6 + i32.eqz + local.get $1 + i32.eqz + i32.or + if (result i32) + local.get $6 + local.get $1 + i32.eq + else + local.get $6 + local.get $1 + call $~lib/string/String.__eq + end + local.set $0 + local.get $1 + call $~lib/rt/stub/__release + local.get $6 + call $~lib/rt/stub/__release + local.get $0 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -1855,8 +2299,33 @@ unreachable end i32.const 208 + call $~lib/rt/stub/__retain + local.set $8 i32.const 208 - call $~lib/string/String.__eq + call $~lib/rt/stub/__retain + local.set $7 + local.get $8 + i32.eqz + local.get $7 + i32.eqz + i32.or + if (result i32) + local.get $8 + local.get $7 + i32.eq + else + local.get $8 + local.get $7 + call $~lib/string/String.__eq + end + local.set $6 + local.get $7 + call $~lib/rt/stub/__release + local.get $8 + call $~lib/rt/stub/__release + local.get $6 + i32.const 0 + i32.ne i32.eqz if i32.const 0 diff --git a/tests/compiler/number.optimized.wat b/tests/compiler/number.optimized.wat index 45c8063d3b..41f28f0382 100644 --- a/tests/compiler/number.optimized.wat +++ b/tests/compiler/number.optimized.wat @@ -320,34 +320,20 @@ (func $~lib/string/String.__eq (; 7 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) local.get $0 + call $~lib/string/String#get:length + local.tee $2 local.get $1 - i32.eq + call $~lib/string/String#get:length + i32.ne if - i32.const 1 - return - end - block $folding-inner0 - local.get $1 - i32.eqz - i32.const 1 - local.get $0 - select - br_if $folding-inner0 - local.get $0 - call $~lib/string/String#get:length - local.tee $2 - local.get $1 - call $~lib/string/String#get:length - i32.ne - br_if $folding-inner0 - local.get $0 - local.get $1 - local.get $2 - call $~lib/util/string/compareImpl - i32.eqz + i32.const 0 return end - i32.const 0 + local.get $0 + local.get $1 + local.get $2 + call $~lib/util/string/compareImpl + i32.eqz ) (func $~lib/util/number/genDigits (; 8 ;) (param $0 i32) (param $1 i64) (param $2 i32) (param $3 i64) (param $4 i32) (param $5 i64) (result i32) (local $6 i32) @@ -1463,14 +1449,25 @@ ) (func $start:number (; 17 ;) (local $0 i32) + (local $1 i32) i32.const 2544 global.set $~lib/rt/stub/startOffset i32.const 2544 global.set $~lib/rt/stub/offset global.get $number/a call $~lib/number/I32#toString - i32.const 1072 - call $~lib/string/String.__eq + local.tee $1 + local.set $0 + local.get $1 + if (result i32) + local.get $0 + i32.const 1072 + call $~lib/string/String.__eq + else + local.get $0 + i32.const 1072 + i32.eq + end i32.eqz if i32.const 0 @@ -1481,8 +1478,18 @@ unreachable end call $~lib/util/number/dtoa - i32.const 2336 - call $~lib/string/String.__eq + local.tee $1 + local.set $0 + local.get $1 + if (result i32) + local.get $0 + i32.const 2336 + call $~lib/string/String.__eq + else + local.get $0 + i32.const 2336 + i32.eq + end i32.eqz if i32.const 0 @@ -1494,8 +1501,18 @@ end i32.const 3 call $~lib/number/I32#toString - i32.const 2368 - call $~lib/string/String.__eq + local.tee $1 + local.set $0 + local.get $1 + if (result i32) + local.get $0 + i32.const 2368 + call $~lib/string/String.__eq + else + local.get $0 + i32.const 2368 + i32.eq + end i32.eqz if i32.const 0 @@ -1507,8 +1524,18 @@ end i32.const -5 call $~lib/number/I32#toString - i32.const 2400 - call $~lib/string/String.__eq + local.tee $1 + local.set $0 + local.get $1 + if (result i32) + local.get $0 + i32.const 2400 + call $~lib/string/String.__eq + else + local.get $0 + i32.const 2400 + i32.eq + end i32.eqz if i32.const 0 @@ -1520,8 +1547,18 @@ end i32.const 4 call $~lib/number/I32#toString - i32.const 2432 - call $~lib/string/String.__eq + local.tee $1 + local.set $0 + local.get $1 + if (result i32) + local.get $0 + i32.const 2432 + call $~lib/string/String.__eq + else + local.get $0 + i32.const 2432 + i32.eq + end i32.eqz if i32.const 0 @@ -1537,8 +1574,18 @@ global.set $number/a global.get $number/a call $~lib/number/I32#toString - i32.const 2464 - call $~lib/string/String.__eq + local.tee $1 + local.set $0 + local.get $1 + if (result i32) + local.get $0 + i32.const 2464 + call $~lib/string/String.__eq + else + local.get $0 + i32.const 2464 + i32.eq + end i32.eqz if i32.const 0 @@ -1554,8 +1601,18 @@ global.set $number/a global.get $number/a call $~lib/number/I32#toString - i32.const 1072 - call $~lib/string/String.__eq + local.tee $1 + local.set $0 + local.get $1 + if (result i32) + local.get $0 + i32.const 1072 + call $~lib/string/String.__eq + else + local.get $0 + i32.const 1072 + i32.eq + end i32.eqz if i32.const 0 @@ -1596,8 +1653,18 @@ global.set $number/a local.get $0 call $~lib/number/I32#toString - i32.const 1072 - call $~lib/string/String.__eq + local.tee $1 + local.set $0 + local.get $1 + if (result i32) + local.get $0 + i32.const 1072 + call $~lib/string/String.__eq + else + local.get $0 + i32.const 1072 + i32.eq + end i32.eqz if i32.const 0 @@ -1614,8 +1681,18 @@ global.set $number/a local.get $0 call $~lib/number/I32#toString - i32.const 2464 - call $~lib/string/String.__eq + local.tee $1 + local.set $0 + local.get $1 + if (result i32) + local.get $0 + i32.const 2464 + call $~lib/string/String.__eq + else + local.get $0 + i32.const 2464 + i32.eq + end i32.eqz if i32.const 0 diff --git a/tests/compiler/number.untouched.wat b/tests/compiler/number.untouched.wat index 7e44664c31..662bbfd021 100644 --- a/tests/compiler/number.untouched.wat +++ b/tests/compiler/number.untouched.wat @@ -424,10 +424,7 @@ local.get $0 call $~lib/util/number/itoa ) - (func $~lib/rt/stub/__release (; 9 ;) (param $0 i32) - nop - ) - (func $~lib/string/String#get:length (; 10 ;) (param $0 i32) (result i32) + (func $~lib/string/String#get:length (; 9 ;) (param $0 i32) (result i32) local.get $0 i32.const 16 i32.sub @@ -435,6 +432,9 @@ i32.const 1 i32.shr_u ) + (func $~lib/rt/stub/__release (; 10 ;) (param $0 i32) + nop + ) (func $~lib/util/string/compareImpl (; 11 ;) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (result i32) (local $5 i32) (local $6 i32) @@ -567,66 +567,35 @@ call $~lib/rt/stub/__retain local.set $1 local.get $0 - local.get $1 - i32.eq - if - i32.const 1 - local.set $2 - local.get $0 - call $~lib/rt/stub/__release - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - return - end - local.get $0 - i32.eqz - if (result i32) - i32.const 1 - else - local.get $1 - i32.eqz - end - if - i32.const 0 - local.set $2 - local.get $0 - call $~lib/rt/stub/__release - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - return - end - local.get $0 call $~lib/string/String#get:length - local.set $3 - local.get $3 + local.set $2 + local.get $2 local.get $1 call $~lib/string/String#get:length i32.ne if i32.const 0 - local.set $2 + local.set $3 local.get $0 call $~lib/rt/stub/__release local.get $1 call $~lib/rt/stub/__release - local.get $2 + local.get $3 return end local.get $0 i32.const 0 local.get $1 i32.const 0 - local.get $3 + local.get $2 call $~lib/util/string/compareImpl i32.eqz - local.set $2 + local.set $3 local.get $0 call $~lib/rt/stub/__release local.get $1 call $~lib/rt/stub/__release - local.get $2 + local.get $3 ) (func $~lib/util/number/genDigits (; 13 ;) (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) @@ -3418,8 +3387,11 @@ (local $8 i32) (local $9 i32) (local $10 i32) - (local $11 f32) - (local $12 f64) + (local $11 i32) + (local $12 i32) + (local $13 i32) + (local $14 f32) + (local $15 f64) global.get $~lib/heap/__heap_base i32.const 15 i32.add @@ -3433,8 +3405,33 @@ global.get $number/a call $~lib/number/I32#toString local.tee $0 + call $~lib/rt/stub/__retain + local.set $2 i32.const 480 - call $~lib/string/String.__eq + call $~lib/rt/stub/__retain + local.set $1 + local.get $2 + i32.eqz + local.get $1 + i32.eqz + i32.or + if (result i32) + local.get $2 + local.get $1 + i32.eq + else + local.get $2 + local.get $1 + call $~lib/string/String.__eq + end + local.set $3 + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release + local.get $3 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -3447,9 +3444,34 @@ f64.const 2 i32.const 0 call $~lib/number/F64#toString - local.tee $1 + local.tee $2 + call $~lib/rt/stub/__retain + local.set $1 i32.const 1744 - call $~lib/string/String.__eq + call $~lib/rt/stub/__retain + local.set $3 + local.get $1 + i32.eqz + local.get $3 + i32.eqz + i32.or + if (result i32) + local.get $1 + local.get $3 + i32.eq + else + local.get $1 + local.get $3 + call $~lib/string/String.__eq + end + local.set $4 + local.get $3 + call $~lib/rt/stub/__release + local.get $1 + call $~lib/rt/stub/__release + local.get $4 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -3461,9 +3483,34 @@ end i32.const 3 call $~lib/number/I32#toString - local.tee $2 + local.tee $1 + call $~lib/rt/stub/__retain + local.set $3 i32.const 1776 - call $~lib/string/String.__eq + call $~lib/rt/stub/__retain + local.set $4 + local.get $3 + i32.eqz + local.get $4 + i32.eqz + i32.or + if (result i32) + local.get $3 + local.get $4 + i32.eq + else + local.get $3 + local.get $4 + call $~lib/string/String.__eq + end + local.set $5 + local.get $4 + call $~lib/rt/stub/__release + local.get $3 + call $~lib/rt/stub/__release + local.get $5 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -3476,8 +3523,33 @@ i32.const -5 call $~lib/number/I32#toString local.tee $3 + call $~lib/rt/stub/__retain + local.set $4 i32.const 1808 - call $~lib/string/String.__eq + call $~lib/rt/stub/__retain + local.set $5 + local.get $4 + i32.eqz + local.get $5 + i32.eqz + i32.or + if (result i32) + local.get $4 + local.get $5 + i32.eq + else + local.get $4 + local.get $5 + call $~lib/string/String.__eq + end + local.set $6 + local.get $5 + call $~lib/rt/stub/__release + local.get $4 + call $~lib/rt/stub/__release + local.get $6 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -3490,8 +3562,33 @@ i32.const 4 call $~lib/number/I32#toString local.tee $4 + call $~lib/rt/stub/__retain + local.set $5 i32.const 1840 - call $~lib/string/String.__eq + call $~lib/rt/stub/__retain + local.set $6 + local.get $5 + i32.eqz + local.get $6 + i32.eqz + i32.or + if (result i32) + local.get $5 + local.get $6 + i32.eq + else + local.get $5 + local.get $6 + call $~lib/string/String.__eq + end + local.set $7 + local.get $6 + call $~lib/rt/stub/__release + local.get $5 + call $~lib/rt/stub/__release + local.get $7 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -3508,8 +3605,33 @@ global.get $number/a call $~lib/number/I32#toString local.tee $5 + call $~lib/rt/stub/__retain + local.set $6 i32.const 1872 - call $~lib/string/String.__eq + call $~lib/rt/stub/__retain + local.set $7 + local.get $6 + i32.eqz + local.get $7 + i32.eqz + i32.or + if (result i32) + local.get $6 + local.get $7 + i32.eq + else + local.get $6 + local.get $7 + call $~lib/string/String.__eq + end + local.set $8 + local.get $7 + call $~lib/rt/stub/__release + local.get $6 + call $~lib/rt/stub/__release + local.get $8 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -3526,8 +3648,33 @@ global.get $number/a call $~lib/number/I32#toString local.tee $6 + call $~lib/rt/stub/__retain + local.set $7 i32.const 480 - call $~lib/string/String.__eq + call $~lib/rt/stub/__retain + local.set $8 + local.get $7 + i32.eqz + local.get $8 + i32.eqz + i32.or + if (result i32) + local.get $7 + local.get $8 + i32.eq + else + local.get $7 + local.get $8 + call $~lib/string/String.__eq + end + local.set $9 + local.get $8 + call $~lib/rt/stub/__release + local.get $7 + call $~lib/rt/stub/__release + local.get $9 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -3540,8 +3687,33 @@ i32.const 1 call $~lib/number/Bool#toString local.tee $7 + call $~lib/rt/stub/__retain + local.set $8 i32.const 1904 - call $~lib/string/String.__eq + call $~lib/rt/stub/__retain + local.set $9 + local.get $8 + i32.eqz + local.get $9 + i32.eqz + i32.or + if (result i32) + local.get $8 + local.get $9 + i32.eq + else + local.get $8 + local.get $9 + call $~lib/string/String.__eq + end + local.set $10 + local.get $9 + call $~lib/rt/stub/__release + local.get $8 + call $~lib/rt/stub/__release + local.get $10 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -3554,8 +3726,33 @@ i32.const 0 call $~lib/number/Bool#toString local.tee $8 + call $~lib/rt/stub/__retain + local.set $9 i32.const 1936 - call $~lib/string/String.__eq + call $~lib/rt/stub/__retain + local.set $10 + local.get $9 + i32.eqz + local.get $10 + i32.eqz + i32.or + if (result i32) + local.get $9 + local.get $10 + i32.eq + else + local.get $9 + local.get $10 + call $~lib/string/String.__eq + end + local.set $11 + local.get $10 + call $~lib/rt/stub/__release + local.get $9 + call $~lib/rt/stub/__release + local.get $11 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -3573,8 +3770,33 @@ local.get $9 call $~lib/number/I32#toString local.tee $9 + call $~lib/rt/stub/__retain + local.set $10 i32.const 480 - call $~lib/string/String.__eq + call $~lib/rt/stub/__retain + local.set $11 + local.get $10 + i32.eqz + local.get $11 + i32.eqz + i32.or + if (result i32) + local.get $10 + local.get $11 + i32.eq + else + local.get $10 + local.get $11 + call $~lib/string/String.__eq + end + local.set $12 + local.get $11 + call $~lib/rt/stub/__release + local.get $10 + call $~lib/rt/stub/__release + local.get $12 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -3592,8 +3814,33 @@ local.get $10 call $~lib/number/I32#toString local.tee $10 + call $~lib/rt/stub/__retain + local.set $11 i32.const 1872 - call $~lib/string/String.__eq + call $~lib/rt/stub/__retain + local.set $12 + local.get $11 + i32.eqz + local.get $12 + i32.eqz + i32.or + if (result i32) + local.get $11 + local.get $12 + i32.eq + else + local.get $11 + local.get $12 + call $~lib/string/String.__eq + end + local.set $13 + local.get $12 + call $~lib/rt/stub/__release + local.get $11 + call $~lib/rt/stub/__release + local.get $13 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -3604,8 +3851,8 @@ unreachable end f32.const nan:0x400000 - local.tee $11 - local.get $11 + local.tee $14 + local.get $14 f32.ne i32.eqz if @@ -3877,8 +4124,8 @@ unreachable end f64.const nan:0x8000000000000 - local.tee $12 - local.get $12 + local.tee $15 + local.get $15 f64.ne i32.eqz if diff --git a/tests/compiler/resolve-binary.optimized.wat b/tests/compiler/resolve-binary.optimized.wat index e04a795025..10f7a702b0 100644 --- a/tests/compiler/resolve-binary.optimized.wat +++ b/tests/compiler/resolve-binary.optimized.wat @@ -143,34 +143,20 @@ (func $~lib/string/String.__eq (; 3 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) local.get $0 + call $~lib/string/String#get:length + local.tee $2 local.get $1 - i32.eq + call $~lib/string/String#get:length + i32.ne if - i32.const 1 - return - end - block $folding-inner0 - local.get $1 - i32.eqz - i32.const 1 - local.get $0 - select - br_if $folding-inner0 - local.get $0 - call $~lib/string/String#get:length - local.tee $2 - local.get $1 - call $~lib/string/String#get:length - i32.ne - br_if $folding-inner0 - local.get $0 - local.get $1 - local.get $2 - call $~lib/util/string/compareImpl - i32.eqz + i32.const 0 return end - i32.const 0 + local.get $0 + local.get $1 + local.get $2 + call $~lib/util/string/compareImpl + i32.eqz ) (func $~lib/util/number/decimalCount32 (; 4 ;) (param $0 i32) (result i32) local.get $0 @@ -1429,6 +1415,7 @@ end ) (func $start:resolve-binary (; 14 ;) + (local $0 i32) i32.const 1040 i32.const 1040 call $~lib/string/String.__eq @@ -1507,8 +1494,16 @@ i32.const 1168 call $~lib/string/String.__eq select - i32.const 1040 - call $~lib/string/String.__eq + local.tee $0 + if (result i32) + local.get $0 + i32.const 1040 + call $~lib/string/String.__eq + else + local.get $0 + i32.const 1040 + i32.eq + end i32.eqz if i32.const 0 @@ -1524,8 +1519,16 @@ i32.const 1168 call $~lib/string/String.__eq select - i32.const 1072 - call $~lib/string/String.__eq + local.tee $0 + if (result i32) + local.get $0 + i32.const 1072 + call $~lib/string/String.__eq + else + local.get $0 + i32.const 1072 + i32.eq + end i32.eqz if i32.const 0 @@ -1543,8 +1546,16 @@ global.set $resolve-binary/a i32.const 1 call $~lib/number/I32#toString - i32.const 1232 - call $~lib/string/String.__eq + local.tee $0 + if (result i32) + local.get $0 + i32.const 1232 + call $~lib/string/String.__eq + else + local.get $0 + i32.const 1232 + i32.eq + end i32.eqz if i32.const 0 @@ -1560,8 +1571,16 @@ global.set $resolve-binary/a global.get $resolve-binary/a call $~lib/number/I32#toString - i32.const 1264 - call $~lib/string/String.__eq + local.tee $0 + if (result i32) + local.get $0 + i32.const 1264 + call $~lib/string/String.__eq + else + local.get $0 + i32.const 1264 + i32.eq + end i32.eqz if i32.const 0 @@ -1577,8 +1596,16 @@ global.set $resolve-binary/a global.get $resolve-binary/a call $~lib/number/I32#toString - i32.const 1232 - call $~lib/string/String.__eq + local.tee $0 + if (result i32) + local.get $0 + i32.const 1232 + call $~lib/string/String.__eq + else + local.get $0 + i32.const 1232 + i32.eq + end i32.eqz if i32.const 0 @@ -1594,8 +1621,16 @@ global.set $resolve-binary/a global.get $resolve-binary/a call $~lib/number/I32#toString - i32.const 1264 - call $~lib/string/String.__eq + local.tee $0 + if (result i32) + local.get $0 + i32.const 1264 + call $~lib/string/String.__eq + else + local.get $0 + i32.const 1264 + i32.eq + end i32.eqz if i32.const 0 @@ -1610,8 +1645,16 @@ f64.const 4 global.set $resolve-binary/f call $~lib/util/number/dtoa - i32.const 2480 - call $~lib/string/String.__eq + local.tee $0 + if (result i32) + local.get $0 + i32.const 2480 + call $~lib/string/String.__eq + else + local.get $0 + i32.const 2480 + i32.eq + end i32.eqz if i32.const 0 @@ -1627,8 +1670,16 @@ global.set $resolve-binary/a i32.const 2 call $~lib/number/I32#toString - i32.const 1264 - call $~lib/string/String.__eq + local.tee $0 + if (result i32) + local.get $0 + i32.const 1264 + call $~lib/string/String.__eq + else + local.get $0 + i32.const 1264 + i32.eq + end i32.eqz if i32.const 0 @@ -1644,8 +1695,16 @@ global.set $resolve-binary/a global.get $resolve-binary/a call $~lib/number/I32#toString - i32.const 1264 - call $~lib/string/String.__eq + local.tee $0 + if (result i32) + local.get $0 + i32.const 1264 + call $~lib/string/String.__eq + else + local.get $0 + i32.const 1264 + i32.eq + end i32.eqz if i32.const 0 @@ -1661,8 +1720,16 @@ global.set $resolve-binary/a global.get $resolve-binary/a call $~lib/number/I32#toString - i32.const 2512 - call $~lib/string/String.__eq + local.tee $0 + if (result i32) + local.get $0 + i32.const 2512 + call $~lib/string/String.__eq + else + local.get $0 + i32.const 2512 + i32.eq + end i32.eqz if i32.const 0 @@ -1678,8 +1745,16 @@ global.set $resolve-binary/a global.get $resolve-binary/a call $~lib/number/I32#toString - i32.const 1264 - call $~lib/string/String.__eq + local.tee $0 + if (result i32) + local.get $0 + i32.const 1264 + call $~lib/string/String.__eq + else + local.get $0 + i32.const 1264 + i32.eq + end i32.eqz if i32.const 0 @@ -1695,8 +1770,16 @@ global.set $resolve-binary/a global.get $resolve-binary/a call $~lib/number/I32#toString - i32.const 1232 - call $~lib/string/String.__eq + local.tee $0 + if (result i32) + local.get $0 + i32.const 1232 + call $~lib/string/String.__eq + else + local.get $0 + i32.const 1232 + i32.eq + end i32.eqz if i32.const 0 @@ -1712,8 +1795,16 @@ global.set $resolve-binary/a global.get $resolve-binary/a call $~lib/number/I32#toString - i32.const 1232 - call $~lib/string/String.__eq + local.tee $0 + if (result i32) + local.get $0 + i32.const 1232 + call $~lib/string/String.__eq + else + local.get $0 + i32.const 1232 + i32.eq + end i32.eqz if i32.const 0 @@ -1729,8 +1820,16 @@ global.set $resolve-binary/a global.get $resolve-binary/a call $~lib/number/I32#toString - i32.const 2544 - call $~lib/string/String.__eq + local.tee $0 + if (result i32) + local.get $0 + i32.const 2544 + call $~lib/string/String.__eq + else + local.get $0 + i32.const 2544 + i32.eq + end i32.eqz if i32.const 0 @@ -1746,8 +1845,16 @@ global.set $resolve-binary/a global.get $resolve-binary/a call $~lib/number/I32#toString - i32.const 1232 - call $~lib/string/String.__eq + local.tee $0 + if (result i32) + local.get $0 + i32.const 1232 + call $~lib/string/String.__eq + else + local.get $0 + i32.const 1232 + i32.eq + end i32.eqz if i32.const 0 @@ -1759,8 +1866,16 @@ end i32.const 3 call $~lib/number/I32#toString - i32.const 2544 - call $~lib/string/String.__eq + local.tee $0 + if (result i32) + local.get $0 + i32.const 2544 + call $~lib/string/String.__eq + else + local.get $0 + i32.const 2544 + i32.eq + end i32.eqz if i32.const 0 @@ -1772,8 +1887,16 @@ end i32.const -1 call $~lib/number/I32#toString - i32.const 2576 - call $~lib/string/String.__eq + local.tee $0 + if (result i32) + local.get $0 + i32.const 2576 + call $~lib/string/String.__eq + else + local.get $0 + i32.const 2576 + i32.eq + end i32.eqz if i32.const 0 @@ -1785,8 +1908,16 @@ end i32.const 2 call $~lib/number/I32#toString - i32.const 1264 - call $~lib/string/String.__eq + local.tee $0 + if (result i32) + local.get $0 + i32.const 1264 + call $~lib/string/String.__eq + else + local.get $0 + i32.const 1264 + i32.eq + end i32.eqz if i32.const 0 @@ -1798,8 +1929,16 @@ end i32.const 2 call $~lib/number/I32#toString - i32.const 1264 - call $~lib/string/String.__eq + local.tee $0 + if (result i32) + local.get $0 + i32.const 1264 + call $~lib/string/String.__eq + else + local.get $0 + i32.const 1264 + i32.eq + end i32.eqz if i32.const 0 @@ -1811,8 +1950,16 @@ end i32.const 1 call $~lib/number/I32#toString - i32.const 1232 - call $~lib/string/String.__eq + local.tee $0 + if (result i32) + local.get $0 + i32.const 1232 + call $~lib/string/String.__eq + else + local.get $0 + i32.const 1232 + i32.eq + end i32.eqz if i32.const 0 @@ -1823,8 +1970,16 @@ unreachable end call $~lib/util/number/dtoa - i32.const 2480 - call $~lib/string/String.__eq + local.tee $0 + if (result i32) + local.get $0 + i32.const 2480 + call $~lib/string/String.__eq + else + local.get $0 + i32.const 2480 + i32.eq + end i32.eqz if i32.const 0 @@ -1836,8 +1991,16 @@ end i32.const 4 call $~lib/number/I32#toString - i32.const 2512 - call $~lib/string/String.__eq + local.tee $0 + if (result i32) + local.get $0 + i32.const 2512 + call $~lib/string/String.__eq + else + local.get $0 + i32.const 2512 + i32.eq + end i32.eqz if i32.const 0 @@ -1849,8 +2012,16 @@ end i32.const 1 call $~lib/number/I32#toString - i32.const 1232 - call $~lib/string/String.__eq + local.tee $0 + if (result i32) + local.get $0 + i32.const 1232 + call $~lib/string/String.__eq + else + local.get $0 + i32.const 1232 + i32.eq + end i32.eqz if i32.const 0 @@ -1862,8 +2033,16 @@ end i32.const 3 call $~lib/number/I32#toString - i32.const 2544 - call $~lib/string/String.__eq + local.tee $0 + if (result i32) + local.get $0 + i32.const 2544 + call $~lib/string/String.__eq + else + local.get $0 + i32.const 2544 + i32.eq + end i32.eqz if i32.const 0 @@ -1875,8 +2054,16 @@ end i32.const 1 call $~lib/number/I32#toString - i32.const 1232 - call $~lib/string/String.__eq + local.tee $0 + if (result i32) + local.get $0 + i32.const 1232 + call $~lib/string/String.__eq + else + local.get $0 + i32.const 1232 + i32.eq + end i32.eqz if i32.const 0 @@ -1888,8 +2075,16 @@ end i32.const 3 call $~lib/number/I32#toString - i32.const 2544 - call $~lib/string/String.__eq + local.tee $0 + if (result i32) + local.get $0 + i32.const 2544 + call $~lib/string/String.__eq + else + local.get $0 + i32.const 2544 + i32.eq + end i32.eqz if i32.const 0 @@ -1901,8 +2096,16 @@ end i32.const 2 call $~lib/number/I32#toString - i32.const 1264 - call $~lib/string/String.__eq + local.tee $0 + if (result i32) + local.get $0 + i32.const 1264 + call $~lib/string/String.__eq + else + local.get $0 + i32.const 1264 + i32.eq + end i32.eqz if i32.const 0 @@ -1914,8 +2117,16 @@ end i32.const 2 call $~lib/number/I32#toString - i32.const 1264 - call $~lib/string/String.__eq + local.tee $0 + if (result i32) + local.get $0 + i32.const 1264 + call $~lib/string/String.__eq + else + local.get $0 + i32.const 1264 + i32.eq + end i32.eqz if i32.const 0 @@ -1927,8 +2138,16 @@ end i32.const 0 call $~lib/number/I32#toString - i32.const 1200 - call $~lib/string/String.__eq + local.tee $0 + if (result i32) + local.get $0 + i32.const 1200 + call $~lib/string/String.__eq + else + local.get $0 + i32.const 1200 + i32.eq + end i32.eqz if i32.const 0 @@ -1940,8 +2159,16 @@ end i32.const 1 call $~lib/number/I32#toString - i32.const 1232 - call $~lib/string/String.__eq + local.tee $0 + if (result i32) + local.get $0 + i32.const 1232 + call $~lib/string/String.__eq + else + local.get $0 + i32.const 1232 + i32.eq + end i32.eqz if i32.const 0 @@ -1953,8 +2180,16 @@ end i32.const 2 call $~lib/number/I32#toString - i32.const 1264 - call $~lib/string/String.__eq + local.tee $0 + if (result i32) + local.get $0 + i32.const 1264 + call $~lib/string/String.__eq + else + local.get $0 + i32.const 1264 + i32.eq + end i32.eqz if i32.const 0 diff --git a/tests/compiler/resolve-binary.untouched.wat b/tests/compiler/resolve-binary.untouched.wat index 5932e28712..bf09139a9d 100644 --- a/tests/compiler/resolve-binary.untouched.wat +++ b/tests/compiler/resolve-binary.untouched.wat @@ -79,10 +79,7 @@ (func $~lib/rt/stub/__retain (; 2 ;) (param $0 i32) (result i32) local.get $0 ) - (func $~lib/rt/stub/__release (; 3 ;) (param $0 i32) - nop - ) - (func $~lib/string/String#get:length (; 4 ;) (param $0 i32) (result i32) + (func $~lib/string/String#get:length (; 3 ;) (param $0 i32) (result i32) local.get $0 i32.const 16 i32.sub @@ -90,6 +87,9 @@ i32.const 1 i32.shr_u ) + (func $~lib/rt/stub/__release (; 4 ;) (param $0 i32) + nop + ) (func $~lib/util/string/compareImpl (; 5 ;) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (result i32) (local $5 i32) (local $6 i32) @@ -222,87 +222,37 @@ call $~lib/rt/stub/__retain local.set $1 local.get $0 - local.get $1 - i32.eq - if - i32.const 1 - local.set $2 - local.get $0 - call $~lib/rt/stub/__release - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - return - end - local.get $0 - i32.eqz - if (result i32) - i32.const 1 - else - local.get $1 - i32.eqz - end - if - i32.const 0 - local.set $2 - local.get $0 - call $~lib/rt/stub/__release - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - return - end - local.get $0 call $~lib/string/String#get:length - local.set $3 - local.get $3 + local.set $2 + local.get $2 local.get $1 call $~lib/string/String#get:length i32.ne if i32.const 0 - local.set $2 + local.set $3 local.get $0 call $~lib/rt/stub/__release local.get $1 call $~lib/rt/stub/__release - local.get $2 + local.get $3 return end local.get $0 i32.const 0 local.get $1 i32.const 0 - local.get $3 - call $~lib/util/string/compareImpl - i32.eqz - local.set $2 - local.get $0 - call $~lib/rt/stub/__release - local.get $1 - call $~lib/rt/stub/__release local.get $2 - ) - (func $~lib/string/String.__ne (; 7 ;) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $0 - call $~lib/rt/stub/__retain - local.set $0 - local.get $1 - call $~lib/rt/stub/__retain - local.set $1 - local.get $0 - local.get $1 - call $~lib/string/String.__eq + call $~lib/util/string/compareImpl i32.eqz - local.set $2 + local.set $3 local.get $0 call $~lib/rt/stub/__release local.get $1 call $~lib/rt/stub/__release - local.get $2 + local.get $3 ) - (func $~lib/util/number/decimalCount32 (; 8 ;) (param $0 i32) (result i32) + (func $~lib/util/number/decimalCount32 (; 7 ;) (param $0 i32) (result i32) local.get $0 i32.const 100000 i32.lt_u @@ -357,7 +307,7 @@ end unreachable ) - (func $~lib/rt/stub/maybeGrowMemory (; 9 ;) (param $0 i32) + (func $~lib/rt/stub/maybeGrowMemory (; 8 ;) (param $0 i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -411,7 +361,7 @@ local.get $0 global.set $~lib/rt/stub/offset ) - (func $~lib/rt/stub/__alloc (; 10 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/rt/stub/__alloc (; 9 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -464,7 +414,7 @@ i32.store offset=12 local.get $2 ) - (func $~lib/util/number/utoa32_lut (; 11 ;) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/util/number/utoa32_lut (; 10 ;) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -604,7 +554,7 @@ i32.store16 end ) - (func $~lib/util/number/itoa32 (; 12 ;) (param $0 i32) (result i32) + (func $~lib/util/number/itoa32 (; 11 ;) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -658,16 +608,16 @@ local.get $3 call $~lib/rt/stub/__retain ) - (func $~lib/util/number/itoa (; 13 ;) (param $0 i32) (result i32) + (func $~lib/util/number/itoa (; 12 ;) (param $0 i32) (result i32) local.get $0 call $~lib/util/number/itoa32 return ) - (func $~lib/number/I32#toString (; 14 ;) (param $0 i32) (result i32) + (func $~lib/number/I32#toString (; 13 ;) (param $0 i32) (result i32) local.get $0 call $~lib/util/number/itoa ) - (func $~lib/math/NativeMath.pow (; 15 ;) (param $0 f64) (param $1 f64) (result f64) + (func $~lib/math/NativeMath.pow (; 14 ;) (param $0 f64) (param $1 f64) (result f64) (local $2 f64) (local $3 f64) (local $4 i32) @@ -1627,7 +1577,7 @@ end return ) - (func $~lib/util/number/genDigits (; 16 ;) (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 (; 15 ;) (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) @@ -2130,7 +2080,7 @@ end unreachable ) - (func $~lib/util/memory/memcpy (; 17 ;) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/util/memory/memcpy (; 16 ;) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -3154,7 +3104,7 @@ i32.store8 end ) - (func $~lib/memory/memory.copy (; 18 ;) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/memory/memory.copy (; 17 ;) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -3374,7 +3324,7 @@ end end ) - (func $~lib/util/number/prettify (; 19 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/util/number/prettify (; 18 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -3691,7 +3641,7 @@ end unreachable ) - (func $~lib/util/number/dtoa_core (; 20 ;) (param $0 i32) (param $1 f64) (result i32) + (func $~lib/util/number/dtoa_core (; 19 ;) (param $0 i32) (param $1 f64) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -4117,7 +4067,7 @@ local.get $2 i32.add ) - (func $~lib/string/String#substring (; 21 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/string/String#substring (; 20 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -4224,7 +4174,7 @@ local.get $11 call $~lib/rt/stub/__retain ) - (func $~lib/rt/stub/__free (; 22 ;) (param $0 i32) + (func $~lib/rt/stub/__free (; 21 ;) (param $0 i32) (local $1 i32) local.get $0 i32.const 0 @@ -4274,7 +4224,7 @@ global.set $~lib/rt/stub/offset end ) - (func $~lib/util/number/dtoa (; 23 ;) (param $0 f64) (result i32) + (func $~lib/util/number/dtoa (; 22 ;) (param $0 f64) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -4335,11 +4285,11 @@ call $~lib/rt/stub/__free local.get $3 ) - (func $~lib/number/F64#toString (; 24 ;) (param $0 f64) (param $1 i32) (result i32) + (func $~lib/number/F64#toString (; 23 ;) (param $0 f64) (param $1 i32) (result i32) local.get $0 call $~lib/util/number/dtoa ) - (func $resolve-binary/Foo#constructor (; 25 ;) (param $0 i32) (result i32) + (func $resolve-binary/Foo#constructor (; 24 ;) (param $0 i32) (result i32) local.get $0 i32.eqz if @@ -4351,7 +4301,7 @@ end local.get $0 ) - (func $resolve-binary/Foo#lt (; 26 ;) (param $0 i32) (param $1 i32) (result i32) + (func $resolve-binary/Foo#lt (; 25 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) local.get $1 call $~lib/rt/stub/__retain @@ -4362,11 +4312,11 @@ call $~lib/rt/stub/__release local.get $2 ) - (func $~lib/string/String#toString (; 27 ;) (param $0 i32) (result i32) + (func $~lib/string/String#toString (; 26 ;) (param $0 i32) (result i32) local.get $0 call $~lib/rt/stub/__retain ) - (func $resolve-binary/Foo#gt (; 28 ;) (param $0 i32) (param $1 i32) (result i32) + (func $resolve-binary/Foo#gt (; 27 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) local.get $1 call $~lib/rt/stub/__retain @@ -4377,7 +4327,7 @@ call $~lib/rt/stub/__release local.get $2 ) - (func $resolve-binary/Foo#le (; 29 ;) (param $0 i32) (param $1 i32) (result i32) + (func $resolve-binary/Foo#le (; 28 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) local.get $1 call $~lib/rt/stub/__retain @@ -4388,7 +4338,7 @@ call $~lib/rt/stub/__release local.get $2 ) - (func $resolve-binary/Foo#ge (; 30 ;) (param $0 i32) (param $1 i32) (result i32) + (func $resolve-binary/Foo#ge (; 29 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) local.get $1 call $~lib/rt/stub/__retain @@ -4399,7 +4349,7 @@ call $~lib/rt/stub/__release local.get $2 ) - (func $resolve-binary/Foo#eq (; 31 ;) (param $0 i32) (param $1 i32) (result i32) + (func $resolve-binary/Foo#eq (; 30 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) local.get $1 call $~lib/rt/stub/__retain @@ -4410,7 +4360,7 @@ call $~lib/rt/stub/__release local.get $2 ) - (func $resolve-binary/Foo#ne (; 32 ;) (param $0 i32) (param $1 i32) (result i32) + (func $resolve-binary/Foo#ne (; 31 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) local.get $1 call $~lib/rt/stub/__retain @@ -4421,7 +4371,7 @@ call $~lib/rt/stub/__release local.get $2 ) - (func $resolve-binary/Foo#add (; 33 ;) (param $0 i32) (param $1 i32) (result i32) + (func $resolve-binary/Foo#add (; 32 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) local.get $1 call $~lib/rt/stub/__retain @@ -4432,7 +4382,7 @@ call $~lib/rt/stub/__release local.get $2 ) - (func $resolve-binary/Foo.sub (; 34 ;) (param $0 i32) (param $1 i32) (result i32) + (func $resolve-binary/Foo.sub (; 33 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) local.get $0 call $~lib/rt/stub/__retain @@ -4448,7 +4398,7 @@ call $~lib/rt/stub/__release local.get $2 ) - (func $resolve-binary/Foo#mul (; 35 ;) (param $0 i32) (param $1 i32) (result i32) + (func $resolve-binary/Foo#mul (; 34 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) local.get $1 call $~lib/rt/stub/__retain @@ -4459,7 +4409,7 @@ call $~lib/rt/stub/__release local.get $2 ) - (func $resolve-binary/Foo#div (; 36 ;) (param $0 i32) (param $1 i32) (result i32) + (func $resolve-binary/Foo#div (; 35 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) local.get $1 call $~lib/rt/stub/__retain @@ -4470,7 +4420,7 @@ call $~lib/rt/stub/__release local.get $2 ) - (func $resolve-binary/Foo#rem (; 37 ;) (param $0 i32) (param $1 i32) (result i32) + (func $resolve-binary/Foo#rem (; 36 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) local.get $1 call $~lib/rt/stub/__retain @@ -4481,7 +4431,7 @@ call $~lib/rt/stub/__release local.get $2 ) - (func $resolve-binary/Foo#pow (; 38 ;) (param $0 i32) (param $1 i32) (result i32) + (func $resolve-binary/Foo#pow (; 37 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) local.get $1 call $~lib/rt/stub/__retain @@ -4492,7 +4442,7 @@ call $~lib/rt/stub/__release local.get $2 ) - (func $resolve-binary/Bar#constructor (; 39 ;) (param $0 i32) (result i32) + (func $resolve-binary/Bar#constructor (; 38 ;) (param $0 i32) (result i32) local.get $0 i32.eqz if @@ -4504,17 +4454,17 @@ end local.get $0 ) - (func $resolve-binary/Bar#add (; 40 ;) (param $0 i32) (param $1 i32) (result i32) + (func $resolve-binary/Bar#add (; 39 ;) (param $0 i32) (param $1 i32) (result i32) local.get $1 call $~lib/rt/stub/__retain local.set $1 local.get $1 ) - (func $resolve-binary/Bar#self (; 41 ;) (param $0 i32) (result i32) + (func $resolve-binary/Bar#self (; 40 ;) (param $0 i32) (result i32) local.get $0 call $~lib/rt/stub/__retain ) - (func $start:resolve-binary (; 42 ;) + (func $start:resolve-binary (; 41 ;) (local $0 i32) (local $1 i32) (local $2 i32) @@ -4582,8 +4532,33 @@ i32.const 1 call $~lib/number/Bool#toString local.tee $0 + call $~lib/rt/stub/__retain + local.set $2 i32.const 32 - call $~lib/string/String.__eq + call $~lib/rt/stub/__retain + local.set $1 + local.get $2 + i32.eqz + local.get $1 + i32.eqz + i32.or + if (result i32) + local.get $2 + local.get $1 + i32.eq + else + local.get $2 + local.get $1 + call $~lib/string/String.__eq + end + local.set $3 + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release + local.get $3 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -4595,9 +4570,34 @@ end i32.const 0 call $~lib/number/Bool#toString - local.tee $1 + local.tee $2 + call $~lib/rt/stub/__retain + local.set $1 i32.const 64 - call $~lib/string/String.__eq + call $~lib/rt/stub/__retain + local.set $3 + local.get $1 + i32.eqz + local.get $3 + i32.eqz + i32.or + if (result i32) + local.get $1 + local.get $3 + i32.eq + else + local.get $1 + local.get $3 + call $~lib/string/String.__eq + end + local.set $4 + local.get $3 + call $~lib/rt/stub/__release + local.get $1 + call $~lib/rt/stub/__release + local.get $4 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -4609,9 +4609,34 @@ end i32.const 1 call $~lib/number/Bool#toString - local.tee $2 + local.tee $1 + call $~lib/rt/stub/__retain + local.set $3 i32.const 32 - call $~lib/string/String.__eq + call $~lib/rt/stub/__retain + local.set $4 + local.get $3 + i32.eqz + local.get $4 + i32.eqz + i32.or + if (result i32) + local.get $3 + local.get $4 + i32.eq + else + local.get $3 + local.get $4 + call $~lib/string/String.__eq + end + local.set $5 + local.get $4 + call $~lib/rt/stub/__release + local.get $3 + call $~lib/rt/stub/__release + local.get $5 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -4624,8 +4649,33 @@ i32.const 0 call $~lib/number/Bool#toString local.tee $3 + call $~lib/rt/stub/__retain + local.set $4 i32.const 64 - call $~lib/string/String.__eq + call $~lib/rt/stub/__retain + local.set $5 + local.get $4 + i32.eqz + local.get $5 + i32.eqz + i32.or + if (result i32) + local.get $4 + local.get $5 + i32.eq + else + local.get $4 + local.get $5 + call $~lib/string/String.__eq + end + local.set $6 + local.get $5 + call $~lib/rt/stub/__release + local.get $4 + call $~lib/rt/stub/__release + local.get $6 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -4638,8 +4688,33 @@ i32.const 0 call $~lib/number/Bool#toString local.tee $4 + call $~lib/rt/stub/__retain + local.set $5 i32.const 64 - call $~lib/string/String.__eq + call $~lib/rt/stub/__retain + local.set $6 + local.get $5 + i32.eqz + local.get $6 + i32.eqz + i32.or + if (result i32) + local.get $5 + local.get $6 + i32.eq + else + local.get $5 + local.get $6 + call $~lib/string/String.__eq + end + local.set $7 + local.get $6 + call $~lib/rt/stub/__release + local.get $5 + call $~lib/rt/stub/__release + local.get $7 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -4652,8 +4727,33 @@ i32.const 1 call $~lib/number/Bool#toString local.tee $5 + call $~lib/rt/stub/__retain + local.set $6 i32.const 32 - call $~lib/string/String.__eq + call $~lib/rt/stub/__retain + local.set $7 + local.get $6 + i32.eqz + local.get $7 + i32.eqz + i32.or + if (result i32) + local.get $6 + local.get $7 + i32.eq + else + local.get $6 + local.get $7 + call $~lib/string/String.__eq + end + local.set $8 + local.get $7 + call $~lib/rt/stub/__release + local.get $6 + call $~lib/rt/stub/__release + local.get $8 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -4664,32 +4764,141 @@ unreachable end i32.const 160 + call $~lib/rt/stub/__retain + local.set $7 i32.const 160 - call $~lib/string/String.__eq - call $~lib/number/Bool#toString - local.tee $6 - i32.const 32 - call $~lib/string/String.__eq + call $~lib/rt/stub/__retain + local.set $8 + local.get $7 i32.eqz - if - i32.const 0 - i32.const 96 - i32.const 34 - i32.const 0 - call $~lib/builtins/abort - unreachable + local.get $8 + i32.eqz + i32.or + if (result i32) + local.get $7 + local.get $8 + i32.eq + else + local.get $7 + local.get $8 + call $~lib/string/String.__eq end - i32.const 160 - i32.const 160 - call $~lib/string/String.__ne + local.set $6 + local.get $8 + call $~lib/rt/stub/__release + local.get $7 + call $~lib/rt/stub/__release + local.get $6 call $~lib/number/Bool#toString local.tee $7 - i32.const 64 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 96 + call $~lib/rt/stub/__retain + local.set $8 + i32.const 32 + call $~lib/rt/stub/__retain + local.set $6 + local.get $8 + i32.eqz + local.get $6 + i32.eqz + i32.or + if (result i32) + local.get $8 + local.get $6 + i32.eq + else + local.get $8 + local.get $6 + call $~lib/string/String.__eq + end + local.set $9 + local.get $6 + call $~lib/rt/stub/__release + local.get $8 + call $~lib/rt/stub/__release + local.get $9 + i32.const 0 + i32.ne + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 34 + i32.const 0 + call $~lib/builtins/abort + unreachable + end + i32.const 160 + call $~lib/rt/stub/__retain + local.set $6 + i32.const 160 + call $~lib/rt/stub/__retain + local.set $9 + local.get $6 + call $~lib/rt/stub/__retain + local.set $10 + local.get $9 + call $~lib/rt/stub/__retain + local.set $8 + local.get $10 + i32.eqz + local.get $8 + i32.eqz + i32.or + if (result i32) + local.get $10 + local.get $8 + i32.eq + else + local.get $10 + local.get $8 + call $~lib/string/String.__eq + end + local.set $11 + local.get $8 + call $~lib/rt/stub/__release + local.get $10 + call $~lib/rt/stub/__release + local.get $11 + i32.eqz + local.set $10 + local.get $9 + call $~lib/rt/stub/__release + local.get $6 + call $~lib/rt/stub/__release + local.get $10 + call $~lib/number/Bool#toString + local.tee $6 + call $~lib/rt/stub/__retain + local.set $8 + i32.const 64 + call $~lib/rt/stub/__retain + local.set $11 + local.get $8 + i32.eqz + local.get $11 + i32.eqz + i32.or + if (result i32) + local.get $8 + local.get $11 + i32.eq + else + local.get $8 + local.get $11 + call $~lib/string/String.__eq + end + local.set $9 + local.get $11 + call $~lib/rt/stub/__release + local.get $8 + call $~lib/rt/stub/__release + local.get $9 + i32.const 0 + i32.ne + i32.eqz + if + i32.const 0 + i32.const 96 i32.const 39 i32.const 0 call $~lib/builtins/abort @@ -4710,8 +4919,33 @@ global.get $resolve-binary/a call $~lib/number/I32#toString local.tee $8 + call $~lib/rt/stub/__retain + local.set $9 i32.const 640 - call $~lib/string/String.__eq + call $~lib/rt/stub/__retain + local.set $10 + local.get $9 + i32.eqz + local.get $10 + i32.eqz + i32.or + if (result i32) + local.get $9 + local.get $10 + i32.eq + else + local.get $9 + local.get $10 + call $~lib/string/String.__eq + end + local.set $11 + local.get $10 + call $~lib/rt/stub/__release + local.get $9 + call $~lib/rt/stub/__release + local.get $11 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -4728,8 +4962,33 @@ global.get $resolve-binary/a call $~lib/number/I32#toString local.tee $9 + call $~lib/rt/stub/__retain + local.set $10 i32.const 672 - call $~lib/string/String.__eq + call $~lib/rt/stub/__retain + local.set $11 + local.get $10 + i32.eqz + local.get $11 + i32.eqz + i32.or + if (result i32) + local.get $10 + local.get $11 + i32.eq + else + local.get $10 + local.get $11 + call $~lib/string/String.__eq + end + local.set $12 + local.get $11 + call $~lib/rt/stub/__release + local.get $10 + call $~lib/rt/stub/__release + local.get $12 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -4746,8 +5005,33 @@ global.get $resolve-binary/a call $~lib/number/I32#toString local.tee $10 + call $~lib/rt/stub/__retain + local.set $11 i32.const 640 - call $~lib/string/String.__eq + call $~lib/rt/stub/__retain + local.set $12 + local.get $11 + i32.eqz + local.get $12 + i32.eqz + i32.or + if (result i32) + local.get $11 + local.get $12 + i32.eq + else + local.get $11 + local.get $12 + call $~lib/string/String.__eq + end + local.set $13 + local.get $12 + call $~lib/rt/stub/__release + local.get $11 + call $~lib/rt/stub/__release + local.get $13 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -4764,8 +5048,33 @@ global.get $resolve-binary/a call $~lib/number/I32#toString local.tee $11 + call $~lib/rt/stub/__retain + local.set $12 i32.const 672 - call $~lib/string/String.__eq + call $~lib/rt/stub/__retain + local.set $13 + local.get $12 + i32.eqz + local.get $13 + i32.eqz + i32.or + if (result i32) + local.get $12 + local.get $13 + i32.eq + else + local.get $12 + local.get $13 + call $~lib/string/String.__eq + end + local.set $14 + local.get $13 + call $~lib/rt/stub/__release + local.get $12 + call $~lib/rt/stub/__release + local.get $14 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -4785,8 +5094,33 @@ i32.const 0 call $~lib/number/F64#toString local.tee $12 + call $~lib/rt/stub/__retain + local.set $13 i32.const 8064 - call $~lib/string/String.__eq + call $~lib/rt/stub/__retain + local.set $14 + local.get $13 + i32.eqz + local.get $14 + i32.eqz + i32.or + if (result i32) + local.get $13 + local.get $14 + i32.eq + else + local.get $13 + local.get $14 + call $~lib/string/String.__eq + end + local.set $15 + local.get $14 + call $~lib/rt/stub/__release + local.get $13 + call $~lib/rt/stub/__release + local.get $15 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -4805,8 +5139,33 @@ global.get $resolve-binary/a call $~lib/number/I32#toString local.tee $13 + call $~lib/rt/stub/__retain + local.set $14 i32.const 672 - call $~lib/string/String.__eq + call $~lib/rt/stub/__retain + local.set $15 + local.get $14 + i32.eqz + local.get $15 + i32.eqz + i32.or + if (result i32) + local.get $14 + local.get $15 + i32.eq + else + local.get $14 + local.get $15 + call $~lib/string/String.__eq + end + local.set $16 + local.get $15 + call $~lib/rt/stub/__release + local.get $14 + call $~lib/rt/stub/__release + local.get $16 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -4823,8 +5182,33 @@ global.get $resolve-binary/a call $~lib/number/I32#toString local.tee $14 + call $~lib/rt/stub/__retain + local.set $15 i32.const 672 - call $~lib/string/String.__eq + call $~lib/rt/stub/__retain + local.set $16 + local.get $15 + i32.eqz + local.get $16 + i32.eqz + i32.or + if (result i32) + local.get $15 + local.get $16 + i32.eq + else + local.get $15 + local.get $16 + call $~lib/string/String.__eq + end + local.set $17 + local.get $16 + call $~lib/rt/stub/__release + local.get $15 + call $~lib/rt/stub/__release + local.get $17 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -4841,8 +5225,33 @@ global.get $resolve-binary/a call $~lib/number/I32#toString local.tee $15 + call $~lib/rt/stub/__retain + local.set $16 i32.const 8096 - call $~lib/string/String.__eq + call $~lib/rt/stub/__retain + local.set $17 + local.get $16 + i32.eqz + local.get $17 + i32.eqz + i32.or + if (result i32) + local.get $16 + local.get $17 + i32.eq + else + local.get $16 + local.get $17 + call $~lib/string/String.__eq + end + local.set $18 + local.get $17 + call $~lib/rt/stub/__release + local.get $16 + call $~lib/rt/stub/__release + local.get $18 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -4859,8 +5268,33 @@ global.get $resolve-binary/a call $~lib/number/I32#toString local.tee $16 + call $~lib/rt/stub/__retain + local.set $17 i32.const 672 - call $~lib/string/String.__eq + call $~lib/rt/stub/__retain + local.set $18 + local.get $17 + i32.eqz + local.get $18 + i32.eqz + i32.or + if (result i32) + local.get $17 + local.get $18 + i32.eq + else + local.get $17 + local.get $18 + call $~lib/string/String.__eq + end + local.set $19 + local.get $18 + call $~lib/rt/stub/__release + local.get $17 + call $~lib/rt/stub/__release + local.get $19 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -4877,8 +5311,33 @@ global.get $resolve-binary/a call $~lib/number/I32#toString local.tee $17 + call $~lib/rt/stub/__retain + local.set $18 i32.const 640 - call $~lib/string/String.__eq + call $~lib/rt/stub/__retain + local.set $19 + local.get $18 + i32.eqz + local.get $19 + i32.eqz + i32.or + if (result i32) + local.get $18 + local.get $19 + i32.eq + else + local.get $18 + local.get $19 + call $~lib/string/String.__eq + end + local.set $20 + local.get $19 + call $~lib/rt/stub/__release + local.get $18 + call $~lib/rt/stub/__release + local.get $20 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -4895,8 +5354,33 @@ global.get $resolve-binary/a call $~lib/number/I32#toString local.tee $18 + call $~lib/rt/stub/__retain + local.set $19 i32.const 640 - call $~lib/string/String.__eq + call $~lib/rt/stub/__retain + local.set $20 + local.get $19 + i32.eqz + local.get $20 + i32.eqz + i32.or + if (result i32) + local.get $19 + local.get $20 + i32.eq + else + local.get $19 + local.get $20 + call $~lib/string/String.__eq + end + local.set $21 + local.get $20 + call $~lib/rt/stub/__release + local.get $19 + call $~lib/rt/stub/__release + local.get $21 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -4913,8 +5397,33 @@ global.get $resolve-binary/a call $~lib/number/I32#toString local.tee $19 + call $~lib/rt/stub/__retain + local.set $20 i32.const 8128 - call $~lib/string/String.__eq + call $~lib/rt/stub/__retain + local.set $21 + local.get $20 + i32.eqz + local.get $21 + i32.eqz + i32.or + if (result i32) + local.get $20 + local.get $21 + i32.eq + else + local.get $20 + local.get $21 + call $~lib/string/String.__eq + end + local.set $22 + local.get $21 + call $~lib/rt/stub/__release + local.get $20 + call $~lib/rt/stub/__release + local.get $22 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -4931,8 +5440,33 @@ global.get $resolve-binary/a call $~lib/number/I32#toString local.tee $20 + call $~lib/rt/stub/__retain + local.set $21 i32.const 640 - call $~lib/string/String.__eq + call $~lib/rt/stub/__retain + local.set $22 + local.get $21 + i32.eqz + local.get $22 + i32.eqz + i32.or + if (result i32) + local.get $21 + local.get $22 + i32.eq + else + local.get $21 + local.get $22 + call $~lib/string/String.__eq + end + local.set $23 + local.get $22 + call $~lib/rt/stub/__release + local.get $21 + call $~lib/rt/stub/__release + local.get $23 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -4945,8 +5479,33 @@ i32.const 3 call $~lib/number/I32#toString local.tee $21 + call $~lib/rt/stub/__retain + local.set $22 i32.const 8128 - call $~lib/string/String.__eq + call $~lib/rt/stub/__retain + local.set $23 + local.get $22 + i32.eqz + local.get $23 + i32.eqz + i32.or + if (result i32) + local.get $22 + local.get $23 + i32.eq + else + local.get $22 + local.get $23 + call $~lib/string/String.__eq + end + local.set $24 + local.get $23 + call $~lib/rt/stub/__release + local.get $22 + call $~lib/rt/stub/__release + local.get $24 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -4959,8 +5518,33 @@ i32.const -1 call $~lib/number/I32#toString local.tee $22 + call $~lib/rt/stub/__retain + local.set $23 i32.const 8160 - call $~lib/string/String.__eq + call $~lib/rt/stub/__retain + local.set $24 + local.get $23 + i32.eqz + local.get $24 + i32.eqz + i32.or + if (result i32) + local.get $23 + local.get $24 + i32.eq + else + local.get $23 + local.get $24 + call $~lib/string/String.__eq + end + local.set $25 + local.get $24 + call $~lib/rt/stub/__release + local.get $23 + call $~lib/rt/stub/__release + local.get $25 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -4973,8 +5557,33 @@ i32.const 2 call $~lib/number/I32#toString local.tee $23 + call $~lib/rt/stub/__retain + local.set $24 i32.const 672 - call $~lib/string/String.__eq + call $~lib/rt/stub/__retain + local.set $25 + local.get $24 + i32.eqz + local.get $25 + i32.eqz + i32.or + if (result i32) + local.get $24 + local.get $25 + i32.eq + else + local.get $24 + local.get $25 + call $~lib/string/String.__eq + end + local.set $26 + local.get $25 + call $~lib/rt/stub/__release + local.get $24 + call $~lib/rt/stub/__release + local.get $26 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -4987,8 +5596,33 @@ i32.const 2 call $~lib/number/I32#toString local.tee $24 + call $~lib/rt/stub/__retain + local.set $25 i32.const 672 - call $~lib/string/String.__eq + call $~lib/rt/stub/__retain + local.set $26 + local.get $25 + i32.eqz + local.get $26 + i32.eqz + i32.or + if (result i32) + local.get $25 + local.get $26 + i32.eq + else + local.get $25 + local.get $26 + call $~lib/string/String.__eq + end + local.set $27 + local.get $26 + call $~lib/rt/stub/__release + local.get $25 + call $~lib/rt/stub/__release + local.get $27 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -5001,8 +5635,33 @@ i32.const 1 call $~lib/number/I32#toString local.tee $25 + call $~lib/rt/stub/__retain + local.set $26 i32.const 640 - call $~lib/string/String.__eq + call $~lib/rt/stub/__retain + local.set $27 + local.get $26 + i32.eqz + local.get $27 + i32.eqz + i32.or + if (result i32) + local.get $26 + local.get $27 + i32.eq + else + local.get $26 + local.get $27 + call $~lib/string/String.__eq + end + local.set $28 + local.get $27 + call $~lib/rt/stub/__release + local.get $26 + call $~lib/rt/stub/__release + local.get $28 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -5012,14 +5671,39 @@ call $~lib/builtins/abort unreachable end - f64.const 2 - f64.const 2 - call $~lib/math/NativeMath.pow + f64.const 2 + f64.const 2 + call $~lib/math/NativeMath.pow + i32.const 0 + call $~lib/number/F64#toString + local.tee $26 + call $~lib/rt/stub/__retain + local.set $27 + i32.const 8064 + call $~lib/rt/stub/__retain + local.set $28 + local.get $27 + i32.eqz + local.get $28 + i32.eqz + i32.or + if (result i32) + local.get $27 + local.get $28 + i32.eq + else + local.get $27 + local.get $28 + call $~lib/string/String.__eq + end + local.set $29 + local.get $28 + call $~lib/rt/stub/__release + local.get $27 + call $~lib/rt/stub/__release + local.get $29 i32.const 0 - call $~lib/number/F64#toString - local.tee $26 - i32.const 8064 - call $~lib/string/String.__eq + i32.ne i32.eqz if i32.const 0 @@ -5032,8 +5716,33 @@ i32.const 4 call $~lib/number/I32#toString local.tee $27 + call $~lib/rt/stub/__retain + local.set $28 i32.const 8096 - call $~lib/string/String.__eq + call $~lib/rt/stub/__retain + local.set $29 + local.get $28 + i32.eqz + local.get $29 + i32.eqz + i32.or + if (result i32) + local.get $28 + local.get $29 + i32.eq + else + local.get $28 + local.get $29 + call $~lib/string/String.__eq + end + local.set $30 + local.get $29 + call $~lib/rt/stub/__release + local.get $28 + call $~lib/rt/stub/__release + local.get $30 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -5046,8 +5755,33 @@ i32.const 1 call $~lib/number/I32#toString local.tee $28 + call $~lib/rt/stub/__retain + local.set $29 i32.const 640 - call $~lib/string/String.__eq + call $~lib/rt/stub/__retain + local.set $30 + local.get $29 + i32.eqz + local.get $30 + i32.eqz + i32.or + if (result i32) + local.get $29 + local.get $30 + i32.eq + else + local.get $29 + local.get $30 + call $~lib/string/String.__eq + end + local.set $31 + local.get $30 + call $~lib/rt/stub/__release + local.get $29 + call $~lib/rt/stub/__release + local.get $31 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -5060,8 +5794,33 @@ i32.const 3 call $~lib/number/I32#toString local.tee $29 + call $~lib/rt/stub/__retain + local.set $30 i32.const 8128 - call $~lib/string/String.__eq + call $~lib/rt/stub/__retain + local.set $31 + local.get $30 + i32.eqz + local.get $31 + i32.eqz + i32.or + if (result i32) + local.get $30 + local.get $31 + i32.eq + else + local.get $30 + local.get $31 + call $~lib/string/String.__eq + end + local.set $32 + local.get $31 + call $~lib/rt/stub/__release + local.get $30 + call $~lib/rt/stub/__release + local.get $32 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -5074,8 +5833,33 @@ i32.const 1 call $~lib/number/I32#toString local.tee $30 + call $~lib/rt/stub/__retain + local.set $31 i32.const 640 - call $~lib/string/String.__eq + call $~lib/rt/stub/__retain + local.set $32 + local.get $31 + i32.eqz + local.get $32 + i32.eqz + i32.or + if (result i32) + local.get $31 + local.get $32 + i32.eq + else + local.get $31 + local.get $32 + call $~lib/string/String.__eq + end + local.set $33 + local.get $32 + call $~lib/rt/stub/__release + local.get $31 + call $~lib/rt/stub/__release + local.get $33 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -5088,8 +5872,33 @@ i32.const 3 call $~lib/number/I32#toString local.tee $31 + call $~lib/rt/stub/__retain + local.set $32 i32.const 8128 - call $~lib/string/String.__eq + call $~lib/rt/stub/__retain + local.set $33 + local.get $32 + i32.eqz + local.get $33 + i32.eqz + i32.or + if (result i32) + local.get $32 + local.get $33 + i32.eq + else + local.get $32 + local.get $33 + call $~lib/string/String.__eq + end + local.set $34 + local.get $33 + call $~lib/rt/stub/__release + local.get $32 + call $~lib/rt/stub/__release + local.get $34 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -5102,8 +5911,33 @@ i32.const 2 call $~lib/number/I32#toString local.tee $32 + call $~lib/rt/stub/__retain + local.set $33 i32.const 672 - call $~lib/string/String.__eq + call $~lib/rt/stub/__retain + local.set $34 + local.get $33 + i32.eqz + local.get $34 + i32.eqz + i32.or + if (result i32) + local.get $33 + local.get $34 + i32.eq + else + local.get $33 + local.get $34 + call $~lib/string/String.__eq + end + local.set $35 + local.get $34 + call $~lib/rt/stub/__release + local.get $33 + call $~lib/rt/stub/__release + local.get $35 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -5116,8 +5950,33 @@ i32.const 2 call $~lib/number/I32#toString local.tee $33 + call $~lib/rt/stub/__retain + local.set $34 i32.const 672 - call $~lib/string/String.__eq + call $~lib/rt/stub/__retain + local.set $35 + local.get $34 + i32.eqz + local.get $35 + i32.eqz + i32.or + if (result i32) + local.get $34 + local.get $35 + i32.eq + else + local.get $34 + local.get $35 + call $~lib/string/String.__eq + end + local.set $36 + local.get $35 + call $~lib/rt/stub/__release + local.get $34 + call $~lib/rt/stub/__release + local.get $36 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -5130,8 +5989,33 @@ i32.const 0 call $~lib/number/I32#toString local.tee $34 + call $~lib/rt/stub/__retain + local.set $35 i32.const 192 - call $~lib/string/String.__eq + call $~lib/rt/stub/__retain + local.set $36 + local.get $35 + i32.eqz + local.get $36 + i32.eqz + i32.or + if (result i32) + local.get $35 + local.get $36 + i32.eq + else + local.get $35 + local.get $36 + call $~lib/string/String.__eq + end + local.set $37 + local.get $36 + call $~lib/rt/stub/__release + local.get $35 + call $~lib/rt/stub/__release + local.get $37 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -5144,8 +6028,33 @@ i32.const 1 call $~lib/number/I32#toString local.tee $35 + call $~lib/rt/stub/__retain + local.set $36 i32.const 640 - call $~lib/string/String.__eq + call $~lib/rt/stub/__retain + local.set $37 + local.get $36 + i32.eqz + local.get $37 + i32.eqz + i32.or + if (result i32) + local.get $36 + local.get $37 + i32.eq + else + local.get $36 + local.get $37 + call $~lib/string/String.__eq + end + local.set $38 + local.get $37 + call $~lib/rt/stub/__release + local.get $36 + call $~lib/rt/stub/__release + local.get $38 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -5158,8 +6067,33 @@ i32.const 2 call $~lib/number/I32#toString local.tee $36 + call $~lib/rt/stub/__retain + local.set $37 i32.const 672 - call $~lib/string/String.__eq + call $~lib/rt/stub/__retain + local.set $38 + local.get $37 + i32.eqz + local.get $38 + i32.eqz + i32.or + if (result i32) + local.get $37 + local.get $38 + i32.eq + else + local.get $37 + local.get $38 + call $~lib/string/String.__eq + end + local.set $39 + local.get $38 + call $~lib/rt/stub/__release + local.get $37 + call $~lib/rt/stub/__release + local.get $39 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -5178,8 +6112,33 @@ local.tee $37 call $~lib/string/String#toString local.tee $38 + call $~lib/rt/stub/__retain + local.set $40 i32.const 8192 - call $~lib/string/String.__eq + call $~lib/rt/stub/__retain + local.set $39 + local.get $40 + i32.eqz + local.get $39 + i32.eqz + i32.or + if (result i32) + local.get $40 + local.get $39 + i32.eq + else + local.get $40 + local.get $39 + call $~lib/string/String.__eq + end + local.set $41 + local.get $39 + call $~lib/rt/stub/__release + local.get $40 + call $~lib/rt/stub/__release + local.get $41 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -5192,11 +6151,36 @@ global.get $resolve-binary/foo global.get $resolve-binary/foo call $resolve-binary/Foo#gt - local.tee $39 - call $~lib/string/String#toString local.tee $40 + call $~lib/string/String#toString + local.tee $39 + call $~lib/rt/stub/__retain + local.set $42 i32.const 8224 - call $~lib/string/String.__eq + call $~lib/rt/stub/__retain + local.set $41 + local.get $42 + i32.eqz + local.get $41 + i32.eqz + i32.or + if (result i32) + local.get $42 + local.get $41 + i32.eq + else + local.get $42 + local.get $41 + call $~lib/string/String.__eq + end + local.set $43 + local.get $41 + call $~lib/rt/stub/__release + local.get $42 + call $~lib/rt/stub/__release + local.get $43 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -5209,11 +6193,36 @@ global.get $resolve-binary/foo global.get $resolve-binary/foo call $resolve-binary/Foo#le - local.tee $41 - call $~lib/string/String#toString local.tee $42 + call $~lib/string/String#toString + local.tee $41 + call $~lib/rt/stub/__retain + local.set $44 i32.const 8256 - call $~lib/string/String.__eq + call $~lib/rt/stub/__retain + local.set $43 + local.get $44 + i32.eqz + local.get $43 + i32.eqz + i32.or + if (result i32) + local.get $44 + local.get $43 + i32.eq + else + local.get $44 + local.get $43 + call $~lib/string/String.__eq + end + local.set $45 + local.get $43 + call $~lib/rt/stub/__release + local.get $44 + call $~lib/rt/stub/__release + local.get $45 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -5226,11 +6235,36 @@ global.get $resolve-binary/foo global.get $resolve-binary/foo call $resolve-binary/Foo#ge - local.tee $43 - call $~lib/string/String#toString local.tee $44 + call $~lib/string/String#toString + local.tee $43 + call $~lib/rt/stub/__retain + local.set $46 i32.const 8288 - call $~lib/string/String.__eq + call $~lib/rt/stub/__retain + local.set $45 + local.get $46 + i32.eqz + local.get $45 + i32.eqz + i32.or + if (result i32) + local.get $46 + local.get $45 + i32.eq + else + local.get $46 + local.get $45 + call $~lib/string/String.__eq + end + local.set $47 + local.get $45 + call $~lib/rt/stub/__release + local.get $46 + call $~lib/rt/stub/__release + local.get $47 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -5243,11 +6277,36 @@ global.get $resolve-binary/foo global.get $resolve-binary/foo call $resolve-binary/Foo#eq - local.tee $45 - call $~lib/string/String#toString local.tee $46 + call $~lib/string/String#toString + local.tee $45 + call $~lib/rt/stub/__retain + local.set $48 i32.const 8320 - call $~lib/string/String.__eq + call $~lib/rt/stub/__retain + local.set $47 + local.get $48 + i32.eqz + local.get $47 + i32.eqz + i32.or + if (result i32) + local.get $48 + local.get $47 + i32.eq + else + local.get $48 + local.get $47 + call $~lib/string/String.__eq + end + local.set $49 + local.get $47 + call $~lib/rt/stub/__release + local.get $48 + call $~lib/rt/stub/__release + local.get $49 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -5260,11 +6319,36 @@ global.get $resolve-binary/foo global.get $resolve-binary/foo call $resolve-binary/Foo#ne - local.tee $47 - call $~lib/string/String#toString local.tee $48 + call $~lib/string/String#toString + local.tee $47 + call $~lib/rt/stub/__retain + local.set $50 i32.const 8352 - call $~lib/string/String.__eq + call $~lib/rt/stub/__retain + local.set $49 + local.get $50 + i32.eqz + local.get $49 + i32.eqz + i32.or + if (result i32) + local.get $50 + local.get $49 + i32.eq + else + local.get $50 + local.get $49 + call $~lib/string/String.__eq + end + local.set $51 + local.get $49 + call $~lib/rt/stub/__release + local.get $50 + call $~lib/rt/stub/__release + local.get $51 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -5277,11 +6361,36 @@ global.get $resolve-binary/foo global.get $resolve-binary/foo call $resolve-binary/Foo#add - local.tee $49 - call $~lib/string/String#toString local.tee $50 + call $~lib/string/String#toString + local.tee $49 + call $~lib/rt/stub/__retain + local.set $52 i32.const 8384 - call $~lib/string/String.__eq + call $~lib/rt/stub/__retain + local.set $51 + local.get $52 + i32.eqz + local.get $51 + i32.eqz + i32.or + if (result i32) + local.get $52 + local.get $51 + i32.eq + else + local.get $52 + local.get $51 + call $~lib/string/String.__eq + end + local.set $53 + local.get $51 + call $~lib/rt/stub/__release + local.get $52 + call $~lib/rt/stub/__release + local.get $53 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -5294,11 +6403,36 @@ global.get $resolve-binary/foo global.get $resolve-binary/foo call $resolve-binary/Foo.sub - local.tee $51 - call $~lib/string/String#toString local.tee $52 + call $~lib/string/String#toString + local.tee $51 + call $~lib/rt/stub/__retain + local.set $54 i32.const 8416 - call $~lib/string/String.__eq + call $~lib/rt/stub/__retain + local.set $53 + local.get $54 + i32.eqz + local.get $53 + i32.eqz + i32.or + if (result i32) + local.get $54 + local.get $53 + i32.eq + else + local.get $54 + local.get $53 + call $~lib/string/String.__eq + end + local.set $55 + local.get $53 + call $~lib/rt/stub/__release + local.get $54 + call $~lib/rt/stub/__release + local.get $55 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -5311,11 +6445,36 @@ global.get $resolve-binary/foo global.get $resolve-binary/foo call $resolve-binary/Foo#mul - local.tee $53 - call $~lib/string/String#toString local.tee $54 + call $~lib/string/String#toString + local.tee $53 + call $~lib/rt/stub/__retain + local.set $56 i32.const 8448 - call $~lib/string/String.__eq + call $~lib/rt/stub/__retain + local.set $55 + local.get $56 + i32.eqz + local.get $55 + i32.eqz + i32.or + if (result i32) + local.get $56 + local.get $55 + i32.eq + else + local.get $56 + local.get $55 + call $~lib/string/String.__eq + end + local.set $57 + local.get $55 + call $~lib/rt/stub/__release + local.get $56 + call $~lib/rt/stub/__release + local.get $57 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -5328,11 +6487,36 @@ global.get $resolve-binary/foo global.get $resolve-binary/foo call $resolve-binary/Foo#div - local.tee $55 - call $~lib/string/String#toString local.tee $56 + call $~lib/string/String#toString + local.tee $55 + call $~lib/rt/stub/__retain + local.set $58 i32.const 8480 - call $~lib/string/String.__eq + call $~lib/rt/stub/__retain + local.set $57 + local.get $58 + i32.eqz + local.get $57 + i32.eqz + i32.or + if (result i32) + local.get $58 + local.get $57 + i32.eq + else + local.get $58 + local.get $57 + call $~lib/string/String.__eq + end + local.set $59 + local.get $57 + call $~lib/rt/stub/__release + local.get $58 + call $~lib/rt/stub/__release + local.get $59 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -5345,11 +6529,36 @@ global.get $resolve-binary/foo global.get $resolve-binary/foo call $resolve-binary/Foo#rem - local.tee $57 - call $~lib/string/String#toString local.tee $58 + call $~lib/string/String#toString + local.tee $57 + call $~lib/rt/stub/__retain + local.set $60 i32.const 8512 - call $~lib/string/String.__eq + call $~lib/rt/stub/__retain + local.set $59 + local.get $60 + i32.eqz + local.get $59 + i32.eqz + i32.or + if (result i32) + local.get $60 + local.get $59 + i32.eq + else + local.get $60 + local.get $59 + call $~lib/string/String.__eq + end + local.set $61 + local.get $59 + call $~lib/rt/stub/__release + local.get $60 + call $~lib/rt/stub/__release + local.get $61 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -5362,11 +6571,36 @@ global.get $resolve-binary/foo global.get $resolve-binary/foo call $resolve-binary/Foo#pow - local.tee $59 - call $~lib/string/String#toString local.tee $60 + call $~lib/string/String#toString + local.tee $59 + call $~lib/rt/stub/__retain + local.set $62 i32.const 8544 - call $~lib/string/String.__eq + call $~lib/rt/stub/__retain + local.set $61 + local.get $62 + i32.eqz + local.get $61 + i32.eqz + i32.or + if (result i32) + local.get $62 + local.get $61 + i32.eq + else + local.get $62 + local.get $61 + call $~lib/string/String.__eq + end + local.set $63 + local.get $61 + call $~lib/rt/stub/__release + local.get $62 + call $~lib/rt/stub/__release + local.get $63 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -5385,23 +6619,23 @@ global.get $resolve-binary/bar global.get $resolve-binary/bar2 call $resolve-binary/Bar#add - local.tee $61 local.tee $62 - global.get $resolve-binary/bar local.tee $63 + global.get $resolve-binary/bar + local.tee $61 i32.ne if - local.get $62 - call $~lib/rt/stub/__retain - local.set $62 local.get $63 + call $~lib/rt/stub/__retain + local.set $63 + local.get $61 call $~lib/rt/stub/__release end - local.get $62 + local.get $63 global.set $resolve-binary/bar global.get $resolve-binary/bar call $resolve-binary/Bar#self - local.tee $62 + local.tee $63 global.get $resolve-binary/bar2 i32.eq i32.eqz @@ -5547,12 +6781,12 @@ call $~lib/rt/stub/__release local.get $60 call $~lib/rt/stub/__release - local.get $61 - call $~lib/rt/stub/__release local.get $62 call $~lib/rt/stub/__release + local.get $63 + call $~lib/rt/stub/__release ) - (func $~start (; 43 ;) + (func $~start (; 42 ;) call $start:resolve-binary ) ) diff --git a/tests/compiler/resolve-elementaccess.optimized.wat b/tests/compiler/resolve-elementaccess.optimized.wat index d569c05445..94993d69bc 100644 --- a/tests/compiler/resolve-elementaccess.optimized.wat +++ b/tests/compiler/resolve-elementaccess.optimized.wat @@ -1809,34 +1809,20 @@ (func $~lib/string/String.__eq (; 16 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) local.get $0 + call $~lib/string/String#get:length + local.tee $2 local.get $1 - i32.eq + call $~lib/string/String#get:length + i32.ne if - i32.const 1 - return - end - block $folding-inner0 - local.get $1 - i32.eqz - i32.const 1 - local.get $0 - select - br_if $folding-inner0 - local.get $0 - call $~lib/string/String#get:length - local.tee $2 - local.get $1 - call $~lib/string/String#get:length - i32.ne - br_if $folding-inner0 - local.get $0 - local.get $1 - local.get $2 - call $~lib/util/string/compareImpl - i32.eqz + i32.const 0 return end - i32.const 0 + local.get $0 + local.get $1 + local.get $2 + call $~lib/util/string/compareImpl + i32.eqz ) (func $~lib/typedarray/Uint8Array#__set (; 17 ;) (param $0 i32) (param $1 i32) (param $2 i32) local.get $1 @@ -1930,8 +1916,16 @@ call $~lib/typedarray/Float32Array#__get f64.promote_f32 call $~lib/util/number/dtoa - i32.const 2464 - call $~lib/string/String.__eq + local.tee $0 + if (result i32) + local.get $0 + i32.const 2464 + call $~lib/string/String.__eq + else + local.get $0 + i32.const 2464 + i32.eq + end i32.eqz if i32.const 0 @@ -1946,8 +1940,16 @@ call $~lib/typedarray/Float32Array#__get f64.promote_f32 call $~lib/util/number/dtoa - i32.const 2560 - call $~lib/string/String.__eq + local.tee $0 + if (result i32) + local.get $0 + i32.const 2560 + call $~lib/string/String.__eq + else + local.get $0 + i32.const 2560 + i32.eq + end i32.eqz if i32.const 0 @@ -1971,8 +1973,16 @@ call $~lib/typedarray/Float32Array#__get f64.promote_f32 call $~lib/util/number/dtoa - i32.const 2592 - call $~lib/string/String.__eq + local.tee $0 + if (result i32) + local.get $0 + i32.const 2592 + call $~lib/string/String.__eq + else + local.get $0 + i32.const 2592 + i32.eq + end i32.eqz if i32.const 0 @@ -2030,8 +2040,16 @@ i32.const 0 call $~lib/typedarray/Uint8Array#__get call $~lib/number/U8#toString - i32.const 2656 - call $~lib/string/String.__eq + local.tee $0 + if (result i32) + local.get $0 + i32.const 2656 + call $~lib/string/String.__eq + else + local.get $0 + i32.const 2656 + i32.eq + end i32.eqz if i32.const 0 @@ -2045,8 +2063,16 @@ i32.const 1 call $~lib/typedarray/Uint8Array#__get call $~lib/number/U8#toString - i32.const 2688 - call $~lib/string/String.__eq + local.tee $0 + if (result i32) + local.get $0 + i32.const 2688 + call $~lib/string/String.__eq + else + local.get $0 + i32.const 2688 + i32.eq + end i32.eqz if i32.const 0 @@ -2069,8 +2095,16 @@ i32.const 0 call $~lib/typedarray/Uint8Array#__get call $~lib/number/U8#toString - i32.const 2720 - call $~lib/string/String.__eq + local.tee $0 + if (result i32) + local.get $0 + i32.const 2720 + call $~lib/string/String.__eq + else + local.get $0 + i32.const 2720 + i32.eq + end i32.eqz if i32.const 0 diff --git a/tests/compiler/resolve-elementaccess.untouched.wat b/tests/compiler/resolve-elementaccess.untouched.wat index 7a6efebaf7..4537b2bb69 100644 --- a/tests/compiler/resolve-elementaccess.untouched.wat +++ b/tests/compiler/resolve-elementaccess.untouched.wat @@ -3557,66 +3557,35 @@ call $~lib/rt/stub/__retain local.set $1 local.get $0 - local.get $1 - i32.eq - if - i32.const 1 - local.set $2 - local.get $0 - call $~lib/rt/stub/__release - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - return - end - local.get $0 - i32.eqz - if (result i32) - i32.const 1 - else - local.get $1 - i32.eqz - end - if - i32.const 0 - local.set $2 - local.get $0 - call $~lib/rt/stub/__release - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - return - end - local.get $0 call $~lib/string/String#get:length - local.set $3 - local.get $3 + local.set $2 + local.get $2 local.get $1 call $~lib/string/String#get:length i32.ne if i32.const 0 - local.set $2 + local.set $3 local.get $0 call $~lib/rt/stub/__release local.get $1 call $~lib/rt/stub/__release - local.get $2 + local.get $3 return end local.get $0 i32.const 0 local.get $1 i32.const 0 - local.get $3 + local.get $2 call $~lib/util/string/compareImpl i32.eqz - local.set $2 + local.set $3 local.get $0 call $~lib/rt/stub/__release local.get $1 call $~lib/rt/stub/__release - local.get $2 + local.get $3 ) (func $~lib/typedarray/Uint8Array#constructor (; 24 ;) (param $0 i32) (param $1 i32) (result i32) local.get $0 @@ -3741,6 +3710,7 @@ (local $3 i32) (local $4 i32) (local $5 i32) + (local $6 i32) global.get $~lib/heap/__heap_base i32.const 15 i32.add @@ -3768,8 +3738,33 @@ call $~lib/typedarray/Float32Array#__get call $~lib/number/F32#toString local.tee $0 + call $~lib/rt/stub/__retain + local.set $2 i32.const 1872 - call $~lib/string/String.__eq + call $~lib/rt/stub/__retain + local.set $1 + local.get $2 + i32.eqz + local.get $1 + i32.eqz + i32.or + if (result i32) + local.get $2 + local.get $1 + i32.eq + else + local.get $2 + local.get $1 + call $~lib/string/String.__eq + end + local.set $3 + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release + local.get $3 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -3783,9 +3778,34 @@ i32.const 1 call $~lib/typedarray/Float32Array#__get call $~lib/number/F32#toString - local.tee $1 + local.tee $2 + call $~lib/rt/stub/__retain + local.set $1 i32.const 1968 - call $~lib/string/String.__eq + call $~lib/rt/stub/__retain + local.set $3 + local.get $1 + i32.eqz + local.get $3 + i32.eqz + i32.or + if (result i32) + local.get $1 + local.get $3 + i32.eq + else + local.get $1 + local.get $3 + call $~lib/string/String.__eq + end + local.set $4 + local.get $3 + call $~lib/rt/stub/__release + local.get $1 + call $~lib/rt/stub/__release + local.get $4 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -3796,7 +3816,7 @@ unreachable end global.get $resolve-elementaccess/arr - local.tee $2 + local.tee $1 i32.const 0 local.tee $3 global.get $resolve-elementaccess/arr @@ -3805,13 +3825,38 @@ f32.const 10 f32.add call $~lib/typedarray/Float32Array#__set - local.get $2 + local.get $1 local.get $3 call $~lib/typedarray/Float32Array#__get call $~lib/number/F32#toString - local.tee $2 + local.tee $1 + call $~lib/rt/stub/__retain + local.set $1 i32.const 2000 - call $~lib/string/String.__eq + call $~lib/rt/stub/__retain + local.set $4 + local.get $1 + i32.eqz + local.get $4 + i32.eqz + i32.or + if (result i32) + local.get $1 + local.get $4 + i32.eq + else + local.get $1 + local.get $4 + call $~lib/string/String.__eq + end + local.set $3 + local.get $4 + call $~lib/rt/stub/__release + local.get $1 + call $~lib/rt/stub/__release + local.get $3 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -3859,9 +3904,34 @@ i32.const 0 call $~lib/typedarray/Uint8Array#__get call $~lib/number/U8#toString - local.tee $3 + local.tee $1 + call $~lib/rt/stub/__retain + local.set $4 i32.const 2064 - call $~lib/string/String.__eq + call $~lib/rt/stub/__retain + local.set $3 + local.get $4 + i32.eqz + local.get $3 + i32.eqz + i32.or + if (result i32) + local.get $4 + local.get $3 + i32.eq + else + local.get $4 + local.get $3 + call $~lib/string/String.__eq + end + local.set $5 + local.get $3 + call $~lib/rt/stub/__release + local.get $4 + call $~lib/rt/stub/__release + local.get $5 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -3875,9 +3945,34 @@ i32.const 1 call $~lib/typedarray/Uint8Array#__get call $~lib/number/U8#toString - local.tee $2 + local.tee $4 + call $~lib/rt/stub/__retain + local.set $3 i32.const 2096 - call $~lib/string/String.__eq + call $~lib/rt/stub/__retain + local.set $5 + local.get $3 + i32.eqz + local.get $5 + i32.eqz + i32.or + if (result i32) + local.get $3 + local.get $5 + i32.eq + else + local.get $3 + local.get $5 + call $~lib/string/String.__eq + end + local.set $6 + local.get $5 + call $~lib/rt/stub/__release + local.get $3 + call $~lib/rt/stub/__release + local.get $6 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -3888,7 +3983,7 @@ unreachable end global.get $resolve-elementaccess/buf - local.tee $4 + local.tee $3 i32.const 0 local.tee $5 global.get $resolve-elementaccess/buf @@ -3897,13 +3992,38 @@ i32.const 10 i32.add call $~lib/typedarray/Uint8Array#__set - local.get $4 + local.get $3 local.get $5 call $~lib/typedarray/Uint8Array#__get call $~lib/number/U8#toString - local.tee $4 + local.tee $3 + call $~lib/rt/stub/__retain + local.set $3 i32.const 2128 - call $~lib/string/String.__eq + call $~lib/rt/stub/__retain + local.set $6 + local.get $3 + i32.eqz + local.get $6 + i32.eqz + i32.or + if (result i32) + local.get $3 + local.get $6 + i32.eq + else + local.get $3 + local.get $6 + call $~lib/string/String.__eq + end + local.set $5 + local.get $6 + call $~lib/rt/stub/__release + local.get $3 + call $~lib/rt/stub/__release + local.get $5 + i32.const 0 + i32.ne i32.eqz if i32.const 0 diff --git a/tests/compiler/resolve-function-expression.optimized.wat b/tests/compiler/resolve-function-expression.optimized.wat index 0515d3a761..22e42c7a84 100644 --- a/tests/compiler/resolve-function-expression.optimized.wat +++ b/tests/compiler/resolve-function-expression.optimized.wat @@ -214,34 +214,28 @@ global.set $~lib/rt/stub/offset i32.const 1 global.set $~argumentsLength - block $__inlined_func$~lib/string/String.__eq (result i32) - i32.const 1 - call $~lib/util/number/itoa32 - local.tee $0 - i32.const 1152 - i32.eq - br_if $__inlined_func$~lib/string/String.__eq - drop - block $folding-inner0 + call $~lib/util/number/itoa32 + local.tee $0 + if (result i32) + block $__inlined_func$~lib/string/String.__eq (result i32) i32.const 0 - i32.const 1 - local.get $0 - select - br_if $folding-inner0 local.get $0 call $~lib/string/String#get:length local.tee $1 i32.const 1152 call $~lib/string/String#get:length i32.ne - br_if $folding-inner0 + br_if $__inlined_func$~lib/string/String.__eq + drop local.get $0 local.get $1 call $~lib/util/string/compareImpl i32.eqz - br $__inlined_func$~lib/string/String.__eq end - i32.const 0 + else + local.get $0 + i32.const 1152 + i32.eq end i32.eqz if diff --git a/tests/compiler/resolve-function-expression.untouched.wat b/tests/compiler/resolve-function-expression.untouched.wat index 3d98a32368..d2354a1e07 100644 --- a/tests/compiler/resolve-function-expression.untouched.wat +++ b/tests/compiler/resolve-function-expression.untouched.wat @@ -409,10 +409,7 @@ local.get $0 call $~lib/util/number/itoa ) - (func $~lib/rt/stub/__release (; 13 ;) (param $0 i32) - nop - ) - (func $~lib/string/String#get:length (; 14 ;) (param $0 i32) (result i32) + (func $~lib/string/String#get:length (; 13 ;) (param $0 i32) (result i32) local.get $0 i32.const 16 i32.sub @@ -420,6 +417,9 @@ i32.const 1 i32.shr_u ) + (func $~lib/rt/stub/__release (; 14 ;) (param $0 i32) + nop + ) (func $~lib/util/string/compareImpl (; 15 ;) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (result i32) (local $5 i32) (local $6 i32) @@ -552,69 +552,41 @@ call $~lib/rt/stub/__retain local.set $1 local.get $0 - local.get $1 - i32.eq - if - i32.const 1 - local.set $2 - local.get $0 - call $~lib/rt/stub/__release - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - return - end - local.get $0 - i32.eqz - if (result i32) - i32.const 1 - else - local.get $1 - i32.eqz - end - if - i32.const 0 - local.set $2 - local.get $0 - call $~lib/rt/stub/__release - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - return - end - local.get $0 call $~lib/string/String#get:length - local.set $3 - local.get $3 + local.set $2 + local.get $2 local.get $1 call $~lib/string/String#get:length i32.ne if i32.const 0 - local.set $2 + local.set $3 local.get $0 call $~lib/rt/stub/__release local.get $1 call $~lib/rt/stub/__release - local.get $2 + local.get $3 return end local.get $0 i32.const 0 local.get $1 i32.const 0 - local.get $3 + local.get $2 call $~lib/util/string/compareImpl i32.eqz - local.set $2 + local.set $3 local.get $0 call $~lib/rt/stub/__release local.get $1 call $~lib/rt/stub/__release - local.get $2 + local.get $3 ) (func $start:resolve-function-expression (; 17 ;) (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) i32.const 1 global.set $~argumentsLength i32.const 2 @@ -664,8 +636,33 @@ call_indirect (type $i32_=>_i32) call $~lib/number/I32#toString local.tee $0 + call $~lib/rt/stub/__retain + local.set $2 i32.const 560 - call $~lib/string/String.__eq + call $~lib/rt/stub/__retain + local.set $1 + local.get $2 + i32.eqz + local.get $1 + i32.eqz + i32.or + if (result i32) + local.get $2 + local.get $1 + i32.eq + else + local.get $2 + local.get $1 + call $~lib/string/String.__eq + end + local.set $3 + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release + local.get $3 + i32.const 0 + i32.ne i32.eqz if i32.const 0 diff --git a/tests/compiler/resolve-propertyaccess.optimized.wat b/tests/compiler/resolve-propertyaccess.optimized.wat index 46eda48193..62ba12ea7f 100644 --- a/tests/compiler/resolve-propertyaccess.optimized.wat +++ b/tests/compiler/resolve-propertyaccess.optimized.wat @@ -296,34 +296,20 @@ (func $~lib/string/String.__eq (; 5 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) local.get $0 + call $~lib/string/String#get:length + local.tee $2 local.get $1 - i32.eq + call $~lib/string/String#get:length + i32.ne if - i32.const 1 - return - end - block $folding-inner0 - local.get $1 - i32.eqz - i32.const 1 - local.get $0 - select - br_if $folding-inner0 - local.get $0 - call $~lib/string/String#get:length - local.tee $2 - local.get $1 - call $~lib/string/String#get:length - i32.ne - br_if $folding-inner0 - local.get $0 - local.get $1 - local.get $2 - call $~lib/util/string/compareImpl - i32.eqz + i32.const 0 return end - i32.const 0 + local.get $0 + local.get $1 + local.get $2 + call $~lib/util/string/compareImpl + i32.eqz ) (func $start:resolve-propertyaccess (; 6 ;) (local $0 i32) @@ -333,8 +319,16 @@ global.set $~lib/rt/stub/offset i32.const 1 call $~lib/util/number/itoa32 - i32.const 1072 - call $~lib/string/String.__eq + local.tee $0 + if (result i32) + local.get $0 + i32.const 1072 + call $~lib/string/String.__eq + else + local.get $0 + i32.const 1072 + i32.eq + end i32.eqz if i32.const 0 @@ -346,8 +340,16 @@ end i32.const 11 call $~lib/util/number/itoa32 - i32.const 1184 - call $~lib/string/String.__eq + local.tee $0 + if (result i32) + local.get $0 + i32.const 1184 + call $~lib/string/String.__eq + else + local.get $0 + i32.const 1184 + i32.eq + end i32.eqz if i32.const 0 @@ -359,8 +361,16 @@ end i32.const 2 call $~lib/util/number/itoa32 - i32.const 1216 - call $~lib/string/String.__eq + local.tee $0 + if (result i32) + local.get $0 + i32.const 1216 + call $~lib/string/String.__eq + else + local.get $0 + i32.const 1216 + i32.eq + end i32.eqz if i32.const 0 @@ -372,8 +382,16 @@ end i32.const 22 call $~lib/util/number/itoa32 - i32.const 1248 - call $~lib/string/String.__eq + local.tee $0 + if (result i32) + local.get $0 + i32.const 1248 + call $~lib/string/String.__eq + else + local.get $0 + i32.const 1248 + i32.eq + end i32.eqz if i32.const 0 @@ -385,8 +403,16 @@ end i32.const 3 call $~lib/util/number/itoa32 - i32.const 1280 - call $~lib/string/String.__eq + local.tee $0 + if (result i32) + local.get $0 + i32.const 1280 + call $~lib/string/String.__eq + else + local.get $0 + i32.const 1280 + i32.eq + end i32.eqz if i32.const 0 @@ -398,8 +424,16 @@ end i32.const 33 call $~lib/util/number/itoa32 - i32.const 1312 - call $~lib/string/String.__eq + local.tee $0 + if (result i32) + local.get $0 + i32.const 1312 + call $~lib/string/String.__eq + else + local.get $0 + i32.const 1312 + i32.eq + end i32.eqz if i32.const 0 @@ -411,8 +445,16 @@ end i32.const 4 call $~lib/util/number/itoa32 - i32.const 1344 - call $~lib/string/String.__eq + local.tee $0 + if (result i32) + local.get $0 + i32.const 1344 + call $~lib/string/String.__eq + else + local.get $0 + i32.const 1344 + i32.eq + end i32.eqz if i32.const 0 @@ -424,8 +466,16 @@ end i32.const 5 call $~lib/util/number/itoa32 - i32.const 1376 - call $~lib/string/String.__eq + local.tee $0 + if (result i32) + local.get $0 + i32.const 1376 + call $~lib/string/String.__eq + else + local.get $0 + i32.const 1376 + i32.eq + end i32.eqz if i32.const 0 @@ -437,8 +487,16 @@ end i32.const 55 call $~lib/util/number/itoa32 - i32.const 1408 - call $~lib/string/String.__eq + local.tee $0 + if (result i32) + local.get $0 + i32.const 1408 + call $~lib/string/String.__eq + else + local.get $0 + i32.const 1408 + i32.eq + end i32.eqz if i32.const 0 @@ -457,8 +515,16 @@ local.get $0 i32.load call $~lib/util/number/itoa32 - i32.const 1440 - call $~lib/string/String.__eq + local.tee $0 + if (result i32) + local.get $0 + i32.const 1440 + call $~lib/string/String.__eq + else + local.get $0 + i32.const 1440 + i32.eq + end i32.eqz if i32.const 0 diff --git a/tests/compiler/resolve-propertyaccess.untouched.wat b/tests/compiler/resolve-propertyaccess.untouched.wat index 2791fd479c..43cefbc42a 100644 --- a/tests/compiler/resolve-propertyaccess.untouched.wat +++ b/tests/compiler/resolve-propertyaccess.untouched.wat @@ -405,10 +405,7 @@ local.get $0 call $~lib/util/number/itoa ) - (func $~lib/rt/stub/__release (; 9 ;) (param $0 i32) - nop - ) - (func $~lib/string/String#get:length (; 10 ;) (param $0 i32) (result i32) + (func $~lib/string/String#get:length (; 9 ;) (param $0 i32) (result i32) local.get $0 i32.const 16 i32.sub @@ -416,6 +413,9 @@ i32.const 1 i32.shr_u ) + (func $~lib/rt/stub/__release (; 10 ;) (param $0 i32) + nop + ) (func $~lib/util/string/compareImpl (; 11 ;) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (result i32) (local $5 i32) (local $6 i32) @@ -548,66 +548,35 @@ call $~lib/rt/stub/__retain local.set $1 local.get $0 - local.get $1 - i32.eq - if - i32.const 1 - local.set $2 - local.get $0 - call $~lib/rt/stub/__release - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - return - end - local.get $0 - i32.eqz - if (result i32) - i32.const 1 - else - local.get $1 - i32.eqz - end - if - i32.const 0 - local.set $2 - local.get $0 - call $~lib/rt/stub/__release - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - return - end - local.get $0 call $~lib/string/String#get:length - local.set $3 - local.get $3 + local.set $2 + local.get $2 local.get $1 call $~lib/string/String#get:length i32.ne if i32.const 0 - local.set $2 + local.set $3 local.get $0 call $~lib/rt/stub/__release local.get $1 call $~lib/rt/stub/__release - local.get $2 + local.get $3 return end local.get $0 i32.const 0 local.get $1 i32.const 0 - local.get $3 + local.get $2 call $~lib/util/string/compareImpl i32.eqz - local.set $2 + local.set $3 local.get $0 call $~lib/rt/stub/__release local.get $1 call $~lib/rt/stub/__release - local.get $2 + local.get $3 ) (func $resolve-propertyaccess/Class#constructor (; 13 ;) (param $0 i32) (result i32) local.get $0 @@ -636,6 +605,9 @@ (local $8 i32) (local $9 i32) (local $10 i32) + (local $11 i32) + (local $12 i32) + (local $13 i32) global.get $~lib/heap/__heap_base i32.const 15 i32.add @@ -649,8 +621,33 @@ i32.const 1 call $~lib/number/I32#toString local.tee $0 + call $~lib/rt/stub/__retain + local.set $2 i32.const 480 - call $~lib/string/String.__eq + call $~lib/rt/stub/__retain + local.set $1 + local.get $2 + i32.eqz + local.get $1 + i32.eqz + i32.or + if (result i32) + local.get $2 + local.get $1 + i32.eq + else + local.get $2 + local.get $1 + call $~lib/string/String.__eq + end + local.set $3 + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release + local.get $3 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -662,9 +659,34 @@ end i32.const 11 call $~lib/number/I32#toString - local.tee $1 + local.tee $2 + call $~lib/rt/stub/__retain + local.set $1 i32.const 592 - call $~lib/string/String.__eq + call $~lib/rt/stub/__retain + local.set $3 + local.get $1 + i32.eqz + local.get $3 + i32.eqz + i32.or + if (result i32) + local.get $1 + local.get $3 + i32.eq + else + local.get $1 + local.get $3 + call $~lib/string/String.__eq + end + local.set $4 + local.get $3 + call $~lib/rt/stub/__release + local.get $1 + call $~lib/rt/stub/__release + local.get $4 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -676,9 +698,34 @@ end i32.const 2 call $~lib/number/I32#toString - local.tee $2 + local.tee $1 + call $~lib/rt/stub/__retain + local.set $3 i32.const 624 - call $~lib/string/String.__eq + call $~lib/rt/stub/__retain + local.set $4 + local.get $3 + i32.eqz + local.get $4 + i32.eqz + i32.or + if (result i32) + local.get $3 + local.get $4 + i32.eq + else + local.get $3 + local.get $4 + call $~lib/string/String.__eq + end + local.set $5 + local.get $4 + call $~lib/rt/stub/__release + local.get $3 + call $~lib/rt/stub/__release + local.get $5 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -691,8 +738,33 @@ i32.const 22 call $~lib/number/I32#toString local.tee $3 + call $~lib/rt/stub/__retain + local.set $4 i32.const 656 - call $~lib/string/String.__eq + call $~lib/rt/stub/__retain + local.set $5 + local.get $4 + i32.eqz + local.get $5 + i32.eqz + i32.or + if (result i32) + local.get $4 + local.get $5 + i32.eq + else + local.get $4 + local.get $5 + call $~lib/string/String.__eq + end + local.set $6 + local.get $5 + call $~lib/rt/stub/__release + local.get $4 + call $~lib/rt/stub/__release + local.get $6 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -705,8 +777,33 @@ i32.const 3 call $~lib/number/I32#toString local.tee $4 + call $~lib/rt/stub/__retain + local.set $5 i32.const 688 - call $~lib/string/String.__eq + call $~lib/rt/stub/__retain + local.set $6 + local.get $5 + i32.eqz + local.get $6 + i32.eqz + i32.or + if (result i32) + local.get $5 + local.get $6 + i32.eq + else + local.get $5 + local.get $6 + call $~lib/string/String.__eq + end + local.set $7 + local.get $6 + call $~lib/rt/stub/__release + local.get $5 + call $~lib/rt/stub/__release + local.get $7 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -719,8 +816,33 @@ i32.const 33 call $~lib/number/I32#toString local.tee $5 + call $~lib/rt/stub/__retain + local.set $6 i32.const 720 - call $~lib/string/String.__eq + call $~lib/rt/stub/__retain + local.set $7 + local.get $6 + i32.eqz + local.get $7 + i32.eqz + i32.or + if (result i32) + local.get $6 + local.get $7 + i32.eq + else + local.get $6 + local.get $7 + call $~lib/string/String.__eq + end + local.set $8 + local.get $7 + call $~lib/rt/stub/__release + local.get $6 + call $~lib/rt/stub/__release + local.get $8 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -733,8 +855,33 @@ i32.const 4 call $~lib/number/I32#toString local.tee $6 + call $~lib/rt/stub/__retain + local.set $7 i32.const 752 - call $~lib/string/String.__eq + call $~lib/rt/stub/__retain + local.set $8 + local.get $7 + i32.eqz + local.get $8 + i32.eqz + i32.or + if (result i32) + local.get $7 + local.get $8 + i32.eq + else + local.get $7 + local.get $8 + call $~lib/string/String.__eq + end + local.set $9 + local.get $8 + call $~lib/rt/stub/__release + local.get $7 + call $~lib/rt/stub/__release + local.get $9 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -747,8 +894,33 @@ global.get $resolve-propertyaccess/Class.staticField call $~lib/number/I32#toString local.tee $7 + call $~lib/rt/stub/__retain + local.set $8 i32.const 784 - call $~lib/string/String.__eq + call $~lib/rt/stub/__retain + local.set $9 + local.get $8 + i32.eqz + local.get $9 + i32.eqz + i32.or + if (result i32) + local.get $8 + local.get $9 + i32.eq + else + local.get $8 + local.get $9 + call $~lib/string/String.__eq + end + local.set $10 + local.get $9 + call $~lib/rt/stub/__release + local.get $8 + call $~lib/rt/stub/__release + local.get $10 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -761,8 +933,33 @@ global.get $resolve-propertyaccess/Class.lazyStaticField call $~lib/number/I32#toString local.tee $8 + call $~lib/rt/stub/__retain + local.set $9 i32.const 816 - call $~lib/string/String.__eq + call $~lib/rt/stub/__retain + local.set $10 + local.get $9 + i32.eqz + local.get $10 + i32.eqz + i32.or + if (result i32) + local.get $9 + local.get $10 + i32.eq + else + local.get $9 + local.get $10 + call $~lib/string/String.__eq + end + local.set $11 + local.get $10 + call $~lib/rt/stub/__release + local.get $9 + call $~lib/rt/stub/__release + local.get $11 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -779,8 +976,33 @@ i32.load call $~lib/number/I32#toString local.tee $10 + call $~lib/rt/stub/__retain + local.set $12 i32.const 848 - call $~lib/string/String.__eq + call $~lib/rt/stub/__retain + local.set $11 + local.get $12 + i32.eqz + local.get $11 + i32.eqz + i32.or + if (result i32) + local.get $12 + local.get $11 + i32.eq + else + local.get $12 + local.get $11 + call $~lib/string/String.__eq + end + local.set $13 + local.get $11 + call $~lib/rt/stub/__release + local.get $12 + call $~lib/rt/stub/__release + local.get $13 + i32.const 0 + i32.ne i32.eqz if i32.const 0 diff --git a/tests/compiler/resolve-ternary.optimized.wat b/tests/compiler/resolve-ternary.optimized.wat index 0b0c2d7ff6..82527abc58 100644 --- a/tests/compiler/resolve-ternary.optimized.wat +++ b/tests/compiler/resolve-ternary.optimized.wat @@ -1273,22 +1273,6 @@ (func $~lib/string/String.__eq (; 15 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) local.get $0 - local.get $1 - i32.eq - if - i32.const 1 - return - end - local.get $1 - i32.eqz - i32.const 1 - local.get $0 - select - if - i32.const 0 - return - end - local.get $0 call $~lib/string/String#get:length local.tee $2 local.get $1 @@ -2343,8 +2327,17 @@ local.get $1 call $~lib/rt/pure/__retain local.tee $3 - i32.const 1232 - call $~lib/string/String.__eq + local.set $0 + local.get $3 + if (result i32) + local.get $0 + i32.const 1232 + call $~lib/string/String.__eq + else + local.get $0 + i32.const 1232 + i32.eq + end i32.eqz if i32.const 0 @@ -2358,32 +2351,32 @@ i32.const 56 i32.const 1 call $~lib/rt/tlsf/__alloc - local.tee $0 - call $~lib/util/number/dtoa_core local.tee $1 + call $~lib/util/number/dtoa_core + local.tee $0 i32.const 28 i32.eq if - local.get $0 + local.get $1 call $~lib/rt/pure/__retain - local.set $1 + local.set $0 br $__inlined_func$~lib/util/number/dtoa end - local.get $0 local.get $1 + local.get $0 call $~lib/string/String#substring - local.set $1 + local.set $0 call $~lib/rt/tlsf/maybeInitialize - local.get $0 + local.get $1 i32.const 16 i32.sub local.set $2 - local.get $0 + local.get $1 i32.const 15 i32.and i32.eqz i32.const 0 - local.get $0 + local.get $1 select if (result i32) local.get $2 @@ -2415,9 +2408,16 @@ local.get $2 call $~lib/rt/tlsf/freeBlock end - local.get $1 - i32.const 2464 - call $~lib/string/String.__eq + local.get $0 + if (result i32) + local.get $0 + i32.const 2464 + call $~lib/string/String.__eq + else + local.get $0 + i32.const 2464 + i32.eq + end i32.eqz if i32.const 0 @@ -2435,7 +2435,7 @@ global.set $~argumentsLength local.get $3 call $~lib/rt/pure/__release - local.get $1 + local.get $0 call $~lib/rt/pure/__release ) (func $~start (; 24 ;) diff --git a/tests/compiler/resolve-ternary.untouched.wat b/tests/compiler/resolve-ternary.untouched.wat index ec9ac2bdc2..c95b0a3112 100644 --- a/tests/compiler/resolve-ternary.untouched.wat +++ b/tests/compiler/resolve-ternary.untouched.wat @@ -1893,66 +1893,35 @@ call $~lib/rt/pure/__retain local.set $1 local.get $0 - local.get $1 - i32.eq - if - i32.const 1 - local.set $2 - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $2 - return - end - local.get $0 - i32.eqz - if (result i32) - i32.const 1 - else - local.get $1 - i32.eqz - end - if - i32.const 0 - local.set $2 - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $2 - return - end - local.get $0 call $~lib/string/String#get:length - local.set $3 - local.get $3 + local.set $2 + local.get $2 local.get $1 call $~lib/string/String#get:length i32.ne if i32.const 0 - local.set $2 + local.set $3 local.get $0 call $~lib/rt/pure/__release local.get $1 call $~lib/rt/pure/__release - local.get $2 + local.get $3 return end local.get $0 i32.const 0 local.get $1 i32.const 0 - local.get $3 + local.get $2 call $~lib/util/string/compareImpl i32.eqz - local.set $2 + local.set $3 local.get $0 call $~lib/rt/pure/__release local.get $1 call $~lib/rt/pure/__release - local.get $2 + local.get $3 ) (func $~lib/util/number/genDigits (; 22 ;) (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) @@ -4709,6 +4678,9 @@ (func $start:resolve-ternary (; 38 ;) (local $0 i32) (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) global.get $resolve-ternary/b if (result i32) i32.const 1 @@ -4717,8 +4689,33 @@ end call $~lib/number/I32#toString local.tee $0 + call $~lib/rt/pure/__retain + local.set $2 i32.const 640 - call $~lib/string/String.__eq + call $~lib/rt/pure/__retain + local.set $1 + local.get $2 + i32.eqz + local.get $1 + i32.eqz + i32.or + if (result i32) + local.get $2 + local.get $1 + i32.eq + else + local.get $2 + local.get $1 + call $~lib/string/String.__eq + end + local.set $3 + local.get $1 + call $~lib/rt/pure/__release + local.get $2 + call $~lib/rt/pure/__release + local.get $3 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -4736,9 +4733,34 @@ end i32.const 0 call $~lib/number/F64#toString - local.tee $1 + local.tee $2 + call $~lib/rt/pure/__retain + local.set $1 i32.const 1872 - call $~lib/string/String.__eq + call $~lib/rt/pure/__retain + local.set $3 + local.get $1 + i32.eqz + local.get $3 + i32.eqz + i32.or + if (result i32) + local.get $1 + local.get $3 + i32.eq + else + local.get $1 + local.get $3 + call $~lib/string/String.__eq + end + local.set $4 + local.get $3 + call $~lib/rt/pure/__release + local.get $1 + call $~lib/rt/pure/__release + local.get $4 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -4813,7 +4835,7 @@ end local.get $0 call $~lib/rt/pure/__release - local.get $1 + local.get $2 call $~lib/rt/pure/__release ) (func $~start (; 39 ;) diff --git a/tests/compiler/resolve-unary.optimized.wat b/tests/compiler/resolve-unary.optimized.wat index d950874156..64e0c3baac 100644 --- a/tests/compiler/resolve-unary.optimized.wat +++ b/tests/compiler/resolve-unary.optimized.wat @@ -304,34 +304,20 @@ (func $~lib/string/String.__eq (; 5 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) local.get $0 + call $~lib/string/String#get:length + local.tee $2 local.get $1 - i32.eq + call $~lib/string/String#get:length + i32.ne if - i32.const 1 - return - end - block $folding-inner0 - local.get $1 - i32.eqz - i32.const 1 - local.get $0 - select - br_if $folding-inner0 - local.get $0 - call $~lib/string/String#get:length - local.tee $2 - local.get $1 - call $~lib/string/String#get:length - i32.ne - br_if $folding-inner0 - local.get $0 - local.get $1 - local.get $2 - call $~lib/util/string/compareImpl - i32.eqz + i32.const 0 return end - i32.const 0 + local.get $0 + local.get $1 + local.get $2 + call $~lib/util/string/compareImpl + i32.eqz ) (func $start:resolve-unary (; 6 ;) (local $0 i32) @@ -341,8 +327,16 @@ global.set $~lib/rt/stub/offset i32.const -1 call $~lib/util/number/itoa32 - i32.const 1072 - call $~lib/string/String.__eq + local.tee $0 + if (result i32) + local.get $0 + i32.const 1072 + call $~lib/string/String.__eq + else + local.get $0 + i32.const 1072 + i32.eq + end i32.eqz if i32.const 0 @@ -354,8 +348,16 @@ end i32.const 1 call $~lib/util/number/itoa32 - i32.const 1152 - call $~lib/string/String.__eq + local.tee $0 + if (result i32) + local.get $0 + i32.const 1152 + call $~lib/string/String.__eq + else + local.get $0 + i32.const 1152 + i32.eq + end i32.eqz if i32.const 0 @@ -371,8 +373,16 @@ global.set $resolve-unary/a global.get $resolve-unary/a call $~lib/util/number/itoa32 - i32.const 1184 - call $~lib/string/String.__eq + local.tee $0 + if (result i32) + local.get $0 + i32.const 1184 + call $~lib/string/String.__eq + else + local.get $0 + i32.const 1184 + i32.eq + end i32.eqz if i32.const 0 @@ -388,8 +398,16 @@ global.set $resolve-unary/a global.get $resolve-unary/a call $~lib/util/number/itoa32 - i32.const 1152 - call $~lib/string/String.__eq + local.tee $0 + if (result i32) + local.get $0 + i32.const 1152 + call $~lib/string/String.__eq + else + local.get $0 + i32.const 1152 + i32.eq + end i32.eqz if i32.const 0 @@ -403,8 +421,16 @@ i32.const 1216 global.get $resolve-unary/a select - i32.const 1248 - call $~lib/string/String.__eq + local.tee $0 + if (result i32) + local.get $0 + i32.const 1248 + call $~lib/string/String.__eq + else + local.get $0 + i32.const 1248 + i32.eq + end i32.eqz if i32.const 0 @@ -418,8 +444,16 @@ i32.const 1248 global.get $resolve-unary/a select - i32.const 1216 - call $~lib/string/String.__eq + local.tee $0 + if (result i32) + local.get $0 + i32.const 1216 + call $~lib/string/String.__eq + else + local.get $0 + i32.const 1216 + i32.eq + end i32.eqz if i32.const 0 @@ -433,8 +467,16 @@ i32.const -1 i32.xor call $~lib/util/number/itoa32 - i32.const 1280 - call $~lib/string/String.__eq + local.tee $0 + if (result i32) + local.get $0 + i32.const 1280 + call $~lib/string/String.__eq + else + local.get $0 + i32.const 1280 + i32.eq + end i32.eqz if i32.const 0 @@ -451,8 +493,16 @@ global.set $resolve-unary/b local.get $0 call $~lib/util/number/itoa32 - i32.const 1152 - call $~lib/string/String.__eq + local.tee $0 + if (result i32) + local.get $0 + i32.const 1152 + call $~lib/string/String.__eq + else + local.get $0 + i32.const 1152 + i32.eq + end i32.eqz if i32.const 0 @@ -469,8 +519,16 @@ global.set $resolve-unary/b local.get $0 call $~lib/util/number/itoa32 - i32.const 1184 - call $~lib/string/String.__eq + local.tee $0 + if (result i32) + local.get $0 + i32.const 1184 + call $~lib/string/String.__eq + else + local.get $0 + i32.const 1184 + i32.eq + end i32.eqz if i32.const 0 diff --git a/tests/compiler/resolve-unary.untouched.wat b/tests/compiler/resolve-unary.untouched.wat index 0ee8ae4672..9f18f80426 100644 --- a/tests/compiler/resolve-unary.untouched.wat +++ b/tests/compiler/resolve-unary.untouched.wat @@ -404,10 +404,7 @@ local.get $0 call $~lib/util/number/itoa ) - (func $~lib/rt/stub/__release (; 9 ;) (param $0 i32) - nop - ) - (func $~lib/string/String#get:length (; 10 ;) (param $0 i32) (result i32) + (func $~lib/string/String#get:length (; 9 ;) (param $0 i32) (result i32) local.get $0 i32.const 16 i32.sub @@ -415,6 +412,9 @@ i32.const 1 i32.shr_u ) + (func $~lib/rt/stub/__release (; 10 ;) (param $0 i32) + nop + ) (func $~lib/util/string/compareImpl (; 11 ;) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (result i32) (local $5 i32) (local $6 i32) @@ -547,66 +547,35 @@ call $~lib/rt/stub/__retain local.set $1 local.get $0 - local.get $1 - i32.eq - if - i32.const 1 - local.set $2 - local.get $0 - call $~lib/rt/stub/__release - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - return - end - local.get $0 - i32.eqz - if (result i32) - i32.const 1 - else - local.get $1 - i32.eqz - end - if - i32.const 0 - local.set $2 - local.get $0 - call $~lib/rt/stub/__release - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - return - end - local.get $0 call $~lib/string/String#get:length - local.set $3 - local.get $3 + local.set $2 + local.get $2 local.get $1 call $~lib/string/String#get:length i32.ne if i32.const 0 - local.set $2 + local.set $3 local.get $0 call $~lib/rt/stub/__release local.get $1 call $~lib/rt/stub/__release - local.get $2 + local.get $3 return end local.get $0 i32.const 0 local.get $1 i32.const 0 - local.get $3 + local.get $2 call $~lib/util/string/compareImpl i32.eqz - local.set $2 + local.set $3 local.get $0 call $~lib/rt/stub/__release local.get $1 call $~lib/rt/stub/__release - local.get $2 + local.get $3 ) (func $~lib/number/Bool#toString (; 13 ;) (param $0 i32) (result i32) local.get $0 @@ -754,6 +723,9 @@ (local $30 i32) (local $31 i32) (local $32 i32) + (local $33 i32) + (local $34 i32) + (local $35 i32) global.get $~lib/heap/__heap_base i32.const 15 i32.add @@ -767,8 +739,33 @@ i32.const -1 call $~lib/number/I32#toString local.tee $0 + call $~lib/rt/stub/__retain + local.set $2 i32.const 480 - call $~lib/string/String.__eq + call $~lib/rt/stub/__retain + local.set $1 + local.get $2 + i32.eqz + local.get $1 + i32.eqz + i32.or + if (result i32) + local.get $2 + local.get $1 + i32.eq + else + local.get $2 + local.get $1 + call $~lib/string/String.__eq + end + local.set $3 + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release + local.get $3 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -780,9 +777,34 @@ end i32.const 1 call $~lib/number/I32#toString - local.tee $1 + local.tee $2 + call $~lib/rt/stub/__retain + local.set $1 i32.const 560 - call $~lib/string/String.__eq + call $~lib/rt/stub/__retain + local.set $3 + local.get $1 + i32.eqz + local.get $3 + i32.eqz + i32.or + if (result i32) + local.get $1 + local.get $3 + i32.eq + else + local.get $1 + local.get $3 + call $~lib/string/String.__eq + end + local.set $4 + local.get $3 + call $~lib/rt/stub/__release + local.get $1 + call $~lib/rt/stub/__release + local.get $4 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -798,9 +820,34 @@ global.set $resolve-unary/a global.get $resolve-unary/a call $~lib/number/I32#toString - local.tee $2 + local.tee $1 + call $~lib/rt/stub/__retain + local.set $3 i32.const 592 - call $~lib/string/String.__eq + call $~lib/rt/stub/__retain + local.set $4 + local.get $3 + i32.eqz + local.get $4 + i32.eqz + i32.or + if (result i32) + local.get $3 + local.get $4 + i32.eq + else + local.get $3 + local.get $4 + call $~lib/string/String.__eq + end + local.set $5 + local.get $4 + call $~lib/rt/stub/__release + local.get $3 + call $~lib/rt/stub/__release + local.get $5 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -817,8 +864,33 @@ global.get $resolve-unary/a call $~lib/number/I32#toString local.tee $3 + call $~lib/rt/stub/__retain + local.set $4 i32.const 560 - call $~lib/string/String.__eq + call $~lib/rt/stub/__retain + local.set $5 + local.get $4 + i32.eqz + local.get $5 + i32.eqz + i32.or + if (result i32) + local.get $4 + local.get $5 + i32.eq + else + local.get $4 + local.get $5 + call $~lib/string/String.__eq + end + local.set $6 + local.get $5 + call $~lib/rt/stub/__release + local.get $4 + call $~lib/rt/stub/__release + local.get $6 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -832,8 +904,33 @@ i32.eqz call $~lib/number/Bool#toString local.tee $4 + call $~lib/rt/stub/__retain + local.set $5 i32.const 656 - call $~lib/string/String.__eq + call $~lib/rt/stub/__retain + local.set $6 + local.get $5 + i32.eqz + local.get $6 + i32.eqz + i32.or + if (result i32) + local.get $5 + local.get $6 + i32.eq + else + local.get $5 + local.get $6 + call $~lib/string/String.__eq + end + local.set $7 + local.get $6 + call $~lib/rt/stub/__release + local.get $5 + call $~lib/rt/stub/__release + local.get $7 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -848,8 +945,33 @@ i32.eqz call $~lib/number/Bool#toString local.tee $5 + call $~lib/rt/stub/__retain + local.set $6 i32.const 624 - call $~lib/string/String.__eq + call $~lib/rt/stub/__retain + local.set $7 + local.get $6 + i32.eqz + local.get $7 + i32.eqz + i32.or + if (result i32) + local.get $6 + local.get $7 + i32.eq + else + local.get $6 + local.get $7 + call $~lib/string/String.__eq + end + local.set $8 + local.get $7 + call $~lib/rt/stub/__release + local.get $6 + call $~lib/rt/stub/__release + local.get $8 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -864,8 +986,33 @@ i32.xor call $~lib/number/I32#toString local.tee $6 + call $~lib/rt/stub/__retain + local.set $7 i32.const 688 - call $~lib/string/String.__eq + call $~lib/rt/stub/__retain + local.set $8 + local.get $7 + i32.eqz + local.get $8 + i32.eqz + i32.or + if (result i32) + local.get $7 + local.get $8 + i32.eq + else + local.get $7 + local.get $8 + call $~lib/string/String.__eq + end + local.set $9 + local.get $8 + call $~lib/rt/stub/__release + local.get $7 + call $~lib/rt/stub/__release + local.get $9 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -883,8 +1030,33 @@ local.get $7 call $~lib/number/I32#toString local.tee $7 + call $~lib/rt/stub/__retain + local.set $8 i32.const 560 - call $~lib/string/String.__eq + call $~lib/rt/stub/__retain + local.set $9 + local.get $8 + i32.eqz + local.get $9 + i32.eqz + i32.or + if (result i32) + local.get $8 + local.get $9 + i32.eq + else + local.get $8 + local.get $9 + call $~lib/string/String.__eq + end + local.set $10 + local.get $9 + call $~lib/rt/stub/__release + local.get $8 + call $~lib/rt/stub/__release + local.get $10 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -902,8 +1074,33 @@ local.get $8 call $~lib/number/I32#toString local.tee $8 + call $~lib/rt/stub/__retain + local.set $9 i32.const 592 - call $~lib/string/String.__eq + call $~lib/rt/stub/__retain + local.set $10 + local.get $9 + i32.eqz + local.get $10 + i32.eqz + i32.or + if (result i32) + local.get $9 + local.get $10 + i32.eq + else + local.get $9 + local.get $10 + call $~lib/string/String.__eq + end + local.set $11 + local.get $10 + call $~lib/rt/stub/__release + local.get $9 + call $~lib/rt/stub/__release + local.get $11 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -921,8 +1118,33 @@ local.tee $9 call $~lib/string/String#toString local.tee $10 + call $~lib/rt/stub/__retain + local.set $12 i32.const 720 - call $~lib/string/String.__eq + call $~lib/rt/stub/__retain + local.set $11 + local.get $12 + i32.eqz + local.get $11 + i32.eqz + i32.or + if (result i32) + local.get $12 + local.get $11 + i32.eq + else + local.get $12 + local.get $11 + call $~lib/string/String.__eq + end + local.set $13 + local.get $11 + call $~lib/rt/stub/__release + local.get $12 + call $~lib/rt/stub/__release + local.get $13 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -934,11 +1156,36 @@ end global.get $resolve-unary/foo call $resolve-unary/Foo#minus - local.tee $11 - call $~lib/string/String#toString local.tee $12 + call $~lib/string/String#toString + local.tee $11 + call $~lib/rt/stub/__retain + local.set $14 i32.const 752 - call $~lib/string/String.__eq + call $~lib/rt/stub/__retain + local.set $13 + local.get $14 + i32.eqz + local.get $13 + i32.eqz + i32.or + if (result i32) + local.get $14 + local.get $13 + i32.eq + else + local.get $14 + local.get $13 + call $~lib/string/String.__eq + end + local.set $15 + local.get $13 + call $~lib/rt/stub/__release + local.get $14 + call $~lib/rt/stub/__release + local.get $15 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -950,23 +1197,23 @@ end global.get $resolve-unary/foo call $resolve-unary/Foo#prefix_inc - local.tee $13 local.tee $14 - global.get $resolve-unary/foo local.tee $15 + global.get $resolve-unary/foo + local.tee $13 i32.ne if - local.get $14 - call $~lib/rt/stub/__retain - local.set $14 local.get $15 + call $~lib/rt/stub/__retain + local.set $15 + local.get $13 call $~lib/rt/stub/__release end - local.get $14 + local.get $15 global.set $resolve-unary/foo global.get $resolve-unary/foo call $resolve-unary/Foo#self - local.tee $14 + local.tee $15 global.get $resolve-unary/foo i32.eq i32.eqz @@ -980,7 +1227,7 @@ end global.get $resolve-unary/foo call $resolve-unary/Foo#prefix_dec - local.tee $15 + local.tee $13 local.tee $16 global.get $resolve-unary/foo local.tee $17 @@ -1013,8 +1260,33 @@ local.tee $17 call $~lib/string/String#toString local.tee $18 + call $~lib/rt/stub/__retain + local.set $20 i32.const 784 - call $~lib/string/String.__eq + call $~lib/rt/stub/__retain + local.set $19 + local.get $20 + i32.eqz + local.get $19 + i32.eqz + i32.or + if (result i32) + local.get $20 + local.get $19 + i32.eq + else + local.get $20 + local.get $19 + call $~lib/string/String.__eq + end + local.set $21 + local.get $19 + call $~lib/rt/stub/__release + local.get $20 + call $~lib/rt/stub/__release + local.get $21 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -1026,11 +1298,36 @@ end global.get $resolve-unary/foo call $resolve-unary/Foo#bitwise_not - local.tee $19 - call $~lib/string/String#toString local.tee $20 + call $~lib/string/String#toString + local.tee $19 + call $~lib/rt/stub/__retain + local.set $22 i32.const 816 - call $~lib/string/String.__eq + call $~lib/rt/stub/__retain + local.set $21 + local.get $22 + i32.eqz + local.get $21 + i32.eqz + i32.or + if (result i32) + local.get $22 + local.get $21 + i32.eq + else + local.get $22 + local.get $21 + call $~lib/string/String.__eq + end + local.set $23 + local.get $21 + call $~lib/rt/stub/__release + local.get $22 + call $~lib/rt/stub/__release + local.get $23 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -1041,9 +1338,9 @@ unreachable end global.get $resolve-unary/foo - local.tee $21 - call $resolve-unary/Foo#postfix_inc local.tee $22 + call $resolve-unary/Foo#postfix_inc + local.tee $21 local.tee $23 global.get $resolve-unary/foo local.tee $24 @@ -1057,9 +1354,9 @@ end local.get $23 global.set $resolve-unary/foo - local.get $21 + local.get $22 call $resolve-unary/Foo#self - local.tee $21 + local.tee $22 global.get $resolve-unary/foo i32.eq i32.eqz @@ -1110,8 +1407,33 @@ local.tee $25 call $~lib/string/String#toString local.tee $26 + call $~lib/rt/stub/__retain + local.set $28 i32.const 848 - call $~lib/string/String.__eq + call $~lib/rt/stub/__retain + local.set $27 + local.get $28 + i32.eqz + local.get $27 + i32.eqz + i32.or + if (result i32) + local.get $28 + local.get $27 + i32.eq + else + local.get $28 + local.get $27 + call $~lib/string/String.__eq + end + local.set $29 + local.get $27 + call $~lib/rt/stub/__release + local.get $28 + call $~lib/rt/stub/__release + local.get $29 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -1123,11 +1445,36 @@ end global.get $resolve-unary/bar call $resolve-unary/Bar.prefix_dec - local.tee $27 - call $~lib/string/String#toString local.tee $28 + call $~lib/string/String#toString + local.tee $27 + call $~lib/rt/stub/__retain + local.set $30 i32.const 880 - call $~lib/string/String.__eq + call $~lib/rt/stub/__retain + local.set $29 + local.get $30 + i32.eqz + local.get $29 + i32.eqz + i32.or + if (result i32) + local.get $30 + local.get $29 + i32.eq + else + local.get $30 + local.get $29 + call $~lib/string/String.__eq + end + local.set $31 + local.get $29 + call $~lib/rt/stub/__release + local.get $30 + call $~lib/rt/stub/__release + local.get $31 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -1139,11 +1486,36 @@ end global.get $resolve-unary/bar call $resolve-unary/Bar.postfix_inc - local.tee $29 - call $~lib/string/String#toString local.tee $30 + call $~lib/string/String#toString + local.tee $29 + call $~lib/rt/stub/__retain + local.set $32 i32.const 912 - call $~lib/string/String.__eq + call $~lib/rt/stub/__retain + local.set $31 + local.get $32 + i32.eqz + local.get $31 + i32.eqz + i32.or + if (result i32) + local.get $32 + local.get $31 + i32.eq + else + local.get $32 + local.get $31 + call $~lib/string/String.__eq + end + local.set $33 + local.get $31 + call $~lib/rt/stub/__release + local.get $32 + call $~lib/rt/stub/__release + local.get $33 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -1155,11 +1527,36 @@ end global.get $resolve-unary/bar call $resolve-unary/Bar.postfix_dec - local.tee $31 - call $~lib/string/String#toString local.tee $32 + call $~lib/string/String#toString + local.tee $31 + call $~lib/rt/stub/__retain + local.set $34 i32.const 944 - call $~lib/string/String.__eq + call $~lib/rt/stub/__retain + local.set $33 + local.get $34 + i32.eqz + local.get $33 + i32.eqz + i32.or + if (result i32) + local.get $34 + local.get $33 + i32.eq + else + local.get $34 + local.get $33 + call $~lib/string/String.__eq + end + local.set $35 + local.get $33 + call $~lib/rt/stub/__release + local.get $34 + call $~lib/rt/stub/__release + local.get $35 + i32.const 0 + i32.ne i32.eqz if i32.const 0 diff --git a/tests/compiler/std/array.optimized.wat b/tests/compiler/std/array.optimized.wat index a40b75bff8..e9b4f13fcf 100644 --- a/tests/compiler/std/array.optimized.wat +++ b/tests/compiler/std/array.optimized.wat @@ -5829,22 +5829,6 @@ (func $~lib/string/String.__eq (; 124 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) local.get $0 - local.get $1 - i32.eq - if - i32.const 1 - return - end - local.get $1 - i32.eqz - i32.const 1 - local.get $0 - select - if - i32.const 0 - return - end - local.get $0 call $~lib/string/String#get:length local.tee $2 local.get $1 @@ -9868,14 +9852,14 @@ (local $31 i32) (local $32 i32) (local $33 i32) - (local $34 i32) + (local $34 f64) (local $35 i32) - (local $36 f64) - (local $37 i32) + (local $36 i32) + (local $37 f32) (local $38 i32) (local $39 i32) (local $40 i32) - (local $41 f32) + (local $41 i32) (local $42 i32) (local $43 i32) (local $44 i32) @@ -10919,7 +10903,7 @@ i32.const 2 i32.const 2147483647 call $~lib/array/Array#copyWithin - local.tee $42 + local.tee $41 i32.const 5 i32.const 2 i32.const 3 @@ -11022,7 +11006,7 @@ i32.const 2592 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $46 + local.tee $47 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -11047,14 +11031,14 @@ i32.const 2 i32.const 4 call $~lib/array/Array#copyWithin - local.tee $45 + local.tee $46 i32.const 5 i32.const 2 i32.const 3 i32.const 2688 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $44 + local.tee $45 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -11086,7 +11070,7 @@ i32.const 2784 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $43 + local.tee $44 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -11111,14 +11095,14 @@ i32.const -2 i32.const -1 call $~lib/array/Array#copyWithin - local.tee $47 + local.tee $43 i32.const 5 i32.const 2 i32.const 3 i32.const 2880 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $40 + local.tee $42 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -11143,14 +11127,14 @@ i32.const -3 i32.const -2 call $~lib/array/Array#copyWithin - local.tee $39 + local.tee $40 i32.const 5 i32.const 2 i32.const 3 i32.const 2976 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $38 + local.tee $39 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -11176,14 +11160,14 @@ i32.const -3 i32.const -1 call $~lib/array/Array#copyWithin - local.tee $37 + local.tee $38 i32.const 5 i32.const 2 i32.const 3 i32.const 3072 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $35 + local.tee $36 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -11216,7 +11200,7 @@ i32.const 3168 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $34 + local.tee $35 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -11238,7 +11222,7 @@ call $~lib/rt/pure/__release local.get $56 call $~lib/rt/pure/__release - local.get $42 + local.get $41 call $~lib/rt/pure/__release local.get $53 call $~lib/rt/pure/__release @@ -11252,17 +11236,19 @@ call $~lib/rt/pure/__release local.get $48 call $~lib/rt/pure/__release + local.get $47 + call $~lib/rt/pure/__release local.get $46 call $~lib/rt/pure/__release local.get $45 call $~lib/rt/pure/__release - local.get $44 - call $~lib/rt/pure/__release local.get $31 call $~lib/rt/pure/__release + local.get $44 + call $~lib/rt/pure/__release local.get $43 call $~lib/rt/pure/__release - local.get $47 + local.get $42 call $~lib/rt/pure/__release local.get $40 call $~lib/rt/pure/__release @@ -11270,13 +11256,11 @@ call $~lib/rt/pure/__release local.get $38 call $~lib/rt/pure/__release - local.get $37 - call $~lib/rt/pure/__release - local.get $35 + local.get $36 call $~lib/rt/pure/__release local.get $1 call $~lib/rt/pure/__release - local.get $34 + local.get $35 call $~lib/rt/pure/__release global.get $std/array/arr i32.const 42 @@ -12228,14 +12212,14 @@ i32.shl i32.add f32.load - local.tee $41 + local.tee $37 f32.const nan:0x400000 f32.eq if (result i32) i32.const 1 else - local.get $41 - local.get $41 + local.get $37 + local.get $37 f32.ne end br_if $__inlined_func$~lib/array/Array#includes @@ -12282,27 +12266,27 @@ drop local.get $57 i32.load offset=4 - local.set $42 + local.set $41 loop $while-continue|024 local.get $58 local.get $55 i32.lt_s if i32.const 1 - local.get $42 + local.get $41 local.get $58 i32.const 3 i32.shl i32.add f64.load - local.tee $36 + local.tee $34 f64.const nan:0x8000000000000 f64.eq if (result i32) i32.const 1 else - local.get $36 - local.get $36 + local.get $34 + local.get $34 f64.ne end br_if $__inlined_func$~lib/array/Array#includes @@ -12503,7 +12487,7 @@ i32.const 3616 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $46 + local.tee $47 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -12522,7 +12506,7 @@ i32.const 3648 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $45 + local.tee $46 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -12547,14 +12531,14 @@ i32.const 2 i32.const 2 call $~lib/array/Array#splice - local.tee $44 + local.tee $45 i32.const 2 i32.const 2 i32.const 3 i32.const 3728 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $43 + local.tee $44 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -12573,7 +12557,7 @@ i32.const 3760 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $47 + local.tee $43 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -12597,14 +12581,14 @@ i32.const 0 i32.const 1 call $~lib/array/Array#splice - local.tee $40 + local.tee $42 i32.const 1 i32.const 2 i32.const 3 i32.const 3840 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $39 + local.tee $40 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -12623,7 +12607,7 @@ i32.const 3872 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $38 + local.tee $39 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -12647,14 +12631,14 @@ i32.const -1 i32.const 2147483647 call $~lib/array/Array#splice - local.tee $37 + local.tee $38 i32.const 1 i32.const 2 i32.const 3 i32.const 3952 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $35 + local.tee $36 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -12673,7 +12657,7 @@ i32.const 3984 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $34 + local.tee $35 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -12704,7 +12688,7 @@ i32.const 4064 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $29 + local.tee $33 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -12723,7 +12707,7 @@ i32.const 4096 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $28 + local.tee $32 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -12747,14 +12731,14 @@ i32.const -2 i32.const 1 call $~lib/array/Array#splice - local.tee $33 + local.tee $29 i32.const 1 i32.const 2 i32.const 3 i32.const 4176 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $32 + local.tee $28 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -13149,10 +13133,10 @@ local.get $0 i32.const 2 call $~lib/array/Array#splice - local.set $42 + local.set $41 local.get $55 call $~lib/rt/pure/__release - local.get $42 + local.get $41 i32.load offset=12 i32.const 2 i32.ne @@ -13164,7 +13148,7 @@ call $~lib/builtins/abort unreachable end - local.get $42 + local.get $41 i32.const 0 call $~lib/array/Array#__get local.tee $8 @@ -13179,7 +13163,7 @@ call $~lib/builtins/abort unreachable end - local.get $42 + local.get $41 i32.const 1 call $~lib/array/Array#__get local.tee $7 @@ -13374,6 +13358,8 @@ call $~lib/rt/pure/__release local.get $48 call $~lib/rt/pure/__release + local.get $47 + call $~lib/rt/pure/__release local.get $46 call $~lib/rt/pure/__release local.get $45 @@ -13382,7 +13368,7 @@ call $~lib/rt/pure/__release local.get $43 call $~lib/rt/pure/__release - local.get $47 + local.get $42 call $~lib/rt/pure/__release local.get $40 call $~lib/rt/pure/__release @@ -13390,22 +13376,20 @@ call $~lib/rt/pure/__release local.get $38 call $~lib/rt/pure/__release - local.get $37 + local.get $36 call $~lib/rt/pure/__release local.get $35 call $~lib/rt/pure/__release - local.get $34 - call $~lib/rt/pure/__release local.get $30 call $~lib/rt/pure/__release - local.get $29 - call $~lib/rt/pure/__release - local.get $28 - call $~lib/rt/pure/__release local.get $33 call $~lib/rt/pure/__release local.get $32 call $~lib/rt/pure/__release + local.get $29 + call $~lib/rt/pure/__release + local.get $28 + call $~lib/rt/pure/__release local.get $27 call $~lib/rt/pure/__release local.get $26 @@ -13995,11 +13979,11 @@ i32.add i32.load f32.convert_i32_s - local.set $41 + local.set $37 local.get $53 local.get $54 i32.add - local.get $41 + local.get $37 f32.store local.get $58 i32.const 1 @@ -14593,15 +14577,15 @@ local.get $58 local.get $1 call $~lib/array/Array#__get - local.tee $41 - local.get $41 + local.tee $37 + local.get $37 f32.ne if (result i32) local.get $56 local.get $1 call $~lib/array/Array#__get - local.tee $41 - local.get $41 + local.tee $37 + local.get $37 f32.ne else i32.const 0 @@ -14682,15 +14666,15 @@ local.get $57 local.get $1 call $~lib/array/Array#__get - local.tee $36 - local.get $36 + local.tee $34 + local.get $34 f64.ne if (result i32) local.get $54 local.get $1 call $~lib/array/Array#__get - local.tee $36 - local.get $36 + local.tee $34 + local.get $34 f64.ne else i32.const 0 @@ -14746,7 +14730,7 @@ i32.const 5584 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $40 + local.tee $42 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -14778,7 +14762,7 @@ i32.const 5680 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $39 + local.tee $40 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -14796,7 +14780,7 @@ i32.const 5728 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.set $43 + local.set $44 i32.const 1 i32.const 2 i32.const 3 @@ -14830,17 +14814,17 @@ local.set $48 i32.const 128 call $std/array/createReverseOrderedArray - local.set $46 + local.set $47 i32.const 1024 call $std/array/createReverseOrderedArray - local.set $45 + local.set $46 i32.const 10000 call $std/array/createReverseOrderedArray - local.set $44 + local.set $45 i32.const 512 call $std/array/createRandomOrderedArray - local.set $47 - local.get $43 + local.set $43 + local.get $44 i32.const 48 call $std/array/assertSorted local.get $51 @@ -14853,7 +14837,7 @@ i32.const 5872 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $38 + local.tee $39 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -14875,7 +14859,7 @@ i32.const 5904 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $37 + local.tee $38 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -14919,10 +14903,10 @@ call $~lib/builtins/abort unreachable end - local.get $46 + local.get $47 i32.const 48 call $std/array/assertSorted - local.get $46 + local.get $47 local.get $1 i32.const 4 call $std/array/isArraysEqual @@ -14935,10 +14919,10 @@ call $~lib/builtins/abort unreachable end - local.get $45 + local.get $46 i32.const 48 call $std/array/assertSorted - local.get $45 + local.get $46 local.get $1 i32.const 4 call $std/array/isArraysEqual @@ -14951,10 +14935,10 @@ call $~lib/builtins/abort unreachable end - local.get $44 + local.get $45 i32.const 48 call $std/array/assertSorted - local.get $44 + local.get $45 local.get $1 i32.const 4 call $std/array/isArraysEqual @@ -14967,7 +14951,7 @@ call $~lib/builtins/abort unreachable end - local.get $47 + local.get $43 i32.const 48 call $std/array/assertSorted local.get $58 @@ -14980,13 +14964,13 @@ call $~lib/rt/pure/__release local.get $53 call $~lib/rt/pure/__release - local.get $40 + local.get $42 call $~lib/rt/pure/__release local.get $52 call $~lib/rt/pure/__release - local.get $39 + local.get $40 call $~lib/rt/pure/__release - local.get $43 + local.get $44 call $~lib/rt/pure/__release local.get $51 call $~lib/rt/pure/__release @@ -14998,18 +14982,18 @@ call $~lib/rt/pure/__release local.get $48 call $~lib/rt/pure/__release + local.get $47 + call $~lib/rt/pure/__release local.get $46 call $~lib/rt/pure/__release local.get $45 call $~lib/rt/pure/__release - local.get $44 + local.get $43 call $~lib/rt/pure/__release - local.get $47 + local.get $39 call $~lib/rt/pure/__release local.get $38 call $~lib/rt/pure/__release - local.get $37 - call $~lib/rt/pure/__release i32.const 64 call $std/array/createRandomOrderedArray local.set $1 @@ -15068,7 +15052,7 @@ i32.const 0 local.get $58 i32.load offset=12 - local.tee $53 + local.tee $51 local.get $57 i32.load offset=12 i32.ne @@ -15082,18 +15066,33 @@ drop loop $for-loop|02 local.get $1 - local.get $53 + local.get $51 i32.lt_s if local.get $58 local.get $1 call $~lib/array/Array#__get local.tee $56 + local.set $53 local.get $57 local.get $1 call $~lib/array/Array#__get local.tee $54 - call $~lib/string/String.__eq + local.set $52 + local.get $56 + i32.eqz + local.get $54 + i32.eqz + i32.or + if (result i32) + local.get $52 + local.get $53 + i32.eq + else + local.get $53 + local.get $52 + call $~lib/string/String.__eq + end i32.eqz if local.get $56 @@ -15150,9 +15149,17 @@ i32.load offset=12 call $~lib/util/string/joinBooleanArray local.tee $58 + local.set $57 local.get $58 - i32.const 6336 - call $~lib/string/String.__eq + if (result i32) + local.get $57 + i32.const 6336 + call $~lib/string/String.__eq + else + local.get $57 + i32.const 6336 + i32.eq + end i32.eqz if i32.const 0 @@ -15168,12 +15175,21 @@ i32.const 6384 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $53 + local.tee $45 i32.const 6064 call $~lib/array/Array#join - local.tee $52 - i32.const 6448 - call $~lib/string/String.__eq + local.tee $57 + local.set $56 + local.get $57 + if (result i32) + local.get $56 + i32.const 6448 + call $~lib/string/String.__eq + else + local.get $56 + i32.const 6448 + i32.eq + end i32.eqz if i32.const 0 @@ -15189,12 +15205,21 @@ i32.const 6480 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $51 + local.tee $44 i32.const 6512 call $~lib/array/Array#join - local.tee $50 - i32.const 6448 - call $~lib/string/String.__eq + local.tee $56 + local.set $54 + local.get $56 + if (result i32) + local.get $54 + i32.const 6448 + call $~lib/string/String.__eq + else + local.get $54 + i32.const 6448 + i32.eq + end i32.eqz if i32.const 0 @@ -15210,12 +15235,21 @@ i32.const 6544 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $49 + local.tee $43 i32.const 6576 call $~lib/array/Array#join - local.tee $48 - i32.const 6608 - call $~lib/string/String.__eq + local.tee $54 + local.set $53 + local.get $54 + if (result i32) + local.get $53 + i32.const 6608 + call $~lib/string/String.__eq + else + local.get $53 + i32.const 6608 + i32.eq + end i32.eqz if i32.const 0 @@ -15231,16 +15265,23 @@ i32.const 6672 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $58 + local.tee $53 i32.load offset=4 - local.get $58 + local.get $53 i32.load offset=12 call $~lib/util/string/joinFloatArray - local.tee $57 - local.set $46 - local.get $57 - i32.const 7888 - call $~lib/string/String.__eq + local.tee $52 + local.set $51 + local.get $52 + if (result i32) + local.get $51 + i32.const 7888 + call $~lib/string/String.__eq + else + local.get $51 + i32.const 7888 + i32.eq + end i32.eqz if i32.const 0 @@ -15256,12 +15297,21 @@ i32.const 8016 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $45 + local.tee $42 i32.const 6064 call $~lib/array/Array<~lib/string/String | null>#join - local.tee $44 - i32.const 7984 - call $~lib/string/String.__eq + local.tee $51 + local.set $50 + local.get $51 + if (result i32) + local.get $50 + i32.const 7984 + call $~lib/string/String.__eq + else + local.get $50 + i32.const 7984 + i32.eq + end i32.eqz if i32.const 0 @@ -15277,24 +15327,33 @@ i32.const 0 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $57 + local.tee $50 i32.load offset=4 - local.tee $56 + local.tee $49 i32.const 0 call $std/array/Ref#constructor i32.store - local.get $56 + local.get $49 i32.const 0 i32.store offset=4 - local.get $56 + local.get $49 i32.const 0 call $std/array/Ref#constructor i32.store offset=8 - local.get $57 + local.get $50 call $~lib/array/Array#join - local.tee $43 - i32.const 8096 - call $~lib/string/String.__eq + local.tee $49 + local.set $48 + local.get $49 + if (result i32) + local.get $48 + i32.const 8096 + call $~lib/string/String.__eq + else + local.get $48 + i32.const 8096 + i32.eq + end i32.eqz if i32.const 0 @@ -15310,7 +15369,7 @@ i32.const 0 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $56 + local.tee $48 i32.load offset=4 local.tee $47 i32.const 0 @@ -15320,11 +15379,20 @@ i32.const 0 call $std/array/Ref#constructor i32.store offset=4 - local.get $56 + local.get $48 call $~lib/array/Array#join local.tee $47 - i32.const 8176 - call $~lib/string/String.__eq + local.set $46 + local.get $47 + if (result i32) + local.get $46 + i32.const 8176 + call $~lib/string/String.__eq + else + local.get $46 + i32.const 8176 + i32.eq + end i32.eqz if i32.const 0 @@ -15336,32 +15404,33 @@ end local.get $1 call $~lib/rt/pure/__release + local.get $58 call $~lib/rt/pure/__release - local.get $53 + local.get $45 call $~lib/rt/pure/__release - local.get $52 + local.get $57 call $~lib/rt/pure/__release - local.get $51 + local.get $44 call $~lib/rt/pure/__release - local.get $50 + local.get $56 call $~lib/rt/pure/__release - local.get $49 + local.get $43 call $~lib/rt/pure/__release - local.get $48 + local.get $54 call $~lib/rt/pure/__release - local.get $58 + local.get $53 call $~lib/rt/pure/__release - local.get $46 + local.get $52 call $~lib/rt/pure/__release - local.get $45 + local.get $42 call $~lib/rt/pure/__release - local.get $44 + local.get $51 call $~lib/rt/pure/__release - local.get $57 + local.get $50 call $~lib/rt/pure/__release - local.get $43 + local.get $49 call $~lib/rt/pure/__release - local.get $56 + local.get $48 call $~lib/rt/pure/__release local.get $47 call $~lib/rt/pure/__release @@ -15396,10 +15465,18 @@ local.get $56 i32.const 6304 call $~lib/array/Array#join - local.tee $1 - local.get $1 - i32.const 6064 - call $~lib/string/String.__eq + local.tee $51 + local.set $1 + local.get $51 + if (result i32) + local.get $1 + i32.const 6064 + call $~lib/string/String.__eq + else + local.get $1 + i32.const 6064 + i32.eq + end i32.eqz if i32.const 0 @@ -15412,11 +15489,18 @@ local.get $54 i32.const 6304 call $~lib/array/Array#join - local.tee $1 - local.set $45 - local.get $1 - i32.const 7984 - call $~lib/string/String.__eq + local.tee $50 + local.set $1 + local.get $50 + if (result i32) + local.get $1 + i32.const 7984 + call $~lib/string/String.__eq + else + local.get $1 + i32.const 7984 + i32.eq + end i32.eqz if i32.const 0 @@ -15429,11 +15513,18 @@ local.get $53 i32.const 6304 call $~lib/array/Array#join - local.tee $1 - local.set $44 - local.get $1 - i32.const 8368 - call $~lib/string/String.__eq + local.tee $49 + local.set $1 + local.get $49 + if (result i32) + local.get $1 + i32.const 8368 + call $~lib/string/String.__eq + else + local.get $1 + i32.const 8368 + i32.eq + end i32.eqz if i32.const 0 @@ -15446,11 +15537,18 @@ local.get $52 i32.const 6304 call $~lib/array/Array#join - local.tee $1 - local.set $43 - local.get $1 - i32.const 8400 - call $~lib/string/String.__eq + local.tee $48 + local.set $1 + local.get $48 + if (result i32) + local.get $1 + i32.const 8400 + call $~lib/string/String.__eq + else + local.get $1 + i32.const 8400 + i32.eq + end i32.eqz if i32.const 0 @@ -15466,16 +15564,23 @@ i32.const 8432 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $51 + local.tee $47 i32.load offset=4 - local.get $51 + local.get $47 i32.load offset=12 call $~lib/util/string/joinIntegerArray - local.tee $1 - local.set $47 - local.get $1 - i32.const 8464 - call $~lib/string/String.__eq + local.tee $46 + local.set $1 + local.get $46 + if (result i32) + local.get $1 + i32.const 8464 + call $~lib/string/String.__eq + else + local.get $1 + i32.const 8464 + i32.eq + end i32.eqz if i32.const 0 @@ -15491,16 +15596,23 @@ i32.const 8496 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $50 + local.tee $45 i32.load offset=4 - local.get $50 + local.get $45 i32.load offset=12 call $~lib/util/string/joinIntegerArray - local.tee $1 - local.set $40 - local.get $1 - i32.const 8528 - call $~lib/string/String.__eq + local.tee $44 + local.set $1 + local.get $44 + if (result i32) + local.get $1 + i32.const 8528 + call $~lib/string/String.__eq + else + local.get $1 + i32.const 8528 + i32.eq + end i32.eqz if i32.const 0 @@ -15516,16 +15628,23 @@ i32.const 8576 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $49 + local.tee $43 i32.load offset=4 - local.get $49 + local.get $43 i32.load offset=12 call $~lib/util/string/joinIntegerArray - local.tee $1 - local.set $39 - local.get $1 - i32.const 8624 - call $~lib/string/String.__eq + local.tee $42 + local.set $1 + local.get $42 + if (result i32) + local.get $1 + i32.const 8624 + call $~lib/string/String.__eq + else + local.get $1 + i32.const 8624 + i32.eq + end i32.eqz if i32.const 0 @@ -15541,16 +15660,23 @@ i32.const 8688 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $48 + local.tee $40 i32.load offset=4 - local.get $48 + local.get $40 i32.load offset=12 call $~lib/util/string/joinIntegerArray - local.tee $1 - local.set $38 - local.get $1 - i32.const 8736 - call $~lib/string/String.__eq + local.tee $39 + local.set $1 + local.get $39 + if (result i32) + local.get $1 + i32.const 8736 + call $~lib/string/String.__eq + else + local.get $1 + i32.const 8736 + i32.eq + end i32.eqz if i32.const 0 @@ -15566,14 +15692,21 @@ i32.const 8848 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $37 + local.tee $29 i32.const 6304 call $~lib/array/Array<~lib/string/String | null>#join - local.tee $1 - local.set $35 - local.get $1 - i32.const 8896 - call $~lib/string/String.__eq + local.tee $38 + local.set $1 + local.get $38 + if (result i32) + local.get $1 + i32.const 8896 + call $~lib/string/String.__eq + else + local.get $1 + i32.const 8896 + i32.eq + end i32.eqz if i32.const 0 @@ -15589,14 +15722,21 @@ i32.const 9008 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $34 + local.tee $28 i32.const 6304 call $~lib/array/Array<~lib/string/String | null>#join - local.tee $1 - local.set $30 - local.get $1 - i32.const 9040 - call $~lib/string/String.__eq + local.tee $36 + local.set $1 + local.get $36 + if (result i32) + local.get $1 + i32.const 9040 + call $~lib/string/String.__eq + else + local.get $1 + i32.const 9040 + i32.eq + end i32.eqz if i32.const 0 @@ -15635,11 +15775,18 @@ local.get $1 i32.load offset=12 call $~lib/util/string/joinReferenceArray<~lib/array/Array> - local.tee $58 - local.set $29 - local.get $58 - i32.const 9136 - call $~lib/string/String.__eq + local.tee $35 + local.set $58 + local.get $35 + if (result i32) + local.get $58 + i32.const 9136 + call $~lib/string/String.__eq + else + local.get $58 + i32.const 9136 + i32.eq + end i32.eqz if i32.const 0 @@ -15678,11 +15825,18 @@ local.get $58 i32.load offset=12 call $~lib/util/string/joinReferenceArray<~lib/array/Array> - local.tee $57 - local.set $28 - local.get $57 - i32.const 9136 - call $~lib/string/String.__eq + local.tee $30 + local.set $57 + local.get $30 + if (result i32) + local.get $57 + i32.const 9136 + call $~lib/string/String.__eq + else + local.get $57 + i32.const 9136 + i32.eq + end i32.eqz if i32.const 0 @@ -15725,8 +15879,15 @@ local.tee $33 local.set $32 local.get $33 - i32.const 7984 - call $~lib/string/String.__eq + if (result i32) + local.get $32 + i32.const 7984 + call $~lib/string/String.__eq + else + local.get $32 + i32.const 7984 + i32.eq + end i32.eqz if i32.const 0 @@ -15744,6 +15905,17 @@ call $~lib/rt/pure/__release local.get $52 call $~lib/rt/pure/__release + local.get $51 + call $~lib/rt/pure/__release + local.get $50 + call $~lib/rt/pure/__release + local.get $49 + call $~lib/rt/pure/__release + local.get $48 + call $~lib/rt/pure/__release + local.get $47 + call $~lib/rt/pure/__release + local.get $46 call $~lib/rt/pure/__release local.get $45 call $~lib/rt/pure/__release @@ -15751,41 +15923,31 @@ call $~lib/rt/pure/__release local.get $43 call $~lib/rt/pure/__release - local.get $51 - call $~lib/rt/pure/__release - local.get $47 - call $~lib/rt/pure/__release - local.get $50 + local.get $42 call $~lib/rt/pure/__release local.get $40 call $~lib/rt/pure/__release - local.get $49 - call $~lib/rt/pure/__release local.get $39 call $~lib/rt/pure/__release - local.get $48 + local.get $29 call $~lib/rt/pure/__release local.get $38 call $~lib/rt/pure/__release - local.get $37 + local.get $28 call $~lib/rt/pure/__release - local.get $35 + local.get $36 call $~lib/rt/pure/__release - local.get $34 + local.get $35 call $~lib/rt/pure/__release local.get $30 call $~lib/rt/pure/__release - local.get $29 - call $~lib/rt/pure/__release - local.get $28 - call $~lib/rt/pure/__release - local.get $32 + local.get $33 call $~lib/rt/pure/__release global.get $std/array/arr call $~lib/rt/pure/__release local.get $0 call $~lib/rt/pure/__release - local.get $42 + local.get $41 call $~lib/rt/pure/__release local.get $55 call $~lib/rt/pure/__release diff --git a/tests/compiler/std/array.untouched.wat b/tests/compiler/std/array.untouched.wat index 0c1253cd79..bf6af5e702 100644 --- a/tests/compiler/std/array.untouched.wat +++ b/tests/compiler/std/array.untouched.wat @@ -11104,92 +11104,46 @@ call $~lib/rt/pure/__retain local.set $1 local.get $0 - local.get $1 - i32.eq - if - i32.const 1 - local.set $2 - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $2 - return - end - local.get $0 - i32.eqz - if (result i32) - i32.const 1 - else - local.get $1 - i32.eqz - end - if - i32.const 0 - local.set $2 - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $2 - return - end - local.get $0 call $~lib/string/String#get:length - local.set $3 - local.get $3 + local.set $2 + local.get $2 local.get $1 call $~lib/string/String#get:length i32.ne if i32.const 0 - local.set $2 + local.set $3 local.get $0 call $~lib/rt/pure/__release local.get $1 call $~lib/rt/pure/__release - local.get $2 + local.get $3 return end local.get $0 i32.const 0 local.get $1 i32.const 0 - local.get $3 - call $~lib/util/string/compareImpl - i32.eqz - local.set $2 - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release local.get $2 - ) - (func $~lib/string/String.__ne (; 217 ;) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $0 - call $~lib/rt/pure/__retain - local.set $0 - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - local.get $1 - call $~lib/string/String.__eq + call $~lib/util/string/compareImpl i32.eqz - local.set $2 + local.set $3 local.get $0 call $~lib/rt/pure/__release local.get $1 call $~lib/rt/pure/__release - local.get $2 + local.get $3 ) - (func $std/array/isArraysEqual<~lib/string/String | null> (; 218 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/array/isArraysEqual<~lib/string/String | null> (; 217 ;) (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 $9 i32) + (local $10 i32) + (local $11 i32) local.get $0 call $~lib/rt/pure/__retain local.set $0 @@ -11243,14 +11197,50 @@ local.get $3 call $~lib/array/Array<~lib/string/String | null>#__get local.tee $5 + call $~lib/rt/pure/__retain + local.set $8 local.get $1 local.get $3 call $~lib/array/Array<~lib/string/String | null>#__get local.tee $6 - call $~lib/string/String.__ne + call $~lib/rt/pure/__retain + local.set $7 + local.get $8 + call $~lib/rt/pure/__retain + local.set $10 + local.get $7 + call $~lib/rt/pure/__retain + local.set $9 + local.get $10 + i32.eqz + local.get $9 + i32.eqz + i32.or + if (result i32) + local.get $10 + local.get $9 + i32.eq + else + local.get $10 + local.get $9 + call $~lib/string/String.__eq + end + local.set $11 + local.get $9 + call $~lib/rt/pure/__release + local.get $10 + call $~lib/rt/pure/__release + local.get $11 + i32.eqz + local.set $10 + local.get $7 + call $~lib/rt/pure/__release + local.get $8 + call $~lib/rt/pure/__release + local.get $10 if i32.const 0 - local.set $7 + local.set $8 local.get $0 call $~lib/rt/pure/__release local.get $1 @@ -11259,7 +11249,7 @@ call $~lib/rt/pure/__release local.get $6 call $~lib/rt/pure/__release - local.get $7 + local.get $8 return end local.get $5 @@ -11281,7 +11271,7 @@ call $~lib/rt/pure/__release local.get $3 ) - (func $~lib/array/Array<~lib/string/String>#constructor (; 219 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array<~lib/string/String>#constructor (; 218 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -11359,7 +11349,7 @@ i32.store offset=12 local.get $0 ) - (func $~lib/string/String#charAt (; 220 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/string/String#charAt (; 219 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) local.get $1 local.get $0 @@ -11385,7 +11375,7 @@ local.get $2 call $~lib/rt/pure/__retain ) - (func $~lib/string/String#concat (; 221 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/string/String#concat (; 220 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -11441,7 +11431,7 @@ call $~lib/rt/pure/__release local.get $5 ) - (func $~lib/string/String.__concat (; 222 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/string/String.__concat (; 221 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) local.get $0 call $~lib/rt/pure/__retain @@ -11464,7 +11454,7 @@ call $~lib/rt/pure/__release local.get $2 ) - (func $std/array/createRandomString (; 223 ;) (param $0 i32) (result i32) + (func $std/array/createRandomString (; 222 ;) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -11525,7 +11515,7 @@ end local.get $1 ) - (func $~lib/array/Array<~lib/string/String>#__unchecked_set (; 224 ;) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/array/Array<~lib/string/String>#__unchecked_set (; 223 ;) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) local.get $2 @@ -11555,7 +11545,7 @@ local.get $2 call $~lib/rt/pure/__release ) - (func $~lib/array/Array<~lib/string/String>#__set (; 225 ;) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/array/Array<~lib/string/String>#__set (; 224 ;) (param $0 i32) (param $1 i32) (param $2 i32) local.get $2 call $~lib/rt/pure/__retain local.set $2 @@ -11596,7 +11586,7 @@ local.get $2 call $~lib/rt/pure/__release ) - (func $std/array/createRandomStringArray (; 226 ;) (param $0 i32) (result i32) + (func $std/array/createRandomStringArray (; 225 ;) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -11634,7 +11624,7 @@ end local.get $1 ) - (func $~lib/util/sort/insertionSort<~lib/string/String> (; 227 ;) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/util/sort/insertionSort<~lib/string/String> (; 226 ;) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -11732,7 +11722,7 @@ end end ) - (func $~lib/array/Array<~lib/string/String>#sort (; 228 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array<~lib/string/String>#sort (; 227 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -11803,11 +11793,11 @@ local.get $0 call $~lib/rt/pure/__retain ) - (func $~lib/array/Array<~lib/string/String>#get:length (; 229 ;) (param $0 i32) (result i32) + (func $~lib/array/Array<~lib/string/String>#get:length (; 228 ;) (param $0 i32) (result i32) local.get $0 i32.load offset=12 ) - (func $~lib/array/Array<~lib/string/String>#__unchecked_get (; 230 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array<~lib/string/String>#__unchecked_get (; 229 ;) (param $0 i32) (param $1 i32) (result i32) local.get $0 i32.load offset=4 local.get $1 @@ -11817,7 +11807,7 @@ i32.load call $~lib/rt/pure/__retain ) - (func $~lib/array/Array<~lib/string/String>#__get (; 231 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array<~lib/string/String>#__get (; 230 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) local.get $1 local.get $0 @@ -11849,7 +11839,7 @@ end local.get $2 ) - (func $std/array/isSorted<~lib/string/String> (; 232 ;) (param $0 i32) (param $1 i32) (result i32) + (func $std/array/isSorted<~lib/string/String> (; 231 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -11916,7 +11906,7 @@ call $~lib/rt/pure/__release local.get $3 ) - (func $std/array/assertSorted<~lib/string/String> (; 233 ;) (param $0 i32) (param $1 i32) + (func $std/array/assertSorted<~lib/string/String> (; 232 ;) (param $0 i32) (param $1 i32) (local $2 i32) local.get $0 call $~lib/rt/pure/__retain @@ -11941,7 +11931,7 @@ local.get $0 call $~lib/rt/pure/__release ) - (func $~lib/util/sort/COMPARATOR<~lib/string/String>~anonymous|0 (; 234 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/util/sort/COMPARATOR<~lib/string/String>~anonymous|0 (; 233 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -12045,7 +12035,7 @@ call $~lib/rt/pure/__release local.get $2 ) - (func $std/array/assertSorted<~lib/string/String>|trampoline (; 235 ;) (param $0 i32) (param $1 i32) + (func $std/array/assertSorted<~lib/string/String>|trampoline (; 234 ;) (param $0 i32) (param $1 i32) block $1of1 block $0of1 block $outOfRange @@ -12066,7 +12056,7 @@ local.get $1 call $std/array/assertSorted<~lib/string/String> ) - (func $~lib/string/String#substring (; 236 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/string/String#substring (; 235 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -12173,7 +12163,7 @@ local.get $11 call $~lib/rt/pure/__retain ) - (func $~lib/util/string/joinBooleanArray (; 237 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/util/string/joinBooleanArray (; 236 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -12348,7 +12338,7 @@ call $~lib/rt/pure/__release local.get $4 ) - (func $~lib/array/Array#join (; 238 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#join (; 237 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -12371,7 +12361,7 @@ local.get $4 return ) - (func $~lib/util/number/decimalCount32 (; 239 ;) (param $0 i32) (result i32) + (func $~lib/util/number/decimalCount32 (; 238 ;) (param $0 i32) (result i32) local.get $0 i32.const 100000 i32.lt_u @@ -12426,7 +12416,7 @@ end unreachable ) - (func $~lib/util/number/utoa32_lut (; 240 ;) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/util/number/utoa32_lut (; 239 ;) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -12566,7 +12556,7 @@ i32.store16 end ) - (func $~lib/util/number/itoa32 (; 241 ;) (param $0 i32) (result i32) + (func $~lib/util/number/itoa32 (; 240 ;) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -12620,12 +12610,12 @@ local.get $3 call $~lib/rt/pure/__retain ) - (func $~lib/util/number/itoa (; 242 ;) (param $0 i32) (result i32) + (func $~lib/util/number/itoa (; 241 ;) (param $0 i32) (result i32) local.get $0 call $~lib/util/number/itoa32 return ) - (func $~lib/util/number/itoa_stream (; 243 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/util/number/itoa_stream (; 242 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -12690,7 +12680,7 @@ call $~lib/util/number/utoa32_lut local.get $4 ) - (func $~lib/util/string/joinIntegerArray (; 244 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/util/string/joinIntegerArray (; 243 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -12833,7 +12823,7 @@ call $~lib/rt/pure/__release local.get $4 ) - (func $~lib/array/Array#join (; 245 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#join (; 244 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -12856,7 +12846,7 @@ local.get $4 return ) - (func $~lib/util/number/utoa32 (; 246 ;) (param $0 i32) (result i32) + (func $~lib/util/number/utoa32 (; 245 ;) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -12890,12 +12880,12 @@ local.get $2 call $~lib/rt/pure/__retain ) - (func $~lib/util/number/itoa (; 247 ;) (param $0 i32) (result i32) + (func $~lib/util/number/itoa (; 246 ;) (param $0 i32) (result i32) local.get $0 call $~lib/util/number/utoa32 return ) - (func $~lib/util/number/itoa_stream (; 248 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/util/number/itoa_stream (; 247 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -12940,7 +12930,7 @@ call $~lib/util/number/utoa32_lut local.get $4 ) - (func $~lib/util/string/joinIntegerArray (; 249 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/util/string/joinIntegerArray (; 248 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -13083,7 +13073,7 @@ call $~lib/rt/pure/__release local.get $4 ) - (func $~lib/array/Array#join (; 250 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#join (; 249 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -13106,7 +13096,7 @@ local.get $4 return ) - (func $~lib/util/number/genDigits (; 251 ;) (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 (; 250 ;) (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) @@ -13609,7 +13599,7 @@ end unreachable ) - (func $~lib/util/number/prettify (; 252 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/util/number/prettify (; 251 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -13926,7 +13916,7 @@ end unreachable ) - (func $~lib/util/number/dtoa_core (; 253 ;) (param $0 i32) (param $1 f64) (result i32) + (func $~lib/util/number/dtoa_core (; 252 ;) (param $0 i32) (param $1 f64) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -14352,7 +14342,7 @@ local.get $2 i32.add ) - (func $~lib/util/number/dtoa (; 254 ;) (param $0 f64) (result i32) + (func $~lib/util/number/dtoa (; 253 ;) (param $0 f64) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -14413,7 +14403,7 @@ call $~lib/rt/tlsf/__free local.get $3 ) - (func $~lib/util/number/dtoa_stream (; 255 ;) (param $0 i32) (param $1 i32) (param $2 f64) (result i32) + (func $~lib/util/number/dtoa_stream (; 254 ;) (param $0 i32) (param $1 i32) (param $2 f64) (result i32) (local $3 i32) local.get $0 local.get $1 @@ -14491,7 +14481,7 @@ local.get $2 call $~lib/util/number/dtoa_core ) - (func $~lib/util/string/joinFloatArray (; 256 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/util/string/joinFloatArray (; 255 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -14634,7 +14624,7 @@ call $~lib/rt/pure/__release local.get $4 ) - (func $~lib/array/Array#join (; 257 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#join (; 256 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -14657,7 +14647,7 @@ local.get $4 return ) - (func $~lib/util/string/joinStringArray (; 258 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/util/string/joinStringArray (; 257 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -14880,7 +14870,7 @@ call $~lib/rt/pure/__release local.get $8 ) - (func $~lib/array/Array<~lib/string/String | null>#join (; 259 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array<~lib/string/String | null>#join (; 258 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -14903,10 +14893,10 @@ local.get $4 return ) - (func $std/array/Ref#toString (; 260 ;) (param $0 i32) (result i32) + (func $std/array/Ref#toString (; 259 ;) (param $0 i32) (result i32) i32.const 7456 ) - (func $~lib/util/string/joinReferenceArray (; 261 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/util/string/joinReferenceArray (; 260 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -15111,7 +15101,7 @@ call $~lib/rt/pure/__release local.get $4 ) - (func $~lib/array/Array#join (; 262 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#join (; 261 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -15134,7 +15124,7 @@ local.get $4 return ) - (func $~lib/util/string/joinReferenceArray (; 263 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/util/string/joinReferenceArray (; 262 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -15339,7 +15329,7 @@ call $~lib/rt/pure/__release local.get $4 ) - (func $~lib/array/Array#join (; 264 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#join (; 263 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -15362,12 +15352,12 @@ local.get $4 return ) - (func $~lib/array/Array#toString (; 265 ;) (param $0 i32) (result i32) + (func $~lib/array/Array#toString (; 264 ;) (param $0 i32) (result i32) local.get $0 i32.const 5296 call $~lib/array/Array#join ) - (func $~lib/util/number/itoa (; 266 ;) (param $0 i32) (result i32) + (func $~lib/util/number/itoa (; 265 ;) (param $0 i32) (result i32) local.get $0 i32.const 24 i32.shl @@ -15376,7 +15366,7 @@ call $~lib/util/number/itoa32 return ) - (func $~lib/util/number/itoa_stream (; 267 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/util/number/itoa_stream (; 266 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -15461,7 +15451,7 @@ call $~lib/util/number/utoa32_lut local.get $4 ) - (func $~lib/util/string/joinIntegerArray (; 268 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/util/string/joinIntegerArray (; 267 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -15604,7 +15594,7 @@ call $~lib/rt/pure/__release local.get $4 ) - (func $~lib/array/Array#join (; 269 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#join (; 268 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -15627,19 +15617,19 @@ local.get $4 return ) - (func $~lib/array/Array#toString (; 270 ;) (param $0 i32) (result i32) + (func $~lib/array/Array#toString (; 269 ;) (param $0 i32) (result i32) local.get $0 i32.const 5296 call $~lib/array/Array#join ) - (func $~lib/util/number/itoa (; 271 ;) (param $0 i32) (result i32) + (func $~lib/util/number/itoa (; 270 ;) (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 (; 272 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/util/number/itoa_stream (; 271 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -15692,7 +15682,7 @@ call $~lib/util/number/utoa32_lut local.get $4 ) - (func $~lib/util/string/joinIntegerArray (; 273 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/util/string/joinIntegerArray (; 272 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -15835,7 +15825,7 @@ call $~lib/rt/pure/__release local.get $4 ) - (func $~lib/array/Array#join (; 274 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#join (; 273 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -15858,12 +15848,12 @@ local.get $4 return ) - (func $~lib/array/Array#toString (; 275 ;) (param $0 i32) (result i32) + (func $~lib/array/Array#toString (; 274 ;) (param $0 i32) (result i32) local.get $0 i32.const 5296 call $~lib/array/Array#join ) - (func $~lib/util/number/decimalCount64High (; 276 ;) (param $0 i64) (result i32) + (func $~lib/util/number/decimalCount64High (; 275 ;) (param $0 i64) (result i32) local.get $0 i64.const 1000000000000000 i64.lt_u @@ -15922,7 +15912,7 @@ end unreachable ) - (func $~lib/util/number/utoa64_lut (; 277 ;) (param $0 i32) (param $1 i64) (param $2 i32) + (func $~lib/util/number/utoa64_lut (; 276 ;) (param $0 i32) (param $1 i64) (param $2 i32) (local $3 i32) (local $4 i64) (local $5 i32) @@ -16045,7 +16035,7 @@ local.get $2 call $~lib/util/number/utoa32_lut ) - (func $~lib/util/number/utoa64 (; 278 ;) (param $0 i64) (result i32) + (func $~lib/util/number/utoa64 (; 277 ;) (param $0 i64) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -16111,12 +16101,12 @@ local.get $1 call $~lib/rt/pure/__retain ) - (func $~lib/util/number/itoa (; 279 ;) (param $0 i64) (result i32) + (func $~lib/util/number/itoa (; 278 ;) (param $0 i64) (result i32) local.get $0 call $~lib/util/number/utoa64 return ) - (func $~lib/util/number/itoa_stream (; 280 ;) (param $0 i32) (param $1 i32) (param $2 i64) (result i32) + (func $~lib/util/number/itoa_stream (; 279 ;) (param $0 i32) (param $1 i32) (param $2 i64) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -16187,7 +16177,7 @@ end local.get $4 ) - (func $~lib/util/string/joinIntegerArray (; 281 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/util/string/joinIntegerArray (; 280 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -16330,7 +16320,7 @@ call $~lib/rt/pure/__release local.get $4 ) - (func $~lib/array/Array#join (; 282 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#join (; 281 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -16353,12 +16343,12 @@ local.get $4 return ) - (func $~lib/array/Array#toString (; 283 ;) (param $0 i32) (result i32) + (func $~lib/array/Array#toString (; 282 ;) (param $0 i32) (result i32) local.get $0 i32.const 5296 call $~lib/array/Array#join ) - (func $~lib/util/number/itoa64 (; 284 ;) (param $0 i64) (result i32) + (func $~lib/util/number/itoa64 (; 283 ;) (param $0 i64) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -16447,12 +16437,12 @@ local.get $2 call $~lib/rt/pure/__retain ) - (func $~lib/util/number/itoa (; 285 ;) (param $0 i64) (result i32) + (func $~lib/util/number/itoa (; 284 ;) (param $0 i64) (result i32) local.get $0 call $~lib/util/number/itoa64 return ) - (func $~lib/util/number/itoa_stream (; 286 ;) (param $0 i32) (param $1 i32) (param $2 i64) (result i32) + (func $~lib/util/number/itoa_stream (; 285 ;) (param $0 i32) (param $1 i32) (param $2 i64) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -16543,7 +16533,7 @@ end local.get $4 ) - (func $~lib/util/string/joinIntegerArray (; 287 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/util/string/joinIntegerArray (; 286 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -16686,7 +16676,7 @@ call $~lib/rt/pure/__release local.get $4 ) - (func $~lib/array/Array#join (; 288 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#join (; 287 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -16709,17 +16699,17 @@ local.get $4 return ) - (func $~lib/array/Array#toString (; 289 ;) (param $0 i32) (result i32) + (func $~lib/array/Array#toString (; 288 ;) (param $0 i32) (result i32) local.get $0 i32.const 5296 call $~lib/array/Array#join ) - (func $~lib/array/Array<~lib/string/String | null>#toString (; 290 ;) (param $0 i32) (result i32) + (func $~lib/array/Array<~lib/string/String | null>#toString (; 289 ;) (param $0 i32) (result i32) local.get $0 i32.const 5296 call $~lib/array/Array<~lib/string/String | null>#join ) - (func $~lib/util/string/joinReferenceArray<~lib/array/Array> (; 291 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/util/string/joinReferenceArray<~lib/array/Array> (; 290 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -16924,7 +16914,7 @@ call $~lib/rt/pure/__release local.get $4 ) - (func $~lib/array/Array<~lib/array/Array>#join (; 292 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array<~lib/array/Array>#join (; 291 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -16947,19 +16937,19 @@ local.get $4 return ) - (func $~lib/array/Array<~lib/array/Array>#toString (; 293 ;) (param $0 i32) (result i32) + (func $~lib/array/Array<~lib/array/Array>#toString (; 292 ;) (param $0 i32) (result i32) local.get $0 i32.const 5296 call $~lib/array/Array<~lib/array/Array>#join ) - (func $~lib/util/number/itoa (; 294 ;) (param $0 i32) (result i32) + (func $~lib/util/number/itoa (; 293 ;) (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 (; 295 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/util/number/itoa_stream (; 294 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -17012,7 +17002,7 @@ call $~lib/util/number/utoa32_lut local.get $4 ) - (func $~lib/util/string/joinIntegerArray (; 296 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/util/string/joinIntegerArray (; 295 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -17155,7 +17145,7 @@ call $~lib/rt/pure/__release local.get $4 ) - (func $~lib/array/Array#join (; 297 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#join (; 296 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -17178,12 +17168,12 @@ local.get $4 return ) - (func $~lib/array/Array#toString (; 298 ;) (param $0 i32) (result i32) + (func $~lib/array/Array#toString (; 297 ;) (param $0 i32) (result i32) local.get $0 i32.const 5296 call $~lib/array/Array#join ) - (func $~lib/util/string/joinReferenceArray<~lib/array/Array> (; 299 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/util/string/joinReferenceArray<~lib/array/Array> (; 298 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -17388,7 +17378,7 @@ call $~lib/rt/pure/__release local.get $4 ) - (func $~lib/array/Array<~lib/array/Array>#join (; 300 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array<~lib/array/Array>#join (; 299 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -17411,17 +17401,17 @@ local.get $4 return ) - (func $~lib/array/Array<~lib/array/Array>#toString (; 301 ;) (param $0 i32) (result i32) + (func $~lib/array/Array<~lib/array/Array>#toString (; 300 ;) (param $0 i32) (result i32) local.get $0 i32.const 5296 call $~lib/array/Array<~lib/array/Array>#join ) - (func $~lib/array/Array#toString (; 302 ;) (param $0 i32) (result i32) + (func $~lib/array/Array#toString (; 301 ;) (param $0 i32) (result i32) local.get $0 i32.const 5296 call $~lib/array/Array#join ) - (func $~lib/util/string/joinReferenceArray<~lib/array/Array> (; 303 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/util/string/joinReferenceArray<~lib/array/Array> (; 302 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -17626,7 +17616,7 @@ call $~lib/rt/pure/__release local.get $4 ) - (func $~lib/array/Array<~lib/array/Array>#join (; 304 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array<~lib/array/Array>#join (; 303 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -17649,12 +17639,12 @@ local.get $4 return ) - (func $~lib/array/Array<~lib/array/Array>#toString (; 305 ;) (param $0 i32) (result i32) + (func $~lib/array/Array<~lib/array/Array>#toString (; 304 ;) (param $0 i32) (result i32) local.get $0 i32.const 5296 call $~lib/array/Array<~lib/array/Array>#join ) - (func $~lib/util/string/joinReferenceArray<~lib/array/Array<~lib/array/Array>> (; 306 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/util/string/joinReferenceArray<~lib/array/Array<~lib/array/Array>> (; 305 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -17859,7 +17849,7 @@ call $~lib/rt/pure/__release local.get $4 ) - (func $~lib/array/Array<~lib/array/Array<~lib/array/Array>>#join (; 307 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array<~lib/array/Array<~lib/array/Array>>#join (; 306 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -17882,12 +17872,12 @@ local.get $4 return ) - (func $~lib/array/Array<~lib/array/Array<~lib/array/Array>>#toString (; 308 ;) (param $0 i32) (result i32) + (func $~lib/array/Array<~lib/array/Array<~lib/array/Array>>#toString (; 307 ;) (param $0 i32) (result i32) local.get $0 i32.const 5296 call $~lib/array/Array<~lib/array/Array<~lib/array/Array>>#join ) - (func $start:std/array (; 309 ;) + (func $start:std/array (; 308 ;) (local $0 i32) (local $1 i32) (local $2 i32) @@ -23130,8 +23120,33 @@ i32.const 5296 call $~lib/array/Array#join local.tee $29 + call $~lib/rt/pure/__retain + local.set $25 i32.const 5328 - call $~lib/string/String.__eq + call $~lib/rt/pure/__retain + local.set $55 + local.get $25 + i32.eqz + local.get $55 + i32.eqz + i32.or + if (result i32) + local.get $25 + local.get $55 + i32.eq + else + local.get $25 + local.get $55 + call $~lib/string/String.__eq + end + local.set $31 + local.get $55 + call $~lib/rt/pure/__release + local.get $25 + call $~lib/rt/pure/__release + local.get $31 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -23147,12 +23162,37 @@ i32.const 5376 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $32 + local.tee $55 i32.const 5056 call $~lib/array/Array#join - local.tee $31 + local.tee $25 + call $~lib/rt/pure/__retain + local.set $22 i32.const 5856 - call $~lib/string/String.__eq + call $~lib/rt/pure/__retain + local.set $20 + local.get $22 + i32.eqz + local.get $20 + i32.eqz + i32.or + if (result i32) + local.get $22 + local.get $20 + i32.eq + else + local.get $22 + local.get $20 + call $~lib/string/String.__eq + end + local.set $31 + local.get $20 + call $~lib/rt/pure/__release + local.get $22 + call $~lib/rt/pure/__release + local.get $31 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -23168,12 +23208,37 @@ i32.const 5888 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $37 + local.tee $20 i32.const 5920 call $~lib/array/Array#join - local.tee $36 + local.tee $22 + call $~lib/rt/pure/__retain + local.set $24 i32.const 5856 - call $~lib/string/String.__eq + call $~lib/rt/pure/__retain + local.set $21 + local.get $24 + i32.eqz + local.get $21 + i32.eqz + i32.or + if (result i32) + local.get $24 + local.get $21 + i32.eq + else + local.get $24 + local.get $21 + call $~lib/string/String.__eq + end + local.set $31 + local.get $21 + call $~lib/rt/pure/__release + local.get $24 + call $~lib/rt/pure/__release + local.get $31 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -23189,12 +23254,37 @@ i32.const 5952 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $35 + local.tee $21 i32.const 5984 call $~lib/array/Array#join - local.tee $54 + local.tee $24 + call $~lib/rt/pure/__retain + local.set $19 i32.const 6016 - call $~lib/string/String.__eq + call $~lib/rt/pure/__retain + local.set $23 + local.get $19 + i32.eqz + local.get $23 + i32.eqz + i32.or + if (result i32) + local.get $19 + local.get $23 + i32.eq + else + local.get $19 + local.get $23 + call $~lib/string/String.__eq + end + local.set $31 + local.get $23 + call $~lib/rt/pure/__release + local.get $19 + call $~lib/rt/pure/__release + local.get $31 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -23210,12 +23300,37 @@ i32.const 6080 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $40 + local.tee $23 i32.const 6144 call $~lib/array/Array#join - local.tee $39 + local.tee $19 + call $~lib/rt/pure/__retain + local.set $18 i32.const 7296 - call $~lib/string/String.__eq + call $~lib/rt/pure/__retain + local.set $3 + local.get $18 + i32.eqz + local.get $3 + i32.eqz + i32.or + if (result i32) + local.get $18 + local.get $3 + i32.eq + else + local.get $18 + local.get $3 + call $~lib/string/String.__eq + end + local.set $31 + local.get $3 + call $~lib/rt/pure/__release + local.get $18 + call $~lib/rt/pure/__release + local.get $31 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -23231,12 +23346,37 @@ i32.const 7424 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $42 + local.tee $3 i32.const 5056 call $~lib/array/Array<~lib/string/String | null>#join - local.tee $38 + local.tee $18 + call $~lib/rt/pure/__retain + local.set $2 i32.const 7392 - call $~lib/string/String.__eq + call $~lib/rt/pure/__retain + local.set $17 + local.get $2 + i32.eqz + local.get $17 + i32.eqz + i32.or + if (result i32) + local.get $2 + local.get $17 + i32.eq + else + local.get $2 + local.get $17 + call $~lib/string/String.__eq + end + local.set $31 + local.get $17 + call $~lib/rt/pure/__release + local.get $2 + call $~lib/rt/pure/__release + local.get $31 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -23252,32 +23392,57 @@ i32.const 0 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.set $43 - local.get $43 + local.set $2 + local.get $2 i32.load offset=4 - local.set $41 - local.get $41 + local.set $17 + local.get $17 i32.const 0 i32.const 0 call $std/array/Ref#constructor i32.store - local.get $41 + local.get $17 i32.const 0 call $~lib/rt/pure/__retain i32.store offset=4 - local.get $41 + local.get $17 i32.const 0 i32.const 0 call $std/array/Ref#constructor i32.store offset=8 - local.get $43 - local.set $41 - local.get $41 + local.get $2 + local.set $17 + local.get $17 i32.const 5296 call $~lib/array/Array#join - local.tee $43 + local.tee $2 + call $~lib/rt/pure/__retain + local.set $15 i32.const 7504 - call $~lib/string/String.__eq + call $~lib/rt/pure/__retain + local.set $16 + local.get $15 + i32.eqz + local.get $16 + i32.eqz + i32.or + if (result i32) + local.get $15 + local.get $16 + i32.eq + else + local.get $15 + local.get $16 + call $~lib/string/String.__eq + end + local.set $31 + local.get $16 + call $~lib/rt/pure/__release + local.get $15 + call $~lib/rt/pure/__release + local.get $31 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -23293,28 +23458,53 @@ i32.const 0 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.set $44 - local.get $44 + local.set $15 + local.get $15 i32.load offset=4 - local.set $47 - local.get $47 + local.set $16 + local.get $16 i32.const 0 i32.const 0 call $std/array/Ref#constructor i32.store - local.get $47 + local.get $16 i32.const 0 i32.const 0 call $std/array/Ref#constructor i32.store offset=4 - local.get $44 - local.set $47 - local.get $47 + local.get $15 + local.set $16 + local.get $16 i32.const 5296 call $~lib/array/Array#join - local.tee $44 + local.tee $15 + call $~lib/rt/pure/__retain + local.set $14 i32.const 7584 - call $~lib/string/String.__eq + call $~lib/rt/pure/__retain + local.set $0 + local.get $14 + i32.eqz + local.get $0 + i32.eqz + i32.or + if (result i32) + local.get $14 + local.get $0 + i32.eq + else + local.get $14 + local.get $0 + call $~lib/string/String.__eq + end + local.set $31 + local.get $0 + call $~lib/rt/pure/__release + local.get $14 + call $~lib/rt/pure/__release + local.get $31 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -23328,33 +23518,33 @@ call $~lib/rt/pure/__release local.get $29 call $~lib/rt/pure/__release - local.get $32 + local.get $55 call $~lib/rt/pure/__release - local.get $31 + local.get $25 call $~lib/rt/pure/__release - local.get $37 + local.get $20 call $~lib/rt/pure/__release - local.get $36 + local.get $22 call $~lib/rt/pure/__release - local.get $35 + local.get $21 call $~lib/rt/pure/__release - local.get $54 + local.get $24 call $~lib/rt/pure/__release - local.get $40 + local.get $23 call $~lib/rt/pure/__release - local.get $39 + local.get $19 call $~lib/rt/pure/__release - local.get $42 + local.get $3 call $~lib/rt/pure/__release - local.get $38 + local.get $18 call $~lib/rt/pure/__release - local.get $41 + local.get $17 call $~lib/rt/pure/__release - local.get $43 + local.get $2 call $~lib/rt/pure/__release - local.get $47 + local.get $16 call $~lib/rt/pure/__release - local.get $44 + local.get $15 call $~lib/rt/pure/__release i32.const 0 i32.const 2 @@ -23362,33 +23552,58 @@ i32.const 7664 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.set $47 + local.set $16 i32.const 1 i32.const 2 i32.const 3 i32.const 7680 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.set $43 + local.set $2 i32.const 2 i32.const 2 i32.const 3 i32.const 7712 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.set $41 + local.set $17 i32.const 4 i32.const 2 i32.const 3 i32.const 7744 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.set $38 - local.get $47 + local.set $18 + local.get $16 call $~lib/array/Array#toString - local.tee $44 + local.tee $15 + call $~lib/rt/pure/__retain + local.set $4 i32.const 5056 - call $~lib/string/String.__eq + call $~lib/rt/pure/__retain + local.set $13 + local.get $4 + i32.eqz + local.get $13 + i32.eqz + i32.or + if (result i32) + local.get $4 + local.get $13 + i32.eq + else + local.get $4 + local.get $13 + call $~lib/string/String.__eq + end + local.set $3 + local.get $13 + call $~lib/rt/pure/__release + local.get $4 + call $~lib/rt/pure/__release + local.get $3 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -23398,11 +23613,36 @@ call $~lib/builtins/abort unreachable end - local.get $43 + local.get $2 call $~lib/array/Array#toString - local.tee $42 + local.tee $4 + call $~lib/rt/pure/__retain + local.set $11 i32.const 7392 - call $~lib/string/String.__eq + call $~lib/rt/pure/__retain + local.set $12 + local.get $11 + i32.eqz + local.get $12 + i32.eqz + i32.or + if (result i32) + local.get $11 + local.get $12 + i32.eq + else + local.get $11 + local.get $12 + call $~lib/string/String.__eq + end + local.set $13 + local.get $12 + call $~lib/rt/pure/__release + local.get $11 + call $~lib/rt/pure/__release + local.get $13 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -23412,11 +23652,36 @@ call $~lib/builtins/abort unreachable end - local.get $41 + local.get $17 call $~lib/array/Array#toString - local.tee $39 + local.tee $11 + call $~lib/rt/pure/__retain + local.set $10 i32.const 7776 - call $~lib/string/String.__eq + call $~lib/rt/pure/__retain + local.set $1 + local.get $10 + i32.eqz + local.get $1 + i32.eqz + i32.or + if (result i32) + local.get $10 + local.get $1 + i32.eq + else + local.get $10 + local.get $1 + call $~lib/string/String.__eq + end + local.set $12 + local.get $1 + call $~lib/rt/pure/__release + local.get $10 + call $~lib/rt/pure/__release + local.get $12 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -23426,11 +23691,36 @@ call $~lib/builtins/abort unreachable end - local.get $38 + local.get $18 call $~lib/array/Array#toString - local.tee $40 + local.tee $10 + call $~lib/rt/pure/__retain + local.set $5 i32.const 7808 - call $~lib/string/String.__eq + call $~lib/rt/pure/__retain + local.set $9 + local.get $5 + i32.eqz + local.get $9 + i32.eqz + i32.or + if (result i32) + local.get $5 + local.get $9 + i32.eq + else + local.get $5 + local.get $9 + call $~lib/string/String.__eq + end + local.set $1 + local.get $9 + call $~lib/rt/pure/__release + local.get $5 + call $~lib/rt/pure/__release + local.get $1 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -23446,11 +23736,36 @@ i32.const 7840 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $35 + local.tee $9 call $~lib/array/Array#toString - local.tee $54 + local.tee $5 + call $~lib/rt/pure/__retain + local.set $7 i32.const 7872 - call $~lib/string/String.__eq + call $~lib/rt/pure/__retain + local.set $8 + local.get $7 + i32.eqz + local.get $8 + i32.eqz + i32.or + if (result i32) + local.get $7 + local.get $8 + i32.eq + else + local.get $7 + local.get $8 + call $~lib/string/String.__eq + end + local.set $1 + local.get $8 + call $~lib/rt/pure/__release + local.get $7 + call $~lib/rt/pure/__release + local.get $1 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -23466,11 +23781,36 @@ i32.const 7904 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $37 + local.tee $8 call $~lib/array/Array#toString - local.tee $36 + local.tee $7 + call $~lib/rt/pure/__retain + local.set $27 i32.const 7936 - call $~lib/string/String.__eq + call $~lib/rt/pure/__retain + local.set $6 + local.get $27 + i32.eqz + local.get $6 + i32.eqz + i32.or + if (result i32) + local.get $27 + local.get $6 + i32.eq + else + local.get $27 + local.get $6 + call $~lib/string/String.__eq + end + local.set $1 + local.get $6 + call $~lib/rt/pure/__release + local.get $27 + call $~lib/rt/pure/__release + local.get $1 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -23486,11 +23826,36 @@ i32.const 7984 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $32 + local.tee $6 call $~lib/array/Array#toString - local.tee $31 + local.tee $27 + call $~lib/rt/pure/__retain + local.set $26 i32.const 8032 - call $~lib/string/String.__eq + call $~lib/rt/pure/__retain + local.set $28 + local.get $26 + i32.eqz + local.get $28 + i32.eqz + i32.or + if (result i32) + local.get $26 + local.get $28 + i32.eq + else + local.get $26 + local.get $28 + call $~lib/string/String.__eq + end + local.set $1 + local.get $28 + call $~lib/rt/pure/__release + local.get $26 + call $~lib/rt/pure/__release + local.get $1 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -23506,11 +23871,36 @@ i32.const 8096 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $34 + local.tee $28 call $~lib/array/Array#toString - local.tee $29 + local.tee $26 + call $~lib/rt/pure/__retain + local.set $33 i32.const 8144 - call $~lib/string/String.__eq + call $~lib/rt/pure/__retain + local.set $30 + local.get $33 + i32.eqz + local.get $30 + i32.eqz + i32.or + if (result i32) + local.get $33 + local.get $30 + i32.eq + else + local.get $33 + local.get $30 + call $~lib/string/String.__eq + end + local.set $1 + local.get $30 + call $~lib/rt/pure/__release + local.get $33 + call $~lib/rt/pure/__release + local.get $1 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -23526,12 +23916,37 @@ i32.const 8256 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.set $49 - local.get $49 + local.set $30 + local.get $30 call $~lib/array/Array<~lib/string/String | null>#toString - local.tee $48 + local.tee $33 + call $~lib/rt/pure/__retain + local.set $51 i32.const 8304 - call $~lib/string/String.__eq + call $~lib/rt/pure/__retain + local.set $50 + local.get $51 + i32.eqz + local.get $50 + i32.eqz + i32.or + if (result i32) + local.get $51 + local.get $50 + i32.eq + else + local.get $51 + local.get $50 + call $~lib/string/String.__eq + end + local.set $1 + local.get $50 + call $~lib/rt/pure/__release + local.get $51 + call $~lib/rt/pure/__release + local.get $1 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -23550,8 +23965,33 @@ local.tee $50 call $~lib/array/Array<~lib/string/String | null>#toString local.tee $51 + call $~lib/rt/pure/__retain + local.set $48 i32.const 8448 - call $~lib/string/String.__eq + call $~lib/rt/pure/__retain + local.set $49 + local.get $48 + i32.eqz + local.get $49 + i32.eqz + i32.or + if (result i32) + local.get $48 + local.get $49 + i32.eq + else + local.get $48 + local.get $49 + call $~lib/string/String.__eq + end + local.set $1 + local.get $49 + call $~lib/rt/pure/__release + local.get $48 + call $~lib/rt/pure/__release + local.get $1 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -23567,11 +24007,11 @@ i32.const 0 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.set $33 - local.get $33 + local.set $48 + local.get $48 i32.load offset=4 - local.set $30 - local.get $30 + local.set $49 + local.get $49 i32.const 2 i32.const 2 i32.const 3 @@ -23579,7 +24019,7 @@ call $~lib/rt/__allocArray call $~lib/rt/pure/__retain i32.store - local.get $30 + local.get $49 i32.const 2 i32.const 2 i32.const 3 @@ -23587,13 +24027,38 @@ call $~lib/rt/__allocArray call $~lib/rt/pure/__retain i32.store offset=4 - local.get $33 + local.get $48 local.set $56 local.get $56 call $~lib/array/Array<~lib/array/Array>#toString - local.tee $30 + local.tee $49 + call $~lib/rt/pure/__retain + local.set $44 i32.const 8544 - call $~lib/string/String.__eq + call $~lib/rt/pure/__retain + local.set $47 + local.get $44 + i32.eqz + local.get $47 + i32.eqz + i32.or + if (result i32) + local.get $44 + local.get $47 + i32.eq + else + local.get $44 + local.get $47 + call $~lib/string/String.__eq + end + local.set $48 + local.get $47 + call $~lib/rt/pure/__release + local.get $44 + call $~lib/rt/pure/__release + local.get $48 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -23609,11 +24074,11 @@ i32.const 0 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.set $33 - local.get $33 + local.set $44 + local.get $44 i32.load offset=4 - local.set $26 - local.get $26 + local.set $47 + local.get $47 i32.const 2 i32.const 0 i32.const 6 @@ -23621,7 +24086,7 @@ call $~lib/rt/__allocArray call $~lib/rt/pure/__retain i32.store - local.get $26 + local.get $47 i32.const 2 i32.const 0 i32.const 6 @@ -23629,13 +24094,38 @@ call $~lib/rt/__allocArray call $~lib/rt/pure/__retain i32.store offset=4 - local.get $33 + local.get $44 local.set $57 local.get $57 call $~lib/array/Array<~lib/array/Array>#toString - local.tee $26 + local.tee $47 + call $~lib/rt/pure/__retain + local.set $43 i32.const 8544 - call $~lib/string/String.__eq + call $~lib/rt/pure/__retain + local.set $41 + local.get $43 + i32.eqz + local.get $41 + i32.eqz + i32.or + if (result i32) + local.get $43 + local.get $41 + i32.eq + else + local.get $43 + local.get $41 + call $~lib/string/String.__eq + end + local.set $44 + local.get $41 + call $~lib/rt/pure/__release + local.get $43 + call $~lib/rt/pure/__release + local.get $44 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -23651,22 +24141,22 @@ i32.const 0 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.set $33 - local.get $33 + local.set $43 + local.get $43 i32.load offset=4 - local.set $28 - local.get $28 + local.set $41 + local.get $41 i32.const 1 i32.const 2 i32.const 26 i32.const 0 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.set $27 - local.get $27 + local.set $44 + local.get $44 i32.load offset=4 - local.set $6 - local.get $6 + local.set $48 + local.get $48 i32.const 1 i32.const 2 i32.const 7 @@ -23674,15 +24164,40 @@ call $~lib/rt/__allocArray call $~lib/rt/pure/__retain i32.store - local.get $27 + local.get $44 i32.store - local.get $33 + local.get $43 local.set $58 local.get $58 call $~lib/array/Array<~lib/array/Array<~lib/array/Array>>#toString - local.tee $28 + local.tee $41 + call $~lib/rt/pure/__retain + local.set $38 i32.const 7392 - call $~lib/string/String.__eq + call $~lib/rt/pure/__retain + local.set $42 + local.get $38 + i32.eqz + local.get $42 + i32.eqz + i32.or + if (result i32) + local.get $38 + local.get $42 + i32.eq + else + local.get $38 + local.get $42 + call $~lib/string/String.__eq + end + local.set $43 + local.get $42 + call $~lib/rt/pure/__release + local.get $38 + call $~lib/rt/pure/__release + local.get $43 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -23692,51 +24207,51 @@ call $~lib/builtins/abort unreachable end - local.get $47 + local.get $16 call $~lib/rt/pure/__release - local.get $43 + local.get $2 call $~lib/rt/pure/__release - local.get $41 + local.get $17 call $~lib/rt/pure/__release - local.get $38 + local.get $18 call $~lib/rt/pure/__release - local.get $44 + local.get $15 call $~lib/rt/pure/__release - local.get $42 + local.get $4 call $~lib/rt/pure/__release - local.get $39 + local.get $11 call $~lib/rt/pure/__release - local.get $40 + local.get $10 call $~lib/rt/pure/__release - local.get $35 + local.get $9 call $~lib/rt/pure/__release - local.get $54 + local.get $5 call $~lib/rt/pure/__release - local.get $37 + local.get $8 call $~lib/rt/pure/__release - local.get $36 + local.get $7 call $~lib/rt/pure/__release - local.get $32 + local.get $6 call $~lib/rt/pure/__release - local.get $31 + local.get $27 call $~lib/rt/pure/__release - local.get $34 + local.get $28 call $~lib/rt/pure/__release - local.get $29 + local.get $26 call $~lib/rt/pure/__release - local.get $49 + local.get $30 call $~lib/rt/pure/__release - local.get $48 + local.get $33 call $~lib/rt/pure/__release local.get $50 call $~lib/rt/pure/__release local.get $51 call $~lib/rt/pure/__release - local.get $30 + local.get $49 call $~lib/rt/pure/__release - local.get $26 + local.get $47 call $~lib/rt/pure/__release - local.get $28 + local.get $41 call $~lib/rt/pure/__release global.get $std/array/arr call $~lib/rt/pure/__release @@ -23755,7 +24270,7 @@ local.get $58 call $~lib/rt/pure/__release ) - (func $~start (; 310 ;) + (func $~start (; 309 ;) global.get $~started if return @@ -23765,10 +24280,10 @@ end call $start:std/array ) - (func $~lib/rt/pure/__collect (; 311 ;) + (func $~lib/rt/pure/__collect (; 310 ;) return ) - (func $~lib/rt/pure/decrement (; 312 ;) (param $0 i32) + (func $~lib/rt/pure/decrement (; 311 ;) (param $0 i32) (local $1 i32) (local $2 i32) local.get $0 @@ -23845,7 +24360,7 @@ i32.store offset=4 end ) - (func $~lib/rt/pure/__visit (; 313 ;) (param $0 i32) (param $1 i32) + (func $~lib/rt/pure/__visit (; 312 ;) (param $0 i32) (param $1 i32) local.get $0 global.get $~lib/heap/__heap_base i32.lt_u @@ -23869,25 +24384,25 @@ i32.sub call $~lib/rt/pure/decrement ) - (func $~lib/array/Array#__visit_impl (; 314 ;) (param $0 i32) (param $1 i32) + (func $~lib/array/Array#__visit_impl (; 313 ;) (param $0 i32) (param $1 i32) local.get $0 i32.load local.get $1 call $~lib/rt/pure/__visit ) - (func $~lib/array/Array#__visit_impl (; 315 ;) (param $0 i32) (param $1 i32) + (func $~lib/array/Array#__visit_impl (; 314 ;) (param $0 i32) (param $1 i32) local.get $0 i32.load local.get $1 call $~lib/rt/pure/__visit ) - (func $~lib/array/Array#__visit_impl (; 316 ;) (param $0 i32) (param $1 i32) + (func $~lib/array/Array#__visit_impl (; 315 ;) (param $0 i32) (param $1 i32) local.get $0 i32.load local.get $1 call $~lib/rt/pure/__visit ) - (func $~lib/array/Array#__visit_impl (; 317 ;) (param $0 i32) (param $1 i32) + (func $~lib/array/Array#__visit_impl (; 316 ;) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -23930,19 +24445,19 @@ local.get $1 call $~lib/rt/pure/__visit ) - (func $~lib/array/Array#__visit_impl (; 318 ;) (param $0 i32) (param $1 i32) + (func $~lib/array/Array#__visit_impl (; 317 ;) (param $0 i32) (param $1 i32) local.get $0 i32.load local.get $1 call $~lib/rt/pure/__visit ) - (func $~lib/array/Array#__visit_impl (; 319 ;) (param $0 i32) (param $1 i32) + (func $~lib/array/Array#__visit_impl (; 318 ;) (param $0 i32) (param $1 i32) local.get $0 i32.load local.get $1 call $~lib/rt/pure/__visit ) - (func $~lib/array/Array#__visit_impl (; 320 ;) (param $0 i32) (param $1 i32) + (func $~lib/array/Array#__visit_impl (; 319 ;) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -23985,7 +24500,7 @@ local.get $1 call $~lib/rt/pure/__visit ) - (func $~lib/array/Array<~lib/array/Array>#__visit_impl (; 321 ;) (param $0 i32) (param $1 i32) + (func $~lib/array/Array<~lib/array/Array>#__visit_impl (; 320 ;) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -24028,7 +24543,7 @@ local.get $1 call $~lib/rt/pure/__visit ) - (func $~lib/array/Array>#__visit_impl (; 322 ;) (param $0 i32) (param $1 i32) + (func $~lib/array/Array>#__visit_impl (; 321 ;) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -24071,7 +24586,7 @@ local.get $1 call $~lib/rt/pure/__visit ) - (func $~lib/array/Array<~lib/string/String | null>#__visit_impl (; 323 ;) (param $0 i32) (param $1 i32) + (func $~lib/array/Array<~lib/string/String | null>#__visit_impl (; 322 ;) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -24114,7 +24629,7 @@ local.get $1 call $~lib/rt/pure/__visit ) - (func $~lib/array/Array<~lib/string/String>#__visit_impl (; 324 ;) (param $0 i32) (param $1 i32) + (func $~lib/array/Array<~lib/string/String>#__visit_impl (; 323 ;) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -24157,46 +24672,46 @@ local.get $1 call $~lib/rt/pure/__visit ) - (func $~lib/array/Array#__visit_impl (; 325 ;) (param $0 i32) (param $1 i32) + (func $~lib/array/Array#__visit_impl (; 324 ;) (param $0 i32) (param $1 i32) local.get $0 i32.load local.get $1 call $~lib/rt/pure/__visit ) - (func $~lib/staticarray/StaticArray#__visit_impl (; 326 ;) (param $0 i32) (param $1 i32) + (func $~lib/staticarray/StaticArray#__visit_impl (; 325 ;) (param $0 i32) (param $1 i32) nop ) - (func $~lib/staticarray/StaticArray#__visit_impl (; 327 ;) (param $0 i32) (param $1 i32) + (func $~lib/staticarray/StaticArray#__visit_impl (; 326 ;) (param $0 i32) (param $1 i32) nop ) - (func $~lib/staticarray/StaticArray#__visit_impl (; 328 ;) (param $0 i32) (param $1 i32) + (func $~lib/staticarray/StaticArray#__visit_impl (; 327 ;) (param $0 i32) (param $1 i32) nop ) - (func $~lib/array/Array#__visit_impl (; 329 ;) (param $0 i32) (param $1 i32) + (func $~lib/array/Array#__visit_impl (; 328 ;) (param $0 i32) (param $1 i32) local.get $0 i32.load local.get $1 call $~lib/rt/pure/__visit ) - (func $~lib/array/Array#__visit_impl (; 330 ;) (param $0 i32) (param $1 i32) + (func $~lib/array/Array#__visit_impl (; 329 ;) (param $0 i32) (param $1 i32) local.get $0 i32.load local.get $1 call $~lib/rt/pure/__visit ) - (func $~lib/array/Array#__visit_impl (; 331 ;) (param $0 i32) (param $1 i32) + (func $~lib/array/Array#__visit_impl (; 330 ;) (param $0 i32) (param $1 i32) local.get $0 i32.load local.get $1 call $~lib/rt/pure/__visit ) - (func $~lib/array/Array#__visit_impl (; 332 ;) (param $0 i32) (param $1 i32) + (func $~lib/array/Array#__visit_impl (; 331 ;) (param $0 i32) (param $1 i32) local.get $0 i32.load local.get $1 call $~lib/rt/pure/__visit ) - (func $~lib/array/Array<~lib/array/Array>#__visit_impl (; 333 ;) (param $0 i32) (param $1 i32) + (func $~lib/array/Array<~lib/array/Array>#__visit_impl (; 332 ;) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -24239,7 +24754,7 @@ local.get $1 call $~lib/rt/pure/__visit ) - (func $~lib/array/Array<~lib/array/Array>#__visit_impl (; 334 ;) (param $0 i32) (param $1 i32) + (func $~lib/array/Array<~lib/array/Array>#__visit_impl (; 333 ;) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -24282,7 +24797,7 @@ local.get $1 call $~lib/rt/pure/__visit ) - (func $~lib/array/Array<~lib/array/Array<~lib/array/Array>>#__visit_impl (; 335 ;) (param $0 i32) (param $1 i32) + (func $~lib/array/Array<~lib/array/Array<~lib/array/Array>>#__visit_impl (; 334 ;) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -24325,7 +24840,7 @@ local.get $1 call $~lib/rt/pure/__visit ) - (func $~lib/rt/__visit_members (; 336 ;) (param $0 i32) (param $1 i32) + (func $~lib/rt/__visit_members (; 335 ;) (param $0 i32) (param $1 i32) (local $2 i32) block $switch$1$default block $switch$1$case$29 diff --git a/tests/compiler/std/object-literal.optimized.wat b/tests/compiler/std/object-literal.optimized.wat index 282dece60c..aee3d6d8a7 100644 --- a/tests/compiler/std/object-literal.optimized.wat +++ b/tests/compiler/std/object-literal.optimized.wat @@ -206,35 +206,29 @@ call $~lib/builtins/abort unreachable end - block $__inlined_func$~lib/string/String.__eq (result i32) - i32.const 1 - local.get $0 - i32.load offset=4 - local.tee $1 - i32.const 1040 - i32.eq - br_if $__inlined_func$~lib/string/String.__eq - drop - block $folding-inner0 + local.get $0 + i32.load offset=4 + local.tee $0 + if (result i32) + block $__inlined_func$~lib/string/String.__eq (result i32) i32.const 0 - i32.const 1 - local.get $1 - select - br_if $folding-inner0 - local.get $1 + local.get $0 call $~lib/string/String#get:length - local.tee $0 + local.tee $1 i32.const 1040 call $~lib/string/String#get:length i32.ne - br_if $folding-inner0 - local.get $1 + br_if $__inlined_func$~lib/string/String.__eq + drop local.get $0 + local.get $1 call $~lib/util/string/compareImpl i32.eqz - br $__inlined_func$~lib/string/String.__eq end - i32.const 0 + else + local.get $0 + i32.const 1040 + i32.eq end i32.eqz if diff --git a/tests/compiler/std/object-literal.untouched.wat b/tests/compiler/std/object-literal.untouched.wat index 5260c9ecc9..a35e0a1a1d 100644 --- a/tests/compiler/std/object-literal.untouched.wat +++ b/tests/compiler/std/object-literal.untouched.wat @@ -126,10 +126,7 @@ (func $~lib/rt/stub/__retain (; 3 ;) (param $0 i32) (result i32) local.get $0 ) - (func $~lib/rt/stub/__release (; 4 ;) (param $0 i32) - nop - ) - (func $~lib/string/String#get:length (; 5 ;) (param $0 i32) (result i32) + (func $~lib/string/String#get:length (; 4 ;) (param $0 i32) (result i32) local.get $0 i32.const 16 i32.sub @@ -137,6 +134,9 @@ i32.const 1 i32.shr_u ) + (func $~lib/rt/stub/__release (; 5 ;) (param $0 i32) + nop + ) (func $~lib/util/string/compareImpl (; 6 ;) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (result i32) (local $5 i32) (local $6 i32) @@ -269,68 +269,40 @@ call $~lib/rt/stub/__retain local.set $1 local.get $0 - local.get $1 - i32.eq - if - i32.const 1 - local.set $2 - local.get $0 - call $~lib/rt/stub/__release - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - return - end - local.get $0 - i32.eqz - if (result i32) - i32.const 1 - else - local.get $1 - i32.eqz - end - if - i32.const 0 - local.set $2 - local.get $0 - call $~lib/rt/stub/__release - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - return - end - local.get $0 call $~lib/string/String#get:length - local.set $3 - local.get $3 + local.set $2 + local.get $2 local.get $1 call $~lib/string/String#get:length i32.ne if i32.const 0 - local.set $2 + local.set $3 local.get $0 call $~lib/rt/stub/__release local.get $1 call $~lib/rt/stub/__release - local.get $2 + local.get $3 return end local.get $0 i32.const 0 local.get $1 i32.const 0 - local.get $3 + local.get $2 call $~lib/util/string/compareImpl i32.eqz - local.set $2 + local.set $3 local.get $0 call $~lib/rt/stub/__release local.get $1 call $~lib/rt/stub/__release - local.get $2 + local.get $3 ) (func $std/object-literal/bar (; 8 ;) (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) local.get $0 call $~lib/rt/stub/__retain local.set $0 @@ -349,8 +321,33 @@ end local.get $0 i32.load offset=4 + call $~lib/rt/stub/__retain + local.set $2 i32.const 32 - call $~lib/string/String.__eq + call $~lib/rt/stub/__retain + local.set $1 + local.get $2 + i32.eqz + local.get $1 + i32.eqz + i32.or + if (result i32) + local.get $2 + local.get $1 + i32.eq + else + local.get $2 + local.get $1 + call $~lib/string/String.__eq + end + local.set $3 + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release + local.get $3 + i32.const 0 + i32.ne i32.eqz if i32.const 0 diff --git a/tests/compiler/std/object.optimized.wat b/tests/compiler/std/object.optimized.wat index 8279cd05f9..db6bd54ad8 100644 --- a/tests/compiler/std/object.optimized.wat +++ b/tests/compiler/std/object.optimized.wat @@ -150,35 +150,32 @@ ) (func $~lib/object/Object.is<~lib/string/String> (; 6 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) - block $__inlined_func$~lib/string/String.__eq (result i32) - i32.const 1 + local.get $0 + i32.eqz + local.get $1 + i32.eqz + i32.or + if (result i32) local.get $0 local.get $1 i32.eq - br_if $__inlined_func$~lib/string/String.__eq - drop - block $folding-inner0 - local.get $1 - i32.eqz - i32.const 1 - local.get $0 - select - br_if $folding-inner0 + else + block $__inlined_func$~lib/string/String.__eq (result i32) + i32.const 0 local.get $0 call $~lib/string/String#get:length local.tee $2 local.get $1 call $~lib/string/String#get:length i32.ne - br_if $folding-inner0 + br_if $__inlined_func$~lib/string/String.__eq + drop local.get $0 local.get $1 local.get $2 call $~lib/util/string/compareImpl i32.eqz - br $__inlined_func$~lib/string/String.__eq end - i32.const 0 end ) (func $start:std/object (; 7 ;) @@ -563,6 +560,8 @@ i32.const 1088 i32.const 1088 call $~lib/object/Object.is<~lib/string/String> + i32.const 0 + i32.ne i32.const 1 i32.ne if @@ -598,6 +597,8 @@ i32.const 0 i32.const 0 call $~lib/object/Object.is<~lib/string/String> + i32.const 0 + i32.ne i32.const 1 i32.ne if diff --git a/tests/compiler/std/object.untouched.wat b/tests/compiler/std/object.untouched.wat index dc29bd87ef..21891ec4ae 100644 --- a/tests/compiler/std/object.untouched.wat +++ b/tests/compiler/std/object.untouched.wat @@ -77,10 +77,7 @@ (func $~lib/rt/stub/__retain (; 5 ;) (param $0 i32) (result i32) local.get $0 ) - (func $~lib/rt/stub/__release (; 6 ;) (param $0 i32) - nop - ) - (func $~lib/string/String#get:length (; 7 ;) (param $0 i32) (result i32) + (func $~lib/string/String#get:length (; 6 ;) (param $0 i32) (result i32) local.get $0 i32.const 16 i32.sub @@ -88,6 +85,9 @@ i32.const 1 i32.shr_u ) + (func $~lib/rt/stub/__release (; 7 ;) (param $0 i32) + nop + ) (func $~lib/util/string/compareImpl (; 8 ;) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (result i32) (local $5 i32) (local $6 i32) @@ -220,69 +220,40 @@ call $~lib/rt/stub/__retain local.set $1 local.get $0 - local.get $1 - i32.eq - if - i32.const 1 - local.set $2 - local.get $0 - call $~lib/rt/stub/__release - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - return - end - local.get $0 - i32.eqz - if (result i32) - i32.const 1 - else - local.get $1 - i32.eqz - end - if - i32.const 0 - local.set $2 - local.get $0 - call $~lib/rt/stub/__release - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - return - end - local.get $0 call $~lib/string/String#get:length - local.set $3 - local.get $3 + local.set $2 + local.get $2 local.get $1 call $~lib/string/String#get:length i32.ne if i32.const 0 - local.set $2 + local.set $3 local.get $0 call $~lib/rt/stub/__release local.get $1 call $~lib/rt/stub/__release - local.get $2 + local.get $3 return end local.get $0 i32.const 0 local.get $1 i32.const 0 - local.get $3 + local.get $2 call $~lib/util/string/compareImpl i32.eqz - local.set $2 + local.set $3 local.get $0 call $~lib/rt/stub/__release local.get $1 call $~lib/rt/stub/__release - local.get $2 + local.get $3 ) (func $~lib/object/Object.is<~lib/string/String> (; 10 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) + (local $3 i32) + (local $4 i32) local.get $0 call $~lib/rt/stub/__retain local.set $0 @@ -290,17 +261,42 @@ call $~lib/rt/stub/__retain local.set $1 local.get $0 + call $~lib/rt/stub/__retain + local.set $3 local.get $1 - call $~lib/string/String.__eq + call $~lib/rt/stub/__retain local.set $2 + local.get $3 + i32.eqz + local.get $2 + i32.eqz + i32.or + if (result i32) + local.get $3 + local.get $2 + i32.eq + else + local.get $3 + local.get $2 + call $~lib/string/String.__eq + end + local.set $4 + local.get $2 + call $~lib/rt/stub/__release + local.get $3 + call $~lib/rt/stub/__release + local.get $4 + local.set $3 local.get $0 call $~lib/rt/stub/__release local.get $1 call $~lib/rt/stub/__release - local.get $2 + local.get $3 ) (func $~lib/object/Object.is<~lib/string/String | null> (; 11 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) + (local $3 i32) + (local $4 i32) local.get $0 call $~lib/rt/stub/__retain local.set $0 @@ -308,14 +304,37 @@ call $~lib/rt/stub/__retain local.set $1 local.get $0 + call $~lib/rt/stub/__retain + local.set $3 local.get $1 - call $~lib/string/String.__eq + call $~lib/rt/stub/__retain local.set $2 + local.get $3 + i32.eqz + local.get $2 + i32.eqz + i32.or + if (result i32) + local.get $3 + local.get $2 + i32.eq + else + local.get $3 + local.get $2 + call $~lib/string/String.__eq + end + local.set $4 + local.get $2 + call $~lib/rt/stub/__release + local.get $3 + call $~lib/rt/stub/__release + local.get $4 + local.set $3 local.get $0 call $~lib/rt/stub/__release local.get $1 call $~lib/rt/stub/__release - local.get $2 + local.get $3 ) (func $start:std/object (; 12 ;) f64.const 0 @@ -797,6 +816,8 @@ i32.const 80 i32.const 80 call $~lib/object/Object.is<~lib/string/String> + i32.const 0 + i32.ne i32.const 1 i32.eq i32.eqz @@ -812,6 +833,8 @@ i32.const 112 call $~lib/object/Object.is<~lib/string/String> i32.const 0 + i32.ne + i32.const 0 i32.eq i32.eqz if @@ -826,6 +849,8 @@ i32.const 144 call $~lib/object/Object.is<~lib/string/String> i32.const 0 + i32.ne + i32.const 0 i32.eq i32.eqz if @@ -839,6 +864,8 @@ i32.const 0 i32.const 0 call $~lib/object/Object.is<~lib/string/String | null> + i32.const 0 + i32.ne i32.const 1 i32.eq i32.eqz @@ -854,6 +881,8 @@ i32.const 0 call $~lib/object/Object.is<~lib/string/String | null> i32.const 0 + i32.ne + i32.const 0 i32.eq i32.eqz if @@ -868,6 +897,8 @@ i32.const 176 call $~lib/object/Object.is<~lib/string/String | null> i32.const 0 + i32.ne + i32.const 0 i32.eq i32.eqz if diff --git a/tests/compiler/std/string-casemapping.optimized.wat b/tests/compiler/std/string-casemapping.optimized.wat index 1f6e658316..73cac1c34c 100644 --- a/tests/compiler/std/string-casemapping.optimized.wat +++ b/tests/compiler/std/string-casemapping.optimized.wat @@ -2257,22 +2257,6 @@ (func $~lib/string/String.__eq (; 28 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) local.get $0 - local.get $1 - i32.eq - if - i32.const 1 - return - end - local.get $1 - i32.eqz - i32.const 1 - local.get $0 - select - if - i32.const 0 - return - end - local.get $0 call $~lib/string/String#get:length local.tee $2 local.get $1 @@ -2901,12 +2885,12 @@ i32.add ) (func $start:std/string-casemapping (; 33 ;) - (local $0 i64) + (local $0 i32) (local $1 i64) (local $2 i64) - (local $3 i32) - (local $4 i64) - (local $5 i32) + (local $3 i64) + (local $4 i32) + (local $5 i64) (local $6 i32) (local $7 i64) (local $8 i32) @@ -2999,8 +2983,16 @@ i32.const 1040 call $~lib/string/String#toUpperCase local.tee $9 - i32.const 1040 - call $~lib/string/String.__eq + local.tee $0 + if (result i32) + local.get $0 + i32.const 1040 + call $~lib/string/String.__eq + else + local.get $0 + i32.const 1040 + i32.eq + end i32.eqz if i32.const 0 @@ -3013,8 +3005,16 @@ i32.const 1040 call $~lib/string/String#toLowerCase local.tee $10 - i32.const 1040 - call $~lib/string/String.__eq + local.tee $0 + if (result i32) + local.get $0 + i32.const 1040 + call $~lib/string/String.__eq + else + local.get $0 + i32.const 1040 + i32.eq + end i32.eqz if i32.const 0 @@ -3027,8 +3027,16 @@ i32.const 11344 call $~lib/string/String#toUpperCase local.tee $11 - i32.const 11392 - call $~lib/string/String.__eq + local.tee $0 + if (result i32) + local.get $0 + i32.const 11392 + call $~lib/string/String.__eq + else + local.get $0 + i32.const 11392 + i32.eq + end i32.eqz if i32.const 0 @@ -3041,8 +3049,16 @@ i32.const 11440 call $~lib/string/String#toLowerCase local.tee $12 - i32.const 11488 - call $~lib/string/String.__eq + local.tee $0 + if (result i32) + local.get $0 + i32.const 11488 + call $~lib/string/String.__eq + else + local.get $0 + i32.const 11488 + i32.eq + end i32.eqz if i32.const 0 @@ -3055,8 +3071,16 @@ i32.const 11536 call $~lib/string/String#toUpperCase local.tee $13 - i32.const 11632 - call $~lib/string/String.__eq + local.tee $0 + if (result i32) + local.get $0 + i32.const 11632 + call $~lib/string/String.__eq + else + local.get $0 + i32.const 11632 + i32.eq + end i32.eqz if i32.const 0 @@ -3069,8 +3093,16 @@ i32.const 11632 call $~lib/string/String#toLowerCase local.tee $14 - i32.const 11728 - call $~lib/string/String.__eq + local.tee $0 + if (result i32) + local.get $0 + i32.const 11728 + call $~lib/string/String.__eq + else + local.get $0 + i32.const 11728 + i32.eq + end i32.eqz if i32.const 0 @@ -3083,8 +3115,16 @@ i32.const 11824 call $~lib/string/String#toUpperCase local.tee $15 - i32.const 11888 - call $~lib/string/String.__eq + local.tee $0 + if (result i32) + local.get $0 + i32.const 11888 + call $~lib/string/String.__eq + else + local.get $0 + i32.const 11888 + i32.eq + end i32.eqz if i32.const 0 @@ -3097,8 +3137,16 @@ i32.const 11888 call $~lib/string/String#toLowerCase local.tee $16 - i32.const 11952 - call $~lib/string/String.__eq + local.tee $0 + if (result i32) + local.get $0 + i32.const 11952 + call $~lib/string/String.__eq + else + local.get $0 + i32.const 11952 + i32.eq + end i32.eqz if i32.const 0 @@ -3111,8 +3159,16 @@ i32.const 12016 call $~lib/string/String#toUpperCase local.tee $17 - i32.const 12112 - call $~lib/string/String.__eq + local.tee $0 + if (result i32) + local.get $0 + i32.const 12112 + call $~lib/string/String.__eq + else + local.get $0 + i32.const 12112 + i32.eq + end i32.eqz if i32.const 0 @@ -3125,8 +3181,16 @@ i32.const 12112 call $~lib/string/String#toLowerCase local.tee $18 - i32.const 12208 - call $~lib/string/String.__eq + local.tee $0 + if (result i32) + local.get $0 + i32.const 12208 + call $~lib/string/String.__eq + else + local.get $0 + i32.const 12208 + i32.eq + end i32.eqz if i32.const 0 @@ -3139,8 +3203,16 @@ i32.const 12304 call $~lib/string/String#toUpperCase local.tee $19 - i32.const 12400 - call $~lib/string/String.__eq + local.tee $0 + if (result i32) + local.get $0 + i32.const 12400 + call $~lib/string/String.__eq + else + local.get $0 + i32.const 12400 + i32.eq + end i32.eqz if i32.const 0 @@ -3153,8 +3225,16 @@ i32.const 12400 call $~lib/string/String#toLowerCase local.tee $20 - i32.const 12496 - call $~lib/string/String.__eq + local.tee $0 + if (result i32) + local.get $0 + i32.const 12496 + call $~lib/string/String.__eq + else + local.get $0 + i32.const 12496 + i32.eq + end i32.eqz if i32.const 0 @@ -3167,8 +3247,16 @@ i32.const 12592 call $~lib/string/String#toUpperCase local.tee $21 - i32.const 12656 - call $~lib/string/String.__eq + local.tee $0 + if (result i32) + local.get $0 + i32.const 12656 + call $~lib/string/String.__eq + else + local.get $0 + i32.const 12656 + i32.eq + end i32.eqz if i32.const 0 @@ -3181,8 +3269,16 @@ i32.const 12720 call $~lib/string/String#toUpperCase local.tee $22 - i32.const 12784 - call $~lib/string/String.__eq + local.tee $0 + if (result i32) + local.get $0 + i32.const 12784 + call $~lib/string/String.__eq + else + local.get $0 + i32.const 12784 + i32.eq + end i32.eqz if i32.const 0 @@ -3195,8 +3291,16 @@ i32.const 12864 call $~lib/string/String#toUpperCase local.tee $23 - i32.const 12928 - call $~lib/string/String.__eq + local.tee $0 + if (result i32) + local.get $0 + i32.const 12928 + call $~lib/string/String.__eq + else + local.get $0 + i32.const 12928 + i32.eq + end i32.eqz if i32.const 0 @@ -3209,8 +3313,16 @@ i32.const 12992 call $~lib/string/String#toUpperCase local.tee $24 - i32.const 13072 - call $~lib/string/String.__eq + local.tee $0 + if (result i32) + local.get $0 + i32.const 13072 + call $~lib/string/String.__eq + else + local.get $0 + i32.const 13072 + i32.eq + end i32.eqz if i32.const 0 @@ -3223,8 +3335,16 @@ i32.const 13152 call $~lib/string/String#toUpperCase local.tee $25 - i32.const 13216 - call $~lib/string/String.__eq + local.tee $0 + if (result i32) + local.get $0 + i32.const 13216 + call $~lib/string/String.__eq + else + local.get $0 + i32.const 13216 + i32.eq + end i32.eqz if i32.const 0 @@ -3237,8 +3357,16 @@ i32.const 13280 call $~lib/string/String#toUpperCase local.tee $26 - i32.const 13344 - call $~lib/string/String.__eq + local.tee $0 + if (result i32) + local.get $0 + i32.const 13344 + call $~lib/string/String.__eq + else + local.get $0 + i32.const 13344 + i32.eq + end i32.eqz if i32.const 0 @@ -3251,8 +3379,16 @@ i32.const 13408 call $~lib/string/String#toUpperCase local.tee $27 - i32.const 13488 - call $~lib/string/String.__eq + local.tee $0 + if (result i32) + local.get $0 + i32.const 13488 + call $~lib/string/String.__eq + else + local.get $0 + i32.const 13488 + i32.eq + end i32.eqz if i32.const 0 @@ -3265,8 +3401,16 @@ i32.const 13568 call $~lib/string/String#toUpperCase local.tee $28 - i32.const 13648 - call $~lib/string/String.__eq + local.tee $0 + if (result i32) + local.get $0 + i32.const 13648 + call $~lib/string/String.__eq + else + local.get $0 + i32.const 13648 + i32.eq + end i32.eqz if i32.const 0 @@ -3279,8 +3423,16 @@ i32.const 13728 call $~lib/string/String#toUpperCase local.tee $29 - i32.const 13872 - call $~lib/string/String.__eq + local.tee $0 + if (result i32) + local.get $0 + i32.const 13872 + call $~lib/string/String.__eq + else + local.get $0 + i32.const 13872 + i32.eq + end i32.eqz if i32.const 0 @@ -3293,8 +3445,16 @@ i32.const 13728 call $~lib/string/String#toLowerCase local.tee $30 - i32.const 14016 - call $~lib/string/String.__eq + local.tee $0 + if (result i32) + local.get $0 + i32.const 14016 + call $~lib/string/String.__eq + else + local.get $0 + i32.const 14016 + i32.eq + end i32.eqz if i32.const 0 @@ -3307,8 +3467,16 @@ i32.const 14160 call $~lib/string/String#toUpperCase local.tee $31 - i32.const 14192 - call $~lib/string/String.__eq + local.tee $0 + if (result i32) + local.get $0 + i32.const 14192 + call $~lib/string/String.__eq + else + local.get $0 + i32.const 14192 + i32.eq + end i32.eqz if i32.const 0 @@ -3321,8 +3489,16 @@ i32.const 14224 call $~lib/string/String#toLowerCase local.tee $32 - i32.const 14256 - call $~lib/string/String.__eq + local.tee $0 + if (result i32) + local.get $0 + i32.const 14256 + call $~lib/string/String.__eq + else + local.get $0 + i32.const 14256 + i32.eq + end i32.eqz if i32.const 0 @@ -3335,8 +3511,16 @@ i32.const 14288 call $~lib/string/String#toUpperCase local.tee $33 - i32.const 14480 - call $~lib/string/String.__eq + local.tee $0 + if (result i32) + local.get $0 + i32.const 14480 + call $~lib/string/String.__eq + else + local.get $0 + i32.const 14480 + i32.eq + end i32.eqz if i32.const 0 @@ -3351,8 +3535,16 @@ local.tee $34 call $~lib/string/String#toLowerCase local.tee $35 - i32.const 14688 - call $~lib/string/String.__eq + local.tee $0 + if (result i32) + local.get $0 + i32.const 14688 + call $~lib/string/String.__eq + else + local.get $0 + i32.const 14688 + i32.eq + end i32.eqz if i32.const 0 @@ -3367,8 +3559,16 @@ local.tee $36 call $~lib/string/String#toLowerCase local.tee $37 - i32.const 14752 - call $~lib/string/String.__eq + local.tee $0 + if (result i32) + local.get $0 + i32.const 14752 + call $~lib/string/String.__eq + else + local.get $0 + i32.const 14752 + i32.eq + end i32.eqz if i32.const 0 @@ -3383,8 +3583,16 @@ local.tee $38 call $~lib/string/String#toLowerCase local.tee $39 - i32.const 14784 - call $~lib/string/String.__eq + local.tee $0 + if (result i32) + local.get $0 + i32.const 14784 + call $~lib/string/String.__eq + else + local.get $0 + i32.const 14784 + i32.eq + end i32.eqz if i32.const 0 @@ -3399,8 +3607,16 @@ local.tee $40 call $~lib/string/String#toLowerCase local.tee $41 - i32.const 15040 - call $~lib/string/String.__eq + local.tee $0 + if (result i32) + local.get $0 + i32.const 15040 + call $~lib/string/String.__eq + else + local.get $0 + i32.const 15040 + i32.eq + end i32.eqz if i32.const 0 @@ -3415,8 +3631,16 @@ local.tee $42 call $~lib/string/String#toUpperCase local.tee $43 - i32.const 15040 - call $~lib/string/String.__eq + local.tee $0 + if (result i32) + local.get $0 + i32.const 15040 + call $~lib/string/String.__eq + else + local.get $0 + i32.const 15040 + i32.eq + end i32.eqz if i32.const 0 @@ -3429,8 +3653,16 @@ i32.const 15072 call $~lib/string/String#toLowerCase local.tee $44 - i32.const 15104 - call $~lib/string/String.__eq + local.tee $0 + if (result i32) + local.get $0 + i32.const 15104 + call $~lib/string/String.__eq + else + local.get $0 + i32.const 15104 + i32.eq + end i32.eqz if i32.const 0 @@ -3443,8 +3675,16 @@ i32.const 15136 call $~lib/string/String#toLowerCase local.tee $45 - i32.const 15168 - call $~lib/string/String.__eq + local.tee $0 + if (result i32) + local.get $0 + i32.const 15168 + call $~lib/string/String.__eq + else + local.get $0 + i32.const 15168 + i32.eq + end i32.eqz if i32.const 0 @@ -3457,13 +3697,21 @@ i32.const 15200 call $~lib/string/String#toLowerCase local.tee $46 - i32.const 15232 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 6688 - i32.const 56 + local.tee $0 + if (result i32) + local.get $0 + i32.const 15232 + call $~lib/string/String.__eq + else + local.get $0 + i32.const 15232 + i32.eq + end + i32.eqz + if + i32.const 0 + i32.const 6688 + i32.const 56 i32.const 0 call $~lib/builtins/abort unreachable @@ -3471,8 +3719,16 @@ i32.const 15264 call $~lib/string/String#toLowerCase local.tee $47 - i32.const 15296 - call $~lib/string/String.__eq + local.tee $0 + if (result i32) + local.get $0 + i32.const 15296 + call $~lib/string/String.__eq + else + local.get $0 + i32.const 15296 + i32.eq + end i32.eqz if i32.const 0 @@ -3485,8 +3741,16 @@ i32.const 15328 call $~lib/string/String#toLowerCase local.tee $48 - i32.const 15360 - call $~lib/string/String.__eq + local.tee $0 + if (result i32) + local.get $0 + i32.const 15360 + call $~lib/string/String.__eq + else + local.get $0 + i32.const 15360 + i32.eq + end i32.eqz if i32.const 0 @@ -3499,8 +3763,16 @@ i32.const 15392 call $~lib/string/String#toLowerCase local.tee $49 - i32.const 15424 - call $~lib/string/String.__eq + local.tee $0 + if (result i32) + local.get $0 + i32.const 15424 + call $~lib/string/String.__eq + else + local.get $0 + i32.const 15424 + i32.eq + end i32.eqz if i32.const 0 @@ -3513,8 +3785,16 @@ i32.const 15456 call $~lib/string/String#toLowerCase local.tee $50 - i32.const 15488 - call $~lib/string/String.__eq + local.tee $0 + if (result i32) + local.get $0 + i32.const 15488 + call $~lib/string/String.__eq + else + local.get $0 + i32.const 15488 + i32.eq + end i32.eqz if i32.const 0 @@ -3527,8 +3807,16 @@ i32.const 15520 call $~lib/string/String#toLowerCase local.tee $51 - i32.const 15552 - call $~lib/string/String.__eq + local.tee $0 + if (result i32) + local.get $0 + i32.const 15552 + call $~lib/string/String.__eq + else + local.get $0 + i32.const 15552 + i32.eq + end i32.eqz if i32.const 0 @@ -3541,8 +3829,16 @@ i32.const 15584 call $~lib/string/String#toLowerCase local.tee $52 - i32.const 15616 - call $~lib/string/String.__eq + local.tee $0 + if (result i32) + local.get $0 + i32.const 15616 + call $~lib/string/String.__eq + else + local.get $0 + i32.const 15616 + i32.eq + end i32.eqz if i32.const 0 @@ -3555,8 +3851,16 @@ i32.const 15648 call $~lib/string/String#toLowerCase local.tee $53 - i32.const 15680 - call $~lib/string/String.__eq + local.tee $0 + if (result i32) + local.get $0 + i32.const 15680 + call $~lib/string/String.__eq + else + local.get $0 + i32.const 15680 + i32.eq + end i32.eqz if i32.const 0 @@ -3569,8 +3873,16 @@ i32.const 15712 call $~lib/string/String#toLowerCase local.tee $54 - i32.const 15744 - call $~lib/string/String.__eq + local.tee $0 + if (result i32) + local.get $0 + i32.const 15744 + call $~lib/string/String.__eq + else + local.get $0 + i32.const 15744 + i32.eq + end i32.eqz if i32.const 0 @@ -3583,8 +3895,16 @@ i32.const 15776 call $~lib/string/String#toLowerCase local.tee $55 - i32.const 15808 - call $~lib/string/String.__eq + local.tee $0 + if (result i32) + local.get $0 + i32.const 15808 + call $~lib/string/String.__eq + else + local.get $0 + i32.const 15808 + i32.eq + end i32.eqz if i32.const 0 @@ -3597,8 +3917,16 @@ i32.const 15840 call $~lib/string/String#toLowerCase local.tee $56 - i32.const 15872 - call $~lib/string/String.__eq + local.tee $0 + if (result i32) + local.get $0 + i32.const 15872 + call $~lib/string/String.__eq + else + local.get $0 + i32.const 15872 + i32.eq + end i32.eqz if i32.const 0 @@ -3611,8 +3939,16 @@ i32.const 15904 call $~lib/string/String#toLowerCase local.tee $57 - i32.const 15936 - call $~lib/string/String.__eq + local.tee $0 + if (result i32) + local.get $0 + i32.const 15936 + call $~lib/string/String.__eq + else + local.get $0 + i32.const 15936 + i32.eq + end i32.eqz if i32.const 0 @@ -3625,8 +3961,16 @@ i32.const 15968 call $~lib/string/String#toLowerCase local.tee $58 - i32.const 16000 - call $~lib/string/String.__eq + local.tee $0 + if (result i32) + local.get $0 + i32.const 16000 + call $~lib/string/String.__eq + else + local.get $0 + i32.const 16000 + i32.eq + end i32.eqz if i32.const 0 @@ -3639,8 +3983,16 @@ i32.const 16032 call $~lib/string/String#toLowerCase local.tee $59 - i32.const 16064 - call $~lib/string/String.__eq + local.tee $0 + if (result i32) + local.get $0 + i32.const 16064 + call $~lib/string/String.__eq + else + local.get $0 + i32.const 16064 + i32.eq + end i32.eqz if i32.const 0 @@ -3653,8 +4005,16 @@ i32.const 16096 call $~lib/string/String#toLowerCase local.tee $60 - i32.const 16128 - call $~lib/string/String.__eq + local.tee $0 + if (result i32) + local.get $0 + i32.const 16128 + call $~lib/string/String.__eq + else + local.get $0 + i32.const 16128 + i32.eq + end i32.eqz if i32.const 0 @@ -3667,8 +4027,16 @@ i32.const 16160 call $~lib/string/String#toLowerCase local.tee $61 - i32.const 16192 - call $~lib/string/String.__eq + local.tee $0 + if (result i32) + local.get $0 + i32.const 16192 + call $~lib/string/String.__eq + else + local.get $0 + i32.const 16192 + i32.eq + end i32.eqz if i32.const 0 @@ -3681,8 +4049,16 @@ i32.const 16224 call $~lib/string/String#toLowerCase local.tee $62 - i32.const 16256 - call $~lib/string/String.__eq + local.tee $0 + if (result i32) + local.get $0 + i32.const 16256 + call $~lib/string/String.__eq + else + local.get $0 + i32.const 16256 + i32.eq + end i32.eqz if i32.const 0 @@ -3695,8 +4071,16 @@ i32.const 16288 call $~lib/string/String#toLowerCase local.tee $63 - i32.const 16320 - call $~lib/string/String.__eq + local.tee $0 + if (result i32) + local.get $0 + i32.const 16320 + call $~lib/string/String.__eq + else + local.get $0 + i32.const 16320 + i32.eq + end i32.eqz if i32.const 0 @@ -3709,8 +4093,16 @@ i32.const 16352 call $~lib/string/String#toLowerCase local.tee $64 - i32.const 16384 - call $~lib/string/String.__eq + local.tee $0 + if (result i32) + local.get $0 + i32.const 16384 + call $~lib/string/String.__eq + else + local.get $0 + i32.const 16384 + i32.eq + end i32.eqz if i32.const 0 @@ -3723,8 +4115,16 @@ i32.const 16416 call $~lib/string/String#toLowerCase local.tee $65 - i32.const 16448 - call $~lib/string/String.__eq + local.tee $0 + if (result i32) + local.get $0 + i32.const 16448 + call $~lib/string/String.__eq + else + local.get $0 + i32.const 16448 + i32.eq + end i32.eqz if i32.const 0 @@ -3737,8 +4137,16 @@ i32.const 16480 call $~lib/string/String#toLowerCase local.tee $66 - i32.const 16512 - call $~lib/string/String.__eq + local.tee $0 + if (result i32) + local.get $0 + i32.const 16512 + call $~lib/string/String.__eq + else + local.get $0 + i32.const 16512 + i32.eq + end i32.eqz if i32.const 0 @@ -3751,8 +4159,16 @@ i32.const 16544 call $~lib/string/String#toLowerCase local.tee $67 - i32.const 16576 - call $~lib/string/String.__eq + local.tee $0 + if (result i32) + local.get $0 + i32.const 16576 + call $~lib/string/String.__eq + else + local.get $0 + i32.const 16576 + i32.eq + end i32.eqz if i32.const 0 @@ -3765,8 +4181,16 @@ i32.const 16608 call $~lib/string/String#toLowerCase local.tee $68 - i32.const 16640 - call $~lib/string/String.__eq + local.tee $0 + if (result i32) + local.get $0 + i32.const 16640 + call $~lib/string/String.__eq + else + local.get $0 + i32.const 16640 + i32.eq + end i32.eqz if i32.const 0 @@ -3779,8 +4203,16 @@ i32.const 16672 call $~lib/string/String#toLowerCase local.tee $69 - i32.const 15744 - call $~lib/string/String.__eq + local.tee $0 + if (result i32) + local.get $0 + i32.const 15744 + call $~lib/string/String.__eq + else + local.get $0 + i32.const 15744 + i32.eq + end i32.eqz if i32.const 0 @@ -3793,8 +4225,16 @@ i32.const 16704 call $~lib/string/String#toLowerCase local.tee $70 - i32.const 16736 - call $~lib/string/String.__eq + local.tee $0 + if (result i32) + local.get $0 + i32.const 16736 + call $~lib/string/String.__eq + else + local.get $0 + i32.const 16736 + i32.eq + end i32.eqz if i32.const 0 @@ -3807,8 +4247,16 @@ i32.const 16768 call $~lib/string/String#toLowerCase local.tee $71 - i32.const 16800 - call $~lib/string/String.__eq + local.tee $0 + if (result i32) + local.get $0 + i32.const 16800 + call $~lib/string/String.__eq + else + local.get $0 + i32.const 16800 + i32.eq + end i32.eqz if i32.const 0 @@ -3821,8 +4269,16 @@ i32.const 16832 call $~lib/string/String#toLowerCase local.tee $72 - i32.const 16864 - call $~lib/string/String.__eq + local.tee $0 + if (result i32) + local.get $0 + i32.const 16864 + call $~lib/string/String.__eq + else + local.get $0 + i32.const 16864 + i32.eq + end i32.eqz if i32.const 0 @@ -3835,8 +4291,16 @@ i32.const 16896 call $~lib/string/String#toLowerCase local.tee $73 - i32.const 16928 - call $~lib/string/String.__eq + local.tee $0 + if (result i32) + local.get $0 + i32.const 16928 + call $~lib/string/String.__eq + else + local.get $0 + i32.const 16928 + i32.eq + end i32.eqz if i32.const 0 @@ -3849,8 +4313,16 @@ i32.const 16960 call $~lib/string/String#toLowerCase local.tee $74 - i32.const 16992 - call $~lib/string/String.__eq + local.tee $0 + if (result i32) + local.get $0 + i32.const 16992 + call $~lib/string/String.__eq + else + local.get $0 + i32.const 16992 + i32.eq + end i32.eqz if i32.const 0 @@ -3863,8 +4335,16 @@ i32.const 17024 call $~lib/string/String#toLowerCase local.tee $75 - i32.const 17056 - call $~lib/string/String.__eq + local.tee $0 + if (result i32) + local.get $0 + i32.const 17056 + call $~lib/string/String.__eq + else + local.get $0 + i32.const 17056 + i32.eq + end i32.eqz if i32.const 0 @@ -3877,8 +4357,16 @@ i32.const 17088 call $~lib/string/String#toLowerCase local.tee $76 - i32.const 17120 - call $~lib/string/String.__eq + local.tee $0 + if (result i32) + local.get $0 + i32.const 17120 + call $~lib/string/String.__eq + else + local.get $0 + i32.const 17120 + i32.eq + end i32.eqz if i32.const 0 @@ -3891,8 +4379,16 @@ i32.const 17152 call $~lib/string/String#toLowerCase local.tee $77 - i32.const 17184 - call $~lib/string/String.__eq + local.tee $0 + if (result i32) + local.get $0 + i32.const 17184 + call $~lib/string/String.__eq + else + local.get $0 + i32.const 17184 + i32.eq + end i32.eqz if i32.const 0 @@ -3905,8 +4401,16 @@ i32.const 17216 call $~lib/string/String#toLowerCase local.tee $78 - i32.const 17248 - call $~lib/string/String.__eq + local.tee $0 + if (result i32) + local.get $0 + i32.const 17248 + call $~lib/string/String.__eq + else + local.get $0 + i32.const 17248 + i32.eq + end i32.eqz if i32.const 0 @@ -3919,8 +4423,16 @@ i32.const 17280 call $~lib/string/String#toLowerCase local.tee $79 - i32.const 17312 - call $~lib/string/String.__eq + local.tee $0 + if (result i32) + local.get $0 + i32.const 17312 + call $~lib/string/String.__eq + else + local.get $0 + i32.const 17312 + i32.eq + end i32.eqz if i32.const 0 @@ -3933,8 +4445,16 @@ i32.const 17344 call $~lib/string/String#toLowerCase local.tee $80 - i32.const 17376 - call $~lib/string/String.__eq + local.tee $0 + if (result i32) + local.get $0 + i32.const 17376 + call $~lib/string/String.__eq + else + local.get $0 + i32.const 17376 + i32.eq + end i32.eqz if i32.const 0 @@ -3947,8 +4467,16 @@ i32.const 17408 call $~lib/string/String#toLowerCase local.tee $81 - i32.const 17440 - call $~lib/string/String.__eq + local.tee $0 + if (result i32) + local.get $0 + i32.const 17440 + call $~lib/string/String.__eq + else + local.get $0 + i32.const 17440 + i32.eq + end i32.eqz if i32.const 0 @@ -3961,8 +4489,16 @@ i32.const 17472 call $~lib/string/String#toUpperCase local.tee $82 - i32.const 17504 - call $~lib/string/String.__eq + local.tee $0 + if (result i32) + local.get $0 + i32.const 17504 + call $~lib/string/String.__eq + else + local.get $0 + i32.const 17504 + i32.eq + end i32.eqz if i32.const 0 @@ -3975,8 +4511,16 @@ i32.const 14720 call $~lib/string/String#toUpperCase local.tee $83 - i32.const 17536 - call $~lib/string/String.__eq + local.tee $0 + if (result i32) + local.get $0 + i32.const 17536 + call $~lib/string/String.__eq + else + local.get $0 + i32.const 17536 + i32.eq + end i32.eqz if i32.const 0 @@ -3989,8 +4533,16 @@ i32.const 17568 call $~lib/string/String#toUpperCase local.tee $84 - i32.const 17600 - call $~lib/string/String.__eq + local.tee $0 + if (result i32) + local.get $0 + i32.const 17600 + call $~lib/string/String.__eq + else + local.get $0 + i32.const 17600 + i32.eq + end i32.eqz if i32.const 0 @@ -4003,8 +4555,16 @@ i32.const 17632 call $~lib/string/String#toUpperCase local.tee $85 - i32.const 17664 - call $~lib/string/String.__eq + local.tee $0 + if (result i32) + local.get $0 + i32.const 17664 + call $~lib/string/String.__eq + else + local.get $0 + i32.const 17664 + i32.eq + end i32.eqz if i32.const 0 @@ -4017,8 +4577,16 @@ i32.const 17696 call $~lib/string/String#toUpperCase local.tee $86 - i32.const 17728 - call $~lib/string/String.__eq + local.tee $0 + if (result i32) + local.get $0 + i32.const 17728 + call $~lib/string/String.__eq + else + local.get $0 + i32.const 17728 + i32.eq + end i32.eqz if i32.const 0 @@ -4031,8 +4599,16 @@ i32.const 17760 call $~lib/string/String#toUpperCase local.tee $87 - i32.const 17792 - call $~lib/string/String.__eq + local.tee $0 + if (result i32) + local.get $0 + i32.const 17792 + call $~lib/string/String.__eq + else + local.get $0 + i32.const 17792 + i32.eq + end i32.eqz if i32.const 0 @@ -4045,8 +4621,16 @@ i32.const 17824 call $~lib/string/String#toUpperCase local.tee $88 - i32.const 17792 - call $~lib/string/String.__eq + local.tee $0 + if (result i32) + local.get $0 + i32.const 17792 + call $~lib/string/String.__eq + else + local.get $0 + i32.const 17792 + i32.eq + end i32.eqz if i32.const 0 @@ -4059,8 +4643,16 @@ i32.const 17856 call $~lib/string/String#toUpperCase local.tee $89 - i32.const 17888 - call $~lib/string/String.__eq + local.tee $0 + if (result i32) + local.get $0 + i32.const 17888 + call $~lib/string/String.__eq + else + local.get $0 + i32.const 17888 + i32.eq + end i32.eqz if i32.const 0 @@ -4073,8 +4665,16 @@ i32.const 17920 call $~lib/string/String#toUpperCase local.tee $90 - i32.const 17952 - call $~lib/string/String.__eq + local.tee $0 + if (result i32) + local.get $0 + i32.const 17952 + call $~lib/string/String.__eq + else + local.get $0 + i32.const 17952 + i32.eq + end i32.eqz if i32.const 0 @@ -4087,8 +4687,16 @@ i32.const 17984 call $~lib/string/String#toUpperCase local.tee $91 - i32.const 18016 - call $~lib/string/String.__eq + local.tee $0 + if (result i32) + local.get $0 + i32.const 18016 + call $~lib/string/String.__eq + else + local.get $0 + i32.const 18016 + i32.eq + end i32.eqz if i32.const 0 @@ -4101,8 +4709,16 @@ i32.const 18048 call $~lib/string/String#toUpperCase local.tee $92 - i32.const 18080 - call $~lib/string/String.__eq + local.tee $0 + if (result i32) + local.get $0 + i32.const 18080 + call $~lib/string/String.__eq + else + local.get $0 + i32.const 18080 + i32.eq + end i32.eqz if i32.const 0 @@ -4115,8 +4731,16 @@ i32.const 18112 call $~lib/string/String#toUpperCase local.tee $93 - i32.const 18144 - call $~lib/string/String.__eq + local.tee $0 + if (result i32) + local.get $0 + i32.const 18144 + call $~lib/string/String.__eq + else + local.get $0 + i32.const 18144 + i32.eq + end i32.eqz if i32.const 0 @@ -4129,8 +4753,16 @@ i32.const 18176 call $~lib/string/String#toUpperCase local.tee $94 - i32.const 18208 - call $~lib/string/String.__eq + local.tee $0 + if (result i32) + local.get $0 + i32.const 18208 + call $~lib/string/String.__eq + else + local.get $0 + i32.const 18208 + i32.eq + end i32.eqz if i32.const 0 @@ -4141,129 +4773,129 @@ unreachable end loop $for-loop|0 - local.get $3 + local.get $4 i32.const 1114111 i32.le_s if - local.get $3 + local.get $4 call $~lib/string/String.fromCodePoint local.tee $8 call $~lib/string/String#toLowerCase - local.set $5 + local.set $0 local.get $8 call $~lib/string/String#toUpperCase local.set $6 - local.get $5 + local.get $0 i32.const 0 call $~lib/string/String#codePointAt i64.extend_i32_s - local.set $4 - local.get $5 + local.set $5 + local.get $0 i32.const 1 call $~lib/string/String#codePointAt i64.extend_i32_s - local.tee $0 + local.tee $1 i64.const 0 i64.ge_u if - local.get $4 - local.get $0 + local.get $5 + local.get $1 i64.const 16 i64.shl i64.add - local.set $4 + local.set $5 end - local.get $5 + local.get $0 i32.const 2 call $~lib/string/String#codePointAt i64.extend_i32_s - local.tee $0 + local.tee $1 i64.const 0 i64.ge_u if - local.get $4 - local.get $0 + local.get $5 + local.get $1 i64.const 32 i64.shl i64.add - local.set $4 + local.set $5 end local.get $6 i32.const 0 call $~lib/string/String#codePointAt i64.extend_i32_s - local.set $0 + local.set $1 local.get $6 i32.const 1 call $~lib/string/String#codePointAt i64.extend_i32_s - local.tee $1 + local.tee $2 i64.const 0 i64.ge_u if - local.get $0 local.get $1 + local.get $2 i64.const 16 i64.shl i64.add - local.set $0 + local.set $1 end local.get $6 i32.const 2 call $~lib/string/String#codePointAt i64.extend_i32_s - local.tee $1 + local.tee $2 i64.const 0 i64.ge_u if - local.get $0 local.get $1 + local.get $2 i64.const 32 i64.shl i64.add - local.set $0 + local.set $1 end - local.get $3 + local.get $4 i32.const 0 call $std/string-casemapping/toLowerCaseFromIndex i64.extend_i32_s - local.set $1 - local.get $3 + local.set $2 + local.get $4 i32.const 1 call $std/string-casemapping/toLowerCaseFromIndex i64.extend_i32_s - local.tee $2 + local.tee $3 i64.const 0 i64.ge_u if - local.get $1 local.get $2 + local.get $3 i64.const 16 i64.shl i64.add - local.set $1 + local.set $2 end - local.get $3 + local.get $4 i32.const 2 call $std/string-casemapping/toLowerCaseFromIndex i64.extend_i32_s - local.tee $2 + local.tee $3 i64.const 0 i64.ge_u if - local.get $1 local.get $2 + local.get $3 i64.const 32 i64.shl i64.add - local.set $1 + local.set $2 end - local.get $3 + local.get $4 i32.const 0 call $std/string-casemapping/toUpperCaseFromIndex i64.extend_i32_s - local.set $2 - local.get $3 + local.set $3 + local.get $4 i32.const 1 call $std/string-casemapping/toUpperCaseFromIndex i64.extend_i32_s @@ -4271,14 +4903,14 @@ i64.const 0 i64.ge_u if - local.get $2 + local.get $3 local.get $7 i64.const 16 i64.shl i64.add - local.set $2 + local.set $3 end - local.get $3 + local.get $4 i32.const 2 call $std/string-casemapping/toUpperCaseFromIndex i64.extend_i32_s @@ -4286,47 +4918,47 @@ i64.const 0 i64.ge_u if - local.get $2 + local.get $3 local.get $7 i64.const 32 i64.shl i64.add - local.set $2 + local.set $3 end - local.get $1 - local.get $4 + local.get $2 + local.get $5 i64.ne if i32.const 18240 i32.const 3 - local.get $3 - f64.convert_i32_s local.get $4 + f64.convert_i32_s + local.get $5 f64.convert_i64_u - local.get $1 + local.get $2 f64.convert_i64_u f64.const 0 f64.const 0 call $~lib/builtins/trace end - local.get $0 - local.get $2 + local.get $1 + local.get $3 i64.ne if i32.const 18320 i32.const 3 - local.get $3 + local.get $4 f64.convert_i32_s - local.get $0 + local.get $1 f64.convert_i64_u - local.get $2 + local.get $3 f64.convert_i64_u f64.const 0 f64.const 0 call $~lib/builtins/trace end - local.get $1 - local.get $4 + local.get $2 + local.get $5 i64.ne if i32.const 0 @@ -4336,8 +4968,8 @@ call $~lib/builtins/abort unreachable end - local.get $0 - local.get $2 + local.get $1 + local.get $3 i64.ne if i32.const 0 @@ -4349,23 +4981,23 @@ end local.get $8 call $~lib/rt/pure/__release - local.get $5 + local.get $0 call $~lib/rt/pure/__release local.get $6 call $~lib/rt/pure/__release - local.get $3 + local.get $4 i32.const 1 i32.add - local.set $3 + local.set $4 br $for-loop|0 end end local.get $9 call $~lib/rt/pure/__release - local.get $10 - call $~lib/rt/pure/__release local.get $11 call $~lib/rt/pure/__release + local.get $10 + call $~lib/rt/pure/__release local.get $12 call $~lib/rt/pure/__release local.get $13 @@ -4414,26 +5046,26 @@ call $~lib/rt/pure/__release local.get $35 call $~lib/rt/pure/__release - local.get $36 - call $~lib/rt/pure/__release local.get $37 call $~lib/rt/pure/__release - local.get $38 + local.get $36 call $~lib/rt/pure/__release local.get $39 call $~lib/rt/pure/__release - local.get $40 + local.get $38 call $~lib/rt/pure/__release local.get $41 call $~lib/rt/pure/__release - local.get $42 + local.get $40 call $~lib/rt/pure/__release local.get $43 call $~lib/rt/pure/__release - local.get $44 + local.get $42 call $~lib/rt/pure/__release local.get $45 call $~lib/rt/pure/__release + local.get $44 + call $~lib/rt/pure/__release local.get $46 call $~lib/rt/pure/__release local.get $47 diff --git a/tests/compiler/std/string-casemapping.untouched.wat b/tests/compiler/std/string-casemapping.untouched.wat index e6671852ae..a43e9144a7 100644 --- a/tests/compiler/std/string-casemapping.untouched.wat +++ b/tests/compiler/std/string-casemapping.untouched.wat @@ -3758,66 +3758,35 @@ call $~lib/rt/pure/__retain local.set $1 local.get $0 - local.get $1 - i32.eq - if - i32.const 1 - local.set $2 - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $2 - return - end - local.get $0 - i32.eqz - if (result i32) - i32.const 1 - else - local.get $1 - i32.eqz - end - if - i32.const 0 - local.set $2 - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $2 - return - end - local.get $0 call $~lib/string/String#get:length - local.set $3 - local.get $3 + local.set $2 + local.get $2 local.get $1 call $~lib/string/String#get:length i32.ne if i32.const 0 - local.set $2 + local.set $3 local.get $0 call $~lib/rt/pure/__release local.get $1 call $~lib/rt/pure/__release - local.get $2 + local.get $3 return end local.get $0 i32.const 0 local.get $1 i32.const 0 - local.get $3 + local.get $2 call $~lib/util/string/compareImpl i32.eqz - local.set $2 + local.set $3 local.get $0 call $~lib/rt/pure/__release local.get $1 call $~lib/rt/pure/__release - local.get $2 + local.get $3 ) (func $~lib/util/string/stagedBinaryLookup (; 34 ;) (param $0 i32) (param $1 i32) (result i32) local.get $0 @@ -4621,8 +4590,33 @@ i32.const 32 call $~lib/string/String#toUpperCase local.tee $0 + call $~lib/rt/pure/__retain + local.set $2 i32.const 32 - call $~lib/string/String.__eq + call $~lib/rt/pure/__retain + local.set $1 + local.get $2 + i32.eqz + local.get $1 + i32.eqz + i32.or + if (result i32) + local.get $2 + local.get $1 + i32.eq + else + local.get $2 + local.get $1 + call $~lib/string/String.__eq + end + local.set $3 + local.get $1 + call $~lib/rt/pure/__release + local.get $2 + call $~lib/rt/pure/__release + local.get $3 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -4634,9 +4628,34 @@ end i32.const 32 call $~lib/string/String#toLowerCase - local.tee $1 + local.tee $2 + call $~lib/rt/pure/__retain + local.set $1 i32.const 32 - call $~lib/string/String.__eq + call $~lib/rt/pure/__retain + local.set $3 + local.get $1 + i32.eqz + local.get $3 + i32.eqz + i32.or + if (result i32) + local.get $1 + local.get $3 + i32.eq + else + local.get $1 + local.get $3 + call $~lib/string/String.__eq + end + local.set $4 + local.get $3 + call $~lib/rt/pure/__release + local.get $1 + call $~lib/rt/pure/__release + local.get $4 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -4648,9 +4667,34 @@ end i32.const 10624 call $~lib/string/String#toUpperCase - local.tee $2 + local.tee $1 + call $~lib/rt/pure/__retain + local.set $3 i32.const 10672 - call $~lib/string/String.__eq + call $~lib/rt/pure/__retain + local.set $4 + local.get $3 + i32.eqz + local.get $4 + i32.eqz + i32.or + if (result i32) + local.get $3 + local.get $4 + i32.eq + else + local.get $3 + local.get $4 + call $~lib/string/String.__eq + end + local.set $5 + local.get $4 + call $~lib/rt/pure/__release + local.get $3 + call $~lib/rt/pure/__release + local.get $5 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -4663,8 +4707,33 @@ i32.const 10720 call $~lib/string/String#toLowerCase local.tee $3 + call $~lib/rt/pure/__retain + local.set $4 i32.const 10768 - call $~lib/string/String.__eq + call $~lib/rt/pure/__retain + local.set $5 + local.get $4 + i32.eqz + local.get $5 + i32.eqz + i32.or + if (result i32) + local.get $4 + local.get $5 + i32.eq + else + local.get $4 + local.get $5 + call $~lib/string/String.__eq + end + local.set $6 + local.get $5 + call $~lib/rt/pure/__release + local.get $4 + call $~lib/rt/pure/__release + local.get $6 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -4677,8 +4746,33 @@ i32.const 10816 call $~lib/string/String#toUpperCase local.tee $4 + call $~lib/rt/pure/__retain + local.set $5 i32.const 10912 - call $~lib/string/String.__eq + call $~lib/rt/pure/__retain + local.set $6 + local.get $5 + i32.eqz + local.get $6 + i32.eqz + i32.or + if (result i32) + local.get $5 + local.get $6 + i32.eq + else + local.get $5 + local.get $6 + call $~lib/string/String.__eq + end + local.set $7 + local.get $6 + call $~lib/rt/pure/__release + local.get $5 + call $~lib/rt/pure/__release + local.get $7 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -4691,8 +4785,33 @@ i32.const 10912 call $~lib/string/String#toLowerCase local.tee $5 + call $~lib/rt/pure/__retain + local.set $6 i32.const 11008 - call $~lib/string/String.__eq + call $~lib/rt/pure/__retain + local.set $7 + local.get $6 + i32.eqz + local.get $7 + i32.eqz + i32.or + if (result i32) + local.get $6 + local.get $7 + i32.eq + else + local.get $6 + local.get $7 + call $~lib/string/String.__eq + end + local.set $8 + local.get $7 + call $~lib/rt/pure/__release + local.get $6 + call $~lib/rt/pure/__release + local.get $8 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -4705,8 +4824,33 @@ i32.const 11104 call $~lib/string/String#toUpperCase local.tee $6 + call $~lib/rt/pure/__retain + local.set $7 i32.const 11168 - call $~lib/string/String.__eq + call $~lib/rt/pure/__retain + local.set $8 + local.get $7 + i32.eqz + local.get $8 + i32.eqz + i32.or + if (result i32) + local.get $7 + local.get $8 + i32.eq + else + local.get $7 + local.get $8 + call $~lib/string/String.__eq + end + local.set $9 + local.get $8 + call $~lib/rt/pure/__release + local.get $7 + call $~lib/rt/pure/__release + local.get $9 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -4719,8 +4863,33 @@ i32.const 11168 call $~lib/string/String#toLowerCase local.tee $7 + call $~lib/rt/pure/__retain + local.set $8 i32.const 11232 - call $~lib/string/String.__eq + call $~lib/rt/pure/__retain + local.set $9 + local.get $8 + i32.eqz + local.get $9 + i32.eqz + i32.or + if (result i32) + local.get $8 + local.get $9 + i32.eq + else + local.get $8 + local.get $9 + call $~lib/string/String.__eq + end + local.set $10 + local.get $9 + call $~lib/rt/pure/__release + local.get $8 + call $~lib/rt/pure/__release + local.get $10 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -4733,11 +4902,36 @@ i32.const 11296 call $~lib/string/String#toUpperCase local.tee $8 + call $~lib/rt/pure/__retain + local.set $9 i32.const 11392 - call $~lib/string/String.__eq + call $~lib/rt/pure/__retain + local.set $10 + local.get $9 i32.eqz - if - i32.const 0 + local.get $10 + i32.eqz + i32.or + if (result i32) + local.get $9 + local.get $10 + i32.eq + else + local.get $9 + local.get $10 + call $~lib/string/String.__eq + end + local.set $11 + local.get $10 + call $~lib/rt/pure/__release + local.get $9 + call $~lib/rt/pure/__release + local.get $11 + i32.const 0 + i32.ne + i32.eqz + if + i32.const 0 i32.const 5824 i32.const 16 i32.const 0 @@ -4747,8 +4941,33 @@ i32.const 11392 call $~lib/string/String#toLowerCase local.tee $9 + call $~lib/rt/pure/__retain + local.set $10 i32.const 11488 - call $~lib/string/String.__eq + call $~lib/rt/pure/__retain + local.set $11 + local.get $10 + i32.eqz + local.get $11 + i32.eqz + i32.or + if (result i32) + local.get $10 + local.get $11 + i32.eq + else + local.get $10 + local.get $11 + call $~lib/string/String.__eq + end + local.set $12 + local.get $11 + call $~lib/rt/pure/__release + local.get $10 + call $~lib/rt/pure/__release + local.get $12 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -4761,8 +4980,33 @@ i32.const 11584 call $~lib/string/String#toUpperCase local.tee $10 + call $~lib/rt/pure/__retain + local.set $11 i32.const 11680 - call $~lib/string/String.__eq + call $~lib/rt/pure/__retain + local.set $12 + local.get $11 + i32.eqz + local.get $12 + i32.eqz + i32.or + if (result i32) + local.get $11 + local.get $12 + i32.eq + else + local.get $11 + local.get $12 + call $~lib/string/String.__eq + end + local.set $13 + local.get $12 + call $~lib/rt/pure/__release + local.get $11 + call $~lib/rt/pure/__release + local.get $13 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -4775,8 +5019,33 @@ i32.const 11680 call $~lib/string/String#toLowerCase local.tee $11 + call $~lib/rt/pure/__retain + local.set $12 i32.const 11776 - call $~lib/string/String.__eq + call $~lib/rt/pure/__retain + local.set $13 + local.get $12 + i32.eqz + local.get $13 + i32.eqz + i32.or + if (result i32) + local.get $12 + local.get $13 + i32.eq + else + local.get $12 + local.get $13 + call $~lib/string/String.__eq + end + local.set $14 + local.get $13 + call $~lib/rt/pure/__release + local.get $12 + call $~lib/rt/pure/__release + local.get $14 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -4789,8 +5058,33 @@ i32.const 11872 call $~lib/string/String#toUpperCase local.tee $12 + call $~lib/rt/pure/__retain + local.set $13 i32.const 11936 - call $~lib/string/String.__eq + call $~lib/rt/pure/__retain + local.set $14 + local.get $13 + i32.eqz + local.get $14 + i32.eqz + i32.or + if (result i32) + local.get $13 + local.get $14 + i32.eq + else + local.get $13 + local.get $14 + call $~lib/string/String.__eq + end + local.set $15 + local.get $14 + call $~lib/rt/pure/__release + local.get $13 + call $~lib/rt/pure/__release + local.get $15 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -4803,8 +5097,33 @@ i32.const 12000 call $~lib/string/String#toUpperCase local.tee $13 + call $~lib/rt/pure/__retain + local.set $14 i32.const 12064 - call $~lib/string/String.__eq + call $~lib/rt/pure/__retain + local.set $15 + local.get $14 + i32.eqz + local.get $15 + i32.eqz + i32.or + if (result i32) + local.get $14 + local.get $15 + i32.eq + else + local.get $14 + local.get $15 + call $~lib/string/String.__eq + end + local.set $16 + local.get $15 + call $~lib/rt/pure/__release + local.get $14 + call $~lib/rt/pure/__release + local.get $16 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -4817,8 +5136,33 @@ i32.const 12144 call $~lib/string/String#toUpperCase local.tee $14 + call $~lib/rt/pure/__retain + local.set $15 i32.const 12208 - call $~lib/string/String.__eq + call $~lib/rt/pure/__retain + local.set $16 + local.get $15 + i32.eqz + local.get $16 + i32.eqz + i32.or + if (result i32) + local.get $15 + local.get $16 + i32.eq + else + local.get $15 + local.get $16 + call $~lib/string/String.__eq + end + local.set $17 + local.get $16 + call $~lib/rt/pure/__release + local.get $15 + call $~lib/rt/pure/__release + local.get $17 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -4831,8 +5175,33 @@ i32.const 12272 call $~lib/string/String#toUpperCase local.tee $15 + call $~lib/rt/pure/__retain + local.set $16 i32.const 12352 - call $~lib/string/String.__eq + call $~lib/rt/pure/__retain + local.set $17 + local.get $16 + i32.eqz + local.get $17 + i32.eqz + i32.or + if (result i32) + local.get $16 + local.get $17 + i32.eq + else + local.get $16 + local.get $17 + call $~lib/string/String.__eq + end + local.set $18 + local.get $17 + call $~lib/rt/pure/__release + local.get $16 + call $~lib/rt/pure/__release + local.get $18 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -4845,8 +5214,33 @@ i32.const 12432 call $~lib/string/String#toUpperCase local.tee $16 + call $~lib/rt/pure/__retain + local.set $17 i32.const 12496 - call $~lib/string/String.__eq + call $~lib/rt/pure/__retain + local.set $18 + local.get $17 + i32.eqz + local.get $18 + i32.eqz + i32.or + if (result i32) + local.get $17 + local.get $18 + i32.eq + else + local.get $17 + local.get $18 + call $~lib/string/String.__eq + end + local.set $19 + local.get $18 + call $~lib/rt/pure/__release + local.get $17 + call $~lib/rt/pure/__release + local.get $19 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -4859,8 +5253,33 @@ i32.const 12560 call $~lib/string/String#toUpperCase local.tee $17 + call $~lib/rt/pure/__retain + local.set $18 i32.const 12624 - call $~lib/string/String.__eq + call $~lib/rt/pure/__retain + local.set $19 + local.get $18 + i32.eqz + local.get $19 + i32.eqz + i32.or + if (result i32) + local.get $18 + local.get $19 + i32.eq + else + local.get $18 + local.get $19 + call $~lib/string/String.__eq + end + local.set $20 + local.get $19 + call $~lib/rt/pure/__release + local.get $18 + call $~lib/rt/pure/__release + local.get $20 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -4873,8 +5292,33 @@ i32.const 12688 call $~lib/string/String#toUpperCase local.tee $18 + call $~lib/rt/pure/__retain + local.set $19 i32.const 12768 - call $~lib/string/String.__eq + call $~lib/rt/pure/__retain + local.set $20 + local.get $19 + i32.eqz + local.get $20 + i32.eqz + i32.or + if (result i32) + local.get $19 + local.get $20 + i32.eq + else + local.get $19 + local.get $20 + call $~lib/string/String.__eq + end + local.set $21 + local.get $20 + call $~lib/rt/pure/__release + local.get $19 + call $~lib/rt/pure/__release + local.get $21 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -4887,8 +5331,33 @@ i32.const 12848 call $~lib/string/String#toUpperCase local.tee $19 + call $~lib/rt/pure/__retain + local.set $20 i32.const 12928 - call $~lib/string/String.__eq + call $~lib/rt/pure/__retain + local.set $21 + local.get $20 + i32.eqz + local.get $21 + i32.eqz + i32.or + if (result i32) + local.get $20 + local.get $21 + i32.eq + else + local.get $20 + local.get $21 + call $~lib/string/String.__eq + end + local.set $22 + local.get $21 + call $~lib/rt/pure/__release + local.get $20 + call $~lib/rt/pure/__release + local.get $22 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -4901,8 +5370,33 @@ i32.const 13008 call $~lib/string/String#toUpperCase local.tee $20 + call $~lib/rt/pure/__retain + local.set $21 i32.const 13152 - call $~lib/string/String.__eq + call $~lib/rt/pure/__retain + local.set $22 + local.get $21 + i32.eqz + local.get $22 + i32.eqz + i32.or + if (result i32) + local.get $21 + local.get $22 + i32.eq + else + local.get $21 + local.get $22 + call $~lib/string/String.__eq + end + local.set $23 + local.get $22 + call $~lib/rt/pure/__release + local.get $21 + call $~lib/rt/pure/__release + local.get $23 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -4915,8 +5409,33 @@ i32.const 13008 call $~lib/string/String#toLowerCase local.tee $21 + call $~lib/rt/pure/__retain + local.set $22 i32.const 13296 - call $~lib/string/String.__eq + call $~lib/rt/pure/__retain + local.set $23 + local.get $22 + i32.eqz + local.get $23 + i32.eqz + i32.or + if (result i32) + local.get $22 + local.get $23 + i32.eq + else + local.get $22 + local.get $23 + call $~lib/string/String.__eq + end + local.set $24 + local.get $23 + call $~lib/rt/pure/__release + local.get $22 + call $~lib/rt/pure/__release + local.get $24 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -4929,8 +5448,33 @@ i32.const 13440 call $~lib/string/String#toUpperCase local.tee $22 + call $~lib/rt/pure/__retain + local.set $23 i32.const 13472 - call $~lib/string/String.__eq + call $~lib/rt/pure/__retain + local.set $24 + local.get $23 + i32.eqz + local.get $24 + i32.eqz + i32.or + if (result i32) + local.get $23 + local.get $24 + i32.eq + else + local.get $23 + local.get $24 + call $~lib/string/String.__eq + end + local.set $25 + local.get $24 + call $~lib/rt/pure/__release + local.get $23 + call $~lib/rt/pure/__release + local.get $25 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -4943,8 +5487,33 @@ i32.const 13504 call $~lib/string/String#toLowerCase local.tee $23 + call $~lib/rt/pure/__retain + local.set $24 i32.const 13536 - call $~lib/string/String.__eq + call $~lib/rt/pure/__retain + local.set $25 + local.get $24 + i32.eqz + local.get $25 + i32.eqz + i32.or + if (result i32) + local.get $24 + local.get $25 + i32.eq + else + local.get $24 + local.get $25 + call $~lib/string/String.__eq + end + local.set $26 + local.get $25 + call $~lib/rt/pure/__release + local.get $24 + call $~lib/rt/pure/__release + local.get $26 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -4957,8 +5526,33 @@ i32.const 13568 call $~lib/string/String#toUpperCase local.tee $24 + call $~lib/rt/pure/__retain + local.set $25 i32.const 13760 - call $~lib/string/String.__eq + call $~lib/rt/pure/__retain + local.set $26 + local.get $25 + i32.eqz + local.get $26 + i32.eqz + i32.or + if (result i32) + local.get $25 + local.get $26 + i32.eq + else + local.get $25 + local.get $26 + call $~lib/string/String.__eq + end + local.set $27 + local.get $26 + call $~lib/rt/pure/__release + local.get $25 + call $~lib/rt/pure/__release + local.get $27 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -4973,8 +5567,33 @@ local.tee $25 call $~lib/string/String#toLowerCase local.tee $26 + call $~lib/rt/pure/__retain + local.set $28 i32.const 13968 - call $~lib/string/String.__eq + call $~lib/rt/pure/__retain + local.set $27 + local.get $28 + i32.eqz + local.get $27 + i32.eqz + i32.or + if (result i32) + local.get $28 + local.get $27 + i32.eq + else + local.get $28 + local.get $27 + call $~lib/string/String.__eq + end + local.set $29 + local.get $27 + call $~lib/rt/pure/__release + local.get $28 + call $~lib/rt/pure/__release + local.get $29 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -4986,11 +5605,36 @@ end i32.const 14000 call $~lib/string/String#toUpperCase - local.tee $27 - call $~lib/string/String#toLowerCase local.tee $28 + call $~lib/string/String#toLowerCase + local.tee $27 + call $~lib/rt/pure/__retain + local.set $30 i32.const 14032 - call $~lib/string/String.__eq + call $~lib/rt/pure/__retain + local.set $29 + local.get $30 + i32.eqz + local.get $29 + i32.eqz + i32.or + if (result i32) + local.get $30 + local.get $29 + i32.eq + else + local.get $30 + local.get $29 + call $~lib/string/String.__eq + end + local.set $31 + local.get $29 + call $~lib/rt/pure/__release + local.get $30 + call $~lib/rt/pure/__release + local.get $31 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -5002,11 +5646,36 @@ end i32.const 14064 call $~lib/string/String#toUpperCase - local.tee $29 - call $~lib/string/String#toLowerCase local.tee $30 + call $~lib/string/String#toLowerCase + local.tee $29 + call $~lib/rt/pure/__retain + local.set $32 i32.const 14064 - call $~lib/string/String.__eq + call $~lib/rt/pure/__retain + local.set $31 + local.get $32 + i32.eqz + local.get $31 + i32.eqz + i32.or + if (result i32) + local.get $32 + local.get $31 + i32.eq + else + local.get $32 + local.get $31 + call $~lib/string/String.__eq + end + local.set $33 + local.get $31 + call $~lib/rt/pure/__release + local.get $32 + call $~lib/rt/pure/__release + local.get $33 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -5018,11 +5687,36 @@ end i32.const 65536 call $~lib/string/String.fromCodePoint - local.tee $31 - call $~lib/string/String#toLowerCase local.tee $32 + call $~lib/string/String#toLowerCase + local.tee $31 + call $~lib/rt/pure/__retain + local.set $34 i32.const 14320 - call $~lib/string/String.__eq + call $~lib/rt/pure/__retain + local.set $33 + local.get $34 + i32.eqz + local.get $33 + i32.eqz + i32.or + if (result i32) + local.get $34 + local.get $33 + i32.eq + else + local.get $34 + local.get $33 + call $~lib/string/String.__eq + end + local.set $35 + local.get $33 + call $~lib/rt/pure/__release + local.get $34 + call $~lib/rt/pure/__release + local.get $35 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -5034,11 +5728,36 @@ end i32.const 65536 call $~lib/string/String.fromCodePoint - local.tee $33 - call $~lib/string/String#toUpperCase local.tee $34 + call $~lib/string/String#toUpperCase + local.tee $33 + call $~lib/rt/pure/__retain + local.set $36 i32.const 14320 - call $~lib/string/String.__eq + call $~lib/rt/pure/__retain + local.set $35 + local.get $36 + i32.eqz + local.get $35 + i32.eqz + i32.or + if (result i32) + local.get $36 + local.get $35 + i32.eq + else + local.get $36 + local.get $35 + call $~lib/string/String.__eq + end + local.set $37 + local.get $35 + call $~lib/rt/pure/__release + local.get $36 + call $~lib/rt/pure/__release + local.get $37 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -5050,9 +5769,34 @@ end i32.const 14352 call $~lib/string/String#toLowerCase - local.tee $35 + local.tee $36 + call $~lib/rt/pure/__retain + local.set $35 i32.const 14384 - call $~lib/string/String.__eq + call $~lib/rt/pure/__retain + local.set $37 + local.get $35 + i32.eqz + local.get $37 + i32.eqz + i32.or + if (result i32) + local.get $35 + local.get $37 + i32.eq + else + local.get $35 + local.get $37 + call $~lib/string/String.__eq + end + local.set $38 + local.get $37 + call $~lib/rt/pure/__release + local.get $35 + call $~lib/rt/pure/__release + local.get $38 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -5064,9 +5808,34 @@ end i32.const 14416 call $~lib/string/String#toLowerCase - local.tee $36 + local.tee $35 + call $~lib/rt/pure/__retain + local.set $37 i32.const 14448 - call $~lib/string/String.__eq + call $~lib/rt/pure/__retain + local.set $38 + local.get $37 + i32.eqz + local.get $38 + i32.eqz + i32.or + if (result i32) + local.get $37 + local.get $38 + i32.eq + else + local.get $37 + local.get $38 + call $~lib/string/String.__eq + end + local.set $39 + local.get $38 + call $~lib/rt/pure/__release + local.get $37 + call $~lib/rt/pure/__release + local.get $39 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -5079,8 +5848,33 @@ i32.const 14480 call $~lib/string/String#toLowerCase local.tee $37 + call $~lib/rt/pure/__retain + local.set $38 i32.const 14512 - call $~lib/string/String.__eq + call $~lib/rt/pure/__retain + local.set $39 + local.get $38 + i32.eqz + local.get $39 + i32.eqz + i32.or + if (result i32) + local.get $38 + local.get $39 + i32.eq + else + local.get $38 + local.get $39 + call $~lib/string/String.__eq + end + local.set $40 + local.get $39 + call $~lib/rt/pure/__release + local.get $38 + call $~lib/rt/pure/__release + local.get $40 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -5093,8 +5887,33 @@ i32.const 14544 call $~lib/string/String#toLowerCase local.tee $38 + call $~lib/rt/pure/__retain + local.set $39 i32.const 14576 - call $~lib/string/String.__eq + call $~lib/rt/pure/__retain + local.set $40 + local.get $39 + i32.eqz + local.get $40 + i32.eqz + i32.or + if (result i32) + local.get $39 + local.get $40 + i32.eq + else + local.get $39 + local.get $40 + call $~lib/string/String.__eq + end + local.set $41 + local.get $40 + call $~lib/rt/pure/__release + local.get $39 + call $~lib/rt/pure/__release + local.get $41 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -5107,8 +5926,33 @@ i32.const 14608 call $~lib/string/String#toLowerCase local.tee $39 + call $~lib/rt/pure/__retain + local.set $40 i32.const 14640 - call $~lib/string/String.__eq + call $~lib/rt/pure/__retain + local.set $41 + local.get $40 + i32.eqz + local.get $41 + i32.eqz + i32.or + if (result i32) + local.get $40 + local.get $41 + i32.eq + else + local.get $40 + local.get $41 + call $~lib/string/String.__eq + end + local.set $42 + local.get $41 + call $~lib/rt/pure/__release + local.get $40 + call $~lib/rt/pure/__release + local.get $42 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -5121,8 +5965,33 @@ i32.const 14672 call $~lib/string/String#toLowerCase local.tee $40 + call $~lib/rt/pure/__retain + local.set $41 i32.const 14704 - call $~lib/string/String.__eq + call $~lib/rt/pure/__retain + local.set $42 + local.get $41 + i32.eqz + local.get $42 + i32.eqz + i32.or + if (result i32) + local.get $41 + local.get $42 + i32.eq + else + local.get $41 + local.get $42 + call $~lib/string/String.__eq + end + local.set $43 + local.get $42 + call $~lib/rt/pure/__release + local.get $41 + call $~lib/rt/pure/__release + local.get $43 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -5135,8 +6004,33 @@ i32.const 14736 call $~lib/string/String#toLowerCase local.tee $41 + call $~lib/rt/pure/__retain + local.set $42 i32.const 14768 - call $~lib/string/String.__eq + call $~lib/rt/pure/__retain + local.set $43 + local.get $42 + i32.eqz + local.get $43 + i32.eqz + i32.or + if (result i32) + local.get $42 + local.get $43 + i32.eq + else + local.get $42 + local.get $43 + call $~lib/string/String.__eq + end + local.set $44 + local.get $43 + call $~lib/rt/pure/__release + local.get $42 + call $~lib/rt/pure/__release + local.get $44 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -5149,8 +6043,33 @@ i32.const 14800 call $~lib/string/String#toLowerCase local.tee $42 + call $~lib/rt/pure/__retain + local.set $43 i32.const 14832 - call $~lib/string/String.__eq + call $~lib/rt/pure/__retain + local.set $44 + local.get $43 + i32.eqz + local.get $44 + i32.eqz + i32.or + if (result i32) + local.get $43 + local.get $44 + i32.eq + else + local.get $43 + local.get $44 + call $~lib/string/String.__eq + end + local.set $45 + local.get $44 + call $~lib/rt/pure/__release + local.get $43 + call $~lib/rt/pure/__release + local.get $45 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -5160,11 +6079,36 @@ call $~lib/builtins/abort unreachable end - i32.const 14864 - call $~lib/string/String#toLowerCase - local.tee $43 - i32.const 14896 - call $~lib/string/String.__eq + i32.const 14864 + call $~lib/string/String#toLowerCase + local.tee $43 + call $~lib/rt/pure/__retain + local.set $44 + i32.const 14896 + call $~lib/rt/pure/__retain + local.set $45 + local.get $44 + i32.eqz + local.get $45 + i32.eqz + i32.or + if (result i32) + local.get $44 + local.get $45 + i32.eq + else + local.get $44 + local.get $45 + call $~lib/string/String.__eq + end + local.set $46 + local.get $45 + call $~lib/rt/pure/__release + local.get $44 + call $~lib/rt/pure/__release + local.get $46 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -5177,8 +6121,33 @@ i32.const 14928 call $~lib/string/String#toLowerCase local.tee $44 + call $~lib/rt/pure/__retain + local.set $45 i32.const 14960 - call $~lib/string/String.__eq + call $~lib/rt/pure/__retain + local.set $46 + local.get $45 + i32.eqz + local.get $46 + i32.eqz + i32.or + if (result i32) + local.get $45 + local.get $46 + i32.eq + else + local.get $45 + local.get $46 + call $~lib/string/String.__eq + end + local.set $47 + local.get $46 + call $~lib/rt/pure/__release + local.get $45 + call $~lib/rt/pure/__release + local.get $47 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -5191,8 +6160,33 @@ i32.const 14992 call $~lib/string/String#toLowerCase local.tee $45 + call $~lib/rt/pure/__retain + local.set $46 i32.const 15024 - call $~lib/string/String.__eq + call $~lib/rt/pure/__retain + local.set $47 + local.get $46 + i32.eqz + local.get $47 + i32.eqz + i32.or + if (result i32) + local.get $46 + local.get $47 + i32.eq + else + local.get $46 + local.get $47 + call $~lib/string/String.__eq + end + local.set $48 + local.get $47 + call $~lib/rt/pure/__release + local.get $46 + call $~lib/rt/pure/__release + local.get $48 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -5205,8 +6199,33 @@ i32.const 15056 call $~lib/string/String#toLowerCase local.tee $46 + call $~lib/rt/pure/__retain + local.set $47 i32.const 15088 - call $~lib/string/String.__eq + call $~lib/rt/pure/__retain + local.set $48 + local.get $47 + i32.eqz + local.get $48 + i32.eqz + i32.or + if (result i32) + local.get $47 + local.get $48 + i32.eq + else + local.get $47 + local.get $48 + call $~lib/string/String.__eq + end + local.set $49 + local.get $48 + call $~lib/rt/pure/__release + local.get $47 + call $~lib/rt/pure/__release + local.get $49 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -5219,8 +6238,33 @@ i32.const 15120 call $~lib/string/String#toLowerCase local.tee $47 + call $~lib/rt/pure/__retain + local.set $48 i32.const 15152 - call $~lib/string/String.__eq + call $~lib/rt/pure/__retain + local.set $49 + local.get $48 + i32.eqz + local.get $49 + i32.eqz + i32.or + if (result i32) + local.get $48 + local.get $49 + i32.eq + else + local.get $48 + local.get $49 + call $~lib/string/String.__eq + end + local.set $50 + local.get $49 + call $~lib/rt/pure/__release + local.get $48 + call $~lib/rt/pure/__release + local.get $50 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -5233,8 +6277,33 @@ i32.const 15184 call $~lib/string/String#toLowerCase local.tee $48 + call $~lib/rt/pure/__retain + local.set $49 i32.const 15216 - call $~lib/string/String.__eq + call $~lib/rt/pure/__retain + local.set $50 + local.get $49 + i32.eqz + local.get $50 + i32.eqz + i32.or + if (result i32) + local.get $49 + local.get $50 + i32.eq + else + local.get $49 + local.get $50 + call $~lib/string/String.__eq + end + local.set $51 + local.get $50 + call $~lib/rt/pure/__release + local.get $49 + call $~lib/rt/pure/__release + local.get $51 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -5247,8 +6316,33 @@ i32.const 15248 call $~lib/string/String#toLowerCase local.tee $49 + call $~lib/rt/pure/__retain + local.set $50 i32.const 15280 - call $~lib/string/String.__eq + call $~lib/rt/pure/__retain + local.set $51 + local.get $50 + i32.eqz + local.get $51 + i32.eqz + i32.or + if (result i32) + local.get $50 + local.get $51 + i32.eq + else + local.get $50 + local.get $51 + call $~lib/string/String.__eq + end + local.set $52 + local.get $51 + call $~lib/rt/pure/__release + local.get $50 + call $~lib/rt/pure/__release + local.get $52 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -5261,8 +6355,33 @@ i32.const 15312 call $~lib/string/String#toLowerCase local.tee $50 + call $~lib/rt/pure/__retain + local.set $51 i32.const 15344 - call $~lib/string/String.__eq + call $~lib/rt/pure/__retain + local.set $52 + local.get $51 + i32.eqz + local.get $52 + i32.eqz + i32.or + if (result i32) + local.get $51 + local.get $52 + i32.eq + else + local.get $51 + local.get $52 + call $~lib/string/String.__eq + end + local.set $53 + local.get $52 + call $~lib/rt/pure/__release + local.get $51 + call $~lib/rt/pure/__release + local.get $53 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -5275,8 +6394,33 @@ i32.const 15376 call $~lib/string/String#toLowerCase local.tee $51 + call $~lib/rt/pure/__retain + local.set $52 i32.const 15408 - call $~lib/string/String.__eq + call $~lib/rt/pure/__retain + local.set $53 + local.get $52 + i32.eqz + local.get $53 + i32.eqz + i32.or + if (result i32) + local.get $52 + local.get $53 + i32.eq + else + local.get $52 + local.get $53 + call $~lib/string/String.__eq + end + local.set $54 + local.get $53 + call $~lib/rt/pure/__release + local.get $52 + call $~lib/rt/pure/__release + local.get $54 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -5289,8 +6433,33 @@ i32.const 15440 call $~lib/string/String#toLowerCase local.tee $52 + call $~lib/rt/pure/__retain + local.set $53 i32.const 15472 - call $~lib/string/String.__eq + call $~lib/rt/pure/__retain + local.set $54 + local.get $53 + i32.eqz + local.get $54 + i32.eqz + i32.or + if (result i32) + local.get $53 + local.get $54 + i32.eq + else + local.get $53 + local.get $54 + call $~lib/string/String.__eq + end + local.set $55 + local.get $54 + call $~lib/rt/pure/__release + local.get $53 + call $~lib/rt/pure/__release + local.get $55 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -5303,8 +6472,33 @@ i32.const 15504 call $~lib/string/String#toLowerCase local.tee $53 + call $~lib/rt/pure/__retain + local.set $54 i32.const 15536 - call $~lib/string/String.__eq + call $~lib/rt/pure/__retain + local.set $55 + local.get $54 + i32.eqz + local.get $55 + i32.eqz + i32.or + if (result i32) + local.get $54 + local.get $55 + i32.eq + else + local.get $54 + local.get $55 + call $~lib/string/String.__eq + end + local.set $56 + local.get $55 + call $~lib/rt/pure/__release + local.get $54 + call $~lib/rt/pure/__release + local.get $56 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -5317,8 +6511,33 @@ i32.const 15568 call $~lib/string/String#toLowerCase local.tee $54 + call $~lib/rt/pure/__retain + local.set $55 i32.const 15600 - call $~lib/string/String.__eq + call $~lib/rt/pure/__retain + local.set $56 + local.get $55 + i32.eqz + local.get $56 + i32.eqz + i32.or + if (result i32) + local.get $55 + local.get $56 + i32.eq + else + local.get $55 + local.get $56 + call $~lib/string/String.__eq + end + local.set $57 + local.get $56 + call $~lib/rt/pure/__release + local.get $55 + call $~lib/rt/pure/__release + local.get $57 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -5331,8 +6550,33 @@ i32.const 15632 call $~lib/string/String#toLowerCase local.tee $55 + call $~lib/rt/pure/__retain + local.set $56 i32.const 15664 - call $~lib/string/String.__eq + call $~lib/rt/pure/__retain + local.set $57 + local.get $56 + i32.eqz + local.get $57 + i32.eqz + i32.or + if (result i32) + local.get $56 + local.get $57 + i32.eq + else + local.get $56 + local.get $57 + call $~lib/string/String.__eq + end + local.set $58 + local.get $57 + call $~lib/rt/pure/__release + local.get $56 + call $~lib/rt/pure/__release + local.get $58 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -5345,8 +6589,33 @@ i32.const 15696 call $~lib/string/String#toLowerCase local.tee $56 + call $~lib/rt/pure/__retain + local.set $57 i32.const 15728 - call $~lib/string/String.__eq + call $~lib/rt/pure/__retain + local.set $58 + local.get $57 + i32.eqz + local.get $58 + i32.eqz + i32.or + if (result i32) + local.get $57 + local.get $58 + i32.eq + else + local.get $57 + local.get $58 + call $~lib/string/String.__eq + end + local.set $59 + local.get $58 + call $~lib/rt/pure/__release + local.get $57 + call $~lib/rt/pure/__release + local.get $59 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -5359,8 +6628,33 @@ i32.const 15760 call $~lib/string/String#toLowerCase local.tee $57 + call $~lib/rt/pure/__retain + local.set $58 i32.const 15792 - call $~lib/string/String.__eq + call $~lib/rt/pure/__retain + local.set $59 + local.get $58 + i32.eqz + local.get $59 + i32.eqz + i32.or + if (result i32) + local.get $58 + local.get $59 + i32.eq + else + local.get $58 + local.get $59 + call $~lib/string/String.__eq + end + local.set $60 + local.get $59 + call $~lib/rt/pure/__release + local.get $58 + call $~lib/rt/pure/__release + local.get $60 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -5373,8 +6667,33 @@ i32.const 15824 call $~lib/string/String#toLowerCase local.tee $58 + call $~lib/rt/pure/__retain + local.set $59 i32.const 15856 - call $~lib/string/String.__eq + call $~lib/rt/pure/__retain + local.set $60 + local.get $59 + i32.eqz + local.get $60 + i32.eqz + i32.or + if (result i32) + local.get $59 + local.get $60 + i32.eq + else + local.get $59 + local.get $60 + call $~lib/string/String.__eq + end + local.set $61 + local.get $60 + call $~lib/rt/pure/__release + local.get $59 + call $~lib/rt/pure/__release + local.get $61 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -5387,8 +6706,33 @@ i32.const 15888 call $~lib/string/String#toLowerCase local.tee $59 + call $~lib/rt/pure/__retain + local.set $60 i32.const 15920 - call $~lib/string/String.__eq + call $~lib/rt/pure/__retain + local.set $61 + local.get $60 + i32.eqz + local.get $61 + i32.eqz + i32.or + if (result i32) + local.get $60 + local.get $61 + i32.eq + else + local.get $60 + local.get $61 + call $~lib/string/String.__eq + end + local.set $62 + local.get $61 + call $~lib/rt/pure/__release + local.get $60 + call $~lib/rt/pure/__release + local.get $62 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -5401,8 +6745,33 @@ i32.const 15952 call $~lib/string/String#toLowerCase local.tee $60 + call $~lib/rt/pure/__retain + local.set $61 i32.const 15024 - call $~lib/string/String.__eq + call $~lib/rt/pure/__retain + local.set $62 + local.get $61 + i32.eqz + local.get $62 + i32.eqz + i32.or + if (result i32) + local.get $61 + local.get $62 + i32.eq + else + local.get $61 + local.get $62 + call $~lib/string/String.__eq + end + local.set $63 + local.get $62 + call $~lib/rt/pure/__release + local.get $61 + call $~lib/rt/pure/__release + local.get $63 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -5415,8 +6784,33 @@ i32.const 15984 call $~lib/string/String#toLowerCase local.tee $61 + call $~lib/rt/pure/__retain + local.set $62 i32.const 16016 - call $~lib/string/String.__eq + call $~lib/rt/pure/__retain + local.set $63 + local.get $62 + i32.eqz + local.get $63 + i32.eqz + i32.or + if (result i32) + local.get $62 + local.get $63 + i32.eq + else + local.get $62 + local.get $63 + call $~lib/string/String.__eq + end + local.set $64 + local.get $63 + call $~lib/rt/pure/__release + local.get $62 + call $~lib/rt/pure/__release + local.get $64 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -5429,8 +6823,33 @@ i32.const 16048 call $~lib/string/String#toLowerCase local.tee $62 + call $~lib/rt/pure/__retain + local.set $63 i32.const 16080 - call $~lib/string/String.__eq + call $~lib/rt/pure/__retain + local.set $64 + local.get $63 + i32.eqz + local.get $64 + i32.eqz + i32.or + if (result i32) + local.get $63 + local.get $64 + i32.eq + else + local.get $63 + local.get $64 + call $~lib/string/String.__eq + end + local.set $65 + local.get $64 + call $~lib/rt/pure/__release + local.get $63 + call $~lib/rt/pure/__release + local.get $65 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -5443,8 +6862,33 @@ i32.const 16112 call $~lib/string/String#toLowerCase local.tee $63 + call $~lib/rt/pure/__retain + local.set $64 i32.const 16144 - call $~lib/string/String.__eq + call $~lib/rt/pure/__retain + local.set $65 + local.get $64 + i32.eqz + local.get $65 + i32.eqz + i32.or + if (result i32) + local.get $64 + local.get $65 + i32.eq + else + local.get $64 + local.get $65 + call $~lib/string/String.__eq + end + local.set $66 + local.get $65 + call $~lib/rt/pure/__release + local.get $64 + call $~lib/rt/pure/__release + local.get $66 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -5457,8 +6901,33 @@ i32.const 16176 call $~lib/string/String#toLowerCase local.tee $64 + call $~lib/rt/pure/__retain + local.set $65 i32.const 16208 - call $~lib/string/String.__eq + call $~lib/rt/pure/__retain + local.set $66 + local.get $65 + i32.eqz + local.get $66 + i32.eqz + i32.or + if (result i32) + local.get $65 + local.get $66 + i32.eq + else + local.get $65 + local.get $66 + call $~lib/string/String.__eq + end + local.set $67 + local.get $66 + call $~lib/rt/pure/__release + local.get $65 + call $~lib/rt/pure/__release + local.get $67 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -5471,8 +6940,33 @@ i32.const 16240 call $~lib/string/String#toLowerCase local.tee $65 + call $~lib/rt/pure/__retain + local.set $66 i32.const 16272 - call $~lib/string/String.__eq + call $~lib/rt/pure/__retain + local.set $67 + local.get $66 + i32.eqz + local.get $67 + i32.eqz + i32.or + if (result i32) + local.get $66 + local.get $67 + i32.eq + else + local.get $66 + local.get $67 + call $~lib/string/String.__eq + end + local.set $68 + local.get $67 + call $~lib/rt/pure/__release + local.get $66 + call $~lib/rt/pure/__release + local.get $68 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -5485,8 +6979,33 @@ i32.const 16304 call $~lib/string/String#toLowerCase local.tee $66 + call $~lib/rt/pure/__retain + local.set $67 i32.const 16336 - call $~lib/string/String.__eq + call $~lib/rt/pure/__retain + local.set $68 + local.get $67 + i32.eqz + local.get $68 + i32.eqz + i32.or + if (result i32) + local.get $67 + local.get $68 + i32.eq + else + local.get $67 + local.get $68 + call $~lib/string/String.__eq + end + local.set $69 + local.get $68 + call $~lib/rt/pure/__release + local.get $67 + call $~lib/rt/pure/__release + local.get $69 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -5499,8 +7018,33 @@ i32.const 16368 call $~lib/string/String#toLowerCase local.tee $67 + call $~lib/rt/pure/__retain + local.set $68 i32.const 16400 - call $~lib/string/String.__eq + call $~lib/rt/pure/__retain + local.set $69 + local.get $68 + i32.eqz + local.get $69 + i32.eqz + i32.or + if (result i32) + local.get $68 + local.get $69 + i32.eq + else + local.get $68 + local.get $69 + call $~lib/string/String.__eq + end + local.set $70 + local.get $69 + call $~lib/rt/pure/__release + local.get $68 + call $~lib/rt/pure/__release + local.get $70 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -5513,8 +7057,33 @@ i32.const 16432 call $~lib/string/String#toLowerCase local.tee $68 + call $~lib/rt/pure/__retain + local.set $69 i32.const 16464 - call $~lib/string/String.__eq + call $~lib/rt/pure/__retain + local.set $70 + local.get $69 + i32.eqz + local.get $70 + i32.eqz + i32.or + if (result i32) + local.get $69 + local.get $70 + i32.eq + else + local.get $69 + local.get $70 + call $~lib/string/String.__eq + end + local.set $71 + local.get $70 + call $~lib/rt/pure/__release + local.get $69 + call $~lib/rt/pure/__release + local.get $71 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -5527,8 +7096,33 @@ i32.const 16496 call $~lib/string/String#toLowerCase local.tee $69 + call $~lib/rt/pure/__retain + local.set $70 i32.const 16528 - call $~lib/string/String.__eq + call $~lib/rt/pure/__retain + local.set $71 + local.get $70 + i32.eqz + local.get $71 + i32.eqz + i32.or + if (result i32) + local.get $70 + local.get $71 + i32.eq + else + local.get $70 + local.get $71 + call $~lib/string/String.__eq + end + local.set $72 + local.get $71 + call $~lib/rt/pure/__release + local.get $70 + call $~lib/rt/pure/__release + local.get $72 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -5541,8 +7135,33 @@ i32.const 16560 call $~lib/string/String#toLowerCase local.tee $70 + call $~lib/rt/pure/__retain + local.set $71 i32.const 16592 - call $~lib/string/String.__eq + call $~lib/rt/pure/__retain + local.set $72 + local.get $71 + i32.eqz + local.get $72 + i32.eqz + i32.or + if (result i32) + local.get $71 + local.get $72 + i32.eq + else + local.get $71 + local.get $72 + call $~lib/string/String.__eq + end + local.set $73 + local.get $72 + call $~lib/rt/pure/__release + local.get $71 + call $~lib/rt/pure/__release + local.get $73 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -5555,8 +7174,33 @@ i32.const 16624 call $~lib/string/String#toLowerCase local.tee $71 + call $~lib/rt/pure/__retain + local.set $72 i32.const 16656 - call $~lib/string/String.__eq + call $~lib/rt/pure/__retain + local.set $73 + local.get $72 + i32.eqz + local.get $73 + i32.eqz + i32.or + if (result i32) + local.get $72 + local.get $73 + i32.eq + else + local.get $72 + local.get $73 + call $~lib/string/String.__eq + end + local.set $74 + local.get $73 + call $~lib/rt/pure/__release + local.get $72 + call $~lib/rt/pure/__release + local.get $74 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -5569,8 +7213,33 @@ i32.const 16688 call $~lib/string/String#toLowerCase local.tee $72 + call $~lib/rt/pure/__retain + local.set $73 i32.const 16720 - call $~lib/string/String.__eq + call $~lib/rt/pure/__retain + local.set $74 + local.get $73 + i32.eqz + local.get $74 + i32.eqz + i32.or + if (result i32) + local.get $73 + local.get $74 + i32.eq + else + local.get $73 + local.get $74 + call $~lib/string/String.__eq + end + local.set $75 + local.get $74 + call $~lib/rt/pure/__release + local.get $73 + call $~lib/rt/pure/__release + local.get $75 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -5583,8 +7252,33 @@ i32.const 16752 call $~lib/string/String#toUpperCase local.tee $73 + call $~lib/rt/pure/__retain + local.set $74 i32.const 16784 - call $~lib/string/String.__eq + call $~lib/rt/pure/__retain + local.set $75 + local.get $74 + i32.eqz + local.get $75 + i32.eqz + i32.or + if (result i32) + local.get $74 + local.get $75 + i32.eq + else + local.get $74 + local.get $75 + call $~lib/string/String.__eq + end + local.set $76 + local.get $75 + call $~lib/rt/pure/__release + local.get $74 + call $~lib/rt/pure/__release + local.get $76 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -5597,8 +7291,33 @@ i32.const 14000 call $~lib/string/String#toUpperCase local.tee $74 + call $~lib/rt/pure/__retain + local.set $75 i32.const 16816 - call $~lib/string/String.__eq + call $~lib/rt/pure/__retain + local.set $76 + local.get $75 + i32.eqz + local.get $76 + i32.eqz + i32.or + if (result i32) + local.get $75 + local.get $76 + i32.eq + else + local.get $75 + local.get $76 + call $~lib/string/String.__eq + end + local.set $77 + local.get $76 + call $~lib/rt/pure/__release + local.get $75 + call $~lib/rt/pure/__release + local.get $77 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -5611,8 +7330,33 @@ i32.const 16848 call $~lib/string/String#toUpperCase local.tee $75 + call $~lib/rt/pure/__retain + local.set $76 i32.const 16880 - call $~lib/string/String.__eq + call $~lib/rt/pure/__retain + local.set $77 + local.get $76 + i32.eqz + local.get $77 + i32.eqz + i32.or + if (result i32) + local.get $76 + local.get $77 + i32.eq + else + local.get $76 + local.get $77 + call $~lib/string/String.__eq + end + local.set $78 + local.get $77 + call $~lib/rt/pure/__release + local.get $76 + call $~lib/rt/pure/__release + local.get $78 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -5625,8 +7369,33 @@ i32.const 16912 call $~lib/string/String#toUpperCase local.tee $76 + call $~lib/rt/pure/__retain + local.set $77 i32.const 16944 - call $~lib/string/String.__eq + call $~lib/rt/pure/__retain + local.set $78 + local.get $77 + i32.eqz + local.get $78 + i32.eqz + i32.or + if (result i32) + local.get $77 + local.get $78 + i32.eq + else + local.get $77 + local.get $78 + call $~lib/string/String.__eq + end + local.set $79 + local.get $78 + call $~lib/rt/pure/__release + local.get $77 + call $~lib/rt/pure/__release + local.get $79 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -5639,8 +7408,33 @@ i32.const 16976 call $~lib/string/String#toUpperCase local.tee $77 + call $~lib/rt/pure/__retain + local.set $78 i32.const 17008 - call $~lib/string/String.__eq + call $~lib/rt/pure/__retain + local.set $79 + local.get $78 + i32.eqz + local.get $79 + i32.eqz + i32.or + if (result i32) + local.get $78 + local.get $79 + i32.eq + else + local.get $78 + local.get $79 + call $~lib/string/String.__eq + end + local.set $80 + local.get $79 + call $~lib/rt/pure/__release + local.get $78 + call $~lib/rt/pure/__release + local.get $80 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -5653,8 +7447,33 @@ i32.const 17040 call $~lib/string/String#toUpperCase local.tee $78 + call $~lib/rt/pure/__retain + local.set $79 i32.const 17072 - call $~lib/string/String.__eq + call $~lib/rt/pure/__retain + local.set $80 + local.get $79 + i32.eqz + local.get $80 + i32.eqz + i32.or + if (result i32) + local.get $79 + local.get $80 + i32.eq + else + local.get $79 + local.get $80 + call $~lib/string/String.__eq + end + local.set $81 + local.get $80 + call $~lib/rt/pure/__release + local.get $79 + call $~lib/rt/pure/__release + local.get $81 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -5667,8 +7486,33 @@ i32.const 17104 call $~lib/string/String#toUpperCase local.tee $79 + call $~lib/rt/pure/__retain + local.set $80 i32.const 17072 - call $~lib/string/String.__eq + call $~lib/rt/pure/__retain + local.set $81 + local.get $80 + i32.eqz + local.get $81 + i32.eqz + i32.or + if (result i32) + local.get $80 + local.get $81 + i32.eq + else + local.get $80 + local.get $81 + call $~lib/string/String.__eq + end + local.set $82 + local.get $81 + call $~lib/rt/pure/__release + local.get $80 + call $~lib/rt/pure/__release + local.get $82 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -5681,8 +7525,33 @@ i32.const 17136 call $~lib/string/String#toUpperCase local.tee $80 + call $~lib/rt/pure/__retain + local.set $81 i32.const 17168 - call $~lib/string/String.__eq + call $~lib/rt/pure/__retain + local.set $82 + local.get $81 + i32.eqz + local.get $82 + i32.eqz + i32.or + if (result i32) + local.get $81 + local.get $82 + i32.eq + else + local.get $81 + local.get $82 + call $~lib/string/String.__eq + end + local.set $83 + local.get $82 + call $~lib/rt/pure/__release + local.get $81 + call $~lib/rt/pure/__release + local.get $83 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -5695,8 +7564,33 @@ i32.const 17200 call $~lib/string/String#toUpperCase local.tee $81 + call $~lib/rt/pure/__retain + local.set $82 i32.const 17232 - call $~lib/string/String.__eq + call $~lib/rt/pure/__retain + local.set $83 + local.get $82 + i32.eqz + local.get $83 + i32.eqz + i32.or + if (result i32) + local.get $82 + local.get $83 + i32.eq + else + local.get $82 + local.get $83 + call $~lib/string/String.__eq + end + local.set $84 + local.get $83 + call $~lib/rt/pure/__release + local.get $82 + call $~lib/rt/pure/__release + local.get $84 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -5709,8 +7603,33 @@ i32.const 17264 call $~lib/string/String#toUpperCase local.tee $82 + call $~lib/rt/pure/__retain + local.set $83 i32.const 17296 - call $~lib/string/String.__eq + call $~lib/rt/pure/__retain + local.set $84 + local.get $83 + i32.eqz + local.get $84 + i32.eqz + i32.or + if (result i32) + local.get $83 + local.get $84 + i32.eq + else + local.get $83 + local.get $84 + call $~lib/string/String.__eq + end + local.set $85 + local.get $84 + call $~lib/rt/pure/__release + local.get $83 + call $~lib/rt/pure/__release + local.get $85 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -5723,8 +7642,33 @@ i32.const 17328 call $~lib/string/String#toUpperCase local.tee $83 + call $~lib/rt/pure/__retain + local.set $84 i32.const 17360 - call $~lib/string/String.__eq + call $~lib/rt/pure/__retain + local.set $85 + local.get $84 + i32.eqz + local.get $85 + i32.eqz + i32.or + if (result i32) + local.get $84 + local.get $85 + i32.eq + else + local.get $84 + local.get $85 + call $~lib/string/String.__eq + end + local.set $86 + local.get $85 + call $~lib/rt/pure/__release + local.get $84 + call $~lib/rt/pure/__release + local.get $86 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -5737,8 +7681,33 @@ i32.const 17392 call $~lib/string/String#toUpperCase local.tee $84 + call $~lib/rt/pure/__retain + local.set $85 i32.const 17424 - call $~lib/string/String.__eq + call $~lib/rt/pure/__retain + local.set $86 + local.get $85 + i32.eqz + local.get $86 + i32.eqz + i32.or + if (result i32) + local.get $85 + local.get $86 + i32.eq + else + local.get $85 + local.get $86 + call $~lib/string/String.__eq + end + local.set $87 + local.get $86 + call $~lib/rt/pure/__release + local.get $85 + call $~lib/rt/pure/__release + local.get $87 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -5751,8 +7720,33 @@ i32.const 17456 call $~lib/string/String#toUpperCase local.tee $85 + call $~lib/rt/pure/__retain + local.set $86 i32.const 17488 - call $~lib/string/String.__eq + call $~lib/rt/pure/__retain + local.set $87 + local.get $86 + i32.eqz + local.get $87 + i32.eqz + i32.or + if (result i32) + local.get $86 + local.get $87 + i32.eq + else + local.get $86 + local.get $87 + call $~lib/string/String.__eq + end + local.set $88 + local.get $87 + call $~lib/rt/pure/__release + local.get $86 + call $~lib/rt/pure/__release + local.get $88 + i32.const 0 + i32.ne i32.eqz if i32.const 0 diff --git a/tests/compiler/std/string-encoding.optimized.wat b/tests/compiler/std/string-encoding.optimized.wat index d2e2eef567..4d3542e74a 100644 --- a/tests/compiler/std/string-encoding.optimized.wat +++ b/tests/compiler/std/string-encoding.optimized.wat @@ -1579,22 +1579,6 @@ (func $~lib/string/String.__eq (; 24 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) local.get $0 - local.get $1 - i32.eq - if - i32.const 1 - return - end - local.get $1 - i32.eqz - i32.const 1 - local.get $0 - select - if - i32.const 0 - return - end - local.get $0 call $~lib/string/String#get:length local.tee $2 local.get $1 @@ -1619,18 +1603,28 @@ (local $5 i32) (local $6 i32) (local $7 i32) + (local $8 i32) i32.const 1040 call $~lib/string/String.UTF16.encode - local.set $0 + local.set $1 i32.const 1036 i32.load - local.set $1 - local.get $0 + local.set $0 + local.get $1 i32.const 0 call $~lib/string/String.UTF16.decodeUnsafe - local.tee $2 - i32.const 1296 - call $~lib/string/String.__eq + local.tee $3 + local.set $2 + local.get $3 + if (result i32) + local.get $2 + i32.const 1296 + call $~lib/string/String.__eq + else + local.get $2 + i32.const 1296 + i32.eq + end i32.eqz if i32.const 0 @@ -1640,12 +1634,21 @@ call $~lib/builtins/abort unreachable end - local.get $0 local.get $1 + local.get $0 call $~lib/string/String.UTF16.decodeUnsafe - local.tee $3 - i32.const 1040 - call $~lib/string/String.__eq + local.tee $4 + local.set $0 + local.get $4 + if (result i32) + local.get $0 + i32.const 1040 + call $~lib/string/String.__eq + else + local.get $0 + i32.const 1040 + i32.eq + end i32.eqz if i32.const 0 @@ -1655,12 +1658,21 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.const 4 call $~lib/string/String.UTF16.decodeUnsafe - local.tee $4 - i32.const 1312 - call $~lib/string/String.__eq + local.tee $5 + local.set $0 + local.get $5 + if (result i32) + local.get $0 + i32.const 1312 + call $~lib/string/String.__eq + else + local.get $0 + i32.const 1312 + i32.eq + end i32.eqz if i32.const 0 @@ -1670,14 +1682,23 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.const 4 i32.add i32.const 2 call $~lib/string/String.UTF16.decodeUnsafe - local.tee $5 - i32.const 1344 - call $~lib/string/String.__eq + local.tee $6 + local.set $0 + local.get $6 + if (result i32) + local.get $0 + i32.const 1344 + call $~lib/string/String.__eq + else + local.get $0 + i32.const 1344 + i32.eq + end i32.eqz if i32.const 0 @@ -1687,14 +1708,23 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.const 4 i32.add i32.const 4 call $~lib/string/String.UTF16.decodeUnsafe - local.tee $6 - i32.const 1376 - call $~lib/string/String.__eq + local.tee $7 + local.set $0 + local.get $7 + if (result i32) + local.get $0 + i32.const 1376 + call $~lib/string/String.__eq + else + local.get $0 + i32.const 1376 + i32.eq + end i32.eqz if i32.const 0 @@ -1704,14 +1734,23 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.const 8 i32.add i32.const 4 call $~lib/string/String.UTF16.decodeUnsafe - local.tee $7 - i32.const 1408 - call $~lib/string/String.__eq + local.tee $8 + local.set $0 + local.get $8 + if (result i32) + local.get $0 + i32.const 1408 + call $~lib/string/String.__eq + else + local.get $0 + i32.const 1408 + i32.eq + end i32.eqz if i32.const 0 @@ -1721,14 +1760,23 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.const 12 i32.add i32.const 0 call $~lib/string/String.UTF16.decodeUnsafe - local.tee $1 - i32.const 1296 - call $~lib/string/String.__eq + local.tee $2 + local.set $0 + local.get $2 + if (result i32) + local.get $0 + i32.const 1296 + call $~lib/string/String.__eq + else + local.get $0 + i32.const 1296 + i32.eq + end i32.eqz if i32.const 0 @@ -1738,8 +1786,6 @@ call $~lib/builtins/abort unreachable end - local.get $2 - call $~lib/rt/pure/__release local.get $3 call $~lib/rt/pure/__release local.get $4 @@ -1750,9 +1796,11 @@ call $~lib/rt/pure/__release local.get $7 call $~lib/rt/pure/__release - local.get $1 + local.get $8 call $~lib/rt/pure/__release - local.get $0 + local.get $2 + call $~lib/rt/pure/__release + local.get $1 call $~lib/rt/pure/__release ) (func $~lib/string/String.UTF8.byteLength (; 26 ;) (param $0 i32) (param $1 i32) (result i32) @@ -2466,7 +2514,7 @@ if i32.const 0 i32.const 1440 - i32.const 742 + i32.const 750 i32.const 6 call $~lib/builtins/abort unreachable @@ -2700,15 +2748,25 @@ (local $3 i32) (local $4 i32) (local $5 i32) + (local $6 i32) i32.const 1040 i32.const 1 call $~lib/string/String.UTF8.encode - local.tee $1 + local.tee $5 i32.const 1 call $~lib/string/String.UTF8.decode local.tee $2 - i32.const 1040 - call $~lib/string/String.__eq + local.set $0 + local.get $2 + if (result i32) + local.get $0 + i32.const 1040 + call $~lib/string/String.__eq + else + local.get $0 + i32.const 1040 + i32.eq + end i32.eqz if i32.const 0 @@ -2765,8 +2823,17 @@ i32.const 1 call $~lib/string/String.UTF8.decode local.tee $3 - i32.const 1520 - call $~lib/string/String.__eq + local.set $1 + local.get $3 + if (result i32) + local.get $1 + i32.const 1520 + call $~lib/string/String.__eq + else + local.get $1 + i32.const 1520 + i32.eq + end i32.eqz if i32.const 0 @@ -2779,12 +2846,21 @@ i32.const 1488 i32.const 0 call $~lib/string/String.UTF8.encode - local.tee $4 + local.tee $6 i32.const 1 call $~lib/string/String.UTF8.decode - local.tee $5 - i32.const 1520 - call $~lib/string/String.__eq + local.tee $1 + local.set $4 + local.get $1 + if (result i32) + local.get $4 + i32.const 1520 + call $~lib/string/String.__eq + else + local.get $4 + i32.const 1520 + i32.eq + end i32.eqz if i32.const 0 @@ -2798,13 +2874,13 @@ call $~lib/rt/pure/__release local.get $3 call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release local.get $1 call $~lib/rt/pure/__release + local.get $5 + call $~lib/rt/pure/__release local.get $0 call $~lib/rt/pure/__release - local.get $4 + local.get $6 call $~lib/rt/pure/__release ) (func $std/string-encoding/testUTF8DecodeUnsafe (; 36 ;) @@ -2818,22 +2894,31 @@ (local $7 i32) (local $8 i32) (local $9 i32) + (local $10 i32) i32.const 1040 i32.const 1 call $~lib/string/String.UTF8.encode - local.set $0 + local.set $1 i32.const 1040 i32.const 0 call $~lib/string/String.UTF8.byteLength - local.set $9 - local.get $0 - local.tee $1 + local.set $3 + local.get $1 + local.tee $0 i32.const 0 i32.const 0 call $~lib/string/String.UTF8.decodeUnsafe - local.tee $8 - i32.const 1296 - call $~lib/string/String.__eq + local.tee $6 + local.tee $5 + if (result i32) + local.get $5 + i32.const 1296 + call $~lib/string/String.__eq + else + local.get $5 + i32.const 1296 + i32.eq + end i32.eqz if i32.const 0 @@ -2843,13 +2928,21 @@ call $~lib/builtins/abort unreachable end - local.get $1 - local.get $9 + local.get $0 + local.get $3 i32.const 0 call $~lib/string/String.UTF8.decodeUnsafe local.tee $7 - i32.const 1040 - call $~lib/string/String.__eq + local.tee $2 + if (result i32) + local.get $2 + i32.const 1040 + call $~lib/string/String.__eq + else + local.get $2 + i32.const 1040 + i32.eq + end i32.eqz if i32.const 0 @@ -2859,13 +2952,21 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $0 i32.const 4 i32.const 0 call $~lib/string/String.UTF8.decodeUnsafe - local.tee $6 - i32.const 1312 - call $~lib/string/String.__eq + local.tee $8 + local.tee $2 + if (result i32) + local.get $2 + i32.const 1312 + call $~lib/string/String.__eq + else + local.get $2 + i32.const 1312 + i32.eq + end i32.eqz if i32.const 0 @@ -2875,15 +2976,23 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $0 i32.const 4 i32.add i32.const 2 i32.const 0 call $~lib/string/String.UTF8.decodeUnsafe - local.tee $5 - i32.const 1376 - call $~lib/string/String.__eq + local.tee $9 + local.tee $2 + if (result i32) + local.get $2 + i32.const 1376 + call $~lib/string/String.__eq + else + local.get $2 + i32.const 1376 + i32.eq + end i32.eqz if i32.const 0 @@ -2893,15 +3002,23 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $0 i32.const 6 i32.add i32.const 4 i32.const 0 call $~lib/string/String.UTF8.decodeUnsafe - local.tee $4 - i32.const 1408 - call $~lib/string/String.__eq + local.tee $10 + local.tee $2 + if (result i32) + local.get $2 + i32.const 1408 + call $~lib/string/String.__eq + else + local.get $2 + i32.const 1408 + i32.eq + end i32.eqz if i32.const 0 @@ -2911,15 +3028,23 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $0 i32.const 10 i32.add i32.const 0 i32.const 0 call $~lib/string/String.UTF8.decodeUnsafe - local.tee $3 - i32.const 1296 - call $~lib/string/String.__eq + local.tee $5 + local.tee $2 + if (result i32) + local.get $2 + i32.const 1296 + call $~lib/string/String.__eq + else + local.get $2 + i32.const 1296 + i32.eq + end i32.eqz if i32.const 0 @@ -2929,15 +3054,23 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $0 i32.const 4 i32.add i32.const 100 i32.const 1 call $~lib/string/String.UTF8.decodeUnsafe local.tee $2 - i32.const 1552 - call $~lib/string/String.__eq + local.tee $3 + if (result i32) + local.get $3 + i32.const 1552 + call $~lib/string/String.__eq + else + local.get $3 + i32.const 1552 + i32.eq + end i32.eqz if i32.const 0 @@ -2947,15 +3080,23 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $0 i32.const 6 i32.add i32.const 100 i32.const 1 call $~lib/string/String.UTF8.decodeUnsafe - local.tee $9 - i32.const 1408 - call $~lib/string/String.__eq + local.tee $3 + local.tee $4 + if (result i32) + local.get $4 + i32.const 1408 + call $~lib/string/String.__eq + else + local.get $4 + i32.const 1408 + i32.eq + end i32.eqz if i32.const 0 @@ -2965,15 +3106,23 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $0 i32.const 10 i32.add i32.const 100 i32.const 1 call $~lib/string/String.UTF8.decodeUnsafe - local.tee $1 - i32.const 1296 - call $~lib/string/String.__eq + local.tee $0 + local.tee $4 + if (result i32) + local.get $4 + i32.const 1296 + call $~lib/string/String.__eq + else + local.get $4 + i32.const 1296 + i32.eq + end i32.eqz if i32.const 0 @@ -2983,41 +3132,54 @@ call $~lib/builtins/abort unreachable end - local.get $8 + local.get $6 call $~lib/rt/pure/__release local.get $7 call $~lib/rt/pure/__release - local.get $6 + local.get $8 call $~lib/rt/pure/__release - local.get $5 + local.get $9 call $~lib/rt/pure/__release - local.get $4 + local.get $10 call $~lib/rt/pure/__release - local.get $3 + local.get $5 call $~lib/rt/pure/__release local.get $2 call $~lib/rt/pure/__release - local.get $9 - call $~lib/rt/pure/__release - local.get $1 + local.get $3 call $~lib/rt/pure/__release local.get $0 call $~lib/rt/pure/__release + local.get $1 + call $~lib/rt/pure/__release ) (func $std/string-encoding/testLarge (; 37 ;) (param $0 i32) (local $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) + (local $5 i32) local.get $0 i32.const 0 call $~lib/string/String.UTF8.encode - local.tee $1 + local.tee $2 i32.const 0 call $~lib/string/String.UTF8.decode - local.tee $2 + local.tee $3 + local.tee $1 + i32.eqz local.get $0 - call $~lib/string/String.__eq + i32.eqz + i32.or + if (result i32) + local.get $0 + local.get $1 + i32.eq + else + local.get $1 + local.get $0 + call $~lib/string/String.__eq + end i32.eqz if i32.const 0 @@ -3029,11 +3191,23 @@ end local.get $0 call $~lib/string/String.UTF16.encode - local.tee $3 - call $~lib/string/String.UTF16.decode local.tee $4 + call $~lib/string/String.UTF16.decode + local.tee $5 + local.tee $1 + i32.eqz local.get $0 - call $~lib/string/String.__eq + i32.eqz + i32.or + if (result i32) + local.get $0 + local.get $1 + i32.eq + else + local.get $1 + local.get $0 + call $~lib/string/String.__eq + end i32.eqz if i32.const 0 @@ -3043,18 +3217,19 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $3 call $~lib/rt/pure/__release - local.get $4 + local.get $5 call $~lib/rt/pure/__release - local.get $1 + local.get $2 call $~lib/rt/pure/__release - local.get $3 + local.get $4 call $~lib/rt/pure/__release ) (func $start:std/string-encoding (; 38 ;) (local $0 i32) (local $1 i32) + (local $2 i32) i32.const 1036 i32.load i32.const 12 @@ -3070,11 +3245,20 @@ call $std/string-encoding/testUTF16Encode i32.const 1040 call $~lib/string/String.UTF16.encode - local.tee $0 + local.tee $2 call $~lib/string/String.UTF16.decode - local.tee $1 - i32.const 1040 - call $~lib/string/String.__eq + local.tee $0 + local.set $1 + local.get $0 + if (result i32) + local.get $1 + i32.const 1040 + call $~lib/string/String.__eq + else + local.get $1 + i32.const 1040 + i32.eq + end i32.eqz if i32.const 0 @@ -3084,10 +3268,10 @@ call $~lib/builtins/abort unreachable end - local.get $1 - call $~lib/rt/pure/__release local.get $0 call $~lib/rt/pure/__release + local.get $2 + call $~lib/rt/pure/__release call $std/string-encoding/testUTF16DecodeUnsafe i32.const 1040 i32.const 0 @@ -3120,12 +3304,21 @@ i32.const 1040 i32.const 0 call $~lib/string/String.UTF8.encode - local.tee $0 + local.tee $2 i32.const 0 call $~lib/string/String.UTF8.decode - local.tee $1 - i32.const 1040 - call $~lib/string/String.__eq + local.tee $0 + local.set $1 + local.get $0 + if (result i32) + local.get $1 + i32.const 1040 + call $~lib/string/String.__eq + else + local.get $1 + i32.const 1040 + i32.eq + end i32.eqz if i32.const 0 @@ -3135,10 +3328,10 @@ call $~lib/builtins/abort unreachable end - local.get $1 - call $~lib/rt/pure/__release local.get $0 call $~lib/rt/pure/__release + local.get $2 + call $~lib/rt/pure/__release call $std/string-encoding/testUTF8DecodeNullTerminated call $std/string-encoding/testUTF8DecodeUnsafe i32.const 1584 diff --git a/tests/compiler/std/string-encoding.untouched.wat b/tests/compiler/std/string-encoding.untouched.wat index 850af6f10d..a32f884755 100644 --- a/tests/compiler/std/string-encoding.untouched.wat +++ b/tests/compiler/std/string-encoding.untouched.wat @@ -3150,78 +3150,75 @@ call $~lib/rt/pure/__retain local.set $1 local.get $0 - local.get $1 - i32.eq - if - i32.const 1 - local.set $2 - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $2 - return - end - local.get $0 - i32.eqz - if (result i32) - i32.const 1 - else - local.get $1 - i32.eqz - end - if - i32.const 0 - local.set $2 - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $2 - return - end - local.get $0 call $~lib/string/String#get:length - local.set $3 - local.get $3 + local.set $2 + local.get $2 local.get $1 call $~lib/string/String#get:length i32.ne if i32.const 0 - local.set $2 + local.set $3 local.get $0 call $~lib/rt/pure/__release local.get $1 call $~lib/rt/pure/__release - local.get $2 + local.get $3 return end local.get $0 i32.const 0 local.get $1 i32.const 0 - local.get $3 + local.get $2 call $~lib/util/string/compareImpl i32.eqz - local.set $2 + local.set $3 local.get $0 call $~lib/rt/pure/__release local.get $1 call $~lib/rt/pure/__release - local.get $2 + local.get $3 ) (func $std/string-encoding/testUTF16Decode (; 32 ;) (local $0 i32) (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) global.get $std/string-encoding/str call $~lib/string/String.UTF16.encode local.set $0 local.get $0 call $~lib/string/String.UTF16.decode local.tee $1 + call $~lib/rt/pure/__retain + local.set $3 global.get $std/string-encoding/str - call $~lib/string/String.__eq + call $~lib/rt/pure/__retain + local.set $2 + local.get $3 + i32.eqz + local.get $2 + i32.eqz + i32.or + if (result i32) + local.get $3 + local.get $2 + i32.eq + else + local.get $3 + local.get $2 + call $~lib/string/String.__eq + end + local.set $4 + local.get $2 + call $~lib/rt/pure/__release + local.get $3 + call $~lib/rt/pure/__release + local.get $4 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -3247,6 +3244,9 @@ (local $7 i32) (local $8 i32) (local $9 i32) + (local $10 i32) + (local $11 i32) + (local $12 i32) global.get $std/string-encoding/str call $~lib/string/String.UTF16.encode local.set $0 @@ -3259,8 +3259,33 @@ i32.const 0 call $~lib/string/String.UTF16.decodeUnsafe local.tee $3 + call $~lib/rt/pure/__retain + local.set $5 i32.const 288 - call $~lib/string/String.__eq + call $~lib/rt/pure/__retain + local.set $4 + local.get $5 + i32.eqz + local.get $4 + i32.eqz + i32.or + if (result i32) + local.get $5 + local.get $4 + i32.eq + else + local.get $5 + local.get $4 + call $~lib/string/String.__eq + end + local.set $6 + local.get $4 + call $~lib/rt/pure/__release + local.get $5 + call $~lib/rt/pure/__release + local.get $6 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -3273,9 +3298,34 @@ local.get $2 local.get $1 call $~lib/string/String.UTF16.decodeUnsafe - local.tee $4 + local.tee $5 + call $~lib/rt/pure/__retain + local.set $4 global.get $std/string-encoding/str - call $~lib/string/String.__eq + call $~lib/rt/pure/__retain + local.set $6 + local.get $4 + i32.eqz + local.get $6 + i32.eqz + i32.or + if (result i32) + local.get $4 + local.get $6 + i32.eq + else + local.get $4 + local.get $6 + call $~lib/string/String.__eq + end + local.set $7 + local.get $6 + call $~lib/rt/pure/__release + local.get $4 + call $~lib/rt/pure/__release + local.get $7 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -3288,9 +3338,34 @@ local.get $2 i32.const 4 call $~lib/string/String.UTF16.decodeUnsafe - local.tee $5 + local.tee $4 + call $~lib/rt/pure/__retain + local.set $6 i32.const 304 - call $~lib/string/String.__eq + call $~lib/rt/pure/__retain + local.set $7 + local.get $6 + i32.eqz + local.get $7 + i32.eqz + i32.or + if (result i32) + local.get $6 + local.get $7 + i32.eq + else + local.get $6 + local.get $7 + call $~lib/string/String.__eq + end + local.set $8 + local.get $7 + call $~lib/rt/pure/__release + local.get $6 + call $~lib/rt/pure/__release + local.get $8 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -3306,8 +3381,33 @@ i32.const 2 call $~lib/string/String.UTF16.decodeUnsafe local.tee $6 + call $~lib/rt/pure/__retain + local.set $7 i32.const 336 - call $~lib/string/String.__eq + call $~lib/rt/pure/__retain + local.set $8 + local.get $7 + i32.eqz + local.get $8 + i32.eqz + i32.or + if (result i32) + local.get $7 + local.get $8 + i32.eq + else + local.get $7 + local.get $8 + call $~lib/string/String.__eq + end + local.set $9 + local.get $8 + call $~lib/rt/pure/__release + local.get $7 + call $~lib/rt/pure/__release + local.get $9 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -3323,8 +3423,33 @@ i32.const 4 call $~lib/string/String.UTF16.decodeUnsafe local.tee $7 + call $~lib/rt/pure/__retain + local.set $8 i32.const 368 - call $~lib/string/String.__eq + call $~lib/rt/pure/__retain + local.set $9 + local.get $8 + i32.eqz + local.get $9 + i32.eqz + i32.or + if (result i32) + local.get $8 + local.get $9 + i32.eq + else + local.get $8 + local.get $9 + call $~lib/string/String.__eq + end + local.set $10 + local.get $9 + call $~lib/rt/pure/__release + local.get $8 + call $~lib/rt/pure/__release + local.get $10 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -3340,8 +3465,33 @@ i32.const 4 call $~lib/string/String.UTF16.decodeUnsafe local.tee $8 + call $~lib/rt/pure/__retain + local.set $9 i32.const 400 - call $~lib/string/String.__eq + call $~lib/rt/pure/__retain + local.set $10 + local.get $9 + i32.eqz + local.get $10 + i32.eqz + i32.or + if (result i32) + local.get $9 + local.get $10 + i32.eq + else + local.get $9 + local.get $10 + call $~lib/string/String.__eq + end + local.set $11 + local.get $10 + call $~lib/rt/pure/__release + local.get $9 + call $~lib/rt/pure/__release + local.get $11 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -3357,8 +3507,33 @@ i32.const 0 call $~lib/string/String.UTF16.decodeUnsafe local.tee $9 + call $~lib/rt/pure/__retain + local.set $10 i32.const 288 - call $~lib/string/String.__eq + call $~lib/rt/pure/__retain + local.set $11 + local.get $10 + i32.eqz + local.get $11 + i32.eqz + i32.or + if (result i32) + local.get $10 + local.get $11 + i32.eq + else + local.get $10 + local.get $11 + call $~lib/string/String.__eq + end + local.set $12 + local.get $11 + call $~lib/rt/pure/__release + local.get $10 + call $~lib/rt/pure/__release + local.get $12 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -3370,10 +3545,10 @@ end local.get $3 call $~lib/rt/pure/__release - local.get $4 - call $~lib/rt/pure/__release local.get $5 call $~lib/rt/pure/__release + local.get $4 + call $~lib/rt/pure/__release local.get $6 call $~lib/rt/pure/__release local.get $7 @@ -4305,7 +4480,7 @@ if i32.const 0 i32.const 432 - i32.const 742 + i32.const 750 i32.const 6 call $~lib/builtins/abort unreachable @@ -4515,6 +4690,9 @@ (func $std/string-encoding/testUTF8Decode (; 46 ;) (local $0 i32) (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) global.get $std/string-encoding/str i32.const 0 call $~lib/string/String.UTF8.encode @@ -4523,8 +4701,33 @@ i32.const 0 call $~lib/string/String.UTF8.decode local.tee $1 + call $~lib/rt/pure/__retain + local.set $3 global.get $std/string-encoding/str - call $~lib/string/String.__eq + call $~lib/rt/pure/__retain + local.set $2 + local.get $3 + i32.eqz + local.get $2 + i32.eqz + i32.or + if (result i32) + local.get $3 + local.get $2 + i32.eq + else + local.get $3 + local.get $2 + call $~lib/string/String.__eq + end + local.set $4 + local.get $2 + call $~lib/rt/pure/__release + local.get $3 + call $~lib/rt/pure/__release + local.get $4 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -4548,6 +4751,9 @@ (local $5 i32) (local $6 i32) (local $7 i32) + (local $8 i32) + (local $9 i32) + (local $10 i32) global.get $std/string-encoding/str i32.const 1 call $~lib/string/String.UTF8.encode @@ -4556,8 +4762,33 @@ i32.const 1 call $~lib/string/String.UTF8.decode local.tee $1 + call $~lib/rt/pure/__retain + local.set $3 global.get $std/string-encoding/str - call $~lib/string/String.__eq + call $~lib/rt/pure/__retain + local.set $2 + local.get $3 + i32.eqz + local.get $2 + i32.eqz + i32.or + if (result i32) + local.get $3 + local.get $2 + i32.eq + else + local.get $3 + local.get $2 + call $~lib/string/String.__eq + end + local.set $4 + local.get $2 + call $~lib/rt/pure/__release + local.get $3 + call $~lib/rt/pure/__release + local.get $4 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -4568,8 +4799,8 @@ unreachable end i32.const 480 - local.set $2 - local.get $2 + local.set $5 + local.get $5 i32.const 1 call $~lib/string/String.UTF8.byteLength i32.const 4 @@ -4583,11 +4814,11 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $5 i32.const 1 call $~lib/string/String.UTF8.encode - local.set $3 - local.get $3 + local.set $6 + local.get $6 call $~lib/arraybuffer/ArrayBuffer#get:byteLength i32.const 4 i32.eq @@ -4601,8 +4832,8 @@ unreachable end i32.const 512 - local.set $4 - local.get $4 + local.set $7 + local.get $7 i32.const 1 call $~lib/string/String.UTF8.byteLength i32.const 4 @@ -4616,12 +4847,37 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $6 i32.const 1 call $~lib/string/String.UTF8.decode - local.tee $5 + local.tee $3 + call $~lib/rt/pure/__retain + local.set $2 + local.get $7 + call $~lib/rt/pure/__retain + local.set $4 + local.get $2 + i32.eqz + local.get $4 + i32.eqz + i32.or + if (result i32) + local.get $2 + local.get $4 + i32.eq + else + local.get $2 + local.get $4 + call $~lib/string/String.__eq + end + local.set $8 local.get $4 - call $~lib/string/String.__eq + call $~lib/rt/pure/__release + local.get $2 + call $~lib/rt/pure/__release + local.get $8 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -4631,16 +4887,41 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $5 i32.const 0 call $~lib/string/String.UTF8.encode - local.set $6 - local.get $6 + local.set $9 + local.get $9 i32.const 1 call $~lib/string/String.UTF8.decode - local.tee $7 + local.tee $2 + call $~lib/rt/pure/__retain + local.set $4 + local.get $7 + call $~lib/rt/pure/__retain + local.set $8 + local.get $4 + i32.eqz + local.get $8 + i32.eqz + i32.or + if (result i32) + local.get $4 + local.get $8 + i32.eq + else + local.get $4 + local.get $8 + call $~lib/string/String.__eq + end + local.set $10 + local.get $8 + call $~lib/rt/pure/__release local.get $4 - call $~lib/string/String.__eq + call $~lib/rt/pure/__release + local.get $10 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -4652,19 +4933,19 @@ end local.get $1 call $~lib/rt/pure/__release - local.get $5 + local.get $3 call $~lib/rt/pure/__release - local.get $7 + local.get $2 call $~lib/rt/pure/__release local.get $0 call $~lib/rt/pure/__release - local.get $2 + local.get $5 call $~lib/rt/pure/__release - local.get $3 + local.get $6 call $~lib/rt/pure/__release - local.get $4 + local.get $7 call $~lib/rt/pure/__release - local.get $6 + local.get $9 call $~lib/rt/pure/__release ) (func $std/string-encoding/testUTF8DecodeUnsafe (; 48 ;) @@ -4680,6 +4961,9 @@ (local $9 i32) (local $10 i32) (local $11 i32) + (local $12 i32) + (local $13 i32) + (local $14 i32) global.get $std/string-encoding/str i32.const 1 call $~lib/string/String.UTF8.encode @@ -4695,8 +4979,33 @@ i32.const 0 call $~lib/string/String.UTF8.decodeUnsafe local.tee $3 + call $~lib/rt/pure/__retain + local.set $5 i32.const 288 - call $~lib/string/String.__eq + call $~lib/rt/pure/__retain + local.set $4 + local.get $5 + i32.eqz + local.get $4 + i32.eqz + i32.or + if (result i32) + local.get $5 + local.get $4 + i32.eq + else + local.get $5 + local.get $4 + call $~lib/string/String.__eq + end + local.set $6 + local.get $4 + call $~lib/rt/pure/__release + local.get $5 + call $~lib/rt/pure/__release + local.get $6 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -4706,13 +5015,38 @@ call $~lib/builtins/abort unreachable end - local.get $2 - local.get $1 + local.get $2 + local.get $1 + i32.const 0 + call $~lib/string/String.UTF8.decodeUnsafe + local.tee $5 + call $~lib/rt/pure/__retain + local.set $4 + global.get $std/string-encoding/str + call $~lib/rt/pure/__retain + local.set $6 + local.get $4 + i32.eqz + local.get $6 + i32.eqz + i32.or + if (result i32) + local.get $4 + local.get $6 + i32.eq + else + local.get $4 + local.get $6 + call $~lib/string/String.__eq + end + local.set $7 + local.get $6 + call $~lib/rt/pure/__release + local.get $4 + call $~lib/rt/pure/__release + local.get $7 i32.const 0 - call $~lib/string/String.UTF8.decodeUnsafe - local.tee $4 - global.get $std/string-encoding/str - call $~lib/string/String.__eq + i32.ne i32.eqz if i32.const 0 @@ -4726,9 +5060,34 @@ i32.const 4 i32.const 0 call $~lib/string/String.UTF8.decodeUnsafe - local.tee $5 + local.tee $4 + call $~lib/rt/pure/__retain + local.set $6 i32.const 304 - call $~lib/string/String.__eq + call $~lib/rt/pure/__retain + local.set $7 + local.get $6 + i32.eqz + local.get $7 + i32.eqz + i32.or + if (result i32) + local.get $6 + local.get $7 + i32.eq + else + local.get $6 + local.get $7 + call $~lib/string/String.__eq + end + local.set $8 + local.get $7 + call $~lib/rt/pure/__release + local.get $6 + call $~lib/rt/pure/__release + local.get $8 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -4745,8 +5104,33 @@ i32.const 0 call $~lib/string/String.UTF8.decodeUnsafe local.tee $6 + call $~lib/rt/pure/__retain + local.set $7 i32.const 368 - call $~lib/string/String.__eq + call $~lib/rt/pure/__retain + local.set $8 + local.get $7 + i32.eqz + local.get $8 + i32.eqz + i32.or + if (result i32) + local.get $7 + local.get $8 + i32.eq + else + local.get $7 + local.get $8 + call $~lib/string/String.__eq + end + local.set $9 + local.get $8 + call $~lib/rt/pure/__release + local.get $7 + call $~lib/rt/pure/__release + local.get $9 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -4763,8 +5147,33 @@ i32.const 0 call $~lib/string/String.UTF8.decodeUnsafe local.tee $7 + call $~lib/rt/pure/__retain + local.set $8 i32.const 400 - call $~lib/string/String.__eq + call $~lib/rt/pure/__retain + local.set $9 + local.get $8 + i32.eqz + local.get $9 + i32.eqz + i32.or + if (result i32) + local.get $8 + local.get $9 + i32.eq + else + local.get $8 + local.get $9 + call $~lib/string/String.__eq + end + local.set $10 + local.get $9 + call $~lib/rt/pure/__release + local.get $8 + call $~lib/rt/pure/__release + local.get $10 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -4781,8 +5190,33 @@ i32.const 0 call $~lib/string/String.UTF8.decodeUnsafe local.tee $8 + call $~lib/rt/pure/__retain + local.set $9 i32.const 288 - call $~lib/string/String.__eq + call $~lib/rt/pure/__retain + local.set $10 + local.get $9 + i32.eqz + local.get $10 + i32.eqz + i32.or + if (result i32) + local.get $9 + local.get $10 + i32.eq + else + local.get $9 + local.get $10 + call $~lib/string/String.__eq + end + local.set $11 + local.get $10 + call $~lib/rt/pure/__release + local.get $9 + call $~lib/rt/pure/__release + local.get $11 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -4799,8 +5233,33 @@ i32.const 1 call $~lib/string/String.UTF8.decodeUnsafe local.tee $9 + call $~lib/rt/pure/__retain + local.set $10 i32.const 544 - call $~lib/string/String.__eq + call $~lib/rt/pure/__retain + local.set $11 + local.get $10 + i32.eqz + local.get $11 + i32.eqz + i32.or + if (result i32) + local.get $10 + local.get $11 + i32.eq + else + local.get $10 + local.get $11 + call $~lib/string/String.__eq + end + local.set $12 + local.get $11 + call $~lib/rt/pure/__release + local.get $10 + call $~lib/rt/pure/__release + local.get $12 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -4817,8 +5276,33 @@ i32.const 1 call $~lib/string/String.UTF8.decodeUnsafe local.tee $10 + call $~lib/rt/pure/__retain + local.set $11 i32.const 400 - call $~lib/string/String.__eq + call $~lib/rt/pure/__retain + local.set $12 + local.get $11 + i32.eqz + local.get $12 + i32.eqz + i32.or + if (result i32) + local.get $11 + local.get $12 + i32.eq + else + local.get $11 + local.get $12 + call $~lib/string/String.__eq + end + local.set $13 + local.get $12 + call $~lib/rt/pure/__release + local.get $11 + call $~lib/rt/pure/__release + local.get $13 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -4835,8 +5319,33 @@ i32.const 1 call $~lib/string/String.UTF8.decodeUnsafe local.tee $11 + call $~lib/rt/pure/__retain + local.set $12 i32.const 288 - call $~lib/string/String.__eq + call $~lib/rt/pure/__retain + local.set $13 + local.get $12 + i32.eqz + local.get $13 + i32.eqz + i32.or + if (result i32) + local.get $12 + local.get $13 + i32.eq + else + local.get $12 + local.get $13 + call $~lib/string/String.__eq + end + local.set $14 + local.get $13 + call $~lib/rt/pure/__release + local.get $12 + call $~lib/rt/pure/__release + local.get $14 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -4848,10 +5357,10 @@ end local.get $3 call $~lib/rt/pure/__release - local.get $4 - call $~lib/rt/pure/__release local.get $5 call $~lib/rt/pure/__release + local.get $4 + call $~lib/rt/pure/__release local.get $6 call $~lib/rt/pure/__release local.get $7 @@ -4872,6 +5381,9 @@ (local $2 i32) (local $3 i32) (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) local.get $0 call $~lib/rt/pure/__retain local.set $0 @@ -4883,8 +5395,33 @@ i32.const 0 call $~lib/string/String.UTF8.decode local.tee $2 + call $~lib/rt/pure/__retain + local.set $4 local.get $0 - call $~lib/string/String.__eq + call $~lib/rt/pure/__retain + local.set $3 + local.get $4 + i32.eqz + local.get $3 + i32.eqz + i32.or + if (result i32) + local.get $4 + local.get $3 + i32.eq + else + local.get $4 + local.get $3 + call $~lib/string/String.__eq + end + local.set $5 + local.get $3 + call $~lib/rt/pure/__release + local.get $4 + call $~lib/rt/pure/__release + local.get $5 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -4896,12 +5433,37 @@ end local.get $0 call $~lib/string/String.UTF16.encode - local.set $3 - local.get $3 + local.set $6 + local.get $6 call $~lib/string/String.UTF16.decode local.tee $4 + call $~lib/rt/pure/__retain + local.set $3 local.get $0 - call $~lib/string/String.__eq + call $~lib/rt/pure/__retain + local.set $5 + local.get $3 + i32.eqz + local.get $5 + i32.eqz + i32.or + if (result i32) + local.get $3 + local.get $5 + i32.eq + else + local.get $3 + local.get $5 + call $~lib/string/String.__eq + end + local.set $7 + local.get $5 + call $~lib/rt/pure/__release + local.get $3 + call $~lib/rt/pure/__release + local.get $7 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -4919,7 +5481,7 @@ call $~lib/rt/pure/__release local.get $1 call $~lib/rt/pure/__release - local.get $3 + local.get $6 call $~lib/rt/pure/__release ) (func $start:std/string-encoding (; 50 ;) diff --git a/tests/compiler/std/string.optimized.wat b/tests/compiler/std/string.optimized.wat index 9dba0e4df5..82daf0de49 100644 --- a/tests/compiler/std/string.optimized.wat +++ b/tests/compiler/std/string.optimized.wat @@ -437,7 +437,15 @@ end local.get $0 ) - (func $~lib/rt/pure/__release (; 7 ;) (param $0 i32) + (func $~lib/string/String#get:length (; 7 ;) (param $0 i32) (result i32) + local.get $0 + i32.const 16 + i32.sub + i32.load offset=12 + i32.const 1 + i32.shr_u + ) + (func $~lib/rt/pure/__release (; 8 ;) (param $0 i32) local.get $0 i32.const 18008 i32.gt_u @@ -448,14 +456,6 @@ call $~lib/rt/pure/decrement end ) - (func $~lib/string/String#get:length (; 8 ;) (param $0 i32) (result i32) - local.get $0 - i32.const 16 - i32.sub - i32.load offset=12 - i32.const 1 - i32.shr_u - ) (func $~lib/util/string/compareImpl (; 9 ;) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) (local $4 i32) local.get $0 @@ -539,22 +539,6 @@ (func $~lib/string/String.__eq (; 10 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) local.get $0 - local.get $1 - i32.eq - if - i32.const 1 - return - end - local.get $1 - i32.eqz - i32.const 1 - local.get $0 - select - if - i32.const 0 - return - end - local.get $0 call $~lib/string/String#get:length local.tee $2 local.get $1 @@ -571,17 +555,7 @@ call $~lib/util/string/compareImpl i32.eqz ) - (func $~lib/string/String.__not (; 11 ;) (param $0 i32) (result i32) - local.get $0 - if (result i32) - local.get $0 - call $~lib/string/String#get:length - i32.eqz - else - i32.const 1 - end - ) - (func $~lib/rt/tlsf/removeBlock (; 12 ;) (param $0 i32) (param $1 i32) + (func $~lib/rt/tlsf/removeBlock (; 11 ;) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -743,7 +717,7 @@ end end ) - (func $~lib/rt/tlsf/insertBlock (; 13 ;) (param $0 i32) (param $1 i32) + (func $~lib/rt/tlsf/insertBlock (; 12 ;) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -1022,7 +996,7 @@ i32.or i32.store offset=4 ) - (func $~lib/rt/tlsf/addMemory (; 14 ;) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/rt/tlsf/addMemory (; 13 ;) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) local.get $2 @@ -1136,7 +1110,7 @@ local.get $1 call $~lib/rt/tlsf/insertBlock ) - (func $~lib/rt/tlsf/maybeInitialize (; 15 ;) (result i32) + (func $~lib/rt/tlsf/maybeInitialize (; 14 ;) (result i32) (local $0 i32) (local $1 i32) (local $2 i32) @@ -1223,7 +1197,7 @@ end local.get $0 ) - (func $~lib/rt/tlsf/prepareSize (; 16 ;) (param $0 i32) (result i32) + (func $~lib/rt/tlsf/prepareSize (; 15 ;) (param $0 i32) (result i32) local.get $0 i32.const 1073741808 i32.ge_u @@ -1247,7 +1221,7 @@ i32.gt_u select ) - (func $~lib/rt/tlsf/searchBlock (; 17 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/rt/tlsf/searchBlock (; 16 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) local.get $1 i32.const 256 @@ -1376,7 +1350,7 @@ end end ) - (func $~lib/rt/tlsf/prepareBlock (; 18 ;) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/rt/tlsf/prepareBlock (; 17 ;) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) local.get $1 @@ -1451,7 +1425,7 @@ i32.store end ) - (func $~lib/rt/tlsf/allocateBlock (; 19 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/rt/tlsf/allocateBlock (; 18 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -1591,7 +1565,7 @@ call $~lib/rt/rtrace/onalloc local.get $3 ) - (func $~lib/rt/tlsf/__alloc (; 20 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/rt/tlsf/__alloc (; 19 ;) (param $0 i32) (param $1 i32) (result i32) call $~lib/rt/tlsf/maybeInitialize local.get $0 local.get $1 @@ -1599,7 +1573,7 @@ i32.const 16 i32.add ) - (func $~lib/string/String.fromCharCode (; 21 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/string/String.fromCharCode (; 20 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) i32.const 2 @@ -1622,7 +1596,7 @@ local.get $2 call $~lib/rt/pure/__retain ) - (func $~lib/string/String.fromCharCode|trampoline (; 22 ;) (param $0 i32) (result i32) + (func $~lib/string/String.fromCharCode|trampoline (; 21 ;) (param $0 i32) (result i32) (local $1 i32) block $1of1 block $0of1 @@ -1641,11 +1615,11 @@ local.get $1 call $~lib/string/String.fromCharCode ) - (func $~setArgumentsLength (; 23 ;) (param $0 i32) + (func $~setArgumentsLength (; 22 ;) (param $0 i32) local.get $0 global.set $~argumentsLength ) - (func $~lib/string/String.fromCodePoint (; 24 ;) (param $0 i32) (result i32) + (func $~lib/string/String.fromCodePoint (; 23 ;) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) local.get $0 @@ -1696,7 +1670,7 @@ local.get $1 call $~lib/rt/pure/__retain ) - (func $~lib/string/String#indexOf (; 25 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/string/String#indexOf (; 24 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) local.get $1 @@ -1756,7 +1730,7 @@ end i32.const -1 ) - (func $~lib/memory/memory.copy (; 26 ;) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/memory/memory.copy (; 25 ;) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) block $~lib/util/memory/memmove|inlined.0 @@ -1929,7 +1903,7 @@ end end ) - (func $~lib/memory/memory.repeat (; 27 ;) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) + (func $~lib/memory/memory.repeat (; 26 ;) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (local $4 i32) local.get $2 local.get $3 @@ -1954,7 +1928,7 @@ end end ) - (func $~lib/string/String#padStart (; 28 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/string/String#padStart (; 27 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -2033,7 +2007,7 @@ local.get $1 call $~lib/rt/pure/__retain ) - (func $~lib/string/String#padEnd (; 29 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/string/String#padEnd (; 28 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -2113,7 +2087,7 @@ local.get $1 call $~lib/rt/pure/__retain ) - (func $~lib/string/String#lastIndexOf (; 30 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/string/String#lastIndexOf (; 29 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) local.get $1 @@ -2173,7 +2147,7 @@ end i32.const -1 ) - (func $~lib/string/String#localeCompare (; 31 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/string/String#localeCompare (; 30 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) local.get $0 @@ -2211,7 +2185,7 @@ local.get $2 call $~lib/util/string/compareImpl ) - (func $~lib/util/string/isSpace (; 32 ;) (param $0 i32) (result i32) + (func $~lib/util/string/isSpace (; 31 ;) (param $0 i32) (result i32) local.get $0 i32.const 5760 i32.lt_u @@ -2275,7 +2249,7 @@ end i32.const 0 ) - (func $~lib/string/String#trimStart (; 33 ;) (param $0 i32) (result i32) + (func $~lib/string/String#trimStart (; 32 ;) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -2333,7 +2307,7 @@ local.get $3 call $~lib/rt/pure/__retain ) - (func $~lib/string/String#trimEnd (; 34 ;) (param $0 i32) (result i32) + (func $~lib/string/String#trimEnd (; 33 ;) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) local.get $0 @@ -2387,7 +2361,7 @@ local.get $2 call $~lib/rt/pure/__retain ) - (func $~lib/string/String#trim (; 35 ;) (param $0 i32) (result i32) + (func $~lib/string/String#trim (; 34 ;) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -2474,7 +2448,7 @@ local.get $3 call $~lib/rt/pure/__retain ) - (func $~lib/util/string/strtol (; 36 ;) (param $0 i32) (result f64) + (func $~lib/util/string/strtol (; 35 ;) (param $0 i32) (result f64) (local $1 i32) (local $2 i32) (local $3 f64) @@ -2689,7 +2663,7 @@ local.get $3 f64.mul ) - (func $~lib/util/string/strtol (; 37 ;) (result i32) + (func $~lib/util/string/strtol (; 36 ;) (result i32) (local $0 i32) (local $1 i32) (local $2 i32) @@ -2905,7 +2879,7 @@ local.get $4 i32.mul ) - (func $~lib/util/string/strtol (; 38 ;) (result i64) + (func $~lib/util/string/strtol (; 37 ;) (result i64) (local $0 i32) (local $1 i32) (local $2 i64) @@ -3123,7 +3097,7 @@ local.get $4 i64.mul ) - (func $~lib/math/ipow32 (; 39 ;) (param $0 i32) (result i32) + (func $~lib/math/ipow32 (; 38 ;) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) i32.const 5 @@ -3157,7 +3131,7 @@ end local.get $2 ) - (func $~lib/math/NativeMath.scalbn (; 40 ;) (param $0 f64) (param $1 i32) (result f64) + (func $~lib/math/NativeMath.scalbn (; 39 ;) (param $0 f64) (param $1 i32) (result f64) local.get $1 i32.const 1023 i32.gt_s @@ -3234,7 +3208,7 @@ f64.reinterpret_i64 f64.mul ) - (func $~lib/util/string/strtod (; 41 ;) (param $0 i32) (result f64) + (func $~lib/util/string/strtod (; 40 ;) (param $0 i32) (result f64) (local $1 i32) (local $2 i32) (local $3 i32) @@ -3979,7 +3953,7 @@ end f64.const nan:0x8000000000000 ) - (func $~lib/string/String.__concat (; 42 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/string/String.__concat (; 41 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -4023,7 +3997,7 @@ end local.get $0 ) - (func $~lib/string/String.__gt (; 43 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/string/String.__gt (; 42 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) i32.const 1 @@ -4070,7 +4044,7 @@ i32.const 0 i32.gt_s ) - (func $~lib/string/String.__lt (; 44 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/string/String.__lt (; 43 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) i32.const 1 @@ -4117,7 +4091,7 @@ i32.const 0 i32.lt_s ) - (func $~lib/string/String#repeat (; 45 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/string/String#repeat (; 44 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) i32.const 1 @@ -4137,7 +4111,7 @@ if i32.const 11904 i32.const 1536 - i32.const 326 + i32.const 334 i32.const 6 call $~lib/builtins/abort unreachable @@ -4176,7 +4150,7 @@ local.get $3 call $~lib/rt/pure/__retain ) - (func $~lib/string/String#replace (; 46 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/string/String#replace (; 45 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -4198,10 +4172,24 @@ call $~lib/rt/pure/__retain else local.get $2 + local.tee $3 local.get $0 + local.tee $4 local.get $1 + local.tee $2 + i32.eqz local.get $0 - call $~lib/string/String.__eq + i32.eqz + i32.or + if (result i32) + local.get $2 + local.get $4 + i32.eq + else + local.get $2 + local.get $4 + call $~lib/string/String.__eq + end select call $~lib/rt/pure/__retain end @@ -4273,7 +4261,7 @@ local.get $0 call $~lib/rt/pure/__retain ) - (func $~lib/rt/tlsf/checkUsedBlock (; 47 ;) (param $0 i32) (result i32) + (func $~lib/rt/tlsf/checkUsedBlock (; 46 ;) (param $0 i32) (result i32) (local $1 i32) local.get $0 i32.const 16 @@ -4315,7 +4303,7 @@ end local.get $1 ) - (func $~lib/rt/tlsf/freeBlock (; 48 ;) (param $0 i32) (param $1 i32) + (func $~lib/rt/tlsf/freeBlock (; 47 ;) (param $0 i32) (param $1 i32) local.get $1 local.get $1 i32.load @@ -4328,7 +4316,7 @@ local.get $1 call $~lib/rt/rtrace/onfree ) - (func $~lib/rt/tlsf/reallocateBlock (; 49 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/rt/tlsf/reallocateBlock (; 48 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -4431,7 +4419,7 @@ end local.get $3 ) - (func $~lib/rt/tlsf/__realloc (; 50 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/rt/tlsf/__realloc (; 49 ;) (param $0 i32) (param $1 i32) (result i32) call $~lib/rt/tlsf/maybeInitialize local.get $0 call $~lib/rt/tlsf/checkUsedBlock @@ -4440,7 +4428,7 @@ i32.const 16 i32.add ) - (func $~lib/string/String#replaceAll (; 51 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/string/String#replaceAll (; 50 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -4449,50 +4437,61 @@ (local $8 i32) (local $9 i32) (local $10 i32) - local.get $2 - local.set $5 local.get $0 call $~lib/string/String#get:length - local.tee $3 - local.get $1 local.tee $4 + local.get $1 + local.tee $5 call $~lib/string/String#get:length local.tee $10 i32.le_u if - local.get $3 + local.get $4 local.get $10 i32.lt_u if (result i32) local.get $0 call $~lib/rt/pure/__retain else - local.get $5 + local.get $2 + local.tee $3 local.get $0 - local.get $4 + local.tee $2 + local.get $5 + i32.eqz local.get $0 - call $~lib/string/String.__eq + i32.eqz + i32.or + if (result i32) + local.get $2 + local.get $5 + i32.eq + else + local.get $5 + local.get $2 + call $~lib/string/String.__eq + end select call $~lib/rt/pure/__retain end return end - local.get $5 + local.get $2 call $~lib/string/String#get:length - local.set $2 + local.set $3 local.get $10 i32.eqz if - local.get $2 + local.get $3 i32.eqz if local.get $0 call $~lib/rt/pure/__retain return end + local.get $4 local.get $3 - local.get $2 - local.get $3 + local.get $4 i32.const 1 i32.add i32.mul @@ -4501,20 +4500,20 @@ i32.shl i32.const 1 call $~lib/rt/tlsf/__alloc - local.tee $4 - local.get $5 + local.tee $5 local.get $2 + local.get $3 i32.const 1 i32.shl call $~lib/memory/memory.copy - local.get $2 + local.get $3 local.set $1 loop $for-loop|0 local.get $9 - local.get $3 + local.get $4 i32.lt_u if - local.get $4 + local.get $5 local.get $1 i32.const 1 i32.shl @@ -4526,7 +4525,7 @@ i32.add i32.load16_u i32.store16 - local.get $4 + local.get $5 local.get $1 i32.const 1 i32.add @@ -4534,13 +4533,13 @@ i32.const 1 i32.shl i32.add - local.get $5 local.get $2 + local.get $3 i32.const 1 i32.shl call $~lib/memory/memory.copy local.get $1 - local.get $2 + local.get $3 i32.add local.set $1 local.get $9 @@ -4550,44 +4549,44 @@ br $for-loop|0 end end - local.get $4 + local.get $5 call $~lib/rt/pure/__retain return end - local.get $2 + local.get $3 local.get $10 i32.eq if - local.get $3 + local.get $4 i32.const 1 i32.shl - local.tee $3 + local.tee $4 i32.const 1 call $~lib/rt/tlsf/__alloc local.tee $1 local.get $0 - local.get $3 + local.get $4 call $~lib/memory/memory.copy loop $while-continue|1 local.get $0 - local.get $4 + local.get $5 local.get $7 call $~lib/string/String#indexOf - local.tee $3 + local.tee $4 i32.const -1 i32.xor if local.get $1 - local.get $3 + local.get $4 i32.const 1 i32.shl i32.add - local.get $5 local.get $2 + local.get $3 i32.const 1 i32.shl call $~lib/memory/memory.copy - local.get $3 + local.get $4 local.get $10 i32.add local.set $7 @@ -4598,11 +4597,11 @@ call $~lib/rt/pure/__retain return end - local.get $3 + local.get $4 local.set $1 loop $while-continue|2 local.get $0 - local.get $4 + local.get $5 local.get $7 call $~lib/string/String#indexOf local.tee $9 @@ -4612,7 +4611,7 @@ local.get $6 i32.eqz if - local.get $3 + local.get $4 i32.const 1 i32.shl i32.const 1 @@ -4658,12 +4657,12 @@ i32.const 1 i32.shl i32.add - local.get $5 local.get $2 + local.get $3 i32.const 1 i32.shl call $~lib/memory/memory.copy - local.get $2 + local.get $3 local.get $7 i32.add local.set $8 @@ -4690,7 +4689,7 @@ call $~lib/rt/tlsf/__realloc local.set $6 end - local.get $3 + local.get $4 local.get $7 i32.sub local.tee $2 @@ -4731,7 +4730,7 @@ local.get $0 call $~lib/rt/pure/__retain ) - (func $~lib/string/String#slice (; 52 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/string/String#slice (; 51 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $0 call $~lib/string/String#get:length @@ -4805,7 +4804,7 @@ local.get $3 call $~lib/rt/pure/__retain ) - (func $~lib/string/String#substr (; 53 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/string/String#substr (; 52 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $2 i32.const 0 @@ -4862,7 +4861,7 @@ local.get $3 call $~lib/rt/pure/__retain ) - (func $~lib/string/String#substring (; 54 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/string/String#substring (; 53 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) local.get $1 @@ -4941,7 +4940,7 @@ local.get $1 call $~lib/rt/pure/__retain ) - (func $~lib/rt/__allocArray (; 55 ;) (param $0 i32) (result i32) + (func $~lib/rt/__allocArray (; 54 ;) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -4969,7 +4968,7 @@ i32.store offset=12 local.get $1 ) - (func $~lib/memory/memory.fill (; 56 ;) (param $0 i32) (param $1 i32) + (func $~lib/memory/memory.fill (; 55 ;) (param $0 i32) (param $1 i32) (local $2 i32) block $~lib/util/memory/memset|inlined.0 local.get $1 @@ -5127,7 +5126,7 @@ end end ) - (func $~lib/array/Array<~lib/string/String>#push (; 57 ;) (param $0 i32) (param $1 i32) + (func $~lib/array/Array<~lib/string/String>#push (; 56 ;) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -5203,7 +5202,7 @@ local.get $3 i32.store offset=12 ) - (func $~lib/string/String#split (; 58 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/string/String#split (; 57 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -5413,7 +5412,7 @@ call $~lib/rt/__allocArray call $~lib/rt/pure/__retain ) - (func $~lib/array/Array<~lib/string/String>#__get (; 59 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array<~lib/string/String>#__get (; 58 ;) (param $0 i32) (param $1 i32) (result i32) local.get $1 local.get $0 i32.load offset=12 @@ -5448,7 +5447,7 @@ end local.get $0 ) - (func $~lib/util/number/decimalCount32 (; 60 ;) (param $0 i32) (result i32) + (func $~lib/util/number/decimalCount32 (; 59 ;) (param $0 i32) (result i32) local.get $0 i32.const 10 i32.ge_u @@ -5490,7 +5489,7 @@ i32.lt_u select ) - (func $~lib/util/number/utoa_simple (; 61 ;) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/util/number/utoa_simple (; 60 ;) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) loop $do-continue|0 local.get $1 @@ -5517,7 +5516,7 @@ br_if $do-continue|0 end ) - (func $~lib/util/number/itoa32 (; 62 ;) (param $0 i32) (result i32) + (func $~lib/util/number/itoa32 (; 61 ;) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -5559,7 +5558,7 @@ local.get $2 call $~lib/rt/pure/__retain ) - (func $~lib/util/number/utoa32 (; 63 ;) (param $0 i32) (result i32) + (func $~lib/util/number/utoa32 (; 62 ;) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) local.get $0 @@ -5582,7 +5581,7 @@ local.get $2 call $~lib/rt/pure/__retain ) - (func $~lib/util/number/decimalCount64High (; 64 ;) (param $0 i64) (result i32) + (func $~lib/util/number/decimalCount64High (; 63 ;) (param $0 i64) (result i32) local.get $0 i64.const 100000000000 i64.ge_u @@ -5628,7 +5627,7 @@ i64.lt_u select ) - (func $~lib/util/number/utoa_simple (; 65 ;) (param $0 i32) (param $1 i64) (param $2 i32) + (func $~lib/util/number/utoa_simple (; 64 ;) (param $0 i32) (param $1 i64) (param $2 i32) (local $3 i32) loop $do-continue|0 local.get $1 @@ -5658,7 +5657,7 @@ br_if $do-continue|0 end ) - (func $~lib/util/number/utoa64 (; 66 ;) (param $0 i64) (result i32) + (func $~lib/util/number/utoa64 (; 65 ;) (param $0 i64) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -5701,7 +5700,7 @@ local.get $2 call $~lib/rt/pure/__retain ) - (func $~lib/util/number/itoa64 (; 67 ;) (param $0 i64) (result i32) + (func $~lib/util/number/itoa64 (; 66 ;) (param $0 i64) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -5766,7 +5765,7 @@ local.get $3 call $~lib/rt/pure/__retain ) - (func $~lib/util/number/genDigits (; 68 ;) (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 (; 67 ;) (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) @@ -6157,7 +6156,7 @@ local.get $6 end ) - (func $~lib/util/number/prettify (; 69 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/util/number/prettify (; 68 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $2 i32.eqz @@ -6402,7 +6401,7 @@ end end ) - (func $~lib/util/number/dtoa_core (; 70 ;) (param $0 i32) (param $1 f64) (result i32) + (func $~lib/util/number/dtoa_core (; 69 ;) (param $0 i32) (param $1 f64) (result i32) (local $2 i64) (local $3 i64) (local $4 i32) @@ -6694,7 +6693,7 @@ local.get $7 i32.add ) - (func $~lib/util/number/dtoa (; 71 ;) (param $0 f64) (result i32) + (func $~lib/util/number/dtoa (; 70 ;) (param $0 f64) (result i32) (local $1 i32) (local $2 i32) local.get $0 @@ -6749,10 +6748,10 @@ call $~lib/rt/tlsf/checkUsedBlock call $~lib/rt/tlsf/freeBlock ) - (func $start:std/string (; 72 ;) + (func $start:std/string (; 71 ;) (local $0 i32) (local $1 i32) - (local $2 f64) + (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -6961,7 +6960,8 @@ (local $208 i32) (local $209 i32) (local $210 i32) - (local $211 i32) + (local $211 f64) + (local $212 i32) global.get $std/string/str i32.const 1040 i32.ne @@ -7025,12 +7025,12 @@ i32.const -1 i32.const 0 global.get $std/string/str - local.tee $0 + local.tee $1 call $~lib/string/String#get:length i32.ge_u br_if $__inlined_func$~lib/string/String#charCodeAt drop - local.get $0 + local.get $1 i32.load16_u end i32.const 104 @@ -7044,8 +7044,7 @@ unreachable end i32.const 1280 - call $~lib/string/String.__not - i32.eqz + call $~lib/string/String#get:length if i32.const 0 i32.const 1088 @@ -7055,7 +7054,8 @@ unreachable end i32.const 1296 - call $~lib/string/String.__not + call $~lib/string/String#get:length + i32.eqz i32.eqz i32.const 1 i32.ne @@ -7068,7 +7068,8 @@ unreachable end i32.const 1328 - call $~lib/string/String.__not + call $~lib/string/String#get:length + i32.eqz i32.eqz i32.const 1 i32.ne @@ -7084,9 +7085,18 @@ global.set $~argumentsLength i32.const 0 call $~lib/string/String.fromCharCode|trampoline - local.tee $41 - i32.const 1296 - call $~lib/string/String.__eq + local.tee $104 + local.set $1 + local.get $104 + if (result i32) + local.get $1 + i32.const 1296 + call $~lib/string/String.__eq + else + local.get $1 + i32.const 1296 + i32.eq + end i32.eqz if i32.const 0 @@ -7100,9 +7110,18 @@ global.set $~argumentsLength i32.const 54 call $~lib/string/String.fromCharCode|trampoline - local.tee $42 - i32.const 1472 - call $~lib/string/String.__eq + local.tee $103 + local.set $1 + local.get $103 + if (result i32) + local.get $1 + i32.const 1472 + call $~lib/string/String.__eq + else + local.get $1 + i32.const 1472 + i32.eq + end i32.eqz if i32.const 0 @@ -7116,9 +7135,18 @@ global.set $~argumentsLength i32.const 65590 call $~lib/string/String.fromCharCode|trampoline - local.tee $43 - i32.const 1472 - call $~lib/string/String.__eq + local.tee $102 + local.set $1 + local.get $102 + if (result i32) + local.get $1 + i32.const 1472 + call $~lib/string/String.__eq + else + local.get $1 + i32.const 1472 + i32.eq + end i32.eqz if i32.const 0 @@ -7131,9 +7159,18 @@ i32.const 55296 i32.const 57088 call $~lib/string/String.fromCharCode - local.tee $44 - i32.const 1504 - call $~lib/string/String.__eq + local.tee $101 + local.set $1 + local.get $101 + if (result i32) + local.get $1 + i32.const 1504 + call $~lib/string/String.__eq + else + local.get $1 + i32.const 1504 + i32.eq + end i32.eqz if i32.const 0 @@ -7145,9 +7182,18 @@ end i32.const 0 call $~lib/string/String.fromCodePoint - local.tee $45 - i32.const 1296 - call $~lib/string/String.__eq + local.tee $100 + local.set $1 + local.get $100 + if (result i32) + local.get $1 + i32.const 1296 + call $~lib/string/String.__eq + else + local.get $1 + i32.const 1296 + i32.eq + end i32.eqz if i32.const 0 @@ -7159,9 +7205,18 @@ end i32.const 54 call $~lib/string/String.fromCodePoint - local.tee $46 - i32.const 1472 - call $~lib/string/String.__eq + local.tee $99 + local.set $1 + local.get $99 + if (result i32) + local.get $1 + i32.const 1472 + call $~lib/string/String.__eq + else + local.get $1 + i32.const 1472 + i32.eq + end i32.eqz if i32.const 0 @@ -7173,9 +7228,18 @@ end i32.const 119558 call $~lib/string/String.fromCodePoint - local.tee $47 - i32.const 1584 - call $~lib/string/String.__eq + local.tee $98 + local.set $1 + local.get $98 + if (result i32) + local.get $1 + i32.const 1584 + call $~lib/string/String.__eq + else + local.get $1 + i32.const 1584 + i32.eq + end i32.eqz if i32.const 0 @@ -7189,26 +7253,26 @@ i32.const 0 i32.const 0 global.get $std/string/str - local.tee $1 - call $~lib/string/String#get:length local.tee $0 + call $~lib/string/String#get:length + local.tee $1 i32.const 0 - local.get $0 + local.get $1 i32.lt_s select - local.tee $3 + local.tee $210 i32.const 1616 call $~lib/string/String#get:length - local.tee $4 + local.tee $107 i32.add - local.get $0 + local.get $1 i32.gt_s br_if $__inlined_func$~lib/string/String#startsWith drop - local.get $1 - local.get $3 + local.get $0 + local.get $210 i32.const 1616 - local.get $4 + local.get $107 call $~lib/util/string/compareImpl i32.eqz end @@ -7225,26 +7289,26 @@ i32.const 0 i32.const 536870904 global.get $std/string/str - local.tee $0 - call $~lib/string/String#get:length local.tee $1 + call $~lib/string/String#get:length + local.tee $0 i32.const 536870904 - local.get $1 + local.get $0 i32.lt_s select i32.const 1648 call $~lib/string/String#get:length - local.tee $1 + local.tee $0 i32.sub - local.tee $3 + local.tee $210 i32.const 0 i32.lt_s br_if $__inlined_func$~lib/string/String#endsWith drop - local.get $0 - local.get $3 - i32.const 1648 local.get $1 + local.get $210 + i32.const 1648 + local.get $0 call $~lib/util/string/compareImpl i32.eqz end @@ -7275,9 +7339,23 @@ i32.const 0 i32.const 1712 call $~lib/string/String#padStart - local.tee $4 + local.tee $210 + local.set $1 + local.get $210 + i32.eqz global.get $std/string/str - call $~lib/string/String.__eq + local.tee $0 + i32.eqz + i32.or + if (result i32) + local.get $0 + local.get $1 + i32.eq + else + local.get $1 + local.get $0 + call $~lib/string/String.__eq + end i32.eqz if i32.const 0 @@ -7291,9 +7369,23 @@ i32.const 15 i32.const 1712 call $~lib/string/String#padStart - local.tee $48 + local.tee $107 + local.set $1 + local.get $107 + i32.eqz global.get $std/string/str - call $~lib/string/String.__eq + local.tee $0 + i32.eqz + i32.or + if (result i32) + local.get $0 + local.get $1 + i32.eq + else + local.get $1 + local.get $0 + call $~lib/string/String.__eq + end i32.eqz if i32.const 0 @@ -7307,9 +7399,18 @@ i32.const 3 i32.const 1712 call $~lib/string/String#padStart - local.tee $49 - i32.const 1744 - call $~lib/string/String.__eq + local.tee $97 + local.set $1 + local.get $97 + if (result i32) + local.get $1 + i32.const 1744 + call $~lib/string/String.__eq + else + local.get $1 + i32.const 1744 + i32.eq + end i32.eqz if i32.const 0 @@ -7323,9 +7424,18 @@ i32.const 10 i32.const 1280 call $~lib/string/String#padStart - local.tee $50 - i32.const 1280 - call $~lib/string/String.__eq + local.tee $96 + local.set $1 + local.get $96 + if (result i32) + local.get $1 + i32.const 1280 + call $~lib/string/String.__eq + else + local.get $1 + i32.const 1280 + i32.eq + end i32.eqz if i32.const 0 @@ -7339,9 +7449,18 @@ i32.const 100 i32.const 1280 call $~lib/string/String#padStart - local.tee $51 - i32.const 1328 - call $~lib/string/String.__eq + local.tee $95 + local.set $1 + local.get $95 + if (result i32) + local.get $1 + i32.const 1328 + call $~lib/string/String.__eq + else + local.get $1 + i32.const 1328 + i32.eq + end i32.eqz if i32.const 0 @@ -7355,9 +7474,18 @@ i32.const 5 i32.const 1712 call $~lib/string/String#padStart - local.tee $52 - i32.const 1808 - call $~lib/string/String.__eq + local.tee $94 + local.set $1 + local.get $94 + if (result i32) + local.get $1 + i32.const 1808 + call $~lib/string/String.__eq + else + local.get $1 + i32.const 1808 + i32.eq + end i32.eqz if i32.const 0 @@ -7371,9 +7499,18 @@ i32.const 6 i32.const 1840 call $~lib/string/String#padStart - local.tee $53 - i32.const 1872 - call $~lib/string/String.__eq + local.tee $93 + local.set $1 + local.get $93 + if (result i32) + local.get $1 + i32.const 1872 + call $~lib/string/String.__eq + else + local.get $1 + i32.const 1872 + i32.eq + end i32.eqz if i32.const 0 @@ -7387,9 +7524,18 @@ i32.const 8 i32.const 1840 call $~lib/string/String#padStart - local.tee $54 - i32.const 1904 - call $~lib/string/String.__eq + local.tee $92 + local.set $1 + local.get $92 + if (result i32) + local.get $1 + i32.const 1904 + call $~lib/string/String.__eq + else + local.get $1 + i32.const 1904 + i32.eq + end i32.eqz if i32.const 0 @@ -7403,9 +7549,23 @@ i32.const 0 i32.const 1712 call $~lib/string/String#padEnd - local.tee $55 + local.tee $91 + local.set $1 + local.get $91 + i32.eqz global.get $std/string/str - call $~lib/string/String.__eq + local.tee $0 + i32.eqz + i32.or + if (result i32) + local.get $0 + local.get $1 + i32.eq + else + local.get $1 + local.get $0 + call $~lib/string/String.__eq + end i32.eqz if i32.const 0 @@ -7419,9 +7579,23 @@ i32.const 15 i32.const 1712 call $~lib/string/String#padEnd - local.tee $56 + local.tee $90 + local.set $1 + local.get $90 + i32.eqz global.get $std/string/str - call $~lib/string/String.__eq + local.tee $0 + i32.eqz + i32.or + if (result i32) + local.get $0 + local.get $1 + i32.eq + else + local.get $1 + local.get $0 + call $~lib/string/String.__eq + end i32.eqz if i32.const 0 @@ -7435,9 +7609,18 @@ i32.const 3 i32.const 1712 call $~lib/string/String#padEnd - local.tee $57 - i32.const 1744 - call $~lib/string/String.__eq + local.tee $89 + local.set $1 + local.get $89 + if (result i32) + local.get $1 + i32.const 1744 + call $~lib/string/String.__eq + else + local.get $1 + i32.const 1744 + i32.eq + end i32.eqz if i32.const 0 @@ -7451,9 +7634,18 @@ i32.const 10 i32.const 1280 call $~lib/string/String#padEnd - local.tee $58 - i32.const 1280 - call $~lib/string/String.__eq + local.tee $88 + local.set $1 + local.get $88 + if (result i32) + local.get $1 + i32.const 1280 + call $~lib/string/String.__eq + else + local.get $1 + i32.const 1280 + i32.eq + end i32.eqz if i32.const 0 @@ -7467,9 +7659,18 @@ i32.const 100 i32.const 1280 call $~lib/string/String#padEnd - local.tee $59 - i32.const 1328 - call $~lib/string/String.__eq + local.tee $87 + local.set $1 + local.get $87 + if (result i32) + local.get $1 + i32.const 1328 + call $~lib/string/String.__eq + else + local.get $1 + i32.const 1328 + i32.eq + end i32.eqz if i32.const 0 @@ -7483,9 +7684,18 @@ i32.const 5 i32.const 1712 call $~lib/string/String#padEnd - local.tee $60 - i32.const 1936 - call $~lib/string/String.__eq + local.tee $86 + local.set $1 + local.get $86 + if (result i32) + local.get $1 + i32.const 1936 + call $~lib/string/String.__eq + else + local.get $1 + i32.const 1936 + i32.eq + end i32.eqz if i32.const 0 @@ -7499,9 +7709,18 @@ i32.const 6 i32.const 1776 call $~lib/string/String#padEnd - local.tee $61 - i32.const 1968 - call $~lib/string/String.__eq + local.tee $85 + local.set $1 + local.get $85 + if (result i32) + local.get $1 + i32.const 1968 + call $~lib/string/String.__eq + else + local.get $1 + i32.const 1968 + i32.eq + end i32.eqz if i32.const 0 @@ -7515,9 +7734,18 @@ i32.const 8 i32.const 1776 call $~lib/string/String#padEnd - local.tee $62 - i32.const 2000 - call $~lib/string/String.__eq + local.tee $84 + local.set $1 + local.get $84 + if (result i32) + local.get $1 + i32.const 2000 + call $~lib/string/String.__eq + else + local.get $1 + i32.const 2000 + i32.eq + end i32.eqz if i32.const 0 @@ -7938,9 +8166,18 @@ end i32.const 1280 call $~lib/string/String#trimStart - local.tee $63 - i32.const 1280 - call $~lib/string/String.__eq + local.tee $83 + local.set $1 + local.get $83 + if (result i32) + local.get $1 + i32.const 1280 + call $~lib/string/String.__eq + else + local.get $1 + i32.const 1280 + i32.eq + end i32.eqz if i32.const 0 @@ -7952,9 +8189,18 @@ end i32.const 2288 call $~lib/string/String#trimStart - local.tee $64 - i32.const 2288 - call $~lib/string/String.__eq + local.tee $82 + local.set $1 + local.get $82 + if (result i32) + local.get $1 + i32.const 2288 + call $~lib/string/String.__eq + else + local.get $1 + i32.const 2288 + i32.eq + end i32.eqz if i32.const 0 @@ -7966,9 +8212,18 @@ end i32.const 2320 call $~lib/string/String#trimStart - local.tee $65 - i32.const 2368 - call $~lib/string/String.__eq + local.tee $81 + local.set $1 + local.get $81 + if (result i32) + local.get $1 + i32.const 2368 + call $~lib/string/String.__eq + else + local.get $1 + i32.const 2368 + i32.eq + end i32.eqz if i32.const 0 @@ -7980,9 +8235,18 @@ end i32.const 1280 call $~lib/string/String#trimEnd - local.tee $66 - i32.const 1280 - call $~lib/string/String.__eq + local.tee $80 + local.set $1 + local.get $80 + if (result i32) + local.get $1 + i32.const 1280 + call $~lib/string/String.__eq + else + local.get $1 + i32.const 1280 + i32.eq + end i32.eqz if i32.const 0 @@ -7994,9 +8258,18 @@ end i32.const 2288 call $~lib/string/String#trimEnd - local.tee $67 - i32.const 2288 - call $~lib/string/String.__eq + local.tee $79 + local.set $1 + local.get $79 + if (result i32) + local.get $1 + i32.const 2288 + call $~lib/string/String.__eq + else + local.get $1 + i32.const 2288 + i32.eq + end i32.eqz if i32.const 0 @@ -8008,9 +8281,18 @@ end i32.const 2320 call $~lib/string/String#trimEnd - local.tee $68 - i32.const 2400 - call $~lib/string/String.__eq + local.tee $78 + local.set $1 + local.get $78 + if (result i32) + local.get $1 + i32.const 2400 + call $~lib/string/String.__eq + else + local.get $1 + i32.const 2400 + i32.eq + end i32.eqz if i32.const 0 @@ -8022,9 +8304,18 @@ end i32.const 1280 call $~lib/string/String#trim - local.tee $69 - i32.const 1280 - call $~lib/string/String.__eq + local.tee $77 + local.set $1 + local.get $77 + if (result i32) + local.get $1 + i32.const 1280 + call $~lib/string/String.__eq + else + local.get $1 + i32.const 1280 + i32.eq + end i32.eqz if i32.const 0 @@ -8036,9 +8327,18 @@ end i32.const 2288 call $~lib/string/String#trim - local.tee $70 - i32.const 2288 - call $~lib/string/String.__eq + local.tee $76 + local.set $1 + local.get $76 + if (result i32) + local.get $1 + i32.const 2288 + call $~lib/string/String.__eq + else + local.get $1 + i32.const 2288 + i32.eq + end i32.eqz if i32.const 0 @@ -8050,9 +8350,18 @@ end i32.const 2320 call $~lib/string/String#trim - local.tee $71 - i32.const 1776 - call $~lib/string/String.__eq + local.tee $75 + local.set $1 + local.get $75 + if (result i32) + local.get $1 + i32.const 1776 + call $~lib/string/String.__eq + else + local.get $1 + i32.const 1776 + i32.eq + end i32.eqz if i32.const 0 @@ -8494,8 +8803,8 @@ end i32.const 1280 call $~lib/util/string/strtod - local.tee $2 - local.get $2 + local.tee $211 + local.get $211 f64.eq if i32.const 0 @@ -9143,8 +9452,8 @@ end i32.const 5584 call $~lib/util/string/strtod - local.tee $2 - local.get $2 + local.tee $211 + local.get $211 f64.eq if i32.const 0 @@ -9156,8 +9465,8 @@ end i32.const 5616 call $~lib/util/string/strtod - local.tee $2 - local.get $2 + local.tee $211 + local.get $211 f64.eq if i32.const 0 @@ -9169,8 +9478,8 @@ end i32.const 5648 call $~lib/util/string/strtod - local.tee $2 - local.get $2 + local.tee $211 + local.get $211 f64.eq if i32.const 0 @@ -9182,8 +9491,8 @@ end i32.const 5680 call $~lib/util/string/strtod - local.tee $2 - local.get $2 + local.tee $211 + local.get $211 f64.eq if i32.const 0 @@ -9195,8 +9504,8 @@ end i32.const 5712 call $~lib/util/string/strtod - local.tee $2 - local.get $2 + local.tee $211 + local.get $211 f64.eq if i32.const 0 @@ -9208,8 +9517,8 @@ end i32.const 5744 call $~lib/util/string/strtod - local.tee $2 - local.get $2 + local.tee $211 + local.get $211 f64.eq if i32.const 0 @@ -9221,8 +9530,8 @@ end i32.const 5776 call $~lib/util/string/strtod - local.tee $2 - local.get $2 + local.tee $211 + local.get $211 f64.eq if i32.const 0 @@ -9234,8 +9543,8 @@ end i32.const 5808 call $~lib/util/string/strtod - local.tee $2 - local.get $2 + local.tee $211 + local.get $211 f64.eq if i32.const 0 @@ -9247,8 +9556,8 @@ end i32.const 5840 call $~lib/util/string/strtod - local.tee $2 - local.get $2 + local.tee $211 + local.get $211 f64.eq if i32.const 0 @@ -9260,8 +9569,8 @@ end i32.const 5872 call $~lib/util/string/strtod - local.tee $2 - local.get $2 + local.tee $211 + local.get $211 f64.eq if i32.const 0 @@ -9273,8 +9582,8 @@ end i32.const 5904 call $~lib/util/string/strtod - local.tee $2 - local.get $2 + local.tee $211 + local.get $211 f64.eq if i32.const 0 @@ -9286,8 +9595,8 @@ end i32.const 5936 call $~lib/util/string/strtod - local.tee $2 - local.get $2 + local.tee $211 + local.get $211 f64.eq if i32.const 0 @@ -9299,8 +9608,8 @@ end i32.const 5968 call $~lib/util/string/strtod - local.tee $2 - local.get $2 + local.tee $211 + local.get $211 f64.eq if i32.const 0 @@ -9312,8 +9621,8 @@ end i32.const 6000 call $~lib/util/string/strtod - local.tee $2 - local.get $2 + local.tee $211 + local.get $211 f64.eq if i32.const 0 @@ -9325,8 +9634,8 @@ end i32.const 6032 call $~lib/util/string/strtod - local.tee $2 - local.get $2 + local.tee $211 + local.get $211 f64.eq if i32.const 0 @@ -9338,8 +9647,8 @@ end i32.const 6064 call $~lib/util/string/strtod - local.tee $2 - local.get $2 + local.tee $211 + local.get $211 f64.eq if i32.const 0 @@ -9651,8 +9960,8 @@ end i32.const 7200 call $~lib/util/string/strtod - local.tee $2 - local.get $2 + local.tee $211 + local.get $211 f64.eq if i32.const 0 @@ -9664,8 +9973,8 @@ end i32.const 7232 call $~lib/util/string/strtod - local.tee $2 - local.get $2 + local.tee $211 + local.get $211 f64.eq if i32.const 0 @@ -9677,8 +9986,8 @@ end i32.const 7264 call $~lib/util/string/strtod - local.tee $2 - local.get $2 + local.tee $211 + local.get $211 f64.eq if i32.const 0 @@ -9727,16 +10036,16 @@ i32.const 7872 i32.const 8032 call $~lib/string/String.__concat - local.tee $72 + local.tee $5 i32.const 8192 call $~lib/string/String.__concat - local.tee $73 + local.tee $4 i32.const 8352 call $~lib/string/String.__concat - local.tee $74 + local.tee $3 i32.const 8512 call $~lib/string/String.__concat - local.tee $75 + local.tee $2 call $~lib/util/string/strtod f64.const 1797693134862315708145274e284 f64.ne @@ -10038,8 +10347,8 @@ end i32.const 11360 call $~lib/util/string/strtod - local.tee $2 - local.get $2 + local.tee $211 + local.get $211 f64.eq if i32.const 0 @@ -10064,10 +10373,18 @@ i32.const 1328 i32.const 11424 call $~lib/string/String.__concat - local.tee $0 - local.get $0 - i32.const 11456 - call $~lib/string/String.__eq + local.tee $1 + local.set $0 + local.get $1 + if (result i32) + local.get $1 + i32.const 11456 + call $~lib/string/String.__eq + else + local.get $1 + i32.const 11456 + i32.eq + end i32.eqz if i32.const 0 @@ -10077,8 +10394,16 @@ call $~lib/builtins/abort unreachable end - i32.const 1328 - call $~lib/string/String.__eq + local.get $0 + if (result i32) + local.get $0 + i32.const 1328 + call $~lib/string/String.__eq + else + local.get $0 + i32.const 1328 + i32.eq + end if i32.const 0 i32.const 1088 @@ -10087,7 +10412,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 call $~lib/rt/pure/__release i32.const 1280 i32.const 1280 @@ -10101,28 +10426,6 @@ call $~lib/builtins/abort unreachable end - i32.const 1280 - i32.const 0 - call $~lib/string/String.__eq - if - i32.const 0 - i32.const 1088 - i32.const 317 - i32.const 0 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - i32.const 1280 - call $~lib/string/String.__eq - if - i32.const 0 - i32.const 1088 - i32.const 318 - i32.const 0 - call $~lib/builtins/abort - unreachable - end i32.const 1328 i32.const 11424 call $~lib/string/String.__eq @@ -10419,15 +10722,15 @@ end i32.const 65377 call $~lib/string/String.fromCodePoint - local.tee $0 + local.tee $1 i32.const 55296 call $~lib/string/String.fromCodePoint - local.tee $1 + local.tee $0 i32.const 56322 call $~lib/string/String.fromCodePoint - local.tee $3 + local.tee $106 call $~lib/string/String.__concat - local.tee $5 + local.tee $105 call $~lib/string/String.__gt i32.eqz if @@ -10438,13 +10741,13 @@ call $~lib/builtins/abort unreachable end - local.get $0 - call $~lib/rt/pure/__release local.get $1 call $~lib/rt/pure/__release - local.get $3 + local.get $0 call $~lib/rt/pure/__release - local.get $5 + local.get $106 + call $~lib/rt/pure/__release + local.get $105 call $~lib/rt/pure/__release i32.const 1840 call $~lib/string/String#get:length @@ -10461,9 +10764,18 @@ i32.const 1280 i32.const 100 call $~lib/string/String#repeat - local.tee $5 - i32.const 1280 - call $~lib/string/String.__eq + local.tee $106 + local.set $1 + local.get $106 + if (result i32) + local.get $1 + i32.const 1280 + call $~lib/string/String.__eq + else + local.get $1 + i32.const 1280 + i32.eq + end i32.eqz if i32.const 0 @@ -10476,9 +10788,18 @@ i32.const 1328 i32.const 0 call $~lib/string/String#repeat - local.tee $76 - i32.const 1280 - call $~lib/string/String.__eq + local.tee $105 + local.set $1 + local.get $105 + if (result i32) + local.get $1 + i32.const 1280 + call $~lib/string/String.__eq + else + local.get $1 + i32.const 1280 + i32.eq + end i32.eqz if i32.const 0 @@ -10491,9 +10812,18 @@ i32.const 1328 i32.const 1 call $~lib/string/String#repeat - local.tee $77 - i32.const 1328 - call $~lib/string/String.__eq + local.tee $74 + local.set $1 + local.get $74 + if (result i32) + local.get $1 + i32.const 1328 + call $~lib/string/String.__eq + else + local.get $1 + i32.const 1328 + i32.eq + end i32.eqz if i32.const 0 @@ -10506,9 +10836,18 @@ i32.const 1328 i32.const 2 call $~lib/string/String#repeat - local.tee $78 - i32.const 11872 - call $~lib/string/String.__eq + local.tee $73 + local.set $1 + local.get $73 + if (result i32) + local.get $1 + i32.const 11872 + call $~lib/string/String.__eq + else + local.get $1 + i32.const 11872 + i32.eq + end i32.eqz if i32.const 0 @@ -10521,9 +10860,18 @@ i32.const 1328 i32.const 3 call $~lib/string/String#repeat - local.tee $79 - i32.const 11952 - call $~lib/string/String.__eq + local.tee $72 + local.set $1 + local.get $72 + if (result i32) + local.get $1 + i32.const 11952 + call $~lib/string/String.__eq + else + local.get $1 + i32.const 11952 + i32.eq + end i32.eqz if i32.const 0 @@ -10536,9 +10884,18 @@ i32.const 11456 i32.const 4 call $~lib/string/String#repeat - local.tee $80 - i32.const 11984 - call $~lib/string/String.__eq + local.tee $71 + local.set $1 + local.get $71 + if (result i32) + local.get $1 + i32.const 11984 + call $~lib/string/String.__eq + else + local.get $1 + i32.const 11984 + i32.eq + end i32.eqz if i32.const 0 @@ -10551,9 +10908,18 @@ i32.const 1328 i32.const 5 call $~lib/string/String#repeat - local.tee $81 - i32.const 12016 - call $~lib/string/String.__eq + local.tee $70 + local.set $1 + local.get $70 + if (result i32) + local.get $1 + i32.const 12016 + call $~lib/string/String.__eq + else + local.get $1 + i32.const 12016 + i32.eq + end i32.eqz if i32.const 0 @@ -10566,9 +10932,18 @@ i32.const 1328 i32.const 6 call $~lib/string/String#repeat - local.tee $82 - i32.const 12048 - call $~lib/string/String.__eq + local.tee $69 + local.set $1 + local.get $69 + if (result i32) + local.get $1 + i32.const 12048 + call $~lib/string/String.__eq + else + local.get $1 + i32.const 12048 + i32.eq + end i32.eqz if i32.const 0 @@ -10581,9 +10956,18 @@ i32.const 1328 i32.const 7 call $~lib/string/String#repeat - local.tee $83 - i32.const 12080 - call $~lib/string/String.__eq + local.tee $68 + local.set $1 + local.get $68 + if (result i32) + local.get $1 + i32.const 12080 + call $~lib/string/String.__eq + else + local.get $1 + i32.const 12080 + i32.eq + end i32.eqz if i32.const 0 @@ -10597,9 +10981,18 @@ i32.const 1280 i32.const 1280 call $~lib/string/String#replace - local.tee $84 - i32.const 1280 - call $~lib/string/String.__eq + local.tee $67 + local.set $1 + local.get $67 + if (result i32) + local.get $1 + i32.const 1280 + call $~lib/string/String.__eq + else + local.get $1 + i32.const 1280 + i32.eq + end i32.eqz if i32.const 0 @@ -10613,9 +11006,18 @@ i32.const 1280 i32.const 5584 call $~lib/string/String#replace - local.tee $85 - i32.const 5584 - call $~lib/string/String.__eq + local.tee $66 + local.set $1 + local.get $66 + if (result i32) + local.get $1 + i32.const 5584 + call $~lib/string/String.__eq + else + local.get $1 + i32.const 5584 + i32.eq + end i32.eqz if i32.const 0 @@ -10629,9 +11031,18 @@ i32.const 5584 i32.const 1280 call $~lib/string/String#replace - local.tee $86 - i32.const 1280 - call $~lib/string/String.__eq + local.tee $65 + local.set $1 + local.get $65 + if (result i32) + local.get $1 + i32.const 1280 + call $~lib/string/String.__eq + else + local.get $1 + i32.const 1280 + i32.eq + end i32.eqz if i32.const 0 @@ -10645,9 +11056,18 @@ i32.const 1280 i32.const 1280 call $~lib/string/String#replace - local.tee $87 - i32.const 5584 - call $~lib/string/String.__eq + local.tee $64 + local.set $1 + local.get $64 + if (result i32) + local.get $1 + i32.const 5584 + call $~lib/string/String.__eq + else + local.get $1 + i32.const 5584 + i32.eq + end i32.eqz if i32.const 0 @@ -10661,9 +11081,18 @@ i32.const 5616 i32.const 5584 call $~lib/string/String#replace - local.tee $88 - i32.const 1776 - call $~lib/string/String.__eq + local.tee $63 + local.set $1 + local.get $63 + if (result i32) + local.get $1 + i32.const 1776 + call $~lib/string/String.__eq + else + local.get $1 + i32.const 1776 + i32.eq + end i32.eqz if i32.const 0 @@ -10677,9 +11106,18 @@ i32.const 1776 i32.const 5584 call $~lib/string/String#replace - local.tee $89 - i32.const 5584 - call $~lib/string/String.__eq + local.tee $62 + local.set $1 + local.get $62 + if (result i32) + local.get $1 + i32.const 5584 + call $~lib/string/String.__eq + else + local.get $1 + i32.const 5584 + i32.eq + end i32.eqz if i32.const 0 @@ -10693,9 +11131,18 @@ i32.const 2256 i32.const 5584 call $~lib/string/String#replace - local.tee $90 - i32.const 1776 - call $~lib/string/String.__eq + local.tee $61 + local.set $1 + local.get $61 + if (result i32) + local.get $1 + i32.const 1776 + call $~lib/string/String.__eq + else + local.get $1 + i32.const 1776 + i32.eq + end i32.eqz if i32.const 0 @@ -10709,9 +11156,18 @@ i32.const 11456 i32.const 11456 call $~lib/string/String#replace - local.tee $91 - i32.const 1776 - call $~lib/string/String.__eq + local.tee $60 + local.set $1 + local.get $60 + if (result i32) + local.get $1 + i32.const 1776 + call $~lib/string/String.__eq + else + local.get $1 + i32.const 1776 + i32.eq + end i32.eqz if i32.const 0 @@ -10725,9 +11181,18 @@ i32.const 5616 i32.const 5584 call $~lib/string/String#replace - local.tee $92 - i32.const 12144 - call $~lib/string/String.__eq + local.tee $59 + local.set $1 + local.get $59 + if (result i32) + local.get $1 + i32.const 12144 + call $~lib/string/String.__eq + else + local.get $1 + i32.const 12144 + i32.eq + end i32.eqz if i32.const 0 @@ -10741,9 +11206,18 @@ i32.const 1280 i32.const 5584 call $~lib/string/String#replace - local.tee $93 - i32.const 12176 - call $~lib/string/String.__eq + local.tee $58 + local.set $1 + local.get $58 + if (result i32) + local.get $1 + i32.const 12176 + call $~lib/string/String.__eq + else + local.get $1 + i32.const 12176 + i32.eq + end i32.eqz if i32.const 0 @@ -10757,9 +11231,18 @@ i32.const 12240 i32.const 5584 call $~lib/string/String#replace - local.tee $94 - i32.const 12176 - call $~lib/string/String.__eq + local.tee $57 + local.set $1 + local.get $57 + if (result i32) + local.get $1 + i32.const 12176 + call $~lib/string/String.__eq + else + local.get $1 + i32.const 12176 + i32.eq + end i32.eqz if i32.const 0 @@ -10773,9 +11256,18 @@ i32.const 12272 i32.const 12304 call $~lib/string/String#replace - local.tee $95 - i32.const 12336 - call $~lib/string/String.__eq + local.tee $56 + local.set $1 + local.get $56 + if (result i32) + local.get $1 + i32.const 12336 + call $~lib/string/String.__eq + else + local.get $1 + i32.const 12336 + i32.eq + end i32.eqz if i32.const 0 @@ -10789,9 +11281,18 @@ i32.const 12272 i32.const 1280 call $~lib/string/String#replace - local.tee $96 - i32.const 11456 - call $~lib/string/String.__eq + local.tee $55 + local.set $1 + local.get $55 + if (result i32) + local.get $1 + i32.const 11456 + call $~lib/string/String.__eq + else + local.get $1 + i32.const 11456 + i32.eq + end i32.eqz if i32.const 0 @@ -10805,9 +11306,18 @@ i32.const 1280 i32.const 1776 call $~lib/string/String#replaceAll - local.tee $97 - i32.const 1776 - call $~lib/string/String.__eq + local.tee $54 + local.set $1 + local.get $54 + if (result i32) + local.get $1 + i32.const 1776 + call $~lib/string/String.__eq + else + local.get $1 + i32.const 1776 + i32.eq + end i32.eqz if i32.const 0 @@ -10821,9 +11331,18 @@ i32.const 5616 i32.const 5584 call $~lib/string/String#replaceAll - local.tee $98 - i32.const 1776 - call $~lib/string/String.__eq + local.tee $53 + local.set $1 + local.get $53 + if (result i32) + local.get $1 + i32.const 1776 + call $~lib/string/String.__eq + else + local.get $1 + i32.const 1776 + i32.eq + end i32.eqz if i32.const 0 @@ -10837,9 +11356,18 @@ i32.const 1776 i32.const 5584 call $~lib/string/String#replaceAll - local.tee $99 - i32.const 12304 - call $~lib/string/String.__eq + local.tee $52 + local.set $1 + local.get $52 + if (result i32) + local.get $1 + i32.const 12304 + call $~lib/string/String.__eq + else + local.get $1 + i32.const 12304 + i32.eq + end i32.eqz if i32.const 0 @@ -10853,9 +11381,18 @@ i32.const 1776 i32.const 5584 call $~lib/string/String#replaceAll - local.tee $100 - i32.const 12416 - call $~lib/string/String.__eq + local.tee $51 + local.set $1 + local.get $51 + if (result i32) + local.get $1 + i32.const 12416 + call $~lib/string/String.__eq + else + local.get $1 + i32.const 12416 + i32.eq + end i32.eqz if i32.const 0 @@ -10869,9 +11406,18 @@ i32.const 11456 i32.const 11456 call $~lib/string/String#replaceAll - local.tee $101 - i32.const 1968 - call $~lib/string/String.__eq + local.tee $50 + local.set $1 + local.get $50 + if (result i32) + local.get $1 + i32.const 1968 + call $~lib/string/String.__eq + else + local.get $1 + i32.const 1968 + i32.eq + end i32.eqz if i32.const 0 @@ -10885,9 +11431,18 @@ i32.const 1328 i32.const 12416 call $~lib/string/String#replaceAll - local.tee $102 - i32.const 12480 - call $~lib/string/String.__eq + local.tee $49 + local.set $1 + local.get $49 + if (result i32) + local.get $1 + i32.const 12480 + call $~lib/string/String.__eq + else + local.get $1 + i32.const 12480 + i32.eq + end i32.eqz if i32.const 0 @@ -10901,9 +11456,18 @@ i32.const 11456 i32.const 12304 call $~lib/string/String#replaceAll - local.tee $103 - i32.const 12528 - call $~lib/string/String.__eq + local.tee $48 + local.set $1 + local.get $48 + if (result i32) + local.get $1 + i32.const 12528 + call $~lib/string/String.__eq + else + local.get $1 + i32.const 12528 + i32.eq + end i32.eqz if i32.const 0 @@ -10917,9 +11481,18 @@ i32.const 12592 i32.const 12304 call $~lib/string/String#replaceAll - local.tee $104 - i32.const 12624 - call $~lib/string/String.__eq + local.tee $47 + local.set $1 + local.get $47 + if (result i32) + local.get $1 + i32.const 12624 + call $~lib/string/String.__eq + else + local.get $1 + i32.const 12624 + i32.eq + end i32.eqz if i32.const 0 @@ -10933,9 +11506,18 @@ i32.const 2256 i32.const 5584 call $~lib/string/String#replaceAll - local.tee $105 - i32.const 1776 - call $~lib/string/String.__eq + local.tee $46 + local.set $1 + local.get $46 + if (result i32) + local.get $1 + i32.const 1776 + call $~lib/string/String.__eq + else + local.get $1 + i32.const 1776 + i32.eq + end i32.eqz if i32.const 0 @@ -10949,9 +11531,18 @@ i32.const 12656 i32.const 12304 call $~lib/string/String#replaceAll - local.tee $106 - i32.const 2256 - call $~lib/string/String.__eq + local.tee $45 + local.set $1 + local.get $45 + if (result i32) + local.get $1 + i32.const 2256 + call $~lib/string/String.__eq + else + local.get $1 + i32.const 2256 + i32.eq + end i32.eqz if i32.const 0 @@ -10965,9 +11556,18 @@ i32.const 12688 i32.const 5584 call $~lib/string/String#replaceAll - local.tee $107 - i32.const 12720 - call $~lib/string/String.__eq + local.tee $44 + local.set $1 + local.get $44 + if (result i32) + local.get $1 + i32.const 12720 + call $~lib/string/String.__eq + else + local.get $1 + i32.const 12720 + i32.eq + end i32.eqz if i32.const 0 @@ -10981,9 +11581,18 @@ i32.const 11456 i32.const 5584 call $~lib/string/String#replaceAll - local.tee $108 - i32.const 5584 - call $~lib/string/String.__eq + local.tee $43 + local.set $1 + local.get $43 + if (result i32) + local.get $1 + i32.const 5584 + call $~lib/string/String.__eq + else + local.get $1 + i32.const 5584 + i32.eq + end i32.eqz if i32.const 0 @@ -10997,9 +11606,18 @@ i32.const 5616 i32.const 5584 call $~lib/string/String#replaceAll - local.tee $109 - i32.const 12752 - call $~lib/string/String.__eq + local.tee $42 + local.set $1 + local.get $42 + if (result i32) + local.get $1 + i32.const 12752 + call $~lib/string/String.__eq + else + local.get $1 + i32.const 12752 + i32.eq + end i32.eqz if i32.const 0 @@ -11013,9 +11631,18 @@ i32.const 1280 i32.const 1280 call $~lib/string/String#replaceAll - local.tee $110 - i32.const 1280 - call $~lib/string/String.__eq + local.tee $41 + local.set $1 + local.get $41 + if (result i32) + local.get $1 + i32.const 1280 + call $~lib/string/String.__eq + else + local.get $1 + i32.const 1280 + i32.eq + end i32.eqz if i32.const 0 @@ -11029,9 +11656,18 @@ i32.const 1280 i32.const 5584 call $~lib/string/String#replaceAll - local.tee $111 - i32.const 5584 - call $~lib/string/String.__eq + local.tee $40 + local.set $1 + local.get $40 + if (result i32) + local.get $1 + i32.const 5584 + call $~lib/string/String.__eq + else + local.get $1 + i32.const 5584 + i32.eq + end i32.eqz if i32.const 0 @@ -11045,9 +11681,18 @@ i32.const 5584 i32.const 1280 call $~lib/string/String#replaceAll - local.tee $112 - i32.const 1280 - call $~lib/string/String.__eq + local.tee $39 + local.set $1 + local.get $39 + if (result i32) + local.get $1 + i32.const 1280 + call $~lib/string/String.__eq + else + local.get $1 + i32.const 1280 + i32.eq + end i32.eqz if i32.const 0 @@ -11061,9 +11706,18 @@ i32.const 1280 i32.const 1280 call $~lib/string/String#replaceAll - local.tee $113 - i32.const 5584 - call $~lib/string/String.__eq + local.tee $38 + local.set $1 + local.get $38 + if (result i32) + local.get $1 + i32.const 5584 + call $~lib/string/String.__eq + else + local.get $1 + i32.const 5584 + i32.eq + end i32.eqz if i32.const 0 @@ -11077,9 +11731,18 @@ i32.const 1776 i32.const 5616 call $~lib/string/String#replaceAll - local.tee $114 - i32.const 5616 - call $~lib/string/String.__eq + local.tee $37 + local.set $1 + local.get $37 + if (result i32) + local.get $1 + i32.const 5616 + call $~lib/string/String.__eq + else + local.get $1 + i32.const 5616 + i32.eq + end i32.eqz if i32.const 0 @@ -11093,9 +11756,18 @@ i32.const 2224 i32.const 5616 call $~lib/string/String#replaceAll - local.tee $115 - i32.const 1776 - call $~lib/string/String.__eq + local.tee $36 + local.set $1 + local.get $36 + if (result i32) + local.get $1 + i32.const 1776 + call $~lib/string/String.__eq + else + local.get $1 + i32.const 1776 + i32.eq + end i32.eqz if i32.const 0 @@ -11109,9 +11781,18 @@ i32.const 1280 i32.const 5584 call $~lib/string/String#replaceAll - local.tee $116 - i32.const 12784 - call $~lib/string/String.__eq + local.tee $35 + local.set $1 + local.get $35 + if (result i32) + local.get $1 + i32.const 12784 + call $~lib/string/String.__eq + else + local.get $1 + i32.const 12784 + i32.eq + end i32.eqz if i32.const 0 @@ -11125,9 +11806,18 @@ i32.const 1280 i32.const 1280 call $~lib/string/String#replaceAll - local.tee $117 - i32.const 1776 - call $~lib/string/String.__eq + local.tee $34 + local.set $1 + local.get $34 + if (result i32) + local.get $1 + i32.const 1776 + call $~lib/string/String.__eq + else + local.get $1 + i32.const 1776 + i32.eq + end i32.eqz if i32.const 0 @@ -11145,9 +11835,18 @@ i32.const 0 i32.const 2147483647 call $~lib/string/String#slice - local.tee $118 - i32.const 12816 - call $~lib/string/String.__eq + local.tee $33 + local.set $1 + local.get $33 + if (result i32) + local.get $1 + i32.const 12816 + call $~lib/string/String.__eq + else + local.get $1 + i32.const 12816 + i32.eq + end i32.eqz if i32.const 0 @@ -11161,9 +11860,18 @@ i32.const -1 i32.const 2147483647 call $~lib/string/String#slice - local.tee $119 - i32.const 12864 - call $~lib/string/String.__eq + local.tee $32 + local.set $1 + local.get $32 + if (result i32) + local.get $1 + i32.const 12864 + call $~lib/string/String.__eq + else + local.get $1 + i32.const 12864 + i32.eq + end i32.eqz if i32.const 0 @@ -11177,9 +11885,18 @@ i32.const -5 i32.const 2147483647 call $~lib/string/String#slice - local.tee $120 - i32.const 12896 - call $~lib/string/String.__eq + local.tee $31 + local.set $1 + local.get $31 + if (result i32) + local.get $1 + i32.const 12896 + call $~lib/string/String.__eq + else + local.get $1 + i32.const 12896 + i32.eq + end i32.eqz if i32.const 0 @@ -11193,9 +11910,18 @@ i32.const 2 i32.const 7 call $~lib/string/String#slice - local.tee $121 - i32.const 12928 - call $~lib/string/String.__eq + local.tee $30 + local.set $1 + local.get $30 + if (result i32) + local.get $1 + i32.const 12928 + call $~lib/string/String.__eq + else + local.get $1 + i32.const 12928 + i32.eq + end i32.eqz if i32.const 0 @@ -11209,9 +11935,18 @@ i32.const -11 i32.const -6 call $~lib/string/String#slice - local.tee $122 - i32.const 12960 - call $~lib/string/String.__eq + local.tee $29 + local.set $1 + local.get $29 + if (result i32) + local.get $1 + i32.const 12960 + call $~lib/string/String.__eq + else + local.get $1 + i32.const 12960 + i32.eq + end i32.eqz if i32.const 0 @@ -11225,9 +11960,18 @@ i32.const 4 i32.const 3 call $~lib/string/String#slice - local.tee $123 - i32.const 1280 - call $~lib/string/String.__eq + local.tee $28 + local.set $1 + local.get $28 + if (result i32) + local.get $1 + i32.const 1280 + call $~lib/string/String.__eq + else + local.get $1 + i32.const 1280 + i32.eq + end i32.eqz if i32.const 0 @@ -11241,9 +11985,18 @@ i32.const 0 i32.const -1 call $~lib/string/String#slice - local.tee $124 - i32.const 12992 - call $~lib/string/String.__eq + local.tee $27 + local.set $1 + local.get $27 + if (result i32) + local.get $1 + i32.const 12992 + call $~lib/string/String.__eq + else + local.get $1 + i32.const 12992 + i32.eq + end i32.eqz if i32.const 0 @@ -11257,9 +12010,18 @@ i32.const 0 i32.const 2147483647 call $~lib/string/String#substr - local.tee $125 - i32.const 12816 - call $~lib/string/String.__eq + local.tee $26 + local.set $1 + local.get $26 + if (result i32) + local.get $1 + i32.const 12816 + call $~lib/string/String.__eq + else + local.get $1 + i32.const 12816 + i32.eq + end i32.eqz if i32.const 0 @@ -11273,9 +12035,18 @@ i32.const -1 i32.const 2147483647 call $~lib/string/String#substr - local.tee $126 - i32.const 12864 - call $~lib/string/String.__eq + local.tee $25 + local.set $1 + local.get $25 + if (result i32) + local.get $1 + i32.const 12864 + call $~lib/string/String.__eq + else + local.get $1 + i32.const 12864 + i32.eq + end i32.eqz if i32.const 0 @@ -11289,9 +12060,18 @@ i32.const -5 i32.const 2147483647 call $~lib/string/String#substr - local.tee $127 - i32.const 12896 - call $~lib/string/String.__eq + local.tee $24 + local.set $1 + local.get $24 + if (result i32) + local.get $1 + i32.const 12896 + call $~lib/string/String.__eq + else + local.get $1 + i32.const 12896 + i32.eq + end i32.eqz if i32.const 0 @@ -11305,9 +12085,18 @@ i32.const 2 i32.const 7 call $~lib/string/String#substr - local.tee $128 - i32.const 13040 - call $~lib/string/String.__eq + local.tee $23 + local.set $1 + local.get $23 + if (result i32) + local.get $1 + i32.const 13040 + call $~lib/string/String.__eq + else + local.get $1 + i32.const 13040 + i32.eq + end i32.eqz if i32.const 0 @@ -11321,9 +12110,18 @@ i32.const -11 i32.const -6 call $~lib/string/String#substr - local.tee $129 - i32.const 1280 - call $~lib/string/String.__eq + local.tee $22 + local.set $1 + local.get $22 + if (result i32) + local.get $1 + i32.const 1280 + call $~lib/string/String.__eq + else + local.get $1 + i32.const 1280 + i32.eq + end i32.eqz if i32.const 0 @@ -11337,9 +12135,18 @@ i32.const 4 i32.const 3 call $~lib/string/String#substr - local.tee $130 - i32.const 13072 - call $~lib/string/String.__eq + local.tee $21 + local.set $1 + local.get $21 + if (result i32) + local.get $1 + i32.const 13072 + call $~lib/string/String.__eq + else + local.get $1 + i32.const 13072 + i32.eq + end i32.eqz if i32.const 0 @@ -11353,9 +12160,18 @@ i32.const 0 i32.const -1 call $~lib/string/String#substr - local.tee $131 - i32.const 1280 - call $~lib/string/String.__eq + local.tee $20 + local.set $1 + local.get $20 + if (result i32) + local.get $1 + i32.const 1280 + call $~lib/string/String.__eq + else + local.get $1 + i32.const 1280 + i32.eq + end i32.eqz if i32.const 0 @@ -11369,9 +12185,18 @@ i32.const 0 i32.const 100 call $~lib/string/String#substr - local.tee $132 - i32.const 12816 - call $~lib/string/String.__eq + local.tee $19 + local.set $1 + local.get $19 + if (result i32) + local.get $1 + i32.const 12816 + call $~lib/string/String.__eq + else + local.get $1 + i32.const 12816 + i32.eq + end i32.eqz if i32.const 0 @@ -11385,9 +12210,18 @@ i32.const 4 i32.const 4 call $~lib/string/String#substr - local.tee $133 - i32.const 13104 - call $~lib/string/String.__eq + local.tee $18 + local.set $1 + local.get $18 + if (result i32) + local.get $1 + i32.const 13104 + call $~lib/string/String.__eq + else + local.get $1 + i32.const 13104 + i32.eq + end i32.eqz if i32.const 0 @@ -11401,9 +12235,18 @@ i32.const 4 i32.const -3 call $~lib/string/String#substr - local.tee $134 - i32.const 1280 - call $~lib/string/String.__eq + local.tee $17 + local.set $1 + local.get $17 + if (result i32) + local.get $1 + i32.const 1280 + call $~lib/string/String.__eq + else + local.get $1 + i32.const 1280 + i32.eq + end i32.eqz if i32.const 0 @@ -11417,9 +12260,18 @@ i32.const 0 i32.const 2147483647 call $~lib/string/String#substring - local.tee $135 - i32.const 12816 - call $~lib/string/String.__eq + local.tee $16 + local.set $1 + local.get $16 + if (result i32) + local.get $1 + i32.const 12816 + call $~lib/string/String.__eq + else + local.get $1 + i32.const 12816 + i32.eq + end i32.eqz if i32.const 0 @@ -11433,9 +12285,18 @@ i32.const -1 i32.const 2147483647 call $~lib/string/String#substring - local.tee $136 - i32.const 12816 - call $~lib/string/String.__eq + local.tee $15 + local.set $1 + local.get $15 + if (result i32) + local.get $1 + i32.const 12816 + call $~lib/string/String.__eq + else + local.get $1 + i32.const 12816 + i32.eq + end i32.eqz if i32.const 0 @@ -11449,9 +12310,18 @@ i32.const -5 i32.const 2147483647 call $~lib/string/String#substring - local.tee $137 - i32.const 12816 - call $~lib/string/String.__eq + local.tee $14 + local.set $1 + local.get $14 + if (result i32) + local.get $1 + i32.const 12816 + call $~lib/string/String.__eq + else + local.get $1 + i32.const 12816 + i32.eq + end i32.eqz if i32.const 0 @@ -11465,9 +12335,18 @@ i32.const 2 i32.const 7 call $~lib/string/String#substring - local.tee $138 - i32.const 12928 - call $~lib/string/String.__eq + local.tee $13 + local.set $1 + local.get $13 + if (result i32) + local.get $1 + i32.const 12928 + call $~lib/string/String.__eq + else + local.get $1 + i32.const 12928 + i32.eq + end i32.eqz if i32.const 0 @@ -11481,9 +12360,18 @@ i32.const -11 i32.const -6 call $~lib/string/String#substring - local.tee $139 - i32.const 1280 - call $~lib/string/String.__eq + local.tee $12 + local.set $1 + local.get $12 + if (result i32) + local.get $1 + i32.const 1280 + call $~lib/string/String.__eq + else + local.get $1 + i32.const 1280 + i32.eq + end i32.eqz if i32.const 0 @@ -11497,9 +12385,18 @@ i32.const 4 i32.const 3 call $~lib/string/String#substring - local.tee $140 - i32.const 13136 - call $~lib/string/String.__eq + local.tee $11 + local.set $1 + local.get $11 + if (result i32) + local.get $1 + i32.const 13136 + call $~lib/string/String.__eq + else + local.get $1 + i32.const 13136 + i32.eq + end i32.eqz if i32.const 0 @@ -11513,9 +12410,18 @@ i32.const 0 i32.const -1 call $~lib/string/String#substring - local.tee $141 - i32.const 1280 - call $~lib/string/String.__eq + local.tee $10 + local.set $1 + local.get $10 + if (result i32) + local.get $1 + i32.const 1280 + call $~lib/string/String.__eq + else + local.get $1 + i32.const 1280 + i32.eq + end i32.eqz if i32.const 0 @@ -11529,9 +12435,18 @@ i32.const 0 i32.const 100 call $~lib/string/String#substring - local.tee $142 - i32.const 12816 - call $~lib/string/String.__eq + local.tee $9 + local.set $1 + local.get $9 + if (result i32) + local.get $1 + i32.const 12816 + call $~lib/string/String.__eq + else + local.get $1 + i32.const 12816 + i32.eq + end i32.eqz if i32.const 0 @@ -11545,9 +12460,18 @@ i32.const 4 i32.const 4 call $~lib/string/String#substring - local.tee $143 - i32.const 1280 - call $~lib/string/String.__eq + local.tee $8 + local.set $1 + local.get $8 + if (result i32) + local.get $1 + i32.const 1280 + call $~lib/string/String.__eq + else + local.get $1 + i32.const 1280 + i32.eq + end i32.eqz if i32.const 0 @@ -11561,9 +12485,18 @@ i32.const 4 i32.const -3 call $~lib/string/String#substring - local.tee $144 - i32.const 2256 - call $~lib/string/String.__eq + local.tee $7 + local.set $1 + local.get $7 + if (result i32) + local.get $1 + i32.const 2256 + call $~lib/string/String.__eq + else + local.get $1 + i32.const 2256 + i32.eq + end i32.eqz if i32.const 0 @@ -11577,22 +12510,33 @@ i32.const 0 i32.const 2147483647 call $~lib/string/String#split - local.tee $1 + local.tee $0 i32.load offset=12 i32.const 1 i32.eq - if - local.get $1 + if (result i32) + local.get $0 i32.const 0 call $~lib/array/Array<~lib/string/String>#__get - local.tee $0 - i32.const 1280 - call $~lib/string/String.__eq - local.set $6 - local.get $0 + local.tee $1 + local.set $212 + local.get $1 + if (result i32) + local.get $212 + i32.const 1280 + call $~lib/string/String.__eq + else + local.get $212 + i32.const 1280 + i32.eq + end + local.get $1 call $~lib/rt/pure/__release + i32.const 0 + i32.ne + else + i32.const 0 end - local.get $6 i32.eqz if i32.const 0 @@ -11606,10 +12550,10 @@ i32.const 1280 i32.const 2147483647 call $~lib/string/String#split - local.set $0 - local.get $1 - call $~lib/rt/pure/__release + local.set $1 local.get $0 + call $~lib/rt/pure/__release + local.get $1 i32.load offset=12 if i32.const 0 @@ -11623,25 +12567,35 @@ i32.const 2032 i32.const 2147483647 call $~lib/string/String#split - local.set $1 - local.get $0 - call $~lib/rt/pure/__release local.get $1 + call $~lib/rt/pure/__release + local.tee $1 i32.load offset=12 i32.const 1 i32.eq - if + if (result i32) local.get $1 i32.const 0 call $~lib/array/Array<~lib/string/String>#__get local.tee $0 - i32.const 1280 - call $~lib/string/String.__eq - local.set $7 + local.set $212 + local.get $0 + if (result i32) + local.get $212 + i32.const 1280 + call $~lib/string/String.__eq + else + local.get $212 + i32.const 1280 + i32.eq + end local.get $0 call $~lib/rt/pure/__release + i32.const 0 + i32.ne + else + i32.const 0 end - local.get $7 i32.eqz if i32.const 0 @@ -11655,25 +12609,35 @@ i32.const 5776 i32.const 2147483647 call $~lib/string/String#split - local.set $3 local.get $1 call $~lib/rt/pure/__release - local.get $3 + local.tee $1 i32.load offset=12 i32.const 1 i32.eq - if - local.get $3 + if (result i32) + local.get $1 i32.const 0 call $~lib/array/Array<~lib/string/String>#__get local.tee $0 - i32.const 13392 - call $~lib/string/String.__eq - local.set $8 + local.set $212 + local.get $0 + if (result i32) + local.get $212 + i32.const 13392 + call $~lib/string/String.__eq + else + local.get $212 + i32.const 13392 + i32.eq + end local.get $0 call $~lib/rt/pure/__release + i32.const 0 + i32.ne + else + i32.const 0 end - local.get $8 i32.eqz if i32.const 0 @@ -11687,49 +12651,83 @@ i32.const 2032 i32.const 2147483647 call $~lib/string/String#split - local.set $0 - local.get $3 + local.get $1 call $~lib/rt/pure/__release - local.get $0 + local.tee $1 i32.load offset=12 i32.const 3 i32.eq if - local.get $0 + local.get $1 i32.const 0 call $~lib/array/Array<~lib/string/String>#__get - local.tee $1 - i32.const 1328 - call $~lib/string/String.__eq - local.set $9 - local.get $1 + local.tee $212 + local.set $0 + local.get $212 + if (result i32) + local.get $0 + i32.const 1328 + call $~lib/string/String.__eq + else + local.get $0 + i32.const 1328 + i32.eq + end + local.set $0 + local.get $212 call $~lib/rt/pure/__release + else + i32.const 0 + local.set $0 end - local.get $9 + local.get $0 if - local.get $0 + local.get $1 i32.const 1 call $~lib/array/Array<~lib/string/String>#__get - local.tee $1 - i32.const 11424 - call $~lib/string/String.__eq - local.set $10 - local.get $1 - call $~lib/rt/pure/__release - end - local.get $10 - if - local.get $0 + local.tee $212 + local.set $0 + local.get $212 + if (result i32) + local.get $0 + i32.const 11424 + call $~lib/string/String.__eq + else + local.get $0 + i32.const 11424 + i32.eq + end + local.set $0 + local.get $212 + call $~lib/rt/pure/__release + else + i32.const 0 + local.set $0 + end + local.get $0 + if (result i32) + local.get $1 i32.const 2 call $~lib/array/Array<~lib/string/String>#__get - local.tee $1 - i32.const 12272 - call $~lib/string/String.__eq - local.set $11 - local.get $1 + local.tee $0 + local.set $212 + local.get $0 + if (result i32) + local.get $212 + i32.const 12272 + call $~lib/string/String.__eq + else + local.get $212 + i32.const 12272 + i32.eq + end + local.get $0 call $~lib/rt/pure/__release + i32.const 0 + i32.ne + else + i32.const 0 end - local.get $11 i32.eqz if i32.const 0 @@ -11743,10 +12741,9 @@ i32.const 13456 i32.const 2147483647 call $~lib/string/String#split - local.set $1 - local.get $0 - call $~lib/rt/pure/__release local.get $1 + call $~lib/rt/pure/__release + local.tee $1 i32.load offset=12 i32.const 3 i32.eq @@ -11754,38 +12751,73 @@ local.get $1 i32.const 0 call $~lib/array/Array<~lib/string/String>#__get - local.tee $0 - i32.const 1328 - call $~lib/string/String.__eq - local.set $12 - local.get $0 + local.tee $212 + local.set $0 + local.get $212 + if (result i32) + local.get $0 + i32.const 1328 + call $~lib/string/String.__eq + else + local.get $0 + i32.const 1328 + i32.eq + end + local.set $0 + local.get $212 call $~lib/rt/pure/__release + else + i32.const 0 + local.set $0 end - local.get $12 + local.get $0 if local.get $1 i32.const 1 call $~lib/array/Array<~lib/string/String>#__get - local.tee $0 - i32.const 11424 - call $~lib/string/String.__eq - local.set $13 - local.get $0 + local.tee $212 + local.set $0 + local.get $212 + if (result i32) + local.get $0 + i32.const 11424 + call $~lib/string/String.__eq + else + local.get $0 + i32.const 11424 + i32.eq + end + local.set $0 + local.get $212 call $~lib/rt/pure/__release + else + i32.const 0 + local.set $0 end - local.get $13 - if + local.get $0 + if (result i32) local.get $1 i32.const 2 call $~lib/array/Array<~lib/string/String>#__get local.tee $0 - i32.const 12272 - call $~lib/string/String.__eq - local.set $14 + local.set $212 + local.get $0 + if (result i32) + local.get $212 + i32.const 12272 + call $~lib/string/String.__eq + else + local.get $212 + i32.const 12272 + i32.eq + end local.get $0 call $~lib/rt/pure/__release + i32.const 0 + i32.ne + else + i32.const 0 end - local.get $14 i32.eqz if i32.const 0 @@ -11799,61 +12831,107 @@ i32.const 2032 i32.const 2147483647 call $~lib/string/String#split - local.set $0 local.get $1 call $~lib/rt/pure/__release - local.get $0 + local.tee $1 i32.load offset=12 i32.const 4 i32.eq if - local.get $0 + local.get $1 i32.const 0 call $~lib/array/Array<~lib/string/String>#__get - local.tee $1 - i32.const 1328 - call $~lib/string/String.__eq - local.set $15 - local.get $1 + local.tee $212 + local.set $0 + local.get $212 + if (result i32) + local.get $0 + i32.const 1328 + call $~lib/string/String.__eq + else + local.get $0 + i32.const 1328 + i32.eq + end + local.set $0 + local.get $212 call $~lib/rt/pure/__release + else + i32.const 0 + local.set $0 end - local.get $15 + local.get $0 if - local.get $0 + local.get $1 i32.const 1 call $~lib/array/Array<~lib/string/String>#__get - local.tee $1 - i32.const 11424 - call $~lib/string/String.__eq - local.set $16 - local.get $1 + local.tee $212 + local.set $0 + local.get $212 + if (result i32) + local.get $0 + i32.const 11424 + call $~lib/string/String.__eq + else + local.get $0 + i32.const 11424 + i32.eq + end + local.set $0 + local.get $212 call $~lib/rt/pure/__release + else + i32.const 0 + local.set $0 end - local.get $16 + local.get $0 if - local.get $0 + local.get $1 i32.const 2 call $~lib/array/Array<~lib/string/String>#__get - local.tee $1 - i32.const 1280 - call $~lib/string/String.__eq - local.set $17 - local.get $1 + local.tee $212 + local.set $0 + local.get $212 + if (result i32) + local.get $0 + i32.const 1280 + call $~lib/string/String.__eq + else + local.get $0 + i32.const 1280 + i32.eq + end + local.set $0 + local.get $212 call $~lib/rt/pure/__release + else + i32.const 0 + local.set $0 end - local.get $17 - if - local.get $0 + local.get $0 + if (result i32) + local.get $1 i32.const 3 call $~lib/array/Array<~lib/string/String>#__get - local.tee $1 - i32.const 12272 - call $~lib/string/String.__eq - local.set $18 - local.get $1 + local.tee $0 + local.set $212 + local.get $0 + if (result i32) + local.get $212 + i32.const 12272 + call $~lib/string/String.__eq + else + local.get $212 + i32.const 12272 + i32.eq + end + local.get $0 call $~lib/rt/pure/__release + i32.const 0 + i32.ne + else + i32.const 0 end - local.get $18 i32.eqz if i32.const 0 @@ -11867,10 +12945,9 @@ i32.const 2032 i32.const 2147483647 call $~lib/string/String#split - local.set $1 - local.get $0 - call $~lib/rt/pure/__release local.get $1 + call $~lib/rt/pure/__release + local.tee $1 i32.load offset=12 i32.const 4 i32.eq @@ -11878,50 +12955,97 @@ local.get $1 i32.const 0 call $~lib/array/Array<~lib/string/String>#__get - local.tee $0 - i32.const 1280 - call $~lib/string/String.__eq - local.set $19 - local.get $0 + local.tee $212 + local.set $0 + local.get $212 + if (result i32) + local.get $0 + i32.const 1280 + call $~lib/string/String.__eq + else + local.get $0 + i32.const 1280 + i32.eq + end + local.set $0 + local.get $212 call $~lib/rt/pure/__release + else + i32.const 0 + local.set $0 end - local.get $19 + local.get $0 if local.get $1 i32.const 1 call $~lib/array/Array<~lib/string/String>#__get - local.tee $0 - i32.const 1328 - call $~lib/string/String.__eq - local.set $20 - local.get $0 + local.tee $212 + local.set $0 + local.get $212 + if (result i32) + local.get $0 + i32.const 1328 + call $~lib/string/String.__eq + else + local.get $0 + i32.const 1328 + i32.eq + end + local.set $0 + local.get $212 call $~lib/rt/pure/__release + else + i32.const 0 + local.set $0 end - local.get $20 + local.get $0 if local.get $1 i32.const 2 call $~lib/array/Array<~lib/string/String>#__get - local.tee $0 - i32.const 11424 - call $~lib/string/String.__eq - local.set $21 - local.get $0 + local.tee $212 + local.set $0 + local.get $212 + if (result i32) + local.get $0 + i32.const 11424 + call $~lib/string/String.__eq + else + local.get $0 + i32.const 11424 + i32.eq + end + local.set $0 + local.get $212 call $~lib/rt/pure/__release + else + i32.const 0 + local.set $0 end - local.get $21 - if + local.get $0 + if (result i32) local.get $1 i32.const 3 call $~lib/array/Array<~lib/string/String>#__get local.tee $0 - i32.const 12272 - call $~lib/string/String.__eq - local.set $22 + local.set $212 + local.get $0 + if (result i32) + local.get $212 + i32.const 12272 + call $~lib/string/String.__eq + else + local.get $212 + i32.const 12272 + i32.eq + end local.get $0 call $~lib/rt/pure/__release + i32.const 0 + i32.ne + else + i32.const 0 end - local.get $22 i32.eqz if i32.const 0 @@ -11935,61 +13059,107 @@ i32.const 2032 i32.const 2147483647 call $~lib/string/String#split - local.set $0 local.get $1 call $~lib/rt/pure/__release - local.get $0 + local.tee $1 i32.load offset=12 i32.const 4 i32.eq if - local.get $0 + local.get $1 i32.const 0 call $~lib/array/Array<~lib/string/String>#__get - local.tee $1 - i32.const 1328 - call $~lib/string/String.__eq - local.set $23 - local.get $1 + local.tee $212 + local.set $0 + local.get $212 + if (result i32) + local.get $0 + i32.const 1328 + call $~lib/string/String.__eq + else + local.get $0 + i32.const 1328 + i32.eq + end + local.set $0 + local.get $212 call $~lib/rt/pure/__release + else + i32.const 0 + local.set $0 end - local.get $23 + local.get $0 if - local.get $0 + local.get $1 i32.const 1 call $~lib/array/Array<~lib/string/String>#__get - local.tee $1 - i32.const 11424 - call $~lib/string/String.__eq - local.set $24 - local.get $1 + local.tee $212 + local.set $0 + local.get $212 + if (result i32) + local.get $0 + i32.const 11424 + call $~lib/string/String.__eq + else + local.get $0 + i32.const 11424 + i32.eq + end + local.set $0 + local.get $212 call $~lib/rt/pure/__release + else + i32.const 0 + local.set $0 end - local.get $24 + local.get $0 if - local.get $0 + local.get $1 i32.const 2 call $~lib/array/Array<~lib/string/String>#__get - local.tee $1 - i32.const 12272 - call $~lib/string/String.__eq - local.set $25 - local.get $1 + local.tee $212 + local.set $0 + local.get $212 + if (result i32) + local.get $0 + i32.const 12272 + call $~lib/string/String.__eq + else + local.get $0 + i32.const 12272 + i32.eq + end + local.set $0 + local.get $212 call $~lib/rt/pure/__release + else + i32.const 0 + local.set $0 end - local.get $25 - if - local.get $0 + local.get $0 + if (result i32) + local.get $1 i32.const 3 call $~lib/array/Array<~lib/string/String>#__get - local.tee $1 - i32.const 1280 - call $~lib/string/String.__eq - local.set $26 - local.get $1 + local.tee $0 + local.set $212 + local.get $0 + if (result i32) + local.get $212 + i32.const 1280 + call $~lib/string/String.__eq + else + local.get $212 + i32.const 1280 + i32.eq + end + local.get $0 call $~lib/rt/pure/__release + i32.const 0 + i32.ne + else + i32.const 0 end - local.get $26 i32.eqz if i32.const 0 @@ -12003,10 +13173,9 @@ i32.const 1280 i32.const 2147483647 call $~lib/string/String#split - local.set $1 - local.get $0 - call $~lib/rt/pure/__release local.get $1 + call $~lib/rt/pure/__release + local.tee $1 i32.load offset=12 i32.const 3 i32.eq @@ -12014,38 +13183,73 @@ local.get $1 i32.const 0 call $~lib/array/Array<~lib/string/String>#__get - local.tee $0 - i32.const 1328 - call $~lib/string/String.__eq - local.set $27 - local.get $0 + local.tee $212 + local.set $0 + local.get $212 + if (result i32) + local.get $0 + i32.const 1328 + call $~lib/string/String.__eq + else + local.get $0 + i32.const 1328 + i32.eq + end + local.set $0 + local.get $212 call $~lib/rt/pure/__release + else + i32.const 0 + local.set $0 end - local.get $27 + local.get $0 if local.get $1 i32.const 1 call $~lib/array/Array<~lib/string/String>#__get - local.tee $0 - i32.const 11424 - call $~lib/string/String.__eq - local.set $28 - local.get $0 + local.tee $212 + local.set $0 + local.get $212 + if (result i32) + local.get $0 + i32.const 11424 + call $~lib/string/String.__eq + else + local.get $0 + i32.const 11424 + i32.eq + end + local.set $0 + local.get $212 call $~lib/rt/pure/__release + else + i32.const 0 + local.set $0 end - local.get $28 - if + local.get $0 + if (result i32) local.get $1 i32.const 2 call $~lib/array/Array<~lib/string/String>#__get local.tee $0 - i32.const 12272 - call $~lib/string/String.__eq - local.set $29 + local.set $212 + local.get $0 + if (result i32) + local.get $212 + i32.const 12272 + call $~lib/string/String.__eq + else + local.get $212 + i32.const 12272 + i32.eq + end local.get $0 call $~lib/rt/pure/__release + i32.const 0 + i32.ne + else + i32.const 0 end - local.get $29 i32.eqz if i32.const 0 @@ -12083,18 +13287,29 @@ i32.load offset=12 i32.const 1 i32.eq - if + if (result i32) local.get $1 i32.const 0 call $~lib/array/Array<~lib/string/String>#__get local.tee $0 - i32.const 1328 - call $~lib/string/String.__eq - local.set $30 + local.set $212 + local.get $0 + if (result i32) + local.get $212 + i32.const 1328 + call $~lib/string/String.__eq + else + local.get $212 + i32.const 1328 + i32.eq + end local.get $0 call $~lib/rt/pure/__release + i32.const 0 + i32.ne + else + i32.const 0 end - local.get $30 i32.eqz if i32.const 0 @@ -12108,25 +13323,35 @@ i32.const 2032 i32.const 1 call $~lib/string/String#split - local.set $3 local.get $1 call $~lib/rt/pure/__release - local.get $3 + local.tee $1 i32.load offset=12 i32.const 1 i32.eq - if - local.get $3 + if (result i32) + local.get $1 i32.const 0 call $~lib/array/Array<~lib/string/String>#__get local.tee $0 - i32.const 1328 - call $~lib/string/String.__eq - local.set $31 + local.set $212 + local.get $0 + if (result i32) + local.get $212 + i32.const 1328 + call $~lib/string/String.__eq + else + local.get $212 + i32.const 1328 + i32.eq + end local.get $0 call $~lib/rt/pure/__release + i32.const 0 + i32.ne + else + i32.const 0 end - local.get $31 i32.eqz if i32.const 0 @@ -12140,49 +13365,83 @@ i32.const 1280 i32.const 4 call $~lib/string/String#split - local.set $0 - local.get $3 + local.get $1 call $~lib/rt/pure/__release - local.get $0 + local.tee $1 i32.load offset=12 i32.const 3 i32.eq if - local.get $0 + local.get $1 i32.const 0 call $~lib/array/Array<~lib/string/String>#__get - local.tee $1 - i32.const 1328 - call $~lib/string/String.__eq - local.set $32 - local.get $1 + local.tee $212 + local.set $0 + local.get $212 + if (result i32) + local.get $0 + i32.const 1328 + call $~lib/string/String.__eq + else + local.get $0 + i32.const 1328 + i32.eq + end + local.set $0 + local.get $212 call $~lib/rt/pure/__release + else + i32.const 0 + local.set $0 end - local.get $32 + local.get $0 if - local.get $0 + local.get $1 i32.const 1 call $~lib/array/Array<~lib/string/String>#__get - local.tee $1 - i32.const 11424 - call $~lib/string/String.__eq - local.set $33 - local.get $1 + local.tee $212 + local.set $0 + local.get $212 + if (result i32) + local.get $0 + i32.const 11424 + call $~lib/string/String.__eq + else + local.get $0 + i32.const 11424 + i32.eq + end + local.set $0 + local.get $212 call $~lib/rt/pure/__release + else + i32.const 0 + local.set $0 end - local.get $33 - if - local.get $0 + local.get $0 + if (result i32) + local.get $1 i32.const 2 call $~lib/array/Array<~lib/string/String>#__get - local.tee $1 - i32.const 12272 - call $~lib/string/String.__eq - local.set $34 - local.get $1 + local.tee $0 + local.set $212 + local.get $0 + if (result i32) + local.get $212 + i32.const 12272 + call $~lib/string/String.__eq + else + local.get $212 + i32.const 12272 + i32.eq + end + local.get $0 call $~lib/rt/pure/__release + i32.const 0 + i32.ne + else + i32.const 0 end - local.get $34 i32.eqz if i32.const 0 @@ -12196,10 +13455,9 @@ i32.const 1280 i32.const -1 call $~lib/string/String#split - local.set $1 - local.get $0 - call $~lib/rt/pure/__release local.get $1 + call $~lib/rt/pure/__release + local.tee $1 i32.load offset=12 i32.const 3 i32.eq @@ -12207,38 +13465,73 @@ local.get $1 i32.const 0 call $~lib/array/Array<~lib/string/String>#__get - local.tee $0 - i32.const 1328 - call $~lib/string/String.__eq - local.set $35 - local.get $0 + local.tee $212 + local.set $0 + local.get $212 + if (result i32) + local.get $0 + i32.const 1328 + call $~lib/string/String.__eq + else + local.get $0 + i32.const 1328 + i32.eq + end + local.set $0 + local.get $212 call $~lib/rt/pure/__release + else + i32.const 0 + local.set $0 end - local.get $35 + local.get $0 if local.get $1 i32.const 1 call $~lib/array/Array<~lib/string/String>#__get - local.tee $0 - i32.const 11424 - call $~lib/string/String.__eq - local.set $36 - local.get $0 - call $~lib/rt/pure/__release - end - local.get $36 - if + local.tee $212 + local.set $0 + local.get $212 + if (result i32) + local.get $0 + i32.const 11424 + call $~lib/string/String.__eq + else + local.get $0 + i32.const 11424 + i32.eq + end + local.set $0 + local.get $212 + call $~lib/rt/pure/__release + else + i32.const 0 + local.set $0 + end + local.get $0 + if (result i32) local.get $1 i32.const 2 call $~lib/array/Array<~lib/string/String>#__get local.tee $0 - i32.const 12272 - call $~lib/string/String.__eq - local.set $37 + local.set $212 + local.get $0 + if (result i32) + local.get $212 + i32.const 12272 + call $~lib/string/String.__eq + else + local.get $212 + i32.const 12272 + i32.eq + end local.get $0 call $~lib/rt/pure/__release + i32.const 0 + i32.ne + else + i32.const 0 end - local.get $37 i32.eqz if i32.const 0 @@ -12252,49 +13545,83 @@ i32.const 2032 i32.const -1 call $~lib/string/String#split - local.set $0 local.get $1 call $~lib/rt/pure/__release - local.get $0 + local.tee $1 i32.load offset=12 i32.const 3 i32.eq if - local.get $0 + local.get $1 i32.const 0 call $~lib/array/Array<~lib/string/String>#__get - local.tee $1 - i32.const 1328 - call $~lib/string/String.__eq - local.set $38 - local.get $1 + local.tee $212 + local.set $0 + local.get $212 + if (result i32) + local.get $0 + i32.const 1328 + call $~lib/string/String.__eq + else + local.get $0 + i32.const 1328 + i32.eq + end + local.set $0 + local.get $212 call $~lib/rt/pure/__release + else + i32.const 0 + local.set $0 end - local.get $38 + local.get $0 if - local.get $0 + local.get $1 i32.const 1 call $~lib/array/Array<~lib/string/String>#__get - local.tee $1 - i32.const 11424 - call $~lib/string/String.__eq - local.set $39 - local.get $1 + local.tee $212 + local.set $0 + local.get $212 + if (result i32) + local.get $0 + i32.const 11424 + call $~lib/string/String.__eq + else + local.get $0 + i32.const 11424 + i32.eq + end + local.set $0 + local.get $212 call $~lib/rt/pure/__release + else + i32.const 0 + local.set $0 end - local.get $39 - if - local.get $0 + local.get $0 + if (result i32) + local.get $1 i32.const 2 call $~lib/array/Array<~lib/string/String>#__get - local.tee $1 - i32.const 12272 - call $~lib/string/String.__eq - local.set $40 - local.get $1 + local.tee $0 + local.set $212 + local.get $0 + if (result i32) + local.get $212 + i32.const 12272 + call $~lib/string/String.__eq + else + local.get $212 + i32.const 12272 + i32.eq + end + local.get $0 call $~lib/rt/pure/__release + i32.const 0 + i32.ne + else + i32.const 0 end - local.get $40 i32.eqz if i32.const 0 @@ -12304,13 +13631,22 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 call $~lib/rt/pure/__release i32.const 0 call $~lib/util/number/itoa32 - local.tee $0 - i32.const 2432 - call $~lib/string/String.__eq + local.tee $1 + local.set $0 + local.get $1 + if (result i32) + local.get $0 + i32.const 2432 + call $~lib/string/String.__eq + else + local.get $0 + i32.const 2432 + i32.eq + end i32.eqz if i32.const 0 @@ -12322,9 +13658,18 @@ end i32.const 1 call $~lib/util/number/itoa32 - local.tee $1 - i32.const 2496 - call $~lib/string/String.__eq + local.tee $0 + local.set $212 + local.get $0 + if (result i32) + local.get $212 + i32.const 2496 + call $~lib/string/String.__eq + else + local.get $212 + i32.const 2496 + i32.eq + end i32.eqz if i32.const 0 @@ -12336,9 +13681,18 @@ end i32.const 8 call $~lib/util/number/itoa32 - local.tee $3 - i32.const 13584 - call $~lib/string/String.__eq + local.tee $212 + local.set $209 + local.get $212 + if (result i32) + local.get $209 + i32.const 13584 + call $~lib/string/String.__eq + else + local.get $209 + i32.const 13584 + i32.eq + end i32.eqz if i32.const 0 @@ -12350,9 +13704,18 @@ end i32.const 12 call $~lib/util/number/itoa32 - local.tee $6 - i32.const 13616 - call $~lib/string/String.__eq + local.tee $209 + local.set $208 + local.get $209 + if (result i32) + local.get $208 + i32.const 13616 + call $~lib/string/String.__eq + else + local.get $208 + i32.const 13616 + i32.eq + end i32.eqz if i32.const 0 @@ -12364,9 +13727,18 @@ end i32.const 123 call $~lib/util/number/itoa32 - local.tee $7 - i32.const 1840 - call $~lib/string/String.__eq + local.tee $208 + local.set $207 + local.get $208 + if (result i32) + local.get $207 + i32.const 1840 + call $~lib/string/String.__eq + else + local.get $207 + i32.const 1840 + i32.eq + end i32.eqz if i32.const 0 @@ -12378,9 +13750,18 @@ end i32.const -1000 call $~lib/util/number/itoa32 - local.tee $8 - i32.const 13648 - call $~lib/string/String.__eq + local.tee $207 + local.set $206 + local.get $207 + if (result i32) + local.get $206 + i32.const 13648 + call $~lib/string/String.__eq + else + local.get $206 + i32.const 13648 + i32.eq + end i32.eqz if i32.const 0 @@ -12392,9 +13773,18 @@ end i32.const 1234 call $~lib/util/number/itoa32 - local.tee $9 - i32.const 13680 - call $~lib/string/String.__eq + local.tee $206 + local.set $205 + local.get $206 + if (result i32) + local.get $205 + i32.const 13680 + call $~lib/string/String.__eq + else + local.get $205 + i32.const 13680 + i32.eq + end i32.eqz if i32.const 0 @@ -12406,9 +13796,18 @@ end i32.const 12345 call $~lib/util/number/itoa32 - local.tee $10 - i32.const 13712 - call $~lib/string/String.__eq + local.tee $205 + local.set $204 + local.get $205 + if (result i32) + local.get $204 + i32.const 13712 + call $~lib/string/String.__eq + else + local.get $204 + i32.const 13712 + i32.eq + end i32.eqz if i32.const 0 @@ -12420,9 +13819,18 @@ end i32.const 123456 call $~lib/util/number/itoa32 - local.tee $11 - i32.const 13744 - call $~lib/string/String.__eq + local.tee $204 + local.set $203 + local.get $204 + if (result i32) + local.get $203 + i32.const 13744 + call $~lib/string/String.__eq + else + local.get $203 + i32.const 13744 + i32.eq + end i32.eqz if i32.const 0 @@ -12434,9 +13842,18 @@ end i32.const 1111111 call $~lib/util/number/itoa32 - local.tee $12 - i32.const 13776 - call $~lib/string/String.__eq + local.tee $203 + local.set $202 + local.get $203 + if (result i32) + local.get $202 + i32.const 13776 + call $~lib/string/String.__eq + else + local.get $202 + i32.const 13776 + i32.eq + end i32.eqz if i32.const 0 @@ -12448,9 +13865,18 @@ end i32.const 1234567 call $~lib/util/number/itoa32 - local.tee $13 - i32.const 13808 - call $~lib/string/String.__eq + local.tee $202 + local.set $201 + local.get $202 + if (result i32) + local.get $201 + i32.const 13808 + call $~lib/string/String.__eq + else + local.get $201 + i32.const 13808 + i32.eq + end i32.eqz if i32.const 0 @@ -12462,9 +13888,18 @@ end i32.const 12345678 call $~lib/util/number/itoa32 - local.tee $14 - i32.const 13840 - call $~lib/string/String.__eq + local.tee $201 + local.set $200 + local.get $201 + if (result i32) + local.get $200 + i32.const 13840 + call $~lib/string/String.__eq + else + local.get $200 + i32.const 13840 + i32.eq + end i32.eqz if i32.const 0 @@ -12476,9 +13911,18 @@ end i32.const 123456789 call $~lib/util/number/itoa32 - local.tee $15 - i32.const 13872 - call $~lib/string/String.__eq + local.tee $200 + local.set $199 + local.get $200 + if (result i32) + local.get $199 + i32.const 13872 + call $~lib/string/String.__eq + else + local.get $199 + i32.const 13872 + i32.eq + end i32.eqz if i32.const 0 @@ -12490,9 +13934,18 @@ end i32.const 2147483646 call $~lib/util/number/itoa32 - local.tee $16 - i32.const 13920 - call $~lib/string/String.__eq + local.tee $199 + local.set $198 + local.get $199 + if (result i32) + local.get $198 + i32.const 13920 + call $~lib/string/String.__eq + else + local.get $198 + i32.const 13920 + i32.eq + end i32.eqz if i32.const 0 @@ -12504,9 +13957,18 @@ end i32.const 2147483647 call $~lib/util/number/itoa32 - local.tee $17 - i32.const 13968 - call $~lib/string/String.__eq + local.tee $198 + local.set $197 + local.get $198 + if (result i32) + local.get $197 + i32.const 13968 + call $~lib/string/String.__eq + else + local.get $197 + i32.const 13968 + i32.eq + end i32.eqz if i32.const 0 @@ -12518,9 +13980,18 @@ end i32.const -2147483648 call $~lib/util/number/itoa32 - local.tee $18 - i32.const 14016 - call $~lib/string/String.__eq + local.tee $197 + local.set $196 + local.get $197 + if (result i32) + local.get $196 + i32.const 14016 + call $~lib/string/String.__eq + else + local.get $196 + i32.const 14016 + i32.eq + end i32.eqz if i32.const 0 @@ -12532,9 +14003,18 @@ end i32.const -1 call $~lib/util/number/itoa32 - local.tee $19 - i32.const 14064 - call $~lib/string/String.__eq + local.tee $196 + local.set $195 + local.get $196 + if (result i32) + local.get $195 + i32.const 14064 + call $~lib/string/String.__eq + else + local.get $195 + i32.const 14064 + i32.eq + end i32.eqz if i32.const 0 @@ -12546,9 +14026,18 @@ end i32.const 0 call $~lib/util/number/utoa32 - local.tee $20 - i32.const 2432 - call $~lib/string/String.__eq + local.tee $195 + local.set $194 + local.get $195 + if (result i32) + local.get $194 + i32.const 2432 + call $~lib/string/String.__eq + else + local.get $194 + i32.const 2432 + i32.eq + end i32.eqz if i32.const 0 @@ -12560,9 +14049,18 @@ end i32.const 1000 call $~lib/util/number/utoa32 - local.tee $21 - i32.const 14096 - call $~lib/string/String.__eq + local.tee $194 + local.set $193 + local.get $194 + if (result i32) + local.get $193 + i32.const 14096 + call $~lib/string/String.__eq + else + local.get $193 + i32.const 14096 + i32.eq + end i32.eqz if i32.const 0 @@ -12574,9 +14072,18 @@ end i32.const 2147483647 call $~lib/util/number/utoa32 - local.tee $22 - i32.const 13968 - call $~lib/string/String.__eq + local.tee $193 + local.set $192 + local.get $193 + if (result i32) + local.get $192 + i32.const 13968 + call $~lib/string/String.__eq + else + local.get $192 + i32.const 13968 + i32.eq + end i32.eqz if i32.const 0 @@ -12588,9 +14095,18 @@ end i32.const -2147483648 call $~lib/util/number/utoa32 - local.tee $23 - i32.const 14128 - call $~lib/string/String.__eq + local.tee $192 + local.set $191 + local.get $192 + if (result i32) + local.get $191 + i32.const 14128 + call $~lib/string/String.__eq + else + local.get $191 + i32.const 14128 + i32.eq + end i32.eqz if i32.const 0 @@ -12602,9 +14118,18 @@ end i32.const -1 call $~lib/util/number/utoa32 - local.tee $24 - i32.const 14176 - call $~lib/string/String.__eq + local.tee $191 + local.set $190 + local.get $191 + if (result i32) + local.get $190 + i32.const 14176 + call $~lib/string/String.__eq + else + local.get $190 + i32.const 14176 + i32.eq + end i32.eqz if i32.const 0 @@ -12616,9 +14141,18 @@ end i64.const 0 call $~lib/util/number/utoa64 - local.tee $25 - i32.const 2432 - call $~lib/string/String.__eq + local.tee $190 + local.set $189 + local.get $190 + if (result i32) + local.get $189 + i32.const 2432 + call $~lib/string/String.__eq + else + local.get $189 + i32.const 2432 + i32.eq + end i32.eqz if i32.const 0 @@ -12630,9 +14164,18 @@ end i64.const 12 call $~lib/util/number/utoa64 - local.tee $26 - i32.const 13616 - call $~lib/string/String.__eq + local.tee $189 + local.set $188 + local.get $189 + if (result i32) + local.get $188 + i32.const 13616 + call $~lib/string/String.__eq + else + local.get $188 + i32.const 13616 + i32.eq + end i32.eqz if i32.const 0 @@ -12644,9 +14187,18 @@ end i64.const 123 call $~lib/util/number/utoa64 - local.tee $27 - i32.const 1840 - call $~lib/string/String.__eq + local.tee $188 + local.set $187 + local.get $188 + if (result i32) + local.get $187 + i32.const 1840 + call $~lib/string/String.__eq + else + local.get $187 + i32.const 1840 + i32.eq + end i32.eqz if i32.const 0 @@ -12658,9 +14210,18 @@ end i64.const 1234 call $~lib/util/number/utoa64 - local.tee $28 - i32.const 13680 - call $~lib/string/String.__eq + local.tee $187 + local.set $186 + local.get $187 + if (result i32) + local.get $186 + i32.const 13680 + call $~lib/string/String.__eq + else + local.get $186 + i32.const 13680 + i32.eq + end i32.eqz if i32.const 0 @@ -12672,9 +14233,18 @@ end i64.const 12345 call $~lib/util/number/utoa64 - local.tee $29 - i32.const 13712 - call $~lib/string/String.__eq + local.tee $186 + local.set $185 + local.get $186 + if (result i32) + local.get $185 + i32.const 13712 + call $~lib/string/String.__eq + else + local.get $185 + i32.const 13712 + i32.eq + end i32.eqz if i32.const 0 @@ -12686,9 +14256,18 @@ end i64.const 123456 call $~lib/util/number/utoa64 - local.tee $30 - i32.const 13744 - call $~lib/string/String.__eq + local.tee $185 + local.set $184 + local.get $185 + if (result i32) + local.get $184 + i32.const 13744 + call $~lib/string/String.__eq + else + local.get $184 + i32.const 13744 + i32.eq + end i32.eqz if i32.const 0 @@ -12700,9 +14279,18 @@ end i64.const 1234567 call $~lib/util/number/utoa64 - local.tee $31 - i32.const 13808 - call $~lib/string/String.__eq + local.tee $184 + local.set $183 + local.get $184 + if (result i32) + local.get $183 + i32.const 13808 + call $~lib/string/String.__eq + else + local.get $183 + i32.const 13808 + i32.eq + end i32.eqz if i32.const 0 @@ -12714,9 +14302,18 @@ end i64.const 99999999 call $~lib/util/number/utoa64 - local.tee $32 - i32.const 14224 - call $~lib/string/String.__eq + local.tee $183 + local.set $182 + local.get $183 + if (result i32) + local.get $182 + i32.const 14224 + call $~lib/string/String.__eq + else + local.get $182 + i32.const 14224 + i32.eq + end i32.eqz if i32.const 0 @@ -12728,9 +14325,18 @@ end i64.const 100000000 call $~lib/util/number/utoa64 - local.tee $33 - i32.const 14256 - call $~lib/string/String.__eq + local.tee $182 + local.set $181 + local.get $182 + if (result i32) + local.get $181 + i32.const 14256 + call $~lib/string/String.__eq + else + local.get $181 + i32.const 14256 + i32.eq + end i32.eqz if i32.const 0 @@ -12742,9 +14348,18 @@ end i64.const 4294967295 call $~lib/util/number/utoa64 - local.tee $34 - i32.const 14176 - call $~lib/string/String.__eq + local.tee $181 + local.set $180 + local.get $181 + if (result i32) + local.get $180 + i32.const 14176 + call $~lib/string/String.__eq + else + local.get $180 + i32.const 14176 + i32.eq + end i32.eqz if i32.const 0 @@ -12756,9 +14371,18 @@ end i64.const 4294967297 call $~lib/util/number/utoa64 - local.tee $35 - i32.const 14304 - call $~lib/string/String.__eq + local.tee $180 + local.set $179 + local.get $180 + if (result i32) + local.get $179 + i32.const 14304 + call $~lib/string/String.__eq + else + local.get $179 + i32.const 14304 + i32.eq + end i32.eqz if i32.const 0 @@ -12770,9 +14394,18 @@ end i64.const 68719476735 call $~lib/util/number/utoa64 - local.tee $36 - i32.const 14352 - call $~lib/string/String.__eq + local.tee $179 + local.set $178 + local.get $179 + if (result i32) + local.get $178 + i32.const 14352 + call $~lib/string/String.__eq + else + local.get $178 + i32.const 14352 + i32.eq + end i32.eqz if i32.const 0 @@ -12784,9 +14417,18 @@ end i64.const 868719476735 call $~lib/util/number/utoa64 - local.tee $37 - i32.const 14400 - call $~lib/string/String.__eq + local.tee $178 + local.set $177 + local.get $178 + if (result i32) + local.get $177 + i32.const 14400 + call $~lib/string/String.__eq + else + local.get $177 + i32.const 14400 + i32.eq + end i32.eqz if i32.const 0 @@ -12798,9 +14440,18 @@ end i64.const 8687194767350 call $~lib/util/number/utoa64 - local.tee $38 - i32.const 14448 - call $~lib/string/String.__eq + local.tee $177 + local.set $176 + local.get $177 + if (result i32) + local.get $176 + i32.const 14448 + call $~lib/string/String.__eq + else + local.get $176 + i32.const 14448 + i32.eq + end i32.eqz if i32.const 0 @@ -12812,9 +14463,18 @@ end i64.const 86871947673501 call $~lib/util/number/utoa64 - local.tee $39 - i32.const 14496 - call $~lib/string/String.__eq + local.tee $176 + local.set $175 + local.get $176 + if (result i32) + local.get $175 + i32.const 14496 + call $~lib/string/String.__eq + else + local.get $175 + i32.const 14496 + i32.eq + end i32.eqz if i32.const 0 @@ -12826,9 +14486,18 @@ end i64.const 999868719476735 call $~lib/util/number/utoa64 - local.tee $40 - i32.const 14544 - call $~lib/string/String.__eq + local.tee $175 + local.set $174 + local.get $175 + if (result i32) + local.get $174 + i32.const 14544 + call $~lib/string/String.__eq + else + local.get $174 + i32.const 14544 + i32.eq + end i32.eqz if i32.const 0 @@ -12840,9 +14509,18 @@ end i64.const 9999868719476735 call $~lib/util/number/utoa64 - local.tee $145 - i32.const 14592 - call $~lib/string/String.__eq + local.tee $174 + local.set $173 + local.get $174 + if (result i32) + local.get $173 + i32.const 14592 + call $~lib/string/String.__eq + else + local.get $173 + i32.const 14592 + i32.eq + end i32.eqz if i32.const 0 @@ -12854,9 +14532,18 @@ end i64.const 19999868719476735 call $~lib/util/number/utoa64 - local.tee $146 - i32.const 14640 - call $~lib/string/String.__eq + local.tee $173 + local.set $172 + local.get $173 + if (result i32) + local.get $172 + i32.const 14640 + call $~lib/string/String.__eq + else + local.get $172 + i32.const 14640 + i32.eq + end i32.eqz if i32.const 0 @@ -12868,9 +14555,18 @@ end i64.const 129999868719476735 call $~lib/util/number/utoa64 - local.tee $147 - i32.const 14704 - call $~lib/string/String.__eq + local.tee $172 + local.set $171 + local.get $172 + if (result i32) + local.get $171 + i32.const 14704 + call $~lib/string/String.__eq + else + local.get $171 + i32.const 14704 + i32.eq + end i32.eqz if i32.const 0 @@ -12882,9 +14578,18 @@ end i64.const 1239999868719476735 call $~lib/util/number/utoa64 - local.tee $148 - i32.const 14768 - call $~lib/string/String.__eq + local.tee $171 + local.set $170 + local.get $171 + if (result i32) + local.get $170 + i32.const 14768 + call $~lib/string/String.__eq + else + local.get $170 + i32.const 14768 + i32.eq + end i32.eqz if i32.const 0 @@ -12896,9 +14601,18 @@ end i64.const -1 call $~lib/util/number/utoa64 - local.tee $149 - i32.const 14832 - call $~lib/string/String.__eq + local.tee $170 + local.set $169 + local.get $170 + if (result i32) + local.get $169 + i32.const 14832 + call $~lib/string/String.__eq + else + local.get $169 + i32.const 14832 + i32.eq + end i32.eqz if i32.const 0 @@ -12910,9 +14624,18 @@ end i64.const 0 call $~lib/util/number/itoa64 - local.tee $150 - i32.const 2432 - call $~lib/string/String.__eq + local.tee $169 + local.set $168 + local.get $169 + if (result i32) + local.get $168 + i32.const 2432 + call $~lib/string/String.__eq + else + local.get $168 + i32.const 2432 + i32.eq + end i32.eqz if i32.const 0 @@ -12924,13 +14647,22 @@ end i64.const -1234 call $~lib/util/number/itoa64 - local.tee $151 - i32.const 14896 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1088 + local.tee $168 + local.set $167 + local.get $168 + if (result i32) + local.get $167 + i32.const 14896 + call $~lib/string/String.__eq + else + local.get $167 + i32.const 14896 + i32.eq + end + i32.eqz + if + i32.const 0 + i32.const 1088 i32.const 521 i32.const 0 call $~lib/builtins/abort @@ -12938,9 +14670,18 @@ end i64.const 4294967295 call $~lib/util/number/itoa64 - local.tee $152 - i32.const 14176 - call $~lib/string/String.__eq + local.tee $167 + local.set $166 + local.get $167 + if (result i32) + local.get $166 + i32.const 14176 + call $~lib/string/String.__eq + else + local.get $166 + i32.const 14176 + i32.eq + end i32.eqz if i32.const 0 @@ -12952,9 +14693,18 @@ end i64.const 4294967297 call $~lib/util/number/itoa64 - local.tee $153 - i32.const 14304 - call $~lib/string/String.__eq + local.tee $166 + local.set $165 + local.get $166 + if (result i32) + local.get $165 + i32.const 14304 + call $~lib/string/String.__eq + else + local.get $165 + i32.const 14304 + i32.eq + end i32.eqz if i32.const 0 @@ -12966,9 +14716,18 @@ end i64.const -4294967295 call $~lib/util/number/itoa64 - local.tee $154 - i32.const 14928 - call $~lib/string/String.__eq + local.tee $165 + local.set $164 + local.get $165 + if (result i32) + local.get $164 + i32.const 14928 + call $~lib/string/String.__eq + else + local.get $164 + i32.const 14928 + i32.eq + end i32.eqz if i32.const 0 @@ -12980,9 +14739,18 @@ end i64.const 68719476735 call $~lib/util/number/itoa64 - local.tee $155 - i32.const 14352 - call $~lib/string/String.__eq + local.tee $164 + local.set $163 + local.get $164 + if (result i32) + local.get $163 + i32.const 14352 + call $~lib/string/String.__eq + else + local.get $163 + i32.const 14352 + i32.eq + end i32.eqz if i32.const 0 @@ -12994,9 +14762,18 @@ end i64.const -68719476735 call $~lib/util/number/itoa64 - local.tee $156 - i32.const 14976 - call $~lib/string/String.__eq + local.tee $163 + local.set $162 + local.get $163 + if (result i32) + local.get $162 + i32.const 14976 + call $~lib/string/String.__eq + else + local.get $162 + i32.const 14976 + i32.eq + end i32.eqz if i32.const 0 @@ -13008,9 +14785,18 @@ end i64.const -868719476735 call $~lib/util/number/itoa64 - local.tee $157 - i32.const 15024 - call $~lib/string/String.__eq + local.tee $162 + local.set $161 + local.get $162 + if (result i32) + local.get $161 + i32.const 15024 + call $~lib/string/String.__eq + else + local.get $161 + i32.const 15024 + i32.eq + end i32.eqz if i32.const 0 @@ -13022,9 +14808,18 @@ end i64.const -999868719476735 call $~lib/util/number/itoa64 - local.tee $158 - i32.const 15072 - call $~lib/string/String.__eq + local.tee $161 + local.set $160 + local.get $161 + if (result i32) + local.get $160 + i32.const 15072 + call $~lib/string/String.__eq + else + local.get $160 + i32.const 15072 + i32.eq + end i32.eqz if i32.const 0 @@ -13036,9 +14831,18 @@ end i64.const -19999868719476735 call $~lib/util/number/itoa64 - local.tee $159 - i32.const 15120 - call $~lib/string/String.__eq + local.tee $160 + local.set $159 + local.get $160 + if (result i32) + local.get $159 + i32.const 15120 + call $~lib/string/String.__eq + else + local.get $159 + i32.const 15120 + i32.eq + end i32.eqz if i32.const 0 @@ -13050,9 +14854,18 @@ end i64.const 9223372036854775807 call $~lib/util/number/itoa64 - local.tee $160 - i32.const 15184 - call $~lib/string/String.__eq + local.tee $159 + local.set $158 + local.get $159 + if (result i32) + local.get $158 + i32.const 15184 + call $~lib/string/String.__eq + else + local.get $158 + i32.const 15184 + i32.eq + end i32.eqz if i32.const 0 @@ -13064,9 +14877,18 @@ end i64.const -9223372036854775808 call $~lib/util/number/itoa64 - local.tee $161 - i32.const 15248 - call $~lib/string/String.__eq + local.tee $158 + local.set $157 + local.get $158 + if (result i32) + local.get $157 + i32.const 15248 + call $~lib/string/String.__eq + else + local.get $157 + i32.const 15248 + i32.eq + end i32.eqz if i32.const 0 @@ -13078,9 +14900,18 @@ end f64.const 0 call $~lib/util/number/dtoa - local.tee $162 - i32.const 15312 - call $~lib/string/String.__eq + local.tee $157 + local.set $156 + local.get $157 + if (result i32) + local.get $156 + i32.const 15312 + call $~lib/string/String.__eq + else + local.get $156 + i32.const 15312 + i32.eq + end i32.eqz if i32.const 0 @@ -13092,9 +14923,18 @@ end f64.const -0 call $~lib/util/number/dtoa - local.tee $163 - i32.const 15312 - call $~lib/string/String.__eq + local.tee $156 + local.set $155 + local.get $156 + if (result i32) + local.get $155 + i32.const 15312 + call $~lib/string/String.__eq + else + local.get $155 + i32.const 15312 + i32.eq + end i32.eqz if i32.const 0 @@ -13106,9 +14946,18 @@ end f64.const nan:0x8000000000000 call $~lib/util/number/dtoa - local.tee $164 - i32.const 5840 - call $~lib/string/String.__eq + local.tee $155 + local.set $154 + local.get $155 + if (result i32) + local.get $154 + i32.const 5840 + call $~lib/string/String.__eq + else + local.get $154 + i32.const 5840 + i32.eq + end i32.eqz if i32.const 0 @@ -13120,9 +14969,18 @@ end f64.const inf call $~lib/util/number/dtoa - local.tee $165 - i32.const 15344 - call $~lib/string/String.__eq + local.tee $154 + local.set $153 + local.get $154 + if (result i32) + local.get $153 + i32.const 15344 + call $~lib/string/String.__eq + else + local.get $153 + i32.const 15344 + i32.eq + end i32.eqz if i32.const 0 @@ -13134,9 +14992,18 @@ end f64.const -inf call $~lib/util/number/dtoa - local.tee $166 - i32.const 7056 - call $~lib/string/String.__eq + local.tee $153 + local.set $152 + local.get $153 + if (result i32) + local.get $152 + i32.const 7056 + call $~lib/string/String.__eq + else + local.get $152 + i32.const 7056 + i32.eq + end i32.eqz if i32.const 0 @@ -13148,9 +15015,18 @@ end f64.const 2.220446049250313e-16 call $~lib/util/number/dtoa - local.tee $167 - i32.const 6352 - call $~lib/string/String.__eq + local.tee $152 + local.set $151 + local.get $152 + if (result i32) + local.get $151 + i32.const 6352 + call $~lib/string/String.__eq + else + local.get $151 + i32.const 6352 + i32.eq + end i32.eqz if i32.const 0 @@ -13162,9 +15038,18 @@ end f64.const -2.220446049250313e-16 call $~lib/util/number/dtoa - local.tee $168 - i32.const 16352 - call $~lib/string/String.__eq + local.tee $151 + local.set $150 + local.get $151 + if (result i32) + local.get $150 + i32.const 16352 + call $~lib/string/String.__eq + else + local.get $150 + i32.const 16352 + i32.eq + end i32.eqz if i32.const 0 @@ -13176,9 +15061,18 @@ end f64.const 1797693134862315708145274e284 call $~lib/util/number/dtoa - local.tee $169 - i32.const 6416 - call $~lib/string/String.__eq + local.tee $150 + local.set $149 + local.get $150 + if (result i32) + local.get $149 + i32.const 6416 + call $~lib/string/String.__eq + else + local.get $149 + i32.const 6416 + i32.eq + end i32.eqz if i32.const 0 @@ -13190,9 +15084,18 @@ end f64.const -1797693134862315708145274e284 call $~lib/util/number/dtoa - local.tee $170 - i32.const 16416 - call $~lib/string/String.__eq + local.tee $149 + local.set $148 + local.get $149 + if (result i32) + local.get $148 + i32.const 16416 + call $~lib/string/String.__eq + else + local.get $148 + i32.const 16416 + i32.eq + end i32.eqz if i32.const 0 @@ -13204,9 +15107,18 @@ end f64.const 4185580496821356722454785e274 call $~lib/util/number/dtoa - local.tee $171 - i32.const 16480 - call $~lib/string/String.__eq + local.tee $148 + local.set $147 + local.get $148 + if (result i32) + local.get $147 + i32.const 16480 + call $~lib/string/String.__eq + else + local.get $147 + i32.const 16480 + i32.eq + end i32.eqz if i32.const 0 @@ -13218,9 +15130,18 @@ end f64.const 2.2250738585072014e-308 call $~lib/util/number/dtoa - local.tee $172 - i32.const 16544 - call $~lib/string/String.__eq + local.tee $147 + local.set $146 + local.get $147 + if (result i32) + local.get $146 + i32.const 16544 + call $~lib/string/String.__eq + else + local.get $146 + i32.const 16544 + i32.eq + end i32.eqz if i32.const 0 @@ -13232,9 +15153,18 @@ end f64.const 4.940656e-318 call $~lib/util/number/dtoa - local.tee $173 - i32.const 16608 - call $~lib/string/String.__eq + local.tee $146 + local.set $145 + local.get $146 + if (result i32) + local.get $145 + i32.const 16608 + call $~lib/string/String.__eq + else + local.get $145 + i32.const 16608 + i32.eq + end i32.eqz if i32.const 0 @@ -13246,9 +15176,18 @@ end f64.const 9060801153433600 call $~lib/util/number/dtoa - local.tee $174 - i32.const 16656 - call $~lib/string/String.__eq + local.tee $145 + local.set $144 + local.get $145 + if (result i32) + local.get $144 + i32.const 16656 + call $~lib/string/String.__eq + else + local.get $144 + i32.const 16656 + i32.eq + end i32.eqz if i32.const 0 @@ -13260,9 +15199,18 @@ end f64.const 4708356024711512064 call $~lib/util/number/dtoa - local.tee $175 - i32.const 16720 - call $~lib/string/String.__eq + local.tee $144 + local.set $143 + local.get $144 + if (result i32) + local.get $143 + i32.const 16720 + call $~lib/string/String.__eq + else + local.get $143 + i32.const 16720 + i32.eq + end i32.eqz if i32.const 0 @@ -13274,9 +15222,18 @@ end f64.const 9409340012568248320 call $~lib/util/number/dtoa - local.tee $176 - i32.const 16784 - call $~lib/string/String.__eq + local.tee $143 + local.set $142 + local.get $143 + if (result i32) + local.get $142 + i32.const 16784 + call $~lib/string/String.__eq + else + local.get $142 + i32.const 16784 + i32.eq + end i32.eqz if i32.const 0 @@ -13288,23 +15245,41 @@ end f64.const 5e-324 call $~lib/util/number/dtoa - local.tee $177 - i32.const 6480 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 551 + local.tee $142 + local.set $141 + local.get $142 + if (result i32) + local.get $141 + i32.const 6480 + call $~lib/string/String.__eq + else + local.get $141 + i32.const 6480 + i32.eq + end + i32.eqz + if + i32.const 0 + i32.const 1088 + i32.const 551 i32.const 0 call $~lib/builtins/abort unreachable end f64.const 1 call $~lib/util/number/dtoa - local.tee $178 - i32.const 16848 - call $~lib/string/String.__eq + local.tee $141 + local.set $140 + local.get $141 + if (result i32) + local.get $140 + i32.const 16848 + call $~lib/string/String.__eq + else + local.get $140 + i32.const 16848 + i32.eq + end i32.eqz if i32.const 0 @@ -13316,9 +15291,18 @@ end f64.const 0.1 call $~lib/util/number/dtoa - local.tee $179 - i32.const 3488 - call $~lib/string/String.__eq + local.tee $140 + local.set $139 + local.get $140 + if (result i32) + local.get $139 + i32.const 3488 + call $~lib/string/String.__eq + else + local.get $139 + i32.const 3488 + i32.eq + end i32.eqz if i32.const 0 @@ -13330,9 +15314,18 @@ end f64.const -1 call $~lib/util/number/dtoa - local.tee $180 - i32.const 16880 - call $~lib/string/String.__eq + local.tee $139 + local.set $138 + local.get $139 + if (result i32) + local.get $138 + i32.const 16880 + call $~lib/string/String.__eq + else + local.get $138 + i32.const 16880 + i32.eq + end i32.eqz if i32.const 0 @@ -13344,9 +15337,18 @@ end f64.const -0.1 call $~lib/util/number/dtoa - local.tee $181 - i32.const 16912 - call $~lib/string/String.__eq + local.tee $138 + local.set $137 + local.get $138 + if (result i32) + local.get $137 + i32.const 16912 + call $~lib/string/String.__eq + else + local.get $137 + i32.const 16912 + i32.eq + end i32.eqz if i32.const 0 @@ -13358,9 +15360,18 @@ end f64.const 1e6 call $~lib/util/number/dtoa - local.tee $182 - i32.const 16944 - call $~lib/string/String.__eq + local.tee $137 + local.set $136 + local.get $137 + if (result i32) + local.get $136 + i32.const 16944 + call $~lib/string/String.__eq + else + local.get $136 + i32.const 16944 + i32.eq + end i32.eqz if i32.const 0 @@ -13372,9 +15383,18 @@ end f64.const 1e-06 call $~lib/util/number/dtoa - local.tee $183 - i32.const 16992 - call $~lib/string/String.__eq + local.tee $136 + local.set $135 + local.get $136 + if (result i32) + local.get $135 + i32.const 16992 + call $~lib/string/String.__eq + else + local.get $135 + i32.const 16992 + i32.eq + end i32.eqz if i32.const 0 @@ -13386,9 +15406,18 @@ end f64.const -1e6 call $~lib/util/number/dtoa - local.tee $184 - i32.const 17024 - call $~lib/string/String.__eq + local.tee $135 + local.set $134 + local.get $135 + if (result i32) + local.get $134 + i32.const 17024 + call $~lib/string/String.__eq + else + local.get $134 + i32.const 17024 + i32.eq + end i32.eqz if i32.const 0 @@ -13400,9 +15429,18 @@ end f64.const -1e-06 call $~lib/util/number/dtoa - local.tee $185 - i32.const 17072 - call $~lib/string/String.__eq + local.tee $134 + local.set $133 + local.get $134 + if (result i32) + local.get $133 + i32.const 17072 + call $~lib/string/String.__eq + else + local.get $133 + i32.const 17072 + i32.eq + end i32.eqz if i32.const 0 @@ -13414,9 +15452,18 @@ end f64.const 1e7 call $~lib/util/number/dtoa - local.tee $186 - i32.const 17120 - call $~lib/string/String.__eq + local.tee $133 + local.set $132 + local.get $133 + if (result i32) + local.get $132 + i32.const 17120 + call $~lib/string/String.__eq + else + local.get $132 + i32.const 17120 + i32.eq + end i32.eqz if i32.const 0 @@ -13428,9 +15475,18 @@ end f64.const 1e-07 call $~lib/util/number/dtoa - local.tee $187 - i32.const 17168 - call $~lib/string/String.__eq + local.tee $132 + local.set $131 + local.get $132 + if (result i32) + local.get $131 + i32.const 17168 + call $~lib/string/String.__eq + else + local.get $131 + i32.const 17168 + i32.eq + end i32.eqz if i32.const 0 @@ -13442,9 +15498,18 @@ end f64.const 1.e+308 call $~lib/util/number/dtoa - local.tee $188 - i32.const 3712 - call $~lib/string/String.__eq + local.tee $131 + local.set $130 + local.get $131 + if (result i32) + local.get $130 + i32.const 3712 + call $~lib/string/String.__eq + else + local.get $130 + i32.const 3712 + i32.eq + end i32.eqz if i32.const 0 @@ -13456,9 +15521,18 @@ end f64.const -1.e+308 call $~lib/util/number/dtoa - local.tee $189 - i32.const 17200 - call $~lib/string/String.__eq + local.tee $130 + local.set $129 + local.get $130 + if (result i32) + local.get $129 + i32.const 17200 + call $~lib/string/String.__eq + else + local.get $129 + i32.const 17200 + i32.eq + end i32.eqz if i32.const 0 @@ -13470,9 +15544,18 @@ end f64.const inf call $~lib/util/number/dtoa - local.tee $190 - i32.const 15344 - call $~lib/string/String.__eq + local.tee $129 + local.set $128 + local.get $129 + if (result i32) + local.get $128 + i32.const 15344 + call $~lib/string/String.__eq + else + local.get $128 + i32.const 15344 + i32.eq + end i32.eqz if i32.const 0 @@ -13484,9 +15567,18 @@ end f64.const -inf call $~lib/util/number/dtoa - local.tee $191 - i32.const 7056 - call $~lib/string/String.__eq + local.tee $128 + local.set $127 + local.get $128 + if (result i32) + local.get $127 + i32.const 7056 + call $~lib/string/String.__eq + else + local.get $127 + i32.const 7056 + i32.eq + end i32.eqz if i32.const 0 @@ -13498,9 +15590,18 @@ end f64.const 1e-308 call $~lib/util/number/dtoa - local.tee $192 - i32.const 17232 - call $~lib/string/String.__eq + local.tee $127 + local.set $126 + local.get $127 + if (result i32) + local.get $126 + i32.const 17232 + call $~lib/string/String.__eq + else + local.get $126 + i32.const 17232 + i32.eq + end i32.eqz if i32.const 0 @@ -13512,9 +15613,18 @@ end f64.const -1e-308 call $~lib/util/number/dtoa - local.tee $193 - i32.const 17264 - call $~lib/string/String.__eq + local.tee $126 + local.set $125 + local.get $126 + if (result i32) + local.get $125 + i32.const 17264 + call $~lib/string/String.__eq + else + local.get $125 + i32.const 17264 + i32.eq + end i32.eqz if i32.const 0 @@ -13526,9 +15636,18 @@ end f64.const 1e-323 call $~lib/util/number/dtoa - local.tee $194 - i32.const 17296 - call $~lib/string/String.__eq + local.tee $125 + local.set $124 + local.get $125 + if (result i32) + local.get $124 + i32.const 17296 + call $~lib/string/String.__eq + else + local.get $124 + i32.const 17296 + i32.eq + end i32.eqz if i32.const 0 @@ -13540,9 +15659,18 @@ end f64.const -1e-323 call $~lib/util/number/dtoa - local.tee $195 - i32.const 17328 - call $~lib/string/String.__eq + local.tee $124 + local.set $123 + local.get $124 + if (result i32) + local.get $123 + i32.const 17328 + call $~lib/string/String.__eq + else + local.get $123 + i32.const 17328 + i32.eq + end i32.eqz if i32.const 0 @@ -13554,9 +15682,18 @@ end f64.const 0 call $~lib/util/number/dtoa - local.tee $196 - i32.const 15312 - call $~lib/string/String.__eq + local.tee $123 + local.set $122 + local.get $123 + if (result i32) + local.get $122 + i32.const 15312 + call $~lib/string/String.__eq + else + local.get $122 + i32.const 15312 + i32.eq + end i32.eqz if i32.const 0 @@ -13568,9 +15705,18 @@ end f64.const 4294967272 call $~lib/util/number/dtoa - local.tee $197 - i32.const 17360 - call $~lib/string/String.__eq + local.tee $122 + local.set $121 + local.get $122 + if (result i32) + local.get $121 + i32.const 17360 + call $~lib/string/String.__eq + else + local.get $121 + i32.const 17360 + i32.eq + end i32.eqz if i32.const 0 @@ -13582,9 +15728,18 @@ end f64.const 1.2312145673456234e-08 call $~lib/util/number/dtoa - local.tee $198 - i32.const 17408 - call $~lib/string/String.__eq + local.tee $121 + local.set $120 + local.get $121 + if (result i32) + local.get $120 + i32.const 17408 + call $~lib/string/String.__eq + else + local.get $120 + i32.const 17408 + i32.eq + end i32.eqz if i32.const 0 @@ -13596,9 +15751,18 @@ end f64.const 555555555.5555556 call $~lib/util/number/dtoa - local.tee $199 - i32.const 17472 - call $~lib/string/String.__eq + local.tee $120 + local.set $119 + local.get $120 + if (result i32) + local.get $119 + i32.const 17472 + call $~lib/string/String.__eq + else + local.get $119 + i32.const 17472 + i32.eq + end i32.eqz if i32.const 0 @@ -13610,9 +15774,18 @@ end f64.const 0.9999999999999999 call $~lib/util/number/dtoa - local.tee $200 - i32.const 17536 - call $~lib/string/String.__eq + local.tee $119 + local.set $118 + local.get $119 + if (result i32) + local.get $118 + i32.const 17536 + call $~lib/string/String.__eq + else + local.get $118 + i32.const 17536 + i32.eq + end i32.eqz if i32.const 0 @@ -13624,9 +15797,18 @@ end f64.const 1 call $~lib/util/number/dtoa - local.tee $201 - i32.const 16848 - call $~lib/string/String.__eq + local.tee $118 + local.set $117 + local.get $118 + if (result i32) + local.get $117 + i32.const 16848 + call $~lib/string/String.__eq + else + local.get $117 + i32.const 16848 + i32.eq + end i32.eqz if i32.const 0 @@ -13638,9 +15820,18 @@ end f64.const 12.34 call $~lib/util/number/dtoa - local.tee $202 - i32.const 17600 - call $~lib/string/String.__eq + local.tee $117 + local.set $116 + local.get $117 + if (result i32) + local.get $116 + i32.const 17600 + call $~lib/string/String.__eq + else + local.get $116 + i32.const 17600 + i32.eq + end i32.eqz if i32.const 0 @@ -13652,9 +15843,18 @@ end f64.const 0.3333333333333333 call $~lib/util/number/dtoa - local.tee $203 - i32.const 17632 - call $~lib/string/String.__eq + local.tee $116 + local.set $115 + local.get $116 + if (result i32) + local.get $115 + i32.const 17632 + call $~lib/string/String.__eq + else + local.get $115 + i32.const 17632 + i32.eq + end i32.eqz if i32.const 0 @@ -13666,9 +15866,18 @@ end f64.const 1234e17 call $~lib/util/number/dtoa - local.tee $204 - i32.const 17696 - call $~lib/string/String.__eq + local.tee $115 + local.set $114 + local.get $115 + if (result i32) + local.get $114 + i32.const 17696 + call $~lib/string/String.__eq + else + local.get $114 + i32.const 17696 + i32.eq + end i32.eqz if i32.const 0 @@ -13680,9 +15889,18 @@ end f64.const 1234e18 call $~lib/util/number/dtoa - local.tee $205 - i32.const 17760 - call $~lib/string/String.__eq + local.tee $114 + local.set $113 + local.get $114 + if (result i32) + local.get $113 + i32.const 17760 + call $~lib/string/String.__eq + else + local.get $113 + i32.const 17760 + i32.eq + end i32.eqz if i32.const 0 @@ -13694,9 +15912,18 @@ end f64.const 2.71828 call $~lib/util/number/dtoa - local.tee $206 - i32.const 17808 - call $~lib/string/String.__eq + local.tee $113 + local.set $112 + local.get $113 + if (result i32) + local.get $112 + i32.const 17808 + call $~lib/string/String.__eq + else + local.get $112 + i32.const 17808 + i32.eq + end i32.eqz if i32.const 0 @@ -13708,9 +15935,18 @@ end f64.const 0.0271828 call $~lib/util/number/dtoa - local.tee $207 - i32.const 17840 - call $~lib/string/String.__eq + local.tee $112 + local.set $111 + local.get $112 + if (result i32) + local.get $111 + i32.const 17840 + call $~lib/string/String.__eq + else + local.get $111 + i32.const 17840 + i32.eq + end i32.eqz if i32.const 0 @@ -13722,9 +15958,18 @@ end f64.const 271.828 call $~lib/util/number/dtoa - local.tee $208 - i32.const 17888 - call $~lib/string/String.__eq + local.tee $111 + local.set $110 + local.get $111 + if (result i32) + local.get $110 + i32.const 17888 + call $~lib/string/String.__eq + else + local.get $110 + i32.const 17888 + i32.eq + end i32.eqz if i32.const 0 @@ -13736,9 +15981,18 @@ end f64.const 1.1e+128 call $~lib/util/number/dtoa - local.tee $209 - i32.const 17920 - call $~lib/string/String.__eq + local.tee $110 + local.set $109 + local.get $110 + if (result i32) + local.get $109 + i32.const 17920 + call $~lib/string/String.__eq + else + local.get $109 + i32.const 17920 + i32.eq + end i32.eqz if i32.const 0 @@ -13750,9 +16004,18 @@ end f64.const 1.1e-64 call $~lib/util/number/dtoa - local.tee $210 - i32.const 17952 - call $~lib/string/String.__eq + local.tee $109 + local.set $108 + local.get $109 + if (result i32) + local.get $108 + i32.const 17952 + call $~lib/string/String.__eq + else + local.get $108 + i32.const 17952 + i32.eq + end i32.eqz if i32.const 0 @@ -13764,9 +16027,18 @@ end f64.const 0.000035689 call $~lib/util/number/dtoa - local.tee $211 - i32.const 17984 - call $~lib/string/String.__eq + local.tee $108 + local.set $6 + local.get $108 + if (result i32) + local.get $6 + i32.const 17984 + call $~lib/string/String.__eq + else + local.get $6 + i32.const 17984 + i32.eq + end i32.eqz if i32.const 0 @@ -13778,434 +16050,434 @@ end global.get $std/string/str call $~lib/rt/pure/__release - local.get $41 + local.get $102 call $~lib/rt/pure/__release - local.get $42 + local.get $103 call $~lib/rt/pure/__release - local.get $43 + local.get $104 call $~lib/rt/pure/__release - local.get $44 + local.get $101 call $~lib/rt/pure/__release - local.get $45 + local.get $100 call $~lib/rt/pure/__release - local.get $46 + local.get $99 call $~lib/rt/pure/__release - local.get $47 + local.get $98 call $~lib/rt/pure/__release - local.get $4 + local.get $210 call $~lib/rt/pure/__release - local.get $48 + local.get $107 call $~lib/rt/pure/__release - local.get $49 + local.get $97 call $~lib/rt/pure/__release - local.get $50 + local.get $96 call $~lib/rt/pure/__release - local.get $51 + local.get $95 call $~lib/rt/pure/__release - local.get $52 + local.get $94 call $~lib/rt/pure/__release - local.get $53 + local.get $93 call $~lib/rt/pure/__release - local.get $54 + local.get $92 call $~lib/rt/pure/__release - local.get $55 + local.get $91 call $~lib/rt/pure/__release - local.get $56 + local.get $90 call $~lib/rt/pure/__release - local.get $57 + local.get $89 call $~lib/rt/pure/__release - local.get $58 + local.get $88 call $~lib/rt/pure/__release - local.get $59 + local.get $87 call $~lib/rt/pure/__release - local.get $60 + local.get $86 call $~lib/rt/pure/__release - local.get $61 + local.get $85 call $~lib/rt/pure/__release - local.get $62 + local.get $84 call $~lib/rt/pure/__release - local.get $63 + local.get $83 call $~lib/rt/pure/__release - local.get $64 + local.get $82 call $~lib/rt/pure/__release - local.get $65 + local.get $81 call $~lib/rt/pure/__release - local.get $66 + local.get $80 call $~lib/rt/pure/__release - local.get $67 + local.get $79 call $~lib/rt/pure/__release - local.get $68 + local.get $78 call $~lib/rt/pure/__release - local.get $69 + local.get $77 call $~lib/rt/pure/__release - local.get $70 + local.get $76 call $~lib/rt/pure/__release - local.get $71 + local.get $75 call $~lib/rt/pure/__release - local.get $72 + local.get $5 call $~lib/rt/pure/__release - local.get $73 + local.get $4 call $~lib/rt/pure/__release - local.get $74 + local.get $3 call $~lib/rt/pure/__release - local.get $75 + local.get $2 call $~lib/rt/pure/__release - local.get $78 + local.get $70 call $~lib/rt/pure/__release - local.get $79 + local.get $73 call $~lib/rt/pure/__release - local.get $77 + local.get $106 call $~lib/rt/pure/__release - local.get $76 + local.get $105 call $~lib/rt/pure/__release - local.get $5 + local.get $71 call $~lib/rt/pure/__release - local.get $80 + local.get $74 call $~lib/rt/pure/__release - local.get $81 + local.get $72 call $~lib/rt/pure/__release - local.get $82 + local.get $69 call $~lib/rt/pure/__release - local.get $83 + local.get $68 call $~lib/rt/pure/__release - local.get $84 + local.get $67 call $~lib/rt/pure/__release - local.get $85 + local.get $66 call $~lib/rt/pure/__release - local.get $86 + local.get $65 call $~lib/rt/pure/__release - local.get $87 + local.get $64 call $~lib/rt/pure/__release - local.get $88 + local.get $63 call $~lib/rt/pure/__release - local.get $89 + local.get $62 call $~lib/rt/pure/__release - local.get $90 + local.get $61 call $~lib/rt/pure/__release - local.get $91 + local.get $60 call $~lib/rt/pure/__release - local.get $92 + local.get $59 call $~lib/rt/pure/__release - local.get $93 + local.get $58 call $~lib/rt/pure/__release - local.get $94 + local.get $57 call $~lib/rt/pure/__release - local.get $95 + local.get $56 call $~lib/rt/pure/__release - local.get $96 + local.get $55 call $~lib/rt/pure/__release - local.get $97 + local.get $54 call $~lib/rt/pure/__release - local.get $98 + local.get $53 call $~lib/rt/pure/__release - local.get $99 + local.get $52 call $~lib/rt/pure/__release - local.get $100 + local.get $51 call $~lib/rt/pure/__release - local.get $101 + local.get $50 call $~lib/rt/pure/__release - local.get $102 + local.get $49 call $~lib/rt/pure/__release - local.get $103 + local.get $48 call $~lib/rt/pure/__release - local.get $104 + local.get $47 call $~lib/rt/pure/__release - local.get $105 + local.get $46 call $~lib/rt/pure/__release - local.get $106 + local.get $45 call $~lib/rt/pure/__release - local.get $107 + local.get $44 call $~lib/rt/pure/__release - local.get $108 + local.get $43 call $~lib/rt/pure/__release - local.get $109 + local.get $42 call $~lib/rt/pure/__release - local.get $110 + local.get $41 call $~lib/rt/pure/__release - local.get $111 + local.get $40 call $~lib/rt/pure/__release - local.get $112 + local.get $39 call $~lib/rt/pure/__release - local.get $113 + local.get $38 call $~lib/rt/pure/__release - local.get $114 + local.get $37 call $~lib/rt/pure/__release - local.get $115 + local.get $36 call $~lib/rt/pure/__release - local.get $116 + local.get $35 call $~lib/rt/pure/__release - local.get $117 + local.get $34 call $~lib/rt/pure/__release - local.get $118 + local.get $32 call $~lib/rt/pure/__release - local.get $119 + local.get $31 call $~lib/rt/pure/__release - local.get $120 + local.get $33 call $~lib/rt/pure/__release - local.get $121 + local.get $30 call $~lib/rt/pure/__release - local.get $122 + local.get $29 call $~lib/rt/pure/__release - local.get $123 + local.get $28 call $~lib/rt/pure/__release - local.get $124 + local.get $27 call $~lib/rt/pure/__release - local.get $125 + local.get $26 call $~lib/rt/pure/__release - local.get $126 + local.get $25 call $~lib/rt/pure/__release - local.get $127 + local.get $24 call $~lib/rt/pure/__release - local.get $128 + local.get $23 call $~lib/rt/pure/__release - local.get $129 + local.get $22 call $~lib/rt/pure/__release - local.get $130 + local.get $21 call $~lib/rt/pure/__release - local.get $131 + local.get $20 call $~lib/rt/pure/__release - local.get $132 + local.get $19 call $~lib/rt/pure/__release - local.get $133 + local.get $18 call $~lib/rt/pure/__release - local.get $134 + local.get $17 call $~lib/rt/pure/__release - local.get $135 + local.get $16 call $~lib/rt/pure/__release - local.get $136 + local.get $15 call $~lib/rt/pure/__release - local.get $137 + local.get $14 call $~lib/rt/pure/__release - local.get $138 + local.get $13 call $~lib/rt/pure/__release - local.get $139 + local.get $12 call $~lib/rt/pure/__release - local.get $140 + local.get $11 call $~lib/rt/pure/__release - local.get $141 + local.get $10 call $~lib/rt/pure/__release - local.get $142 + local.get $9 call $~lib/rt/pure/__release - local.get $143 + local.get $8 call $~lib/rt/pure/__release - local.get $144 + local.get $7 + call $~lib/rt/pure/__release + local.get $1 call $~lib/rt/pure/__release local.get $0 call $~lib/rt/pure/__release - local.get $3 + local.get $209 call $~lib/rt/pure/__release - local.get $1 + local.get $212 call $~lib/rt/pure/__release - local.get $6 + local.get $208 call $~lib/rt/pure/__release - local.get $7 + local.get $207 call $~lib/rt/pure/__release - local.get $8 + local.get $206 call $~lib/rt/pure/__release - local.get $9 + local.get $205 call $~lib/rt/pure/__release - local.get $10 + local.get $204 call $~lib/rt/pure/__release - local.get $11 + local.get $203 call $~lib/rt/pure/__release - local.get $12 + local.get $202 call $~lib/rt/pure/__release - local.get $13 + local.get $201 call $~lib/rt/pure/__release - local.get $14 + local.get $200 call $~lib/rt/pure/__release - local.get $15 + local.get $199 call $~lib/rt/pure/__release - local.get $16 + local.get $198 call $~lib/rt/pure/__release - local.get $17 + local.get $197 call $~lib/rt/pure/__release - local.get $18 + local.get $196 call $~lib/rt/pure/__release - local.get $19 + local.get $195 call $~lib/rt/pure/__release - local.get $20 + local.get $194 call $~lib/rt/pure/__release - local.get $21 + local.get $193 call $~lib/rt/pure/__release - local.get $22 + local.get $192 call $~lib/rt/pure/__release - local.get $23 + local.get $191 call $~lib/rt/pure/__release - local.get $24 + local.get $190 call $~lib/rt/pure/__release - local.get $25 + local.get $189 call $~lib/rt/pure/__release - local.get $26 + local.get $188 call $~lib/rt/pure/__release - local.get $27 + local.get $187 call $~lib/rt/pure/__release - local.get $28 + local.get $186 call $~lib/rt/pure/__release - local.get $29 + local.get $185 call $~lib/rt/pure/__release - local.get $30 + local.get $184 call $~lib/rt/pure/__release - local.get $31 + local.get $183 call $~lib/rt/pure/__release - local.get $32 + local.get $182 call $~lib/rt/pure/__release - local.get $33 + local.get $181 call $~lib/rt/pure/__release - local.get $34 + local.get $180 call $~lib/rt/pure/__release - local.get $35 + local.get $179 call $~lib/rt/pure/__release - local.get $36 + local.get $178 call $~lib/rt/pure/__release - local.get $37 + local.get $177 call $~lib/rt/pure/__release - local.get $38 + local.get $176 call $~lib/rt/pure/__release - local.get $39 + local.get $175 call $~lib/rt/pure/__release - local.get $40 + local.get $174 call $~lib/rt/pure/__release - local.get $145 + local.get $173 call $~lib/rt/pure/__release - local.get $146 + local.get $172 call $~lib/rt/pure/__release - local.get $147 + local.get $171 call $~lib/rt/pure/__release - local.get $148 + local.get $170 call $~lib/rt/pure/__release - local.get $149 + local.get $169 call $~lib/rt/pure/__release - local.get $150 + local.get $168 call $~lib/rt/pure/__release - local.get $151 + local.get $167 call $~lib/rt/pure/__release - local.get $152 + local.get $166 call $~lib/rt/pure/__release - local.get $153 + local.get $165 call $~lib/rt/pure/__release - local.get $154 + local.get $164 call $~lib/rt/pure/__release - local.get $155 + local.get $163 call $~lib/rt/pure/__release - local.get $156 + local.get $162 call $~lib/rt/pure/__release - local.get $157 + local.get $161 call $~lib/rt/pure/__release - local.get $158 + local.get $160 call $~lib/rt/pure/__release local.get $159 call $~lib/rt/pure/__release - local.get $160 - call $~lib/rt/pure/__release - local.get $161 + local.get $158 call $~lib/rt/pure/__release - local.get $162 + local.get $157 call $~lib/rt/pure/__release - local.get $163 + local.get $156 call $~lib/rt/pure/__release - local.get $164 + local.get $155 call $~lib/rt/pure/__release - local.get $165 + local.get $154 call $~lib/rt/pure/__release - local.get $166 + local.get $153 call $~lib/rt/pure/__release - local.get $167 + local.get $152 call $~lib/rt/pure/__release - local.get $168 + local.get $151 call $~lib/rt/pure/__release - local.get $169 + local.get $150 call $~lib/rt/pure/__release - local.get $170 + local.get $149 call $~lib/rt/pure/__release - local.get $171 + local.get $148 call $~lib/rt/pure/__release - local.get $172 + local.get $147 call $~lib/rt/pure/__release - local.get $173 + local.get $146 call $~lib/rt/pure/__release - local.get $174 + local.get $145 call $~lib/rt/pure/__release - local.get $175 + local.get $144 call $~lib/rt/pure/__release - local.get $176 + local.get $143 call $~lib/rt/pure/__release - local.get $177 + local.get $142 call $~lib/rt/pure/__release - local.get $178 + local.get $141 call $~lib/rt/pure/__release - local.get $179 + local.get $140 call $~lib/rt/pure/__release - local.get $180 + local.get $139 call $~lib/rt/pure/__release - local.get $181 + local.get $138 call $~lib/rt/pure/__release - local.get $182 + local.get $137 call $~lib/rt/pure/__release - local.get $183 + local.get $136 call $~lib/rt/pure/__release - local.get $184 + local.get $135 call $~lib/rt/pure/__release - local.get $185 + local.get $134 call $~lib/rt/pure/__release - local.get $186 + local.get $133 call $~lib/rt/pure/__release - local.get $187 + local.get $132 call $~lib/rt/pure/__release - local.get $188 + local.get $131 call $~lib/rt/pure/__release - local.get $189 + local.get $130 call $~lib/rt/pure/__release - local.get $190 + local.get $129 call $~lib/rt/pure/__release - local.get $191 + local.get $128 call $~lib/rt/pure/__release - local.get $192 + local.get $127 call $~lib/rt/pure/__release - local.get $193 + local.get $126 call $~lib/rt/pure/__release - local.get $194 + local.get $125 call $~lib/rt/pure/__release - local.get $195 + local.get $124 call $~lib/rt/pure/__release - local.get $196 + local.get $123 call $~lib/rt/pure/__release - local.get $197 + local.get $122 call $~lib/rt/pure/__release - local.get $198 + local.get $121 call $~lib/rt/pure/__release - local.get $199 + local.get $120 call $~lib/rt/pure/__release - local.get $200 + local.get $119 call $~lib/rt/pure/__release - local.get $201 + local.get $118 call $~lib/rt/pure/__release - local.get $202 + local.get $117 call $~lib/rt/pure/__release - local.get $203 + local.get $116 call $~lib/rt/pure/__release - local.get $204 + local.get $115 call $~lib/rt/pure/__release - local.get $205 + local.get $114 call $~lib/rt/pure/__release - local.get $206 + local.get $113 call $~lib/rt/pure/__release - local.get $207 + local.get $112 call $~lib/rt/pure/__release - local.get $208 + local.get $111 call $~lib/rt/pure/__release - local.get $209 + local.get $110 call $~lib/rt/pure/__release - local.get $210 + local.get $109 call $~lib/rt/pure/__release - local.get $211 + local.get $108 call $~lib/rt/pure/__release ) - (func $std/string/getString (; 73 ;) (result i32) + (func $std/string/getString (; 72 ;) (result i32) global.get $std/string/str call $~lib/rt/pure/__retain ) - (func $~start (; 74 ;) + (func $~start (; 73 ;) global.get $~started if return @@ -14215,7 +16487,7 @@ end call $start:std/string ) - (func $~lib/rt/pure/decrement (; 75 ;) (param $0 i32) + (func $~lib/rt/pure/decrement (; 74 ;) (param $0 i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -14345,7 +16617,7 @@ i32.store offset=4 end ) - (func $~lib/rt/pure/__visit (; 76 ;) (param $0 i32) + (func $~lib/rt/pure/__visit (; 75 ;) (param $0 i32) local.get $0 i32.const 18008 i32.lt_u diff --git a/tests/compiler/std/string.untouched.wat b/tests/compiler/std/string.untouched.wat index 196e9361c0..b4aeccc37d 100644 --- a/tests/compiler/std/string.untouched.wat +++ b/tests/compiler/std/string.untouched.wat @@ -1,8 +1,8 @@ (module (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) - (type $i32_=>_i32 (func (param i32) (result i32))) (type $i32_i32_=>_none (func (param i32 i32))) + (type $i32_=>_i32 (func (param i32) (result i32))) (type $i32_=>_none (func (param i32))) (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $none_=>_none (func)) @@ -464,7 +464,15 @@ end local.get $0 ) - (func $~lib/rt/pure/__release (; 8 ;) (param $0 i32) + (func $~lib/string/String#get:length (; 8 ;) (param $0 i32) (result i32) + local.get $0 + i32.const 16 + i32.sub + i32.load offset=12 + i32.const 1 + i32.shr_u + ) + (func $~lib/rt/pure/__release (; 9 ;) (param $0 i32) local.get $0 global.get $~lib/heap/__heap_base i32.gt_u @@ -475,14 +483,6 @@ call $~lib/rt/pure/decrement end ) - (func $~lib/string/String#get:length (; 9 ;) (param $0 i32) (result i32) - local.get $0 - i32.const 16 - i32.sub - i32.load offset=12 - i32.const 1 - i32.shr_u - ) (func $~lib/util/string/compareImpl (; 10 ;) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (result i32) (local $5 i32) (local $6 i32) @@ -615,66 +615,35 @@ call $~lib/rt/pure/__retain local.set $1 local.get $0 - local.get $1 - i32.eq - if - i32.const 1 - local.set $2 - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $2 - return - end - local.get $0 - i32.eqz - if (result i32) - i32.const 1 - else - local.get $1 - i32.eqz - end - if - i32.const 0 - local.set $2 - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $2 - return - end - local.get $0 call $~lib/string/String#get:length - local.set $3 - local.get $3 + local.set $2 + local.get $2 local.get $1 call $~lib/string/String#get:length i32.ne if i32.const 0 - local.set $2 + local.set $3 local.get $0 call $~lib/rt/pure/__release local.get $1 call $~lib/rt/pure/__release - local.get $2 + local.get $3 return end local.get $0 i32.const 0 local.get $1 i32.const 0 - local.get $3 + local.get $2 call $~lib/util/string/compareImpl i32.eqz - local.set $2 + local.set $3 local.get $0 call $~lib/rt/pure/__release local.get $1 call $~lib/rt/pure/__release - local.get $2 + local.get $3 ) (func $~lib/string/String#charCodeAt (; 12 ;) (param $0 i32) (param $1 i32) (result i32) local.get $1 @@ -692,26 +661,7 @@ i32.add i32.load16_u ) - (func $~lib/string/String.__not (; 13 ;) (param $0 i32) (result i32) - (local $1 i32) - local.get $0 - call $~lib/rt/pure/__retain - local.set $0 - local.get $0 - i32.eqz - if (result i32) - i32.const 1 - else - local.get $0 - call $~lib/string/String#get:length - i32.eqz - end - local.set $1 - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - ) - (func $~lib/rt/tlsf/removeBlock (; 14 ;) (param $0 i32) (param $1 i32) + (func $~lib/rt/tlsf/removeBlock (; 13 ;) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -921,7 +871,7 @@ end end ) - (func $~lib/rt/tlsf/insertBlock (; 15 ;) (param $0 i32) (param $1 i32) + (func $~lib/rt/tlsf/insertBlock (; 14 ;) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -1271,7 +1221,7 @@ local.get $7 i32.store offset=4 ) - (func $~lib/rt/tlsf/addMemory (; 16 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/rt/tlsf/addMemory (; 15 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -1419,7 +1369,7 @@ call $~lib/rt/tlsf/insertBlock i32.const 1 ) - (func $~lib/rt/tlsf/maybeInitialize (; 17 ;) (result i32) + (func $~lib/rt/tlsf/maybeInitialize (; 16 ;) (result i32) (local $0 i32) (local $1 i32) (local $2 i32) @@ -1573,7 +1523,7 @@ end local.get $0 ) - (func $~lib/rt/tlsf/prepareSize (; 18 ;) (param $0 i32) (result i32) + (func $~lib/rt/tlsf/prepareSize (; 17 ;) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) local.get $0 @@ -1602,7 +1552,7 @@ i32.gt_u select ) - (func $~lib/rt/tlsf/searchBlock (; 19 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/rt/tlsf/searchBlock (; 18 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -1785,7 +1735,7 @@ end local.get $7 ) - (func $~lib/rt/tlsf/growMemory (; 20 ;) (param $0 i32) (param $1 i32) + (func $~lib/rt/tlsf/growMemory (; 19 ;) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -1869,7 +1819,7 @@ call $~lib/rt/tlsf/addMemory drop ) - (func $~lib/rt/tlsf/prepareBlock (; 21 ;) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/rt/tlsf/prepareBlock (; 20 ;) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -1964,7 +1914,7 @@ i32.store end ) - (func $~lib/rt/tlsf/allocateBlock (; 22 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/rt/tlsf/allocateBlock (; 21 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) global.get $~lib/rt/tlsf/collectLock @@ -2075,7 +2025,7 @@ call $~lib/rt/rtrace/onalloc local.get $4 ) - (func $~lib/rt/tlsf/__alloc (; 23 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/rt/tlsf/__alloc (; 22 ;) (param $0 i32) (param $1 i32) (result i32) call $~lib/rt/tlsf/maybeInitialize local.get $0 local.get $1 @@ -2083,7 +2033,7 @@ i32.const 16 i32.add ) - (func $~lib/string/String.fromCharCode (; 24 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/string/String.fromCharCode (; 23 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) local.get $1 @@ -2108,7 +2058,7 @@ local.get $3 call $~lib/rt/pure/__retain ) - (func $~lib/string/String.fromCharCode|trampoline (; 25 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/string/String.fromCharCode|trampoline (; 24 ;) (param $0 i32) (param $1 i32) (result i32) block $1of1 block $0of1 block $outOfRange @@ -2126,11 +2076,11 @@ local.get $1 call $~lib/string/String.fromCharCode ) - (func $~setArgumentsLength (; 26 ;) (param $0 i32) + (func $~setArgumentsLength (; 25 ;) (param $0 i32) local.get $0 global.set $~argumentsLength ) - (func $~lib/string/String.fromCodePoint (; 27 ;) (param $0 i32) (result i32) + (func $~lib/string/String.fromCodePoint (; 26 ;) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -2191,7 +2141,7 @@ local.get $2 call $~lib/rt/pure/__retain ) - (func $~lib/string/String#startsWith (; 28 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/string/String#startsWith (; 27 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -2247,7 +2197,7 @@ call $~lib/rt/pure/__release local.get $4 ) - (func $~lib/string/String#endsWith (; 29 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/string/String#endsWith (; 28 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -2302,7 +2252,7 @@ call $~lib/rt/pure/__release local.get $3 ) - (func $~lib/string/String#indexOf (; 30 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/string/String#indexOf (; 29 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -2392,7 +2342,7 @@ call $~lib/rt/pure/__release local.get $4 ) - (func $~lib/string/String#includes (; 31 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/string/String#includes (; 30 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $1 call $~lib/rt/pure/__retain @@ -2408,7 +2358,7 @@ call $~lib/rt/pure/__release local.get $3 ) - (func $~lib/util/memory/memcpy (; 32 ;) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/util/memory/memcpy (; 31 ;) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -3432,7 +3382,7 @@ i32.store8 end ) - (func $~lib/memory/memory.copy (; 33 ;) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/memory/memory.copy (; 32 ;) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -3652,7 +3602,7 @@ end end ) - (func $~lib/memory/memory.repeat (; 34 ;) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) + (func $~lib/memory/memory.repeat (; 33 ;) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (local $4 i32) (local $5 i32) (local $6 i32) @@ -3683,7 +3633,7 @@ end end ) - (func $~lib/string/String#padStart (; 35 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/string/String#padStart (; 34 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -3783,7 +3733,7 @@ call $~lib/rt/pure/__release local.get $10 ) - (func $~lib/string/String#padEnd (; 36 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/string/String#padEnd (; 35 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -3887,7 +3837,7 @@ call $~lib/rt/pure/__release local.get $10 ) - (func $~lib/string/String#lastIndexOf (; 37 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/string/String#lastIndexOf (; 36 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -3976,7 +3926,7 @@ call $~lib/rt/pure/__release local.get $4 ) - (func $~lib/string/String#localeCompare (; 38 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/string/String#localeCompare (; 37 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -4037,7 +3987,7 @@ call $~lib/rt/pure/__release local.get $2 ) - (func $~lib/util/string/isSpace (; 39 ;) (param $0 i32) (result i32) + (func $~lib/util/string/isSpace (; 38 ;) (param $0 i32) (result i32) (local $1 i32) local.get $0 i32.const 5760 @@ -4118,7 +4068,7 @@ end i32.const 0 ) - (func $~lib/string/String#trimStart (; 40 ;) (param $0 i32) (result i32) + (func $~lib/string/String#trimStart (; 39 ;) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -4184,7 +4134,7 @@ local.get $4 call $~lib/rt/pure/__retain ) - (func $~lib/string/String#trimEnd (; 41 ;) (param $0 i32) (result i32) + (func $~lib/string/String#trimEnd (; 40 ;) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -4245,7 +4195,7 @@ local.get $4 call $~lib/rt/pure/__retain ) - (func $~lib/string/String#trim (; 42 ;) (param $0 i32) (result i32) + (func $~lib/string/String#trim (; 41 ;) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -4346,7 +4296,7 @@ local.get $5 call $~lib/rt/pure/__retain ) - (func $~lib/util/string/strtol (; 43 ;) (param $0 i32) (param $1 i32) (result f64) + (func $~lib/util/string/strtol (; 42 ;) (param $0 i32) (param $1 i32) (result f64) (local $2 i32) (local $3 f64) (local $4 i32) @@ -4637,7 +4587,7 @@ call $~lib/rt/pure/__release local.get $3 ) - (func $~lib/string/parseInt (; 44 ;) (param $0 i32) (param $1 i32) (result f64) + (func $~lib/string/parseInt (; 43 ;) (param $0 i32) (param $1 i32) (result f64) (local $2 f64) local.get $0 call $~lib/rt/pure/__retain @@ -4650,7 +4600,7 @@ call $~lib/rt/pure/__release local.get $2 ) - (func $~lib/util/string/strtol (; 45 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/util/string/strtol (; 44 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -4938,7 +4888,7 @@ call $~lib/rt/pure/__release local.get $3 ) - (func $~lib/number/I32.parseInt (; 46 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/number/I32.parseInt (; 45 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) local.get $0 call $~lib/rt/pure/__retain @@ -4951,7 +4901,7 @@ call $~lib/rt/pure/__release local.get $2 ) - (func $~lib/util/string/strtol (; 47 ;) (param $0 i32) (param $1 i32) (result i64) + (func $~lib/util/string/strtol (; 46 ;) (param $0 i32) (param $1 i32) (result i64) (local $2 i32) (local $3 i64) (local $4 i32) @@ -5242,7 +5192,7 @@ call $~lib/rt/pure/__release local.get $3 ) - (func $~lib/number/I64.parseInt (; 48 ;) (param $0 i32) (param $1 i32) (result i64) + (func $~lib/number/I64.parseInt (; 47 ;) (param $0 i32) (param $1 i32) (result i64) (local $2 i64) local.get $0 call $~lib/rt/pure/__retain @@ -5255,7 +5205,7 @@ call $~lib/rt/pure/__release local.get $2 ) - (func $~lib/math/ipow32 (; 49 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/math/ipow32 (; 48 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -5452,7 +5402,7 @@ end local.get $2 ) - (func $~lib/math/NativeMath.scalbn (; 50 ;) (param $0 f64) (param $1 i32) (result f64) + (func $~lib/math/NativeMath.scalbn (; 49 ;) (param $0 f64) (param $1 i32) (result f64) (local $2 f64) (local $3 i32) (local $4 i32) @@ -5543,7 +5493,7 @@ f64.reinterpret_i64 f64.mul ) - (func $~lib/util/string/strtod (; 51 ;) (param $0 i32) (result f64) + (func $~lib/util/string/strtod (; 50 ;) (param $0 i32) (result f64) (local $1 i32) (local $2 f64) (local $3 i32) @@ -6508,7 +6458,7 @@ call $~lib/rt/pure/__release local.get $2 ) - (func $~lib/string/parseFloat (; 52 ;) (param $0 i32) (result f64) + (func $~lib/string/parseFloat (; 51 ;) (param $0 i32) (result f64) (local $1 f64) local.get $0 call $~lib/rt/pure/__retain @@ -6520,7 +6470,7 @@ call $~lib/rt/pure/__release local.get $1 ) - (func $~lib/string/String#concat (; 53 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/string/String#concat (; 52 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -6576,7 +6526,7 @@ call $~lib/rt/pure/__release local.get $5 ) - (func $~lib/string/String.__concat (; 54 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/string/String.__concat (; 53 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) local.get $0 call $~lib/rt/pure/__retain @@ -6599,26 +6549,7 @@ call $~lib/rt/pure/__release local.get $2 ) - (func $~lib/string/String.__ne (; 55 ;) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $0 - call $~lib/rt/pure/__retain - local.set $0 - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - local.get $1 - call $~lib/string/String.__eq - i32.eqz - local.set $2 - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $2 - ) - (func $~lib/string/String.__gt (; 56 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/string/String.__gt (; 54 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -6706,7 +6637,7 @@ call $~lib/rt/pure/__release local.get $2 ) - (func $~lib/string/String.__lt (; 57 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/string/String.__lt (; 55 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -6794,7 +6725,7 @@ call $~lib/rt/pure/__release local.get $2 ) - (func $~lib/string/String.__gte (; 58 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/string/String.__gte (; 56 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) local.get $0 call $~lib/rt/pure/__retain @@ -6813,7 +6744,7 @@ call $~lib/rt/pure/__release local.get $2 ) - (func $~lib/string/String.__lte (; 59 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/string/String.__lte (; 57 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) local.get $0 call $~lib/rt/pure/__retain @@ -6832,7 +6763,7 @@ call $~lib/rt/pure/__release local.get $2 ) - (func $~lib/string/String#repeat (; 60 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/string/String#repeat (; 58 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) local.get $0 @@ -6855,7 +6786,7 @@ if i32.const 10896 i32.const 528 - i32.const 326 + i32.const 334 i32.const 6 call $~lib/builtins/abort unreachable @@ -6900,7 +6831,7 @@ local.get $3 call $~lib/rt/pure/__retain ) - (func $~lib/string/String#replace (; 61 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/string/String#replace (; 59 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -6934,84 +6865,107 @@ local.get $2 local.get $0 local.get $1 + call $~lib/rt/pure/__retain + local.set $6 local.get $0 - call $~lib/string/String.__eq + call $~lib/rt/pure/__retain + local.set $5 + local.get $6 + i32.eqz + local.get $5 + i32.eqz + i32.or + if (result i32) + local.get $6 + local.get $5 + i32.eq + else + local.get $6 + local.get $5 + call $~lib/string/String.__eq + end + local.set $7 + local.get $5 + call $~lib/rt/pure/__release + local.get $6 + call $~lib/rt/pure/__release + local.get $7 select call $~lib/rt/pure/__retain end - local.set $5 + local.set $6 local.get $1 call $~lib/rt/pure/__release local.get $2 call $~lib/rt/pure/__release - local.get $5 + local.get $6 return end local.get $0 local.get $1 i32.const 0 call $~lib/string/String#indexOf - local.set $6 - local.get $6 + local.set $8 + local.get $8 i32.const -1 i32.xor if local.get $2 call $~lib/string/String#get:length - local.set $5 + local.set $6 local.get $3 local.get $4 i32.sub local.set $3 local.get $3 - local.get $5 + local.get $6 i32.add - local.set $7 - local.get $7 + local.set $5 + local.get $5 if - local.get $7 + local.get $5 i32.const 1 i32.shl i32.const 1 call $~lib/rt/tlsf/__alloc - local.set $8 - local.get $8 + local.set $7 + local.get $7 local.get $0 - local.get $6 + local.get $8 i32.const 1 i32.shl call $~lib/memory/memory.copy + local.get $7 local.get $8 - local.get $6 i32.const 1 i32.shl i32.add local.get $2 - local.get $5 + local.get $6 i32.const 1 i32.shl call $~lib/memory/memory.copy + local.get $7 local.get $8 local.get $6 - local.get $5 i32.add i32.const 1 i32.shl i32.add local.get $0 - local.get $6 + local.get $8 local.get $4 i32.add i32.const 1 i32.shl i32.add local.get $3 - local.get $6 + local.get $8 i32.sub i32.const 1 i32.shl call $~lib/memory/memory.copy - local.get $8 + local.get $7 call $~lib/rt/pure/__retain local.set $9 local.get $1 @@ -7024,14 +6978,14 @@ end local.get $0 call $~lib/rt/pure/__retain - local.set $7 + local.set $5 local.get $1 call $~lib/rt/pure/__release local.get $2 call $~lib/rt/pure/__release - local.get $7 + local.get $5 ) - (func $~lib/rt/tlsf/checkUsedBlock (; 62 ;) (param $0 i32) (result i32) + (func $~lib/rt/tlsf/checkUsedBlock (; 60 ;) (param $0 i32) (result i32) (local $1 i32) local.get $0 i32.const 16 @@ -7077,7 +7031,7 @@ end local.get $1 ) - (func $~lib/rt/tlsf/freeBlock (; 63 ;) (param $0 i32) (param $1 i32) + (func $~lib/rt/tlsf/freeBlock (; 61 ;) (param $0 i32) (param $1 i32) (local $2 i32) local.get $1 i32.load @@ -7093,7 +7047,7 @@ local.get $1 call $~lib/rt/rtrace/onfree ) - (func $~lib/rt/tlsf/reallocateBlock (; 64 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/rt/tlsf/reallocateBlock (; 62 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -7212,7 +7166,7 @@ end local.get $8 ) - (func $~lib/rt/tlsf/__realloc (; 65 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/rt/tlsf/__realloc (; 63 ;) (param $0 i32) (param $1 i32) (result i32) call $~lib/rt/tlsf/maybeInitialize local.get $0 call $~lib/rt/tlsf/checkUsedBlock @@ -7221,7 +7175,7 @@ i32.const 16 i32.add ) - (func $~lib/string/String#replaceAll (; 66 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/string/String#replaceAll (; 64 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -7261,113 +7215,136 @@ local.get $2 local.get $0 local.get $1 + call $~lib/rt/pure/__retain + local.set $6 local.get $0 - call $~lib/string/String.__eq + call $~lib/rt/pure/__retain + local.set $5 + local.get $6 + i32.eqz + local.get $5 + i32.eqz + i32.or + if (result i32) + local.get $6 + local.get $5 + i32.eq + else + local.get $6 + local.get $5 + call $~lib/string/String.__eq + end + local.set $7 + local.get $5 + call $~lib/rt/pure/__release + local.get $6 + call $~lib/rt/pure/__release + local.get $7 select call $~lib/rt/pure/__retain end - local.set $5 + local.set $6 local.get $1 call $~lib/rt/pure/__release local.get $2 call $~lib/rt/pure/__release - local.get $5 + local.get $6 return end local.get $2 call $~lib/string/String#get:length - local.set $6 + local.set $8 local.get $4 i32.eqz if - local.get $6 + local.get $8 i32.eqz if local.get $0 call $~lib/rt/pure/__retain - local.set $5 + local.set $6 local.get $1 call $~lib/rt/pure/__release local.get $2 call $~lib/rt/pure/__release - local.get $5 + local.get $6 return end local.get $3 local.get $3 i32.const 1 i32.add - local.get $6 + local.get $8 i32.mul i32.add i32.const 1 i32.shl i32.const 1 call $~lib/rt/tlsf/__alloc - local.set $5 - local.get $5 - local.get $2 + local.set $6 local.get $6 + local.get $2 + local.get $8 i32.const 1 i32.shl call $~lib/memory/memory.copy - local.get $6 - local.set $7 + local.get $8 + local.set $5 i32.const 0 - local.set $8 + local.set $7 loop $for-loop|0 - local.get $8 + local.get $7 local.get $3 i32.lt_u local.set $9 local.get $9 if + local.get $6 local.get $5 - local.get $7 local.tee $10 i32.const 1 i32.add - local.set $7 + local.set $5 local.get $10 i32.const 1 i32.shl i32.add local.get $0 - local.get $8 + local.get $7 i32.const 1 i32.shl i32.add i32.load16_u i32.store16 + local.get $6 local.get $5 - local.get $7 i32.const 1 i32.shl i32.add local.get $2 - local.get $6 + local.get $8 i32.const 1 i32.shl call $~lib/memory/memory.copy - local.get $7 - local.get $6 - i32.add - local.set $7 + local.get $5 local.get $8 + i32.add + local.set $5 + local.get $7 i32.const 1 i32.add - local.set $8 + local.set $7 br $for-loop|0 end end - local.get $5 + local.get $6 call $~lib/rt/pure/__retain - local.set $8 + local.set $7 local.get $1 call $~lib/rt/pure/__release local.get $2 call $~lib/rt/pure/__release - local.get $8 + local.get $7 return end i32.const 0 @@ -7375,20 +7352,20 @@ i32.const 0 local.set $12 local.get $4 - local.get $6 + local.get $8 i32.eq if local.get $3 i32.const 1 i32.shl - local.set $7 - local.get $7 - i32.const 1 - call $~lib/rt/tlsf/__alloc local.set $5 local.get $5 + i32.const 1 + call $~lib/rt/tlsf/__alloc + local.set $6 + local.get $6 local.get $0 - local.get $7 + local.get $5 call $~lib/memory/memory.copy loop $while-continue|1 local.get $0 @@ -7398,16 +7375,16 @@ local.tee $12 i32.const -1 i32.xor - local.set $8 - local.get $8 + local.set $7 + local.get $7 if - local.get $5 + local.get $6 local.get $12 i32.const 1 i32.shl i32.add local.get $2 - local.get $6 + local.get $8 i32.const 1 i32.shl call $~lib/memory/memory.copy @@ -7418,14 +7395,14 @@ br $while-continue|1 end end - local.get $5 + local.get $6 call $~lib/rt/pure/__retain - local.set $8 + local.set $7 local.get $1 call $~lib/rt/pure/__release local.get $2 call $~lib/rt/pure/__release - local.get $8 + local.get $7 return end i32.const 0 @@ -7442,8 +7419,8 @@ local.tee $12 i32.const -1 i32.xor - local.set $5 - local.get $5 + local.set $6 + local.get $6 if local.get $13 i32.eqz @@ -7462,20 +7439,20 @@ local.get $15 i32.const 1 i32.shl - local.set $7 + local.set $5 local.get $13 - local.get $7 + local.get $5 i32.const 1 i32.shl call $~lib/rt/tlsf/__realloc local.set $13 - local.get $7 + local.get $5 local.set $15 end local.get $12 local.get $11 i32.sub - local.set $7 + local.set $5 local.get $13 local.get $14 i32.const 1 @@ -7486,12 +7463,12 @@ i32.const 1 i32.shl i32.add - local.get $7 + local.get $5 i32.const 1 i32.shl call $~lib/memory/memory.copy local.get $14 - local.get $7 + local.get $5 i32.add local.set $14 local.get $13 @@ -7500,12 +7477,12 @@ i32.shl i32.add local.get $2 - local.get $6 + local.get $8 i32.const 1 i32.shl call $~lib/memory/memory.copy local.get $14 - local.get $6 + local.get $8 i32.add local.set $14 local.get $12 @@ -7524,21 +7501,21 @@ local.get $15 i32.const 1 i32.shl - local.set $5 + local.set $6 local.get $13 - local.get $5 + local.get $6 i32.const 1 i32.shl call $~lib/rt/tlsf/__realloc local.set $13 - local.get $5 + local.get $6 local.set $15 end local.get $3 local.get $11 i32.sub - local.set $5 - local.get $5 + local.set $6 + local.get $6 if local.get $13 local.get $14 @@ -7550,21 +7527,21 @@ i32.const 1 i32.shl i32.add - local.get $5 + local.get $6 i32.const 1 i32.shl call $~lib/memory/memory.copy end - local.get $5 + local.get $6 local.get $14 i32.add - local.set $5 + local.set $6 local.get $15 - local.get $5 + local.get $6 i32.gt_u if local.get $13 - local.get $5 + local.get $6 i32.const 1 i32.shl call $~lib/rt/tlsf/__realloc @@ -7572,24 +7549,24 @@ end local.get $13 call $~lib/rt/pure/__retain - local.set $8 + local.set $7 local.get $1 call $~lib/rt/pure/__release local.get $2 call $~lib/rt/pure/__release - local.get $8 + local.get $7 return end local.get $0 call $~lib/rt/pure/__retain - local.set $5 + local.set $6 local.get $1 call $~lib/rt/pure/__release local.get $2 call $~lib/rt/pure/__release - local.get $5 + local.get $6 ) - (func $~lib/string/String#slice (; 67 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/string/String#slice (; 65 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -7678,7 +7655,7 @@ local.get $6 call $~lib/rt/pure/__retain ) - (func $~lib/string/String#substr (; 68 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/string/String#substr (; 66 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -7752,7 +7729,7 @@ local.get $9 call $~lib/rt/pure/__retain ) - (func $~lib/string/String#substring (; 69 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/string/String#substring (; 67 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -7859,7 +7836,7 @@ local.get $11 call $~lib/rt/pure/__retain ) - (func $~lib/rt/__allocBuffer (; 70 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/rt/__allocBuffer (; 68 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $0 local.get $1 @@ -7874,7 +7851,7 @@ end local.get $3 ) - (func $~lib/rt/__allocArray (; 71 ;) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (func $~lib/rt/__allocArray (; 69 ;) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) (local $4 i32) (local $5 i32) (local $6 i32) @@ -7906,7 +7883,7 @@ i32.store offset=12 local.get $4 ) - (func $~lib/memory/memory.fill (; 72 ;) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/memory/memory.fill (; 70 ;) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -8115,7 +8092,7 @@ end end ) - (func $~lib/array/ensureSize (; 73 ;) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/array/ensureSize (; 71 ;) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -8177,7 +8154,7 @@ i32.store offset=8 end ) - (func $~lib/array/Array<~lib/string/String>#push (; 74 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array<~lib/string/String>#push (; 72 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -8213,7 +8190,7 @@ call $~lib/rt/pure/__release local.get $4 ) - (func $~lib/string/String#split (; 75 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/string/String#split (; 73 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -8518,11 +8495,11 @@ call $~lib/rt/pure/__release local.get $3 ) - (func $~lib/array/Array<~lib/string/String>#get:length (; 76 ;) (param $0 i32) (result i32) + (func $~lib/array/Array<~lib/string/String>#get:length (; 74 ;) (param $0 i32) (result i32) local.get $0 i32.load offset=12 ) - (func $~lib/array/Array<~lib/string/String>#__unchecked_get (; 77 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array<~lib/string/String>#__unchecked_get (; 75 ;) (param $0 i32) (param $1 i32) (result i32) local.get $0 i32.load offset=4 local.get $1 @@ -8532,7 +8509,7 @@ i32.load call $~lib/rt/pure/__retain ) - (func $~lib/array/Array<~lib/string/String>#__get (; 78 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array<~lib/string/String>#__get (; 76 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) local.get $1 local.get $0 @@ -8564,7 +8541,7 @@ end local.get $2 ) - (func $~lib/util/number/decimalCount32 (; 79 ;) (param $0 i32) (result i32) + (func $~lib/util/number/decimalCount32 (; 77 ;) (param $0 i32) (result i32) local.get $0 i32.const 100000 i32.lt_u @@ -8619,7 +8596,7 @@ end unreachable ) - (func $~lib/util/number/utoa32_lut (; 80 ;) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/util/number/utoa32_lut (; 78 ;) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -8759,7 +8736,7 @@ i32.store16 end ) - (func $~lib/util/number/itoa32 (; 81 ;) (param $0 i32) (result i32) + (func $~lib/util/number/itoa32 (; 79 ;) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -8813,7 +8790,7 @@ local.get $3 call $~lib/rt/pure/__retain ) - (func $~lib/util/number/utoa32 (; 82 ;) (param $0 i32) (result i32) + (func $~lib/util/number/utoa32 (; 80 ;) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -8847,7 +8824,7 @@ local.get $2 call $~lib/rt/pure/__retain ) - (func $~lib/util/number/decimalCount64High (; 83 ;) (param $0 i64) (result i32) + (func $~lib/util/number/decimalCount64High (; 81 ;) (param $0 i64) (result i32) local.get $0 i64.const 1000000000000000 i64.lt_u @@ -8906,7 +8883,7 @@ end unreachable ) - (func $~lib/util/number/utoa64_lut (; 84 ;) (param $0 i32) (param $1 i64) (param $2 i32) + (func $~lib/util/number/utoa64_lut (; 82 ;) (param $0 i32) (param $1 i64) (param $2 i32) (local $3 i32) (local $4 i64) (local $5 i32) @@ -9029,7 +9006,7 @@ local.get $2 call $~lib/util/number/utoa32_lut ) - (func $~lib/util/number/utoa64 (; 85 ;) (param $0 i64) (result i32) + (func $~lib/util/number/utoa64 (; 83 ;) (param $0 i64) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -9095,7 +9072,7 @@ local.get $1 call $~lib/rt/pure/__retain ) - (func $~lib/util/number/itoa64 (; 86 ;) (param $0 i64) (result i32) + (func $~lib/util/number/itoa64 (; 84 ;) (param $0 i64) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -9184,7 +9161,7 @@ local.get $2 call $~lib/rt/pure/__retain ) - (func $~lib/util/number/genDigits (; 87 ;) (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 (; 85 ;) (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) @@ -9687,7 +9664,7 @@ end unreachable ) - (func $~lib/util/number/prettify (; 88 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/util/number/prettify (; 86 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -10004,7 +9981,7 @@ end unreachable ) - (func $~lib/util/number/dtoa_core (; 89 ;) (param $0 i32) (param $1 f64) (result i32) + (func $~lib/util/number/dtoa_core (; 87 ;) (param $0 i32) (param $1 f64) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -10430,13 +10407,13 @@ local.get $2 i32.add ) - (func $~lib/rt/tlsf/__free (; 90 ;) (param $0 i32) + (func $~lib/rt/tlsf/__free (; 88 ;) (param $0 i32) call $~lib/rt/tlsf/maybeInitialize local.get $0 call $~lib/rt/tlsf/checkUsedBlock call $~lib/rt/tlsf/freeBlock ) - (func $~lib/util/number/dtoa (; 91 ;) (param $0 f64) (result i32) + (func $~lib/util/number/dtoa (; 89 ;) (param $0 f64) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -10497,7 +10474,7 @@ call $~lib/rt/tlsf/__free local.get $3 ) - (func $start:std/string (; 92 ;) + (func $start:std/string (; 90 ;) (local $0 i32) (local $1 i32) (local $2 i32) @@ -10530,10 +10507,10 @@ (local $29 i32) (local $30 i32) (local $31 i32) - (local $32 f64) + (local $32 i32) (local $33 i32) (local $34 i32) - (local $35 i32) + (local $35 f64) (local $36 i32) (local $37 i32) (local $38 i32) @@ -10710,6 +10687,9 @@ (local $209 i32) (local $210 i32) (local $211 i32) + (local $212 i32) + (local $213 i32) + (local $214 i32) global.get $std/string/str i32.const 32 i32.eq @@ -10723,8 +10703,33 @@ unreachable end i32.const 128 + call $~lib/rt/pure/__retain + local.set $1 i32.const 128 - call $~lib/string/String.__eq + call $~lib/rt/pure/__retain + local.set $0 + local.get $1 + i32.eqz + local.get $0 + i32.eqz + i32.or + if (result i32) + local.get $1 + local.get $0 + i32.eq + else + local.get $1 + local.get $0 + call $~lib/string/String.__eq + end + local.set $2 + local.get $0 + call $~lib/rt/pure/__release + local.get $1 + call $~lib/rt/pure/__release + local.get $2 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -10735,8 +10740,33 @@ unreachable end i32.const 208 + call $~lib/rt/pure/__retain + local.set $0 i32.const 208 - call $~lib/string/String.__eq + call $~lib/rt/pure/__retain + local.set $2 + local.get $0 + i32.eqz + local.get $2 + i32.eqz + i32.or + if (result i32) + local.get $0 + local.get $2 + i32.eq + else + local.get $0 + local.get $2 + call $~lib/string/String.__eq + end + local.set $1 + local.get $2 + call $~lib/rt/pure/__release + local.get $0 + call $~lib/rt/pure/__release + local.get $1 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -10747,8 +10777,33 @@ unreachable end i32.const 240 + call $~lib/rt/pure/__retain + local.set $2 i32.const 240 - call $~lib/string/String.__eq + call $~lib/rt/pure/__retain + local.set $1 + local.get $2 + i32.eqz + local.get $1 + i32.eqz + i32.or + if (result i32) + local.get $2 + local.get $1 + i32.eq + else + local.get $2 + local.get $1 + call $~lib/string/String.__eq + end + local.set $0 + local.get $1 + call $~lib/rt/pure/__release + local.get $2 + call $~lib/rt/pure/__release + local.get $0 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -10786,7 +10841,21 @@ unreachable end i32.const 272 - call $~lib/string/String.__not + call $~lib/rt/pure/__retain + local.set $0 + local.get $0 + i32.eqz + if (result i32) + i32.const 1 + else + local.get $0 + call $~lib/string/String#get:length + i32.eqz + end + local.set $2 + local.get $0 + call $~lib/rt/pure/__release + local.get $2 i32.eqz i32.const 0 i32.eq @@ -10800,7 +10869,21 @@ unreachable end i32.const 288 - call $~lib/string/String.__not + call $~lib/rt/pure/__retain + local.set $1 + local.get $1 + i32.eqz + if (result i32) + i32.const 1 + else + local.get $1 + call $~lib/string/String#get:length + i32.eqz + end + local.set $0 + local.get $1 + call $~lib/rt/pure/__release + local.get $0 i32.eqz i32.const 1 i32.eq @@ -10814,7 +10897,21 @@ unreachable end i32.const 320 - call $~lib/string/String.__not + call $~lib/rt/pure/__retain + local.set $2 + local.get $2 + i32.eqz + if (result i32) + i32.const 1 + else + local.get $2 + call $~lib/string/String#get:length + i32.eqz + end + local.set $1 + local.get $2 + call $~lib/rt/pure/__release + local.get $1 i32.eqz i32.const 1 i32.eq @@ -10832,9 +10929,34 @@ i32.const 0 i32.const 0 call $~lib/string/String.fromCharCode|trampoline - local.tee $0 + local.tee $2 + call $~lib/rt/pure/__retain + local.set $1 i32.const 288 - call $~lib/string/String.__eq + call $~lib/rt/pure/__retain + local.set $0 + local.get $1 + i32.eqz + local.get $0 + i32.eqz + i32.or + if (result i32) + local.get $1 + local.get $0 + i32.eq + else + local.get $1 + local.get $0 + call $~lib/string/String.__eq + end + local.set $3 + local.get $0 + call $~lib/rt/pure/__release + local.get $1 + call $~lib/rt/pure/__release + local.get $3 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -10850,8 +10972,33 @@ i32.const 0 call $~lib/string/String.fromCharCode|trampoline local.tee $1 + call $~lib/rt/pure/__retain + local.set $0 i32.const 464 - call $~lib/string/String.__eq + call $~lib/rt/pure/__retain + local.set $3 + local.get $0 + i32.eqz + local.get $3 + i32.eqz + i32.or + if (result i32) + local.get $0 + local.get $3 + i32.eq + else + local.get $0 + local.get $3 + call $~lib/string/String.__eq + end + local.set $4 + local.get $3 + call $~lib/rt/pure/__release + local.get $0 + call $~lib/rt/pure/__release + local.get $4 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -10866,26 +11013,76 @@ i32.const 65590 i32.const 0 call $~lib/string/String.fromCharCode|trampoline - local.tee $2 + local.tee $0 + call $~lib/rt/pure/__retain + local.set $3 i32.const 464 - call $~lib/string/String.__eq + call $~lib/rt/pure/__retain + local.set $4 + local.get $3 i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 23 - i32.const 0 - call $~lib/builtins/abort - unreachable - end - i32.const 55296 - i32.const 57088 - call $~lib/string/String.fromCharCode - local.tee $3 - i32.const 496 - call $~lib/string/String.__eq + local.get $4 i32.eqz - if + i32.or + if (result i32) + local.get $3 + local.get $4 + i32.eq + else + local.get $3 + local.get $4 + call $~lib/string/String.__eq + end + local.set $5 + local.get $4 + call $~lib/rt/pure/__release + local.get $3 + call $~lib/rt/pure/__release + local.get $5 + i32.const 0 + i32.ne + i32.eqz + if + i32.const 0 + i32.const 80 + i32.const 23 + i32.const 0 + call $~lib/builtins/abort + unreachable + end + i32.const 55296 + i32.const 57088 + call $~lib/string/String.fromCharCode + local.tee $3 + call $~lib/rt/pure/__retain + local.set $4 + i32.const 496 + call $~lib/rt/pure/__retain + local.set $5 + local.get $4 + i32.eqz + local.get $5 + i32.eqz + i32.or + if (result i32) + local.get $4 + local.get $5 + i32.eq + else + local.get $4 + local.get $5 + call $~lib/string/String.__eq + end + local.set $6 + local.get $5 + call $~lib/rt/pure/__release + local.get $4 + call $~lib/rt/pure/__release + local.get $6 + i32.const 0 + i32.ne + i32.eqz + if i32.const 0 i32.const 80 i32.const 24 @@ -10896,8 +11093,33 @@ i32.const 0 call $~lib/string/String.fromCodePoint local.tee $4 + call $~lib/rt/pure/__retain + local.set $5 i32.const 288 - call $~lib/string/String.__eq + call $~lib/rt/pure/__retain + local.set $6 + local.get $5 + i32.eqz + local.get $6 + i32.eqz + i32.or + if (result i32) + local.get $5 + local.get $6 + i32.eq + else + local.get $5 + local.get $6 + call $~lib/string/String.__eq + end + local.set $7 + local.get $6 + call $~lib/rt/pure/__release + local.get $5 + call $~lib/rt/pure/__release + local.get $7 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -10910,8 +11132,33 @@ i32.const 54 call $~lib/string/String.fromCodePoint local.tee $5 + call $~lib/rt/pure/__retain + local.set $6 i32.const 464 - call $~lib/string/String.__eq + call $~lib/rt/pure/__retain + local.set $7 + local.get $6 + i32.eqz + local.get $7 + i32.eqz + i32.or + if (result i32) + local.get $6 + local.get $7 + i32.eq + else + local.get $6 + local.get $7 + call $~lib/string/String.__eq + end + local.set $8 + local.get $7 + call $~lib/rt/pure/__release + local.get $6 + call $~lib/rt/pure/__release + local.get $8 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -10924,8 +11171,33 @@ i32.const 119558 call $~lib/string/String.fromCodePoint local.tee $6 + call $~lib/rt/pure/__retain + local.set $7 i32.const 576 - call $~lib/string/String.__eq + call $~lib/rt/pure/__retain + local.set $8 + local.get $7 + i32.eqz + local.get $8 + i32.eqz + i32.or + if (result i32) + local.get $7 + local.get $8 + i32.eq + else + local.get $7 + local.get $8 + call $~lib/string/String.__eq + end + local.set $9 + local.get $8 + call $~lib/rt/pure/__release + local.get $7 + call $~lib/rt/pure/__release + local.get $9 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -10979,8 +11251,33 @@ i32.const 704 call $~lib/string/String#padStart local.tee $7 + call $~lib/rt/pure/__retain + local.set $8 global.get $std/string/str - call $~lib/string/String.__eq + call $~lib/rt/pure/__retain + local.set $9 + local.get $8 + i32.eqz + local.get $9 + i32.eqz + i32.or + if (result i32) + local.get $8 + local.get $9 + i32.eq + else + local.get $8 + local.get $9 + call $~lib/string/String.__eq + end + local.set $10 + local.get $9 + call $~lib/rt/pure/__release + local.get $8 + call $~lib/rt/pure/__release + local.get $10 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -10995,8 +11292,33 @@ i32.const 704 call $~lib/string/String#padStart local.tee $8 + call $~lib/rt/pure/__retain + local.set $9 global.get $std/string/str - call $~lib/string/String.__eq + call $~lib/rt/pure/__retain + local.set $10 + local.get $9 + i32.eqz + local.get $10 + i32.eqz + i32.or + if (result i32) + local.get $9 + local.get $10 + i32.eq + else + local.get $9 + local.get $10 + call $~lib/string/String.__eq + end + local.set $11 + local.get $10 + call $~lib/rt/pure/__release + local.get $9 + call $~lib/rt/pure/__release + local.get $11 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -11011,8 +11333,33 @@ i32.const 704 call $~lib/string/String#padStart local.tee $9 + call $~lib/rt/pure/__retain + local.set $10 i32.const 736 - call $~lib/string/String.__eq + call $~lib/rt/pure/__retain + local.set $11 + local.get $10 + i32.eqz + local.get $11 + i32.eqz + i32.or + if (result i32) + local.get $10 + local.get $11 + i32.eq + else + local.get $10 + local.get $11 + call $~lib/string/String.__eq + end + local.set $12 + local.get $11 + call $~lib/rt/pure/__release + local.get $10 + call $~lib/rt/pure/__release + local.get $12 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -11027,8 +11374,33 @@ i32.const 272 call $~lib/string/String#padStart local.tee $10 + call $~lib/rt/pure/__retain + local.set $11 i32.const 272 - call $~lib/string/String.__eq + call $~lib/rt/pure/__retain + local.set $12 + local.get $11 + i32.eqz + local.get $12 + i32.eqz + i32.or + if (result i32) + local.get $11 + local.get $12 + i32.eq + else + local.get $11 + local.get $12 + call $~lib/string/String.__eq + end + local.set $13 + local.get $12 + call $~lib/rt/pure/__release + local.get $11 + call $~lib/rt/pure/__release + local.get $13 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -11043,8 +11415,33 @@ i32.const 272 call $~lib/string/String#padStart local.tee $11 + call $~lib/rt/pure/__retain + local.set $12 i32.const 320 - call $~lib/string/String.__eq + call $~lib/rt/pure/__retain + local.set $13 + local.get $12 + i32.eqz + local.get $13 + i32.eqz + i32.or + if (result i32) + local.get $12 + local.get $13 + i32.eq + else + local.get $12 + local.get $13 + call $~lib/string/String.__eq + end + local.set $14 + local.get $13 + call $~lib/rt/pure/__release + local.get $12 + call $~lib/rt/pure/__release + local.get $14 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -11059,8 +11456,33 @@ i32.const 704 call $~lib/string/String#padStart local.tee $12 + call $~lib/rt/pure/__retain + local.set $13 i32.const 800 - call $~lib/string/String.__eq + call $~lib/rt/pure/__retain + local.set $14 + local.get $13 + i32.eqz + local.get $14 + i32.eqz + i32.or + if (result i32) + local.get $13 + local.get $14 + i32.eq + else + local.get $13 + local.get $14 + call $~lib/string/String.__eq + end + local.set $15 + local.get $14 + call $~lib/rt/pure/__release + local.get $13 + call $~lib/rt/pure/__release + local.get $15 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -11075,8 +11497,33 @@ i32.const 832 call $~lib/string/String#padStart local.tee $13 + call $~lib/rt/pure/__retain + local.set $14 i32.const 864 - call $~lib/string/String.__eq + call $~lib/rt/pure/__retain + local.set $15 + local.get $14 + i32.eqz + local.get $15 + i32.eqz + i32.or + if (result i32) + local.get $14 + local.get $15 + i32.eq + else + local.get $14 + local.get $15 + call $~lib/string/String.__eq + end + local.set $16 + local.get $15 + call $~lib/rt/pure/__release + local.get $14 + call $~lib/rt/pure/__release + local.get $16 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -11091,8 +11538,33 @@ i32.const 832 call $~lib/string/String#padStart local.tee $14 + call $~lib/rt/pure/__retain + local.set $15 i32.const 896 - call $~lib/string/String.__eq + call $~lib/rt/pure/__retain + local.set $16 + local.get $15 + i32.eqz + local.get $16 + i32.eqz + i32.or + if (result i32) + local.get $15 + local.get $16 + i32.eq + else + local.get $15 + local.get $16 + call $~lib/string/String.__eq + end + local.set $17 + local.get $16 + call $~lib/rt/pure/__release + local.get $15 + call $~lib/rt/pure/__release + local.get $17 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -11107,8 +11579,33 @@ i32.const 704 call $~lib/string/String#padEnd local.tee $15 + call $~lib/rt/pure/__retain + local.set $16 global.get $std/string/str - call $~lib/string/String.__eq + call $~lib/rt/pure/__retain + local.set $17 + local.get $16 + i32.eqz + local.get $17 + i32.eqz + i32.or + if (result i32) + local.get $16 + local.get $17 + i32.eq + else + local.get $16 + local.get $17 + call $~lib/string/String.__eq + end + local.set $18 + local.get $17 + call $~lib/rt/pure/__release + local.get $16 + call $~lib/rt/pure/__release + local.get $18 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -11123,8 +11620,33 @@ i32.const 704 call $~lib/string/String#padEnd local.tee $16 + call $~lib/rt/pure/__retain + local.set $17 global.get $std/string/str - call $~lib/string/String.__eq + call $~lib/rt/pure/__retain + local.set $18 + local.get $17 + i32.eqz + local.get $18 + i32.eqz + i32.or + if (result i32) + local.get $17 + local.get $18 + i32.eq + else + local.get $17 + local.get $18 + call $~lib/string/String.__eq + end + local.set $19 + local.get $18 + call $~lib/rt/pure/__release + local.get $17 + call $~lib/rt/pure/__release + local.get $19 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -11139,8 +11661,33 @@ i32.const 704 call $~lib/string/String#padEnd local.tee $17 + call $~lib/rt/pure/__retain + local.set $18 i32.const 736 - call $~lib/string/String.__eq + call $~lib/rt/pure/__retain + local.set $19 + local.get $18 + i32.eqz + local.get $19 + i32.eqz + i32.or + if (result i32) + local.get $18 + local.get $19 + i32.eq + else + local.get $18 + local.get $19 + call $~lib/string/String.__eq + end + local.set $20 + local.get $19 + call $~lib/rt/pure/__release + local.get $18 + call $~lib/rt/pure/__release + local.get $20 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -11155,8 +11702,33 @@ i32.const 272 call $~lib/string/String#padEnd local.tee $18 + call $~lib/rt/pure/__retain + local.set $19 i32.const 272 - call $~lib/string/String.__eq + call $~lib/rt/pure/__retain + local.set $20 + local.get $19 + i32.eqz + local.get $20 + i32.eqz + i32.or + if (result i32) + local.get $19 + local.get $20 + i32.eq + else + local.get $19 + local.get $20 + call $~lib/string/String.__eq + end + local.set $21 + local.get $20 + call $~lib/rt/pure/__release + local.get $19 + call $~lib/rt/pure/__release + local.get $21 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -11171,8 +11743,33 @@ i32.const 272 call $~lib/string/String#padEnd local.tee $19 + call $~lib/rt/pure/__retain + local.set $20 i32.const 320 - call $~lib/string/String.__eq + call $~lib/rt/pure/__retain + local.set $21 + local.get $20 + i32.eqz + local.get $21 + i32.eqz + i32.or + if (result i32) + local.get $20 + local.get $21 + i32.eq + else + local.get $20 + local.get $21 + call $~lib/string/String.__eq + end + local.set $22 + local.get $21 + call $~lib/rt/pure/__release + local.get $20 + call $~lib/rt/pure/__release + local.get $22 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -11187,8 +11784,33 @@ i32.const 704 call $~lib/string/String#padEnd local.tee $20 + call $~lib/rt/pure/__retain + local.set $21 i32.const 928 - call $~lib/string/String.__eq + call $~lib/rt/pure/__retain + local.set $22 + local.get $21 + i32.eqz + local.get $22 + i32.eqz + i32.or + if (result i32) + local.get $21 + local.get $22 + i32.eq + else + local.get $21 + local.get $22 + call $~lib/string/String.__eq + end + local.set $23 + local.get $22 + call $~lib/rt/pure/__release + local.get $21 + call $~lib/rt/pure/__release + local.get $23 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -11203,8 +11825,33 @@ i32.const 768 call $~lib/string/String#padEnd local.tee $21 + call $~lib/rt/pure/__retain + local.set $22 i32.const 960 - call $~lib/string/String.__eq + call $~lib/rt/pure/__retain + local.set $23 + local.get $22 + i32.eqz + local.get $23 + i32.eqz + i32.or + if (result i32) + local.get $22 + local.get $23 + i32.eq + else + local.get $22 + local.get $23 + call $~lib/string/String.__eq + end + local.set $24 + local.get $23 + call $~lib/rt/pure/__release + local.get $22 + call $~lib/rt/pure/__release + local.get $24 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -11219,8 +11866,33 @@ i32.const 768 call $~lib/string/String#padEnd local.tee $22 + call $~lib/rt/pure/__retain + local.set $23 i32.const 992 - call $~lib/string/String.__eq + call $~lib/rt/pure/__retain + local.set $24 + local.get $23 + i32.eqz + local.get $24 + i32.eqz + i32.or + if (result i32) + local.get $23 + local.get $24 + i32.eq + else + local.get $23 + local.get $24 + call $~lib/string/String.__eq + end + local.set $25 + local.get $24 + call $~lib/rt/pure/__release + local.get $23 + call $~lib/rt/pure/__release + local.get $25 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -11689,8 +12361,33 @@ i32.const 272 call $~lib/string/String#trimStart local.tee $23 + call $~lib/rt/pure/__retain + local.set $24 i32.const 272 - call $~lib/string/String.__eq + call $~lib/rt/pure/__retain + local.set $25 + local.get $24 + i32.eqz + local.get $25 + i32.eqz + i32.or + if (result i32) + local.get $24 + local.get $25 + i32.eq + else + local.get $24 + local.get $25 + call $~lib/string/String.__eq + end + local.set $26 + local.get $25 + call $~lib/rt/pure/__release + local.get $24 + call $~lib/rt/pure/__release + local.get $26 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -11703,8 +12400,33 @@ i32.const 1280 call $~lib/string/String#trimStart local.tee $24 + call $~lib/rt/pure/__retain + local.set $25 i32.const 1280 - call $~lib/string/String.__eq + call $~lib/rt/pure/__retain + local.set $26 + local.get $25 + i32.eqz + local.get $26 + i32.eqz + i32.or + if (result i32) + local.get $25 + local.get $26 + i32.eq + else + local.get $25 + local.get $26 + call $~lib/string/String.__eq + end + local.set $27 + local.get $26 + call $~lib/rt/pure/__release + local.get $25 + call $~lib/rt/pure/__release + local.get $27 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -11717,8 +12439,33 @@ i32.const 1312 call $~lib/string/String#trimStart local.tee $25 + call $~lib/rt/pure/__retain + local.set $26 i32.const 1360 - call $~lib/string/String.__eq + call $~lib/rt/pure/__retain + local.set $27 + local.get $26 + i32.eqz + local.get $27 + i32.eqz + i32.or + if (result i32) + local.get $26 + local.get $27 + i32.eq + else + local.get $26 + local.get $27 + call $~lib/string/String.__eq + end + local.set $28 + local.get $27 + call $~lib/rt/pure/__release + local.get $26 + call $~lib/rt/pure/__release + local.get $28 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -11731,8 +12478,33 @@ i32.const 272 call $~lib/string/String#trimEnd local.tee $26 + call $~lib/rt/pure/__retain + local.set $27 i32.const 272 - call $~lib/string/String.__eq + call $~lib/rt/pure/__retain + local.set $28 + local.get $27 + i32.eqz + local.get $28 + i32.eqz + i32.or + if (result i32) + local.get $27 + local.get $28 + i32.eq + else + local.get $27 + local.get $28 + call $~lib/string/String.__eq + end + local.set $29 + local.get $28 + call $~lib/rt/pure/__release + local.get $27 + call $~lib/rt/pure/__release + local.get $29 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -11745,8 +12517,33 @@ i32.const 1280 call $~lib/string/String#trimEnd local.tee $27 + call $~lib/rt/pure/__retain + local.set $28 i32.const 1280 - call $~lib/string/String.__eq + call $~lib/rt/pure/__retain + local.set $29 + local.get $28 + i32.eqz + local.get $29 + i32.eqz + i32.or + if (result i32) + local.get $28 + local.get $29 + i32.eq + else + local.get $28 + local.get $29 + call $~lib/string/String.__eq + end + local.set $30 + local.get $29 + call $~lib/rt/pure/__release + local.get $28 + call $~lib/rt/pure/__release + local.get $30 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -11759,8 +12556,33 @@ i32.const 1312 call $~lib/string/String#trimEnd local.tee $28 + call $~lib/rt/pure/__retain + local.set $29 i32.const 1392 - call $~lib/string/String.__eq + call $~lib/rt/pure/__retain + local.set $30 + local.get $29 + i32.eqz + local.get $30 + i32.eqz + i32.or + if (result i32) + local.get $29 + local.get $30 + i32.eq + else + local.get $29 + local.get $30 + call $~lib/string/String.__eq + end + local.set $31 + local.get $30 + call $~lib/rt/pure/__release + local.get $29 + call $~lib/rt/pure/__release + local.get $31 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -11773,8 +12595,33 @@ i32.const 272 call $~lib/string/String#trim local.tee $29 + call $~lib/rt/pure/__retain + local.set $30 i32.const 272 - call $~lib/string/String.__eq + call $~lib/rt/pure/__retain + local.set $31 + local.get $30 + i32.eqz + local.get $31 + i32.eqz + i32.or + if (result i32) + local.get $30 + local.get $31 + i32.eq + else + local.get $30 + local.get $31 + call $~lib/string/String.__eq + end + local.set $32 + local.get $31 + call $~lib/rt/pure/__release + local.get $30 + call $~lib/rt/pure/__release + local.get $32 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -11787,8 +12634,33 @@ i32.const 1280 call $~lib/string/String#trim local.tee $30 + call $~lib/rt/pure/__retain + local.set $31 i32.const 1280 - call $~lib/string/String.__eq + call $~lib/rt/pure/__retain + local.set $32 + local.get $31 + i32.eqz + local.get $32 + i32.eqz + i32.or + if (result i32) + local.get $31 + local.get $32 + i32.eq + else + local.get $31 + local.get $32 + call $~lib/string/String.__eq + end + local.set $33 + local.get $32 + call $~lib/rt/pure/__release + local.get $31 + call $~lib/rt/pure/__release + local.get $33 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -11801,8 +12673,33 @@ i32.const 1312 call $~lib/string/String#trim local.tee $31 + call $~lib/rt/pure/__retain + local.set $32 i32.const 768 - call $~lib/string/String.__eq + call $~lib/rt/pure/__retain + local.set $33 + local.get $32 + i32.eqz + local.get $33 + i32.eqz + i32.or + if (result i32) + local.get $32 + local.get $33 + i32.eq + else + local.get $32 + local.get $33 + call $~lib/string/String.__eq + end + local.set $34 + local.get $33 + call $~lib/rt/pure/__release + local.get $32 + call $~lib/rt/pure/__release + local.get $34 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -12299,8 +13196,8 @@ end i32.const 272 call $~lib/string/parseFloat - local.tee $32 - local.get $32 + local.tee $35 + local.get $35 f64.ne i32.eqz if @@ -13002,8 +13899,8 @@ end i32.const 4576 call $~lib/string/parseFloat - local.tee $32 - local.get $32 + local.tee $35 + local.get $35 f64.ne i32.eqz if @@ -13016,8 +13913,8 @@ end i32.const 4608 call $~lib/string/parseFloat - local.tee $32 - local.get $32 + local.tee $35 + local.get $35 f64.ne i32.eqz if @@ -13030,8 +13927,8 @@ end i32.const 4640 call $~lib/string/parseFloat - local.tee $32 - local.get $32 + local.tee $35 + local.get $35 f64.ne i32.eqz if @@ -13044,8 +13941,8 @@ end i32.const 4672 call $~lib/string/parseFloat - local.tee $32 - local.get $32 + local.tee $35 + local.get $35 f64.ne i32.eqz if @@ -13058,8 +13955,8 @@ end i32.const 4704 call $~lib/string/parseFloat - local.tee $32 - local.get $32 + local.tee $35 + local.get $35 f64.ne i32.eqz if @@ -13072,8 +13969,8 @@ end i32.const 4736 call $~lib/string/parseFloat - local.tee $32 - local.get $32 + local.tee $35 + local.get $35 f64.ne i32.eqz if @@ -13086,8 +13983,8 @@ end i32.const 4768 call $~lib/string/parseFloat - local.tee $32 - local.get $32 + local.tee $35 + local.get $35 f64.ne i32.eqz if @@ -13100,8 +13997,8 @@ end i32.const 4800 call $~lib/string/parseFloat - local.tee $32 - local.get $32 + local.tee $35 + local.get $35 f64.ne i32.eqz if @@ -13114,8 +14011,8 @@ end i32.const 4832 call $~lib/string/parseFloat - local.tee $32 - local.get $32 + local.tee $35 + local.get $35 f64.ne i32.eqz if @@ -13128,8 +14025,8 @@ end i32.const 4864 call $~lib/string/parseFloat - local.tee $32 - local.get $32 + local.tee $35 + local.get $35 f64.ne i32.eqz if @@ -13142,8 +14039,8 @@ end i32.const 4896 call $~lib/string/parseFloat - local.tee $32 - local.get $32 + local.tee $35 + local.get $35 f64.ne i32.eqz if @@ -13156,8 +14053,8 @@ end i32.const 4928 call $~lib/string/parseFloat - local.tee $32 - local.get $32 + local.tee $35 + local.get $35 f64.ne i32.eqz if @@ -13170,8 +14067,8 @@ end i32.const 4960 call $~lib/string/parseFloat - local.tee $32 - local.get $32 + local.tee $35 + local.get $35 f64.ne i32.eqz if @@ -13184,8 +14081,8 @@ end i32.const 4992 call $~lib/string/parseFloat - local.tee $32 - local.get $32 + local.tee $35 + local.get $35 f64.ne i32.eqz if @@ -13198,8 +14095,8 @@ end i32.const 5024 call $~lib/string/parseFloat - local.tee $32 - local.get $32 + local.tee $35 + local.get $35 f64.ne i32.eqz if @@ -13212,8 +14109,8 @@ end i32.const 5056 call $~lib/string/parseFloat - local.tee $32 - local.get $32 + local.tee $35 + local.get $35 f64.ne i32.eqz if @@ -13551,8 +14448,8 @@ end i32.const 6192 call $~lib/string/parseFloat - local.tee $32 - local.get $32 + local.tee $35 + local.get $35 f64.ne i32.eqz if @@ -13565,8 +14462,8 @@ end i32.const 6224 call $~lib/string/parseFloat - local.tee $32 - local.get $32 + local.tee $35 + local.get $35 f64.ne i32.eqz if @@ -13579,8 +14476,8 @@ end i32.const 6256 call $~lib/string/parseFloat - local.tee $32 - local.get $32 + local.tee $35 + local.get $35 f64.ne i32.eqz if @@ -13633,13 +14530,13 @@ i32.const 6864 i32.const 7024 call $~lib/string/String.__concat - local.tee $33 + local.tee $32 i32.const 7184 call $~lib/string/String.__concat - local.tee $34 + local.tee $33 i32.const 7344 call $~lib/string/String.__concat - local.tee $35 + local.tee $34 i32.const 7504 call $~lib/string/String.__concat local.tee $36 @@ -13969,8 +14866,8 @@ end i32.const 10352 call $~lib/string/parseFloat - local.tee $32 - local.get $32 + local.tee $35 + local.get $35 f64.ne i32.eqz if @@ -14001,8 +14898,33 @@ call $~lib/rt/pure/__retain local.set $38 local.get $38 + call $~lib/rt/pure/__retain + local.set $40 i32.const 10448 - call $~lib/string/String.__eq + call $~lib/rt/pure/__retain + local.set $39 + local.get $40 + i32.eqz + local.get $39 + i32.eqz + i32.or + if (result i32) + local.get $40 + local.get $39 + i32.eq + else + local.get $40 + local.get $39 + call $~lib/string/String.__eq + end + local.set $41 + local.get $39 + call $~lib/rt/pure/__release + local.get $40 + call $~lib/rt/pure/__release + local.get $41 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -14013,8 +14935,46 @@ unreachable end local.get $38 + call $~lib/rt/pure/__retain + local.set $39 i32.const 320 - call $~lib/string/String.__ne + call $~lib/rt/pure/__retain + local.set $41 + local.get $39 + call $~lib/rt/pure/__retain + local.set $42 + local.get $41 + call $~lib/rt/pure/__retain + local.set $40 + local.get $42 + i32.eqz + local.get $40 + i32.eqz + i32.or + if (result i32) + local.get $42 + local.get $40 + i32.eq + else + local.get $42 + local.get $40 + call $~lib/string/String.__eq + end + local.set $43 + local.get $40 + call $~lib/rt/pure/__release + local.get $42 + call $~lib/rt/pure/__release + local.get $43 + i32.eqz + local.set $42 + local.get $41 + call $~lib/rt/pure/__release + local.get $39 + call $~lib/rt/pure/__release + local.get $42 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -14029,8 +14989,33 @@ local.get $38 call $~lib/rt/pure/__release i32.const 272 + call $~lib/rt/pure/__retain + local.set $40 i32.const 272 - call $~lib/string/String.__eq + call $~lib/rt/pure/__retain + local.set $43 + local.get $40 + i32.eqz + local.get $43 + i32.eqz + i32.or + if (result i32) + local.get $40 + local.get $43 + i32.eq + else + local.get $40 + local.get $43 + call $~lib/string/String.__eq + end + local.set $38 + local.get $43 + call $~lib/rt/pure/__release + local.get $40 + call $~lib/rt/pure/__release + local.get $38 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -14041,8 +15026,46 @@ unreachable end i32.const 272 + call $~lib/rt/pure/__retain + local.set $41 global.get $std/string/nullStr - call $~lib/string/String.__ne + call $~lib/rt/pure/__retain + local.set $42 + local.get $41 + call $~lib/rt/pure/__retain + local.set $37 + local.get $42 + call $~lib/rt/pure/__retain + local.set $39 + local.get $37 + i32.eqz + local.get $39 + i32.eqz + i32.or + if (result i32) + local.get $37 + local.get $39 + i32.eq + else + local.get $37 + local.get $39 + call $~lib/string/String.__eq + end + local.set $40 + local.get $39 + call $~lib/rt/pure/__release + local.get $37 + call $~lib/rt/pure/__release + local.get $40 + i32.eqz + local.set $37 + local.get $42 + call $~lib/rt/pure/__release + local.get $41 + call $~lib/rt/pure/__release + local.get $37 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -14053,8 +15076,46 @@ unreachable end global.get $std/string/nullStr + call $~lib/rt/pure/__retain + local.set $43 i32.const 272 - call $~lib/string/String.__ne + call $~lib/rt/pure/__retain + local.set $38 + local.get $43 + call $~lib/rt/pure/__retain + local.set $39 + local.get $38 + call $~lib/rt/pure/__retain + local.set $40 + local.get $39 + i32.eqz + local.get $40 + i32.eqz + i32.or + if (result i32) + local.get $39 + local.get $40 + i32.eq + else + local.get $39 + local.get $40 + call $~lib/string/String.__eq + end + local.set $41 + local.get $40 + call $~lib/rt/pure/__release + local.get $39 + call $~lib/rt/pure/__release + local.get $41 + i32.eqz + local.set $39 + local.get $38 + call $~lib/rt/pure/__release + local.get $43 + call $~lib/rt/pure/__release + local.get $39 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -14065,8 +15126,46 @@ unreachable end i32.const 320 + call $~lib/rt/pure/__retain + local.set $42 i32.const 10416 - call $~lib/string/String.__ne + call $~lib/rt/pure/__retain + local.set $37 + local.get $42 + call $~lib/rt/pure/__retain + local.set $40 + local.get $37 + call $~lib/rt/pure/__retain + local.set $41 + local.get $40 + i32.eqz + local.get $41 + i32.eqz + i32.or + if (result i32) + local.get $40 + local.get $41 + i32.eq + else + local.get $40 + local.get $41 + call $~lib/string/String.__eq + end + local.set $43 + local.get $41 + call $~lib/rt/pure/__release + local.get $40 + call $~lib/rt/pure/__release + local.get $43 + i32.eqz + local.set $40 + local.get $37 + call $~lib/rt/pure/__release + local.get $42 + call $~lib/rt/pure/__release + local.get $40 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -14077,8 +15176,33 @@ unreachable end i32.const 320 + call $~lib/rt/pure/__retain + local.set $38 i32.const 320 - call $~lib/string/String.__eq + call $~lib/rt/pure/__retain + local.set $39 + local.get $38 + i32.eqz + local.get $39 + i32.eqz + i32.or + if (result i32) + local.get $38 + local.get $39 + i32.eq + else + local.get $38 + local.get $39 + call $~lib/string/String.__eq + end + local.set $42 + local.get $39 + call $~lib/rt/pure/__release + local.get $38 + call $~lib/rt/pure/__release + local.get $42 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -14089,8 +15213,46 @@ unreachable end i32.const 10480 + call $~lib/rt/pure/__retain + local.set $41 i32.const 10512 - call $~lib/string/String.__ne + call $~lib/rt/pure/__retain + local.set $43 + local.get $41 + call $~lib/rt/pure/__retain + local.set $37 + local.get $43 + call $~lib/rt/pure/__retain + local.set $40 + local.get $37 + i32.eqz + local.get $40 + i32.eqz + i32.or + if (result i32) + local.get $37 + local.get $40 + i32.eq + else + local.get $37 + local.get $40 + call $~lib/string/String.__eq + end + local.set $38 + local.get $40 + call $~lib/rt/pure/__release + local.get $37 + call $~lib/rt/pure/__release + local.get $38 + i32.eqz + local.set $37 + local.get $43 + call $~lib/rt/pure/__release + local.get $41 + call $~lib/rt/pure/__release + local.get $37 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -14101,8 +15263,33 @@ unreachable end i32.const 10480 + call $~lib/rt/pure/__retain + local.set $39 i32.const 10480 - call $~lib/string/String.__eq + call $~lib/rt/pure/__retain + local.set $42 + local.get $39 + i32.eqz + local.get $42 + i32.eqz + i32.or + if (result i32) + local.get $39 + local.get $42 + i32.eq + else + local.get $39 + local.get $42 + call $~lib/string/String.__eq + end + local.set $41 + local.get $42 + call $~lib/rt/pure/__release + local.get $39 + call $~lib/rt/pure/__release + local.get $41 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -14113,8 +15300,46 @@ unreachable end i32.const 10544 + call $~lib/rt/pure/__retain + local.set $40 i32.const 10576 - call $~lib/string/String.__ne + call $~lib/rt/pure/__retain + local.set $38 + local.get $40 + call $~lib/rt/pure/__retain + local.set $43 + local.get $38 + call $~lib/rt/pure/__retain + local.set $37 + local.get $43 + i32.eqz + local.get $37 + i32.eqz + i32.or + if (result i32) + local.get $43 + local.get $37 + i32.eq + else + local.get $43 + local.get $37 + call $~lib/string/String.__eq + end + local.set $39 + local.get $37 + call $~lib/rt/pure/__release + local.get $43 + call $~lib/rt/pure/__release + local.get $39 + i32.eqz + local.set $43 + local.get $38 + call $~lib/rt/pure/__release + local.get $40 + call $~lib/rt/pure/__release + local.get $43 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -14125,8 +15350,46 @@ unreachable end i32.const 10608 + call $~lib/rt/pure/__retain + local.set $42 i32.const 10640 - call $~lib/string/String.__ne + call $~lib/rt/pure/__retain + local.set $41 + local.get $42 + call $~lib/rt/pure/__retain + local.set $37 + local.get $41 + call $~lib/rt/pure/__retain + local.set $39 + local.get $37 + i32.eqz + local.get $39 + i32.eqz + i32.or + if (result i32) + local.get $37 + local.get $39 + i32.eq + else + local.get $37 + local.get $39 + call $~lib/string/String.__eq + end + local.set $40 + local.get $39 + call $~lib/rt/pure/__release + local.get $37 + call $~lib/rt/pure/__release + local.get $40 + i32.eqz + local.set $37 + local.get $41 + call $~lib/rt/pure/__release + local.get $42 + call $~lib/rt/pure/__release + local.get $37 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -14137,8 +15400,33 @@ unreachable end i32.const 10672 + call $~lib/rt/pure/__retain + local.set $38 i32.const 10672 - call $~lib/string/String.__eq + call $~lib/rt/pure/__retain + local.set $43 + local.get $38 + i32.eqz + local.get $43 + i32.eqz + i32.or + if (result i32) + local.get $38 + local.get $43 + i32.eq + else + local.get $38 + local.get $43 + call $~lib/string/String.__eq + end + local.set $42 + local.get $43 + call $~lib/rt/pure/__release + local.get $38 + call $~lib/rt/pure/__release + local.get $42 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -14149,8 +15437,46 @@ unreachable end i32.const 10672 + call $~lib/rt/pure/__retain + local.set $39 i32.const 10704 - call $~lib/string/String.__ne + call $~lib/rt/pure/__retain + local.set $40 + local.get $39 + call $~lib/rt/pure/__retain + local.set $41 + local.get $40 + call $~lib/rt/pure/__retain + local.set $37 + local.get $41 + i32.eqz + local.get $37 + i32.eqz + i32.or + if (result i32) + local.get $41 + local.get $37 + i32.eq + else + local.get $41 + local.get $37 + call $~lib/string/String.__eq + end + local.set $38 + local.get $37 + call $~lib/rt/pure/__release + local.get $41 + call $~lib/rt/pure/__release + local.get $38 + i32.eqz + local.set $41 + local.get $40 + call $~lib/rt/pure/__release + local.get $39 + call $~lib/rt/pure/__release + local.get $41 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -14161,8 +15487,46 @@ unreachable end i32.const 10736 + call $~lib/rt/pure/__retain + local.set $43 i32.const 10784 - call $~lib/string/String.__ne + call $~lib/rt/pure/__retain + local.set $42 + local.get $43 + call $~lib/rt/pure/__retain + local.set $37 + local.get $42 + call $~lib/rt/pure/__retain + local.set $38 + local.get $37 + i32.eqz + local.get $38 + i32.eqz + i32.or + if (result i32) + local.get $37 + local.get $38 + i32.eq + else + local.get $37 + local.get $38 + call $~lib/string/String.__eq + end + local.set $39 + local.get $38 + call $~lib/rt/pure/__release + local.get $37 + call $~lib/rt/pure/__release + local.get $39 + i32.eqz + local.set $37 + local.get $42 + call $~lib/rt/pure/__release + local.get $43 + call $~lib/rt/pure/__release + local.get $37 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -14385,19 +15749,19 @@ end i32.const 65377 call $~lib/string/String.fromCodePoint - local.set $38 + local.set $43 i32.const 55296 call $~lib/string/String.fromCodePoint - local.tee $37 + local.tee $42 i32.const 56322 call $~lib/string/String.fromCodePoint - local.tee $39 + local.tee $37 call $~lib/string/String.__concat - local.tee $40 + local.tee $38 call $~lib/rt/pure/__retain - local.set $41 - local.get $38 - local.get $41 + local.set $39 + local.get $43 + local.get $39 call $~lib/string/String.__gt i32.eqz if @@ -14408,15 +15772,15 @@ call $~lib/builtins/abort unreachable end - local.get $38 + local.get $43 call $~lib/rt/pure/__release - local.get $37 + local.get $42 call $~lib/rt/pure/__release - local.get $39 + local.get $37 call $~lib/rt/pure/__release - local.get $40 + local.get $38 call $~lib/rt/pure/__release - local.get $41 + local.get $39 call $~lib/rt/pure/__release i32.const 832 call $~lib/string/String#get:length @@ -14434,9 +15798,34 @@ i32.const 272 i32.const 100 call $~lib/string/String#repeat - local.tee $41 + local.tee $39 + call $~lib/rt/pure/__retain + local.set $40 i32.const 272 - call $~lib/string/String.__eq + call $~lib/rt/pure/__retain + local.set $41 + local.get $40 + i32.eqz + local.get $41 + i32.eqz + i32.or + if (result i32) + local.get $40 + local.get $41 + i32.eq + else + local.get $40 + local.get $41 + call $~lib/string/String.__eq + end + local.set $38 + local.get $41 + call $~lib/rt/pure/__release + local.get $40 + call $~lib/rt/pure/__release + local.get $38 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -14450,8 +15839,33 @@ i32.const 0 call $~lib/string/String#repeat local.tee $40 + call $~lib/rt/pure/__retain + local.set $42 i32.const 272 - call $~lib/string/String.__eq + call $~lib/rt/pure/__retain + local.set $43 + local.get $42 + i32.eqz + local.get $43 + i32.eqz + i32.or + if (result i32) + local.get $42 + local.get $43 + i32.eq + else + local.get $42 + local.get $43 + call $~lib/string/String.__eq + end + local.set $41 + local.get $43 + call $~lib/rt/pure/__release + local.get $42 + call $~lib/rt/pure/__release + local.get $41 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -14464,9 +15878,34 @@ i32.const 320 i32.const 1 call $~lib/string/String#repeat - local.tee $39 + local.tee $42 + call $~lib/rt/pure/__retain + local.set $38 i32.const 320 - call $~lib/string/String.__eq + call $~lib/rt/pure/__retain + local.set $37 + local.get $38 + i32.eqz + local.get $37 + i32.eqz + i32.or + if (result i32) + local.get $38 + local.get $37 + i32.eq + else + local.get $38 + local.get $37 + call $~lib/string/String.__eq + end + local.set $43 + local.get $37 + call $~lib/rt/pure/__release + local.get $38 + call $~lib/rt/pure/__release + local.get $43 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -14479,9 +15918,34 @@ i32.const 320 i32.const 2 call $~lib/string/String#repeat - local.tee $37 + local.tee $38 + call $~lib/rt/pure/__retain + local.set $43 i32.const 10864 - call $~lib/string/String.__eq + call $~lib/rt/pure/__retain + local.set $41 + local.get $43 + i32.eqz + local.get $41 + i32.eqz + i32.or + if (result i32) + local.get $43 + local.get $41 + i32.eq + else + local.get $43 + local.get $41 + call $~lib/string/String.__eq + end + local.set $37 + local.get $41 + call $~lib/rt/pure/__release + local.get $43 + call $~lib/rt/pure/__release + local.get $37 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -14494,9 +15958,34 @@ i32.const 320 i32.const 3 call $~lib/string/String#repeat - local.tee $38 + local.tee $43 + call $~lib/rt/pure/__retain + local.set $41 i32.const 10944 - call $~lib/string/String.__eq + call $~lib/rt/pure/__retain + local.set $37 + local.get $41 + i32.eqz + local.get $37 + i32.eqz + i32.or + if (result i32) + local.get $41 + local.get $37 + i32.eq + else + local.get $41 + local.get $37 + call $~lib/string/String.__eq + end + local.set $44 + local.get $37 + call $~lib/rt/pure/__release + local.get $41 + call $~lib/rt/pure/__release + local.get $44 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -14509,9 +15998,34 @@ i32.const 10448 i32.const 4 call $~lib/string/String#repeat - local.tee $42 + local.tee $41 + call $~lib/rt/pure/__retain + local.set $37 i32.const 10976 - call $~lib/string/String.__eq + call $~lib/rt/pure/__retain + local.set $44 + local.get $37 + i32.eqz + local.get $44 + i32.eqz + i32.or + if (result i32) + local.get $37 + local.get $44 + i32.eq + else + local.get $37 + local.get $44 + call $~lib/string/String.__eq + end + local.set $45 + local.get $44 + call $~lib/rt/pure/__release + local.get $37 + call $~lib/rt/pure/__release + local.get $45 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -14524,9 +16038,34 @@ i32.const 320 i32.const 5 call $~lib/string/String#repeat - local.tee $43 + local.tee $37 + call $~lib/rt/pure/__retain + local.set $44 i32.const 11008 - call $~lib/string/String.__eq + call $~lib/rt/pure/__retain + local.set $45 + local.get $44 + i32.eqz + local.get $45 + i32.eqz + i32.or + if (result i32) + local.get $44 + local.get $45 + i32.eq + else + local.get $44 + local.get $45 + call $~lib/string/String.__eq + end + local.set $46 + local.get $45 + call $~lib/rt/pure/__release + local.get $44 + call $~lib/rt/pure/__release + local.get $46 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -14540,8 +16079,33 @@ i32.const 6 call $~lib/string/String#repeat local.tee $44 + call $~lib/rt/pure/__retain + local.set $45 i32.const 11040 - call $~lib/string/String.__eq + call $~lib/rt/pure/__retain + local.set $46 + local.get $45 + i32.eqz + local.get $46 + i32.eqz + i32.or + if (result i32) + local.get $45 + local.get $46 + i32.eq + else + local.get $45 + local.get $46 + call $~lib/string/String.__eq + end + local.set $47 + local.get $46 + call $~lib/rt/pure/__release + local.get $45 + call $~lib/rt/pure/__release + local.get $47 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -14555,8 +16119,33 @@ i32.const 7 call $~lib/string/String#repeat local.tee $45 + call $~lib/rt/pure/__retain + local.set $46 i32.const 11072 - call $~lib/string/String.__eq + call $~lib/rt/pure/__retain + local.set $47 + local.get $46 + i32.eqz + local.get $47 + i32.eqz + i32.or + if (result i32) + local.get $46 + local.get $47 + i32.eq + else + local.get $46 + local.get $47 + call $~lib/string/String.__eq + end + local.set $48 + local.get $47 + call $~lib/rt/pure/__release + local.get $46 + call $~lib/rt/pure/__release + local.get $48 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -14571,8 +16160,33 @@ i32.const 272 call $~lib/string/String#replace local.tee $46 + call $~lib/rt/pure/__retain + local.set $47 i32.const 272 - call $~lib/string/String.__eq + call $~lib/rt/pure/__retain + local.set $48 + local.get $47 + i32.eqz + local.get $48 + i32.eqz + i32.or + if (result i32) + local.get $47 + local.get $48 + i32.eq + else + local.get $47 + local.get $48 + call $~lib/string/String.__eq + end + local.set $49 + local.get $48 + call $~lib/rt/pure/__release + local.get $47 + call $~lib/rt/pure/__release + local.get $49 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -14587,8 +16201,33 @@ i32.const 4576 call $~lib/string/String#replace local.tee $47 + call $~lib/rt/pure/__retain + local.set $48 i32.const 4576 - call $~lib/string/String.__eq + call $~lib/rt/pure/__retain + local.set $49 + local.get $48 + i32.eqz + local.get $49 + i32.eqz + i32.or + if (result i32) + local.get $48 + local.get $49 + i32.eq + else + local.get $48 + local.get $49 + call $~lib/string/String.__eq + end + local.set $50 + local.get $49 + call $~lib/rt/pure/__release + local.get $48 + call $~lib/rt/pure/__release + local.get $50 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -14603,8 +16242,33 @@ i32.const 272 call $~lib/string/String#replace local.tee $48 + call $~lib/rt/pure/__retain + local.set $49 i32.const 272 - call $~lib/string/String.__eq + call $~lib/rt/pure/__retain + local.set $50 + local.get $49 + i32.eqz + local.get $50 + i32.eqz + i32.or + if (result i32) + local.get $49 + local.get $50 + i32.eq + else + local.get $49 + local.get $50 + call $~lib/string/String.__eq + end + local.set $51 + local.get $50 + call $~lib/rt/pure/__release + local.get $49 + call $~lib/rt/pure/__release + local.get $51 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -14619,8 +16283,33 @@ i32.const 272 call $~lib/string/String#replace local.tee $49 + call $~lib/rt/pure/__retain + local.set $50 i32.const 4576 - call $~lib/string/String.__eq + call $~lib/rt/pure/__retain + local.set $51 + local.get $50 + i32.eqz + local.get $51 + i32.eqz + i32.or + if (result i32) + local.get $50 + local.get $51 + i32.eq + else + local.get $50 + local.get $51 + call $~lib/string/String.__eq + end + local.set $52 + local.get $51 + call $~lib/rt/pure/__release + local.get $50 + call $~lib/rt/pure/__release + local.get $52 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -14635,8 +16324,33 @@ i32.const 4576 call $~lib/string/String#replace local.tee $50 + call $~lib/rt/pure/__retain + local.set $51 i32.const 768 - call $~lib/string/String.__eq + call $~lib/rt/pure/__retain + local.set $52 + local.get $51 + i32.eqz + local.get $52 + i32.eqz + i32.or + if (result i32) + local.get $51 + local.get $52 + i32.eq + else + local.get $51 + local.get $52 + call $~lib/string/String.__eq + end + local.set $53 + local.get $52 + call $~lib/rt/pure/__release + local.get $51 + call $~lib/rt/pure/__release + local.get $53 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -14651,8 +16365,33 @@ i32.const 4576 call $~lib/string/String#replace local.tee $51 + call $~lib/rt/pure/__retain + local.set $52 i32.const 4576 - call $~lib/string/String.__eq + call $~lib/rt/pure/__retain + local.set $53 + local.get $52 + i32.eqz + local.get $53 + i32.eqz + i32.or + if (result i32) + local.get $52 + local.get $53 + i32.eq + else + local.get $52 + local.get $53 + call $~lib/string/String.__eq + end + local.set $54 + local.get $53 + call $~lib/rt/pure/__release + local.get $52 + call $~lib/rt/pure/__release + local.get $54 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -14667,8 +16406,33 @@ i32.const 4576 call $~lib/string/String#replace local.tee $52 + call $~lib/rt/pure/__retain + local.set $53 i32.const 768 - call $~lib/string/String.__eq + call $~lib/rt/pure/__retain + local.set $54 + local.get $53 + i32.eqz + local.get $54 + i32.eqz + i32.or + if (result i32) + local.get $53 + local.get $54 + i32.eq + else + local.get $53 + local.get $54 + call $~lib/string/String.__eq + end + local.set $55 + local.get $54 + call $~lib/rt/pure/__release + local.get $53 + call $~lib/rt/pure/__release + local.get $55 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -14683,8 +16447,33 @@ i32.const 10448 call $~lib/string/String#replace local.tee $53 + call $~lib/rt/pure/__retain + local.set $54 i32.const 768 - call $~lib/string/String.__eq + call $~lib/rt/pure/__retain + local.set $55 + local.get $54 + i32.eqz + local.get $55 + i32.eqz + i32.or + if (result i32) + local.get $54 + local.get $55 + i32.eq + else + local.get $54 + local.get $55 + call $~lib/string/String.__eq + end + local.set $56 + local.get $55 + call $~lib/rt/pure/__release + local.get $54 + call $~lib/rt/pure/__release + local.get $56 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -14699,8 +16488,33 @@ i32.const 4576 call $~lib/string/String#replace local.tee $54 + call $~lib/rt/pure/__retain + local.set $55 i32.const 11136 - call $~lib/string/String.__eq + call $~lib/rt/pure/__retain + local.set $56 + local.get $55 + i32.eqz + local.get $56 + i32.eqz + i32.or + if (result i32) + local.get $55 + local.get $56 + i32.eq + else + local.get $55 + local.get $56 + call $~lib/string/String.__eq + end + local.set $57 + local.get $56 + call $~lib/rt/pure/__release + local.get $55 + call $~lib/rt/pure/__release + local.get $57 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -14715,8 +16529,33 @@ i32.const 4576 call $~lib/string/String#replace local.tee $55 + call $~lib/rt/pure/__retain + local.set $56 i32.const 11168 - call $~lib/string/String.__eq + call $~lib/rt/pure/__retain + local.set $57 + local.get $56 + i32.eqz + local.get $57 + i32.eqz + i32.or + if (result i32) + local.get $56 + local.get $57 + i32.eq + else + local.get $56 + local.get $57 + call $~lib/string/String.__eq + end + local.set $58 + local.get $57 + call $~lib/rt/pure/__release + local.get $56 + call $~lib/rt/pure/__release + local.get $58 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -14731,8 +16570,33 @@ i32.const 4576 call $~lib/string/String#replace local.tee $56 + call $~lib/rt/pure/__retain + local.set $57 i32.const 11168 - call $~lib/string/String.__eq + call $~lib/rt/pure/__retain + local.set $58 + local.get $57 + i32.eqz + local.get $58 + i32.eqz + i32.or + if (result i32) + local.get $57 + local.get $58 + i32.eq + else + local.get $57 + local.get $58 + call $~lib/string/String.__eq + end + local.set $59 + local.get $58 + call $~lib/rt/pure/__release + local.get $57 + call $~lib/rt/pure/__release + local.get $59 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -14747,8 +16611,33 @@ i32.const 11296 call $~lib/string/String#replace local.tee $57 + call $~lib/rt/pure/__retain + local.set $58 i32.const 11328 - call $~lib/string/String.__eq + call $~lib/rt/pure/__retain + local.set $59 + local.get $58 + i32.eqz + local.get $59 + i32.eqz + i32.or + if (result i32) + local.get $58 + local.get $59 + i32.eq + else + local.get $58 + local.get $59 + call $~lib/string/String.__eq + end + local.set $60 + local.get $59 + call $~lib/rt/pure/__release + local.get $58 + call $~lib/rt/pure/__release + local.get $60 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -14763,8 +16652,33 @@ i32.const 272 call $~lib/string/String#replace local.tee $58 + call $~lib/rt/pure/__retain + local.set $59 i32.const 10448 - call $~lib/string/String.__eq + call $~lib/rt/pure/__retain + local.set $60 + local.get $59 + i32.eqz + local.get $60 + i32.eqz + i32.or + if (result i32) + local.get $59 + local.get $60 + i32.eq + else + local.get $59 + local.get $60 + call $~lib/string/String.__eq + end + local.set $61 + local.get $60 + call $~lib/rt/pure/__release + local.get $59 + call $~lib/rt/pure/__release + local.get $61 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -14779,8 +16693,33 @@ i32.const 768 call $~lib/string/String#replaceAll local.tee $59 + call $~lib/rt/pure/__retain + local.set $60 i32.const 768 - call $~lib/string/String.__eq + call $~lib/rt/pure/__retain + local.set $61 + local.get $60 + i32.eqz + local.get $61 + i32.eqz + i32.or + if (result i32) + local.get $60 + local.get $61 + i32.eq + else + local.get $60 + local.get $61 + call $~lib/string/String.__eq + end + local.set $62 + local.get $61 + call $~lib/rt/pure/__release + local.get $60 + call $~lib/rt/pure/__release + local.get $62 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -14795,8 +16734,33 @@ i32.const 4576 call $~lib/string/String#replaceAll local.tee $60 + call $~lib/rt/pure/__retain + local.set $61 i32.const 768 - call $~lib/string/String.__eq + call $~lib/rt/pure/__retain + local.set $62 + local.get $61 + i32.eqz + local.get $62 + i32.eqz + i32.or + if (result i32) + local.get $61 + local.get $62 + i32.eq + else + local.get $61 + local.get $62 + call $~lib/string/String.__eq + end + local.set $63 + local.get $62 + call $~lib/rt/pure/__release + local.get $61 + call $~lib/rt/pure/__release + local.get $63 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -14811,8 +16775,33 @@ i32.const 4576 call $~lib/string/String#replaceAll local.tee $61 + call $~lib/rt/pure/__retain + local.set $62 i32.const 11296 - call $~lib/string/String.__eq + call $~lib/rt/pure/__retain + local.set $63 + local.get $62 + i32.eqz + local.get $63 + i32.eqz + i32.or + if (result i32) + local.get $62 + local.get $63 + i32.eq + else + local.get $62 + local.get $63 + call $~lib/string/String.__eq + end + local.set $64 + local.get $63 + call $~lib/rt/pure/__release + local.get $62 + call $~lib/rt/pure/__release + local.get $64 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -14827,8 +16816,33 @@ i32.const 4576 call $~lib/string/String#replaceAll local.tee $62 + call $~lib/rt/pure/__retain + local.set $63 i32.const 11408 - call $~lib/string/String.__eq + call $~lib/rt/pure/__retain + local.set $64 + local.get $63 + i32.eqz + local.get $64 + i32.eqz + i32.or + if (result i32) + local.get $63 + local.get $64 + i32.eq + else + local.get $63 + local.get $64 + call $~lib/string/String.__eq + end + local.set $65 + local.get $64 + call $~lib/rt/pure/__release + local.get $63 + call $~lib/rt/pure/__release + local.get $65 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -14843,8 +16857,33 @@ i32.const 10448 call $~lib/string/String#replaceAll local.tee $63 + call $~lib/rt/pure/__retain + local.set $64 i32.const 960 - call $~lib/string/String.__eq + call $~lib/rt/pure/__retain + local.set $65 + local.get $64 + i32.eqz + local.get $65 + i32.eqz + i32.or + if (result i32) + local.get $64 + local.get $65 + i32.eq + else + local.get $64 + local.get $65 + call $~lib/string/String.__eq + end + local.set $66 + local.get $65 + call $~lib/rt/pure/__release + local.get $64 + call $~lib/rt/pure/__release + local.get $66 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -14859,8 +16898,33 @@ i32.const 11408 call $~lib/string/String#replaceAll local.tee $64 + call $~lib/rt/pure/__retain + local.set $65 i32.const 11472 - call $~lib/string/String.__eq + call $~lib/rt/pure/__retain + local.set $66 + local.get $65 + i32.eqz + local.get $66 + i32.eqz + i32.or + if (result i32) + local.get $65 + local.get $66 + i32.eq + else + local.get $65 + local.get $66 + call $~lib/string/String.__eq + end + local.set $67 + local.get $66 + call $~lib/rt/pure/__release + local.get $65 + call $~lib/rt/pure/__release + local.get $67 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -14875,8 +16939,33 @@ i32.const 11296 call $~lib/string/String#replaceAll local.tee $65 + call $~lib/rt/pure/__retain + local.set $66 i32.const 11520 - call $~lib/string/String.__eq + call $~lib/rt/pure/__retain + local.set $67 + local.get $66 + i32.eqz + local.get $67 + i32.eqz + i32.or + if (result i32) + local.get $66 + local.get $67 + i32.eq + else + local.get $66 + local.get $67 + call $~lib/string/String.__eq + end + local.set $68 + local.get $67 + call $~lib/rt/pure/__release + local.get $66 + call $~lib/rt/pure/__release + local.get $68 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -14891,8 +16980,33 @@ i32.const 11296 call $~lib/string/String#replaceAll local.tee $66 + call $~lib/rt/pure/__retain + local.set $67 i32.const 11616 - call $~lib/string/String.__eq + call $~lib/rt/pure/__retain + local.set $68 + local.get $67 + i32.eqz + local.get $68 + i32.eqz + i32.or + if (result i32) + local.get $67 + local.get $68 + i32.eq + else + local.get $67 + local.get $68 + call $~lib/string/String.__eq + end + local.set $69 + local.get $68 + call $~lib/rt/pure/__release + local.get $67 + call $~lib/rt/pure/__release + local.get $69 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -14907,8 +17021,33 @@ i32.const 4576 call $~lib/string/String#replaceAll local.tee $67 + call $~lib/rt/pure/__retain + local.set $68 i32.const 768 - call $~lib/string/String.__eq + call $~lib/rt/pure/__retain + local.set $69 + local.get $68 + i32.eqz + local.get $69 + i32.eqz + i32.or + if (result i32) + local.get $68 + local.get $69 + i32.eq + else + local.get $68 + local.get $69 + call $~lib/string/String.__eq + end + local.set $70 + local.get $69 + call $~lib/rt/pure/__release + local.get $68 + call $~lib/rt/pure/__release + local.get $70 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -14923,8 +17062,33 @@ i32.const 11296 call $~lib/string/String#replaceAll local.tee $68 + call $~lib/rt/pure/__retain + local.set $69 i32.const 1248 - call $~lib/string/String.__eq + call $~lib/rt/pure/__retain + local.set $70 + local.get $69 + i32.eqz + local.get $70 + i32.eqz + i32.or + if (result i32) + local.get $69 + local.get $70 + i32.eq + else + local.get $69 + local.get $70 + call $~lib/string/String.__eq + end + local.set $71 + local.get $70 + call $~lib/rt/pure/__release + local.get $69 + call $~lib/rt/pure/__release + local.get $71 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -14939,8 +17103,33 @@ i32.const 4576 call $~lib/string/String#replaceAll local.tee $69 + call $~lib/rt/pure/__retain + local.set $70 i32.const 11712 - call $~lib/string/String.__eq + call $~lib/rt/pure/__retain + local.set $71 + local.get $70 + i32.eqz + local.get $71 + i32.eqz + i32.or + if (result i32) + local.get $70 + local.get $71 + i32.eq + else + local.get $70 + local.get $71 + call $~lib/string/String.__eq + end + local.set $72 + local.get $71 + call $~lib/rt/pure/__release + local.get $70 + call $~lib/rt/pure/__release + local.get $72 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -14955,8 +17144,33 @@ i32.const 4576 call $~lib/string/String#replaceAll local.tee $70 + call $~lib/rt/pure/__retain + local.set $71 i32.const 4576 - call $~lib/string/String.__eq + call $~lib/rt/pure/__retain + local.set $72 + local.get $71 + i32.eqz + local.get $72 + i32.eqz + i32.or + if (result i32) + local.get $71 + local.get $72 + i32.eq + else + local.get $71 + local.get $72 + call $~lib/string/String.__eq + end + local.set $73 + local.get $72 + call $~lib/rt/pure/__release + local.get $71 + call $~lib/rt/pure/__release + local.get $73 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -14971,8 +17185,33 @@ i32.const 4576 call $~lib/string/String#replaceAll local.tee $71 + call $~lib/rt/pure/__retain + local.set $72 i32.const 11744 - call $~lib/string/String.__eq + call $~lib/rt/pure/__retain + local.set $73 + local.get $72 + i32.eqz + local.get $73 + i32.eqz + i32.or + if (result i32) + local.get $72 + local.get $73 + i32.eq + else + local.get $72 + local.get $73 + call $~lib/string/String.__eq + end + local.set $74 + local.get $73 + call $~lib/rt/pure/__release + local.get $72 + call $~lib/rt/pure/__release + local.get $74 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -14987,8 +17226,33 @@ i32.const 272 call $~lib/string/String#replaceAll local.tee $72 + call $~lib/rt/pure/__retain + local.set $73 i32.const 272 - call $~lib/string/String.__eq + call $~lib/rt/pure/__retain + local.set $74 + local.get $73 + i32.eqz + local.get $74 + i32.eqz + i32.or + if (result i32) + local.get $73 + local.get $74 + i32.eq + else + local.get $73 + local.get $74 + call $~lib/string/String.__eq + end + local.set $75 + local.get $74 + call $~lib/rt/pure/__release + local.get $73 + call $~lib/rt/pure/__release + local.get $75 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -15003,8 +17267,33 @@ i32.const 4576 call $~lib/string/String#replaceAll local.tee $73 + call $~lib/rt/pure/__retain + local.set $74 i32.const 4576 - call $~lib/string/String.__eq + call $~lib/rt/pure/__retain + local.set $75 + local.get $74 + i32.eqz + local.get $75 + i32.eqz + i32.or + if (result i32) + local.get $74 + local.get $75 + i32.eq + else + local.get $74 + local.get $75 + call $~lib/string/String.__eq + end + local.set $76 + local.get $75 + call $~lib/rt/pure/__release + local.get $74 + call $~lib/rt/pure/__release + local.get $76 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -15019,8 +17308,33 @@ i32.const 272 call $~lib/string/String#replaceAll local.tee $74 + call $~lib/rt/pure/__retain + local.set $75 i32.const 272 - call $~lib/string/String.__eq + call $~lib/rt/pure/__retain + local.set $76 + local.get $75 + i32.eqz + local.get $76 + i32.eqz + i32.or + if (result i32) + local.get $75 + local.get $76 + i32.eq + else + local.get $75 + local.get $76 + call $~lib/string/String.__eq + end + local.set $77 + local.get $76 + call $~lib/rt/pure/__release + local.get $75 + call $~lib/rt/pure/__release + local.get $77 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -15035,8 +17349,33 @@ i32.const 272 call $~lib/string/String#replaceAll local.tee $75 + call $~lib/rt/pure/__retain + local.set $76 i32.const 4576 - call $~lib/string/String.__eq + call $~lib/rt/pure/__retain + local.set $77 + local.get $76 + i32.eqz + local.get $77 + i32.eqz + i32.or + if (result i32) + local.get $76 + local.get $77 + i32.eq + else + local.get $76 + local.get $77 + call $~lib/string/String.__eq + end + local.set $78 + local.get $77 + call $~lib/rt/pure/__release + local.get $76 + call $~lib/rt/pure/__release + local.get $78 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -15051,8 +17390,33 @@ i32.const 4608 call $~lib/string/String#replaceAll local.tee $76 + call $~lib/rt/pure/__retain + local.set $77 i32.const 4608 - call $~lib/string/String.__eq + call $~lib/rt/pure/__retain + local.set $78 + local.get $77 + i32.eqz + local.get $78 + i32.eqz + i32.or + if (result i32) + local.get $77 + local.get $78 + i32.eq + else + local.get $77 + local.get $78 + call $~lib/string/String.__eq + end + local.set $79 + local.get $78 + call $~lib/rt/pure/__release + local.get $77 + call $~lib/rt/pure/__release + local.get $79 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -15067,8 +17431,33 @@ i32.const 4608 call $~lib/string/String#replaceAll local.tee $77 + call $~lib/rt/pure/__retain + local.set $78 i32.const 768 - call $~lib/string/String.__eq + call $~lib/rt/pure/__retain + local.set $79 + local.get $78 + i32.eqz + local.get $79 + i32.eqz + i32.or + if (result i32) + local.get $78 + local.get $79 + i32.eq + else + local.get $78 + local.get $79 + call $~lib/string/String.__eq + end + local.set $80 + local.get $79 + call $~lib/rt/pure/__release + local.get $78 + call $~lib/rt/pure/__release + local.get $80 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -15083,8 +17472,33 @@ i32.const 4576 call $~lib/string/String#replaceAll local.tee $78 + call $~lib/rt/pure/__retain + local.set $79 i32.const 11776 - call $~lib/string/String.__eq + call $~lib/rt/pure/__retain + local.set $80 + local.get $79 + i32.eqz + local.get $80 + i32.eqz + i32.or + if (result i32) + local.get $79 + local.get $80 + i32.eq + else + local.get $79 + local.get $80 + call $~lib/string/String.__eq + end + local.set $81 + local.get $80 + call $~lib/rt/pure/__release + local.get $79 + call $~lib/rt/pure/__release + local.get $81 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -15099,8 +17513,33 @@ i32.const 272 call $~lib/string/String#replaceAll local.tee $79 + call $~lib/rt/pure/__retain + local.set $80 i32.const 768 - call $~lib/string/String.__eq + call $~lib/rt/pure/__retain + local.set $81 + local.get $80 + i32.eqz + local.get $81 + i32.eqz + i32.or + if (result i32) + local.get $80 + local.get $81 + i32.eq + else + local.get $80 + local.get $81 + call $~lib/string/String.__eq + end + local.set $82 + local.get $81 + call $~lib/rt/pure/__release + local.get $80 + call $~lib/rt/pure/__release + local.get $82 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -15111,18 +17550,43 @@ unreachable end i32.const 11808 - local.set $80 + local.set $82 global.get $std/string/str call $~lib/rt/pure/__release - local.get $80 + local.get $82 global.set $std/string/str global.get $std/string/str i32.const 0 i32.const 2147483647 call $~lib/string/String#slice - local.tee $80 + local.tee $82 + call $~lib/rt/pure/__retain + local.set $80 i32.const 11808 - call $~lib/string/String.__eq + call $~lib/rt/pure/__retain + local.set $81 + local.get $80 + i32.eqz + local.get $81 + i32.eqz + i32.or + if (result i32) + local.get $80 + local.get $81 + i32.eq + else + local.get $80 + local.get $81 + call $~lib/string/String.__eq + end + local.set $83 + local.get $81 + call $~lib/rt/pure/__release + local.get $80 + call $~lib/rt/pure/__release + local.get $83 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -15132,13 +17596,38 @@ call $~lib/builtins/abort unreachable end - global.get $std/string/str - i32.const -1 - i32.const 2147483647 - call $~lib/string/String#slice - local.tee $81 - i32.const 11856 - call $~lib/string/String.__eq + global.get $std/string/str + i32.const -1 + i32.const 2147483647 + call $~lib/string/String#slice + local.tee $80 + call $~lib/rt/pure/__retain + local.set $81 + i32.const 11856 + call $~lib/rt/pure/__retain + local.set $83 + local.get $81 + i32.eqz + local.get $83 + i32.eqz + i32.or + if (result i32) + local.get $81 + local.get $83 + i32.eq + else + local.get $81 + local.get $83 + call $~lib/string/String.__eq + end + local.set $84 + local.get $83 + call $~lib/rt/pure/__release + local.get $81 + call $~lib/rt/pure/__release + local.get $84 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -15152,9 +17641,34 @@ i32.const -5 i32.const 2147483647 call $~lib/string/String#slice - local.tee $82 + local.tee $81 + call $~lib/rt/pure/__retain + local.set $83 i32.const 11888 - call $~lib/string/String.__eq + call $~lib/rt/pure/__retain + local.set $84 + local.get $83 + i32.eqz + local.get $84 + i32.eqz + i32.or + if (result i32) + local.get $83 + local.get $84 + i32.eq + else + local.get $83 + local.get $84 + call $~lib/string/String.__eq + end + local.set $85 + local.get $84 + call $~lib/rt/pure/__release + local.get $83 + call $~lib/rt/pure/__release + local.get $85 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -15169,8 +17683,33 @@ i32.const 7 call $~lib/string/String#slice local.tee $83 + call $~lib/rt/pure/__retain + local.set $84 i32.const 11920 - call $~lib/string/String.__eq + call $~lib/rt/pure/__retain + local.set $85 + local.get $84 + i32.eqz + local.get $85 + i32.eqz + i32.or + if (result i32) + local.get $84 + local.get $85 + i32.eq + else + local.get $84 + local.get $85 + call $~lib/string/String.__eq + end + local.set $86 + local.get $85 + call $~lib/rt/pure/__release + local.get $84 + call $~lib/rt/pure/__release + local.get $86 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -15185,8 +17724,33 @@ i32.const -6 call $~lib/string/String#slice local.tee $84 + call $~lib/rt/pure/__retain + local.set $85 i32.const 11952 - call $~lib/string/String.__eq + call $~lib/rt/pure/__retain + local.set $86 + local.get $85 + i32.eqz + local.get $86 + i32.eqz + i32.or + if (result i32) + local.get $85 + local.get $86 + i32.eq + else + local.get $85 + local.get $86 + call $~lib/string/String.__eq + end + local.set $87 + local.get $86 + call $~lib/rt/pure/__release + local.get $85 + call $~lib/rt/pure/__release + local.get $87 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -15201,8 +17765,33 @@ i32.const 3 call $~lib/string/String#slice local.tee $85 + call $~lib/rt/pure/__retain + local.set $86 i32.const 272 - call $~lib/string/String.__eq + call $~lib/rt/pure/__retain + local.set $87 + local.get $86 + i32.eqz + local.get $87 + i32.eqz + i32.or + if (result i32) + local.get $86 + local.get $87 + i32.eq + else + local.get $86 + local.get $87 + call $~lib/string/String.__eq + end + local.set $88 + local.get $87 + call $~lib/rt/pure/__release + local.get $86 + call $~lib/rt/pure/__release + local.get $88 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -15217,8 +17806,33 @@ i32.const -1 call $~lib/string/String#slice local.tee $86 + call $~lib/rt/pure/__retain + local.set $87 i32.const 11984 - call $~lib/string/String.__eq + call $~lib/rt/pure/__retain + local.set $88 + local.get $87 + i32.eqz + local.get $88 + i32.eqz + i32.or + if (result i32) + local.get $87 + local.get $88 + i32.eq + else + local.get $87 + local.get $88 + call $~lib/string/String.__eq + end + local.set $89 + local.get $88 + call $~lib/rt/pure/__release + local.get $87 + call $~lib/rt/pure/__release + local.get $89 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -15233,8 +17847,33 @@ i32.const 2147483647 call $~lib/string/String#substr local.tee $87 + call $~lib/rt/pure/__retain + local.set $88 i32.const 11808 - call $~lib/string/String.__eq + call $~lib/rt/pure/__retain + local.set $89 + local.get $88 + i32.eqz + local.get $89 + i32.eqz + i32.or + if (result i32) + local.get $88 + local.get $89 + i32.eq + else + local.get $88 + local.get $89 + call $~lib/string/String.__eq + end + local.set $90 + local.get $89 + call $~lib/rt/pure/__release + local.get $88 + call $~lib/rt/pure/__release + local.get $90 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -15249,8 +17888,33 @@ i32.const 2147483647 call $~lib/string/String#substr local.tee $88 + call $~lib/rt/pure/__retain + local.set $89 i32.const 11856 - call $~lib/string/String.__eq + call $~lib/rt/pure/__retain + local.set $90 + local.get $89 + i32.eqz + local.get $90 + i32.eqz + i32.or + if (result i32) + local.get $89 + local.get $90 + i32.eq + else + local.get $89 + local.get $90 + call $~lib/string/String.__eq + end + local.set $91 + local.get $90 + call $~lib/rt/pure/__release + local.get $89 + call $~lib/rt/pure/__release + local.get $91 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -15265,8 +17929,33 @@ i32.const 2147483647 call $~lib/string/String#substr local.tee $89 + call $~lib/rt/pure/__retain + local.set $90 i32.const 11888 - call $~lib/string/String.__eq + call $~lib/rt/pure/__retain + local.set $91 + local.get $90 + i32.eqz + local.get $91 + i32.eqz + i32.or + if (result i32) + local.get $90 + local.get $91 + i32.eq + else + local.get $90 + local.get $91 + call $~lib/string/String.__eq + end + local.set $92 + local.get $91 + call $~lib/rt/pure/__release + local.get $90 + call $~lib/rt/pure/__release + local.get $92 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -15281,8 +17970,33 @@ i32.const 7 call $~lib/string/String#substr local.tee $90 + call $~lib/rt/pure/__retain + local.set $91 i32.const 12032 - call $~lib/string/String.__eq + call $~lib/rt/pure/__retain + local.set $92 + local.get $91 + i32.eqz + local.get $92 + i32.eqz + i32.or + if (result i32) + local.get $91 + local.get $92 + i32.eq + else + local.get $91 + local.get $92 + call $~lib/string/String.__eq + end + local.set $93 + local.get $92 + call $~lib/rt/pure/__release + local.get $91 + call $~lib/rt/pure/__release + local.get $93 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -15297,8 +18011,33 @@ i32.const -6 call $~lib/string/String#substr local.tee $91 + call $~lib/rt/pure/__retain + local.set $92 i32.const 272 - call $~lib/string/String.__eq + call $~lib/rt/pure/__retain + local.set $93 + local.get $92 + i32.eqz + local.get $93 + i32.eqz + i32.or + if (result i32) + local.get $92 + local.get $93 + i32.eq + else + local.get $92 + local.get $93 + call $~lib/string/String.__eq + end + local.set $94 + local.get $93 + call $~lib/rt/pure/__release + local.get $92 + call $~lib/rt/pure/__release + local.get $94 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -15313,8 +18052,33 @@ i32.const 3 call $~lib/string/String#substr local.tee $92 + call $~lib/rt/pure/__retain + local.set $93 i32.const 12064 - call $~lib/string/String.__eq + call $~lib/rt/pure/__retain + local.set $94 + local.get $93 + i32.eqz + local.get $94 + i32.eqz + i32.or + if (result i32) + local.get $93 + local.get $94 + i32.eq + else + local.get $93 + local.get $94 + call $~lib/string/String.__eq + end + local.set $95 + local.get $94 + call $~lib/rt/pure/__release + local.get $93 + call $~lib/rt/pure/__release + local.get $95 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -15329,8 +18093,33 @@ i32.const -1 call $~lib/string/String#substr local.tee $93 + call $~lib/rt/pure/__retain + local.set $94 i32.const 272 - call $~lib/string/String.__eq + call $~lib/rt/pure/__retain + local.set $95 + local.get $94 + i32.eqz + local.get $95 + i32.eqz + i32.or + if (result i32) + local.get $94 + local.get $95 + i32.eq + else + local.get $94 + local.get $95 + call $~lib/string/String.__eq + end + local.set $96 + local.get $95 + call $~lib/rt/pure/__release + local.get $94 + call $~lib/rt/pure/__release + local.get $96 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -15340,13 +18129,38 @@ call $~lib/builtins/abort unreachable end - global.get $std/string/str + global.get $std/string/str + i32.const 0 + i32.const 100 + call $~lib/string/String#substr + local.tee $94 + call $~lib/rt/pure/__retain + local.set $95 + i32.const 11808 + call $~lib/rt/pure/__retain + local.set $96 + local.get $95 + i32.eqz + local.get $96 + i32.eqz + i32.or + if (result i32) + local.get $95 + local.get $96 + i32.eq + else + local.get $95 + local.get $96 + call $~lib/string/String.__eq + end + local.set $97 + local.get $96 + call $~lib/rt/pure/__release + local.get $95 + call $~lib/rt/pure/__release + local.get $97 i32.const 0 - i32.const 100 - call $~lib/string/String#substr - local.tee $94 - i32.const 11808 - call $~lib/string/String.__eq + i32.ne i32.eqz if i32.const 0 @@ -15361,8 +18175,33 @@ i32.const 4 call $~lib/string/String#substr local.tee $95 + call $~lib/rt/pure/__retain + local.set $96 i32.const 12096 - call $~lib/string/String.__eq + call $~lib/rt/pure/__retain + local.set $97 + local.get $96 + i32.eqz + local.get $97 + i32.eqz + i32.or + if (result i32) + local.get $96 + local.get $97 + i32.eq + else + local.get $96 + local.get $97 + call $~lib/string/String.__eq + end + local.set $98 + local.get $97 + call $~lib/rt/pure/__release + local.get $96 + call $~lib/rt/pure/__release + local.get $98 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -15377,8 +18216,33 @@ i32.const -3 call $~lib/string/String#substr local.tee $96 + call $~lib/rt/pure/__retain + local.set $97 i32.const 272 - call $~lib/string/String.__eq + call $~lib/rt/pure/__retain + local.set $98 + local.get $97 + i32.eqz + local.get $98 + i32.eqz + i32.or + if (result i32) + local.get $97 + local.get $98 + i32.eq + else + local.get $97 + local.get $98 + call $~lib/string/String.__eq + end + local.set $99 + local.get $98 + call $~lib/rt/pure/__release + local.get $97 + call $~lib/rt/pure/__release + local.get $99 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -15393,8 +18257,33 @@ i32.const 2147483647 call $~lib/string/String#substring local.tee $97 + call $~lib/rt/pure/__retain + local.set $98 i32.const 11808 - call $~lib/string/String.__eq + call $~lib/rt/pure/__retain + local.set $99 + local.get $98 + i32.eqz + local.get $99 + i32.eqz + i32.or + if (result i32) + local.get $98 + local.get $99 + i32.eq + else + local.get $98 + local.get $99 + call $~lib/string/String.__eq + end + local.set $100 + local.get $99 + call $~lib/rt/pure/__release + local.get $98 + call $~lib/rt/pure/__release + local.get $100 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -15409,8 +18298,33 @@ i32.const 2147483647 call $~lib/string/String#substring local.tee $98 + call $~lib/rt/pure/__retain + local.set $99 i32.const 11808 - call $~lib/string/String.__eq + call $~lib/rt/pure/__retain + local.set $100 + local.get $99 + i32.eqz + local.get $100 + i32.eqz + i32.or + if (result i32) + local.get $99 + local.get $100 + i32.eq + else + local.get $99 + local.get $100 + call $~lib/string/String.__eq + end + local.set $101 + local.get $100 + call $~lib/rt/pure/__release + local.get $99 + call $~lib/rt/pure/__release + local.get $101 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -15425,8 +18339,33 @@ i32.const 2147483647 call $~lib/string/String#substring local.tee $99 + call $~lib/rt/pure/__retain + local.set $100 i32.const 11808 - call $~lib/string/String.__eq + call $~lib/rt/pure/__retain + local.set $101 + local.get $100 + i32.eqz + local.get $101 + i32.eqz + i32.or + if (result i32) + local.get $100 + local.get $101 + i32.eq + else + local.get $100 + local.get $101 + call $~lib/string/String.__eq + end + local.set $102 + local.get $101 + call $~lib/rt/pure/__release + local.get $100 + call $~lib/rt/pure/__release + local.get $102 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -15441,8 +18380,33 @@ i32.const 7 call $~lib/string/String#substring local.tee $100 + call $~lib/rt/pure/__retain + local.set $101 i32.const 11920 - call $~lib/string/String.__eq + call $~lib/rt/pure/__retain + local.set $102 + local.get $101 + i32.eqz + local.get $102 + i32.eqz + i32.or + if (result i32) + local.get $101 + local.get $102 + i32.eq + else + local.get $101 + local.get $102 + call $~lib/string/String.__eq + end + local.set $103 + local.get $102 + call $~lib/rt/pure/__release + local.get $101 + call $~lib/rt/pure/__release + local.get $103 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -15457,8 +18421,33 @@ i32.const -6 call $~lib/string/String#substring local.tee $101 + call $~lib/rt/pure/__retain + local.set $102 i32.const 272 - call $~lib/string/String.__eq + call $~lib/rt/pure/__retain + local.set $103 + local.get $102 + i32.eqz + local.get $103 + i32.eqz + i32.or + if (result i32) + local.get $102 + local.get $103 + i32.eq + else + local.get $102 + local.get $103 + call $~lib/string/String.__eq + end + local.set $104 + local.get $103 + call $~lib/rt/pure/__release + local.get $102 + call $~lib/rt/pure/__release + local.get $104 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -15473,8 +18462,33 @@ i32.const 3 call $~lib/string/String#substring local.tee $102 + call $~lib/rt/pure/__retain + local.set $103 i32.const 12128 - call $~lib/string/String.__eq + call $~lib/rt/pure/__retain + local.set $104 + local.get $103 + i32.eqz + local.get $104 + i32.eqz + i32.or + if (result i32) + local.get $103 + local.get $104 + i32.eq + else + local.get $103 + local.get $104 + call $~lib/string/String.__eq + end + local.set $105 + local.get $104 + call $~lib/rt/pure/__release + local.get $103 + call $~lib/rt/pure/__release + local.get $105 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -15489,8 +18503,33 @@ i32.const -1 call $~lib/string/String#substring local.tee $103 + call $~lib/rt/pure/__retain + local.set $104 i32.const 272 - call $~lib/string/String.__eq + call $~lib/rt/pure/__retain + local.set $105 + local.get $104 + i32.eqz + local.get $105 + i32.eqz + i32.or + if (result i32) + local.get $104 + local.get $105 + i32.eq + else + local.get $104 + local.get $105 + call $~lib/string/String.__eq + end + local.set $106 + local.get $105 + call $~lib/rt/pure/__release + local.get $104 + call $~lib/rt/pure/__release + local.get $106 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -15505,8 +18544,33 @@ i32.const 100 call $~lib/string/String#substring local.tee $104 + call $~lib/rt/pure/__retain + local.set $105 i32.const 11808 - call $~lib/string/String.__eq + call $~lib/rt/pure/__retain + local.set $106 + local.get $105 + i32.eqz + local.get $106 + i32.eqz + i32.or + if (result i32) + local.get $105 + local.get $106 + i32.eq + else + local.get $105 + local.get $106 + call $~lib/string/String.__eq + end + local.set $107 + local.get $106 + call $~lib/rt/pure/__release + local.get $105 + call $~lib/rt/pure/__release + local.get $107 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -15521,8 +18585,33 @@ i32.const 4 call $~lib/string/String#substring local.tee $105 + call $~lib/rt/pure/__retain + local.set $106 i32.const 272 - call $~lib/string/String.__eq + call $~lib/rt/pure/__retain + local.set $107 + local.get $106 + i32.eqz + local.get $107 + i32.eqz + i32.or + if (result i32) + local.get $106 + local.get $107 + i32.eq + else + local.get $106 + local.get $107 + call $~lib/string/String.__eq + end + local.set $108 + local.get $107 + call $~lib/rt/pure/__release + local.get $106 + call $~lib/rt/pure/__release + local.get $108 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -15537,8 +18626,33 @@ i32.const -3 call $~lib/string/String#substring local.tee $106 + call $~lib/rt/pure/__retain + local.set $107 i32.const 1248 - call $~lib/string/String.__eq + call $~lib/rt/pure/__retain + local.set $108 + local.get $107 + i32.eqz + local.get $108 + i32.eqz + i32.or + if (result i32) + local.get $107 + local.get $108 + i32.eq + else + local.get $107 + local.get $108 + call $~lib/string/String.__eq + end + local.set $109 + local.get $108 + call $~lib/rt/pure/__release + local.get $107 + call $~lib/rt/pure/__release + local.get $109 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -15554,10 +18668,10 @@ i32.const 0 global.get $~lib/builtins/i32.MAX_VALUE call $~lib/string/String#split - local.set $108 + local.set $109 local.get $107 call $~lib/rt/pure/__release - local.get $108 + local.get $109 local.set $107 local.get $107 call $~lib/array/Array<~lib/string/String>#get:length @@ -15567,13 +18681,38 @@ local.get $107 i32.const 0 call $~lib/array/Array<~lib/string/String>#__get - local.tee $108 + local.tee $109 + call $~lib/rt/pure/__retain + local.set $110 i32.const 272 - call $~lib/string/String.__eq - local.set $109 + call $~lib/rt/pure/__retain + local.set $108 + local.get $110 + i32.eqz + local.get $108 + i32.eqz + i32.or + if (result i32) + local.get $110 + local.get $108 + i32.eq + else + local.get $110 + local.get $108 + call $~lib/string/String.__eq + end + local.set $111 local.get $108 call $~lib/rt/pure/__release + local.get $110 + call $~lib/rt/pure/__release + local.get $111 + i32.const 0 + i32.ne + local.set $110 local.get $109 + call $~lib/rt/pure/__release + local.get $110 else i32.const 0 end @@ -15592,10 +18731,10 @@ i32.const 272 global.get $~lib/builtins/i32.MAX_VALUE call $~lib/string/String#split - local.set $109 + local.set $111 local.get $107 call $~lib/rt/pure/__release - local.get $109 + local.get $111 local.set $107 local.get $107 call $~lib/array/Array<~lib/string/String>#get:length @@ -15628,8 +18767,33 @@ i32.const 0 call $~lib/array/Array<~lib/string/String>#__get local.tee $108 + call $~lib/rt/pure/__retain + local.set $109 i32.const 272 - call $~lib/string/String.__eq + call $~lib/rt/pure/__retain + local.set $110 + local.get $109 + i32.eqz + local.get $110 + i32.eqz + i32.or + if (result i32) + local.get $109 + local.get $110 + i32.eq + else + local.get $109 + local.get $110 + call $~lib/string/String.__eq + end + local.set $111 + local.get $110 + call $~lib/rt/pure/__release + local.get $109 + call $~lib/rt/pure/__release + local.get $111 + i32.const 0 + i32.ne local.set $109 local.get $108 call $~lib/rt/pure/__release @@ -15652,10 +18816,10 @@ i32.const 4768 global.get $~lib/builtins/i32.MAX_VALUE call $~lib/string/String#split - local.set $109 + local.set $111 local.get $107 call $~lib/rt/pure/__release - local.get $109 + local.get $111 local.set $107 local.get $107 call $~lib/array/Array<~lib/string/String>#get:length @@ -15665,13 +18829,38 @@ local.get $107 i32.const 0 call $~lib/array/Array<~lib/string/String>#__get - local.tee $109 + local.tee $111 + call $~lib/rt/pure/__retain + local.set $109 i32.const 12384 - call $~lib/string/String.__eq + call $~lib/rt/pure/__retain + local.set $110 + local.get $109 + i32.eqz + local.get $110 + i32.eqz + i32.or + if (result i32) + local.get $109 + local.get $110 + i32.eq + else + local.get $109 + local.get $110 + call $~lib/string/String.__eq + end local.set $108 + local.get $110 + call $~lib/rt/pure/__release local.get $109 call $~lib/rt/pure/__release local.get $108 + i32.const 0 + i32.ne + local.set $109 + local.get $111 + call $~lib/rt/pure/__release + local.get $109 else i32.const 0 end @@ -15704,8 +18893,33 @@ i32.const 0 call $~lib/array/Array<~lib/string/String>#__get local.tee $108 + call $~lib/rt/pure/__retain + local.set $109 i32.const 320 - call $~lib/string/String.__eq + call $~lib/rt/pure/__retain + local.set $110 + local.get $109 + i32.eqz + local.get $110 + i32.eqz + i32.or + if (result i32) + local.get $109 + local.get $110 + i32.eq + else + local.get $109 + local.get $110 + call $~lib/string/String.__eq + end + local.set $111 + local.get $110 + call $~lib/rt/pure/__release + local.get $109 + call $~lib/rt/pure/__release + local.get $111 + i32.const 0 + i32.ne local.set $109 local.get $108 call $~lib/rt/pure/__release @@ -15720,12 +18934,37 @@ i32.const 1 call $~lib/array/Array<~lib/string/String>#__get local.tee $108 + call $~lib/rt/pure/__retain + local.set $110 i32.const 10416 - call $~lib/string/String.__eq + call $~lib/rt/pure/__retain + local.set $111 + local.get $110 + i32.eqz + local.get $111 + i32.eqz + i32.or + if (result i32) + local.get $110 + local.get $111 + i32.eq + else + local.get $110 + local.get $111 + call $~lib/string/String.__eq + end local.set $109 - local.get $108 + local.get $111 + call $~lib/rt/pure/__release + local.get $110 call $~lib/rt/pure/__release local.get $109 + i32.const 0 + i32.ne + local.set $110 + local.get $108 + call $~lib/rt/pure/__release + local.get $110 else i32.const 0 end @@ -15736,12 +18975,37 @@ i32.const 2 call $~lib/array/Array<~lib/string/String>#__get local.tee $108 + call $~lib/rt/pure/__retain + local.set $111 i32.const 11264 - call $~lib/string/String.__eq + call $~lib/rt/pure/__retain local.set $109 + local.get $111 + i32.eqz + local.get $109 + i32.eqz + i32.or + if (result i32) + local.get $111 + local.get $109 + i32.eq + else + local.get $111 + local.get $109 + call $~lib/string/String.__eq + end + local.set $110 + local.get $109 + call $~lib/rt/pure/__release + local.get $111 + call $~lib/rt/pure/__release + local.get $110 + i32.const 0 + i32.ne + local.set $111 local.get $108 call $~lib/rt/pure/__release - local.get $109 + local.get $111 else i32.const 0 end @@ -15760,10 +19024,10 @@ i32.const 12448 global.get $~lib/builtins/i32.MAX_VALUE call $~lib/string/String#split - local.set $109 + local.set $110 local.get $107 call $~lib/rt/pure/__release - local.get $109 + local.get $110 local.set $107 local.get $107 call $~lib/array/Array<~lib/string/String>#get:length @@ -15773,13 +19037,38 @@ local.get $107 i32.const 0 call $~lib/array/Array<~lib/string/String>#__get - local.tee $109 + local.tee $110 + call $~lib/rt/pure/__retain + local.set $111 i32.const 320 - call $~lib/string/String.__eq + call $~lib/rt/pure/__retain + local.set $109 + local.get $111 + i32.eqz + local.get $109 + i32.eqz + i32.or + if (result i32) + local.get $111 + local.get $109 + i32.eq + else + local.get $111 + local.get $109 + call $~lib/string/String.__eq + end local.set $108 local.get $109 call $~lib/rt/pure/__release + local.get $111 + call $~lib/rt/pure/__release local.get $108 + i32.const 0 + i32.ne + local.set $111 + local.get $110 + call $~lib/rt/pure/__release + local.get $111 else i32.const 0 end @@ -15789,13 +19078,38 @@ local.get $107 i32.const 1 call $~lib/array/Array<~lib/string/String>#__get - local.tee $109 + local.tee $110 + call $~lib/rt/pure/__retain + local.set $109 i32.const 10416 - call $~lib/string/String.__eq + call $~lib/rt/pure/__retain local.set $108 local.get $109 - call $~lib/rt/pure/__release + i32.eqz + local.get $108 + i32.eqz + i32.or + if (result i32) + local.get $109 + local.get $108 + i32.eq + else + local.get $109 + local.get $108 + call $~lib/string/String.__eq + end + local.set $111 local.get $108 + call $~lib/rt/pure/__release + local.get $109 + call $~lib/rt/pure/__release + local.get $111 + i32.const 0 + i32.ne + local.set $109 + local.get $110 + call $~lib/rt/pure/__release + local.get $109 else i32.const 0 end @@ -15805,11 +19119,36 @@ local.get $107 i32.const 2 call $~lib/array/Array<~lib/string/String>#__get - local.tee $109 - i32.const 11264 - call $~lib/string/String.__eq + local.tee $110 + call $~lib/rt/pure/__retain local.set $108 + i32.const 11264 + call $~lib/rt/pure/__retain + local.set $111 + local.get $108 + i32.eqz + local.get $111 + i32.eqz + i32.or + if (result i32) + local.get $108 + local.get $111 + i32.eq + else + local.get $108 + local.get $111 + call $~lib/string/String.__eq + end + local.set $109 + local.get $111 + call $~lib/rt/pure/__release + local.get $108 + call $~lib/rt/pure/__release local.get $109 + i32.const 0 + i32.ne + local.set $108 + local.get $110 call $~lib/rt/pure/__release local.get $108 else @@ -15830,10 +19169,10 @@ i32.const 1024 global.get $~lib/builtins/i32.MAX_VALUE call $~lib/string/String#split - local.set $108 + local.set $109 local.get $107 call $~lib/rt/pure/__release - local.get $108 + local.get $109 local.set $107 local.get $107 call $~lib/array/Array<~lib/string/String>#get:length @@ -15843,13 +19182,38 @@ local.get $107 i32.const 0 call $~lib/array/Array<~lib/string/String>#__get - local.tee $108 + local.tee $109 + call $~lib/rt/pure/__retain + local.set $108 i32.const 320 - call $~lib/string/String.__eq - local.set $109 + call $~lib/rt/pure/__retain + local.set $111 + local.get $108 + i32.eqz + local.get $111 + i32.eqz + i32.or + if (result i32) + local.get $108 + local.get $111 + i32.eq + else + local.get $108 + local.get $111 + call $~lib/string/String.__eq + end + local.set $110 + local.get $111 + call $~lib/rt/pure/__release local.get $108 call $~lib/rt/pure/__release + local.get $110 + i32.const 0 + i32.ne + local.set $108 local.get $109 + call $~lib/rt/pure/__release + local.get $108 else i32.const 0 end @@ -15859,13 +19223,38 @@ local.get $107 i32.const 1 call $~lib/array/Array<~lib/string/String>#__get - local.tee $108 + local.tee $109 + call $~lib/rt/pure/__retain + local.set $111 i32.const 10416 - call $~lib/string/String.__eq - local.set $109 - local.get $108 + call $~lib/rt/pure/__retain + local.set $110 + local.get $111 + i32.eqz + local.get $110 + i32.eqz + i32.or + if (result i32) + local.get $111 + local.get $110 + i32.eq + else + local.get $111 + local.get $110 + call $~lib/string/String.__eq + end + local.set $108 + local.get $110 + call $~lib/rt/pure/__release + local.get $111 call $~lib/rt/pure/__release + local.get $108 + i32.const 0 + i32.ne + local.set $111 local.get $109 + call $~lib/rt/pure/__release + local.get $111 else i32.const 0 end @@ -15875,13 +19264,38 @@ local.get $107 i32.const 2 call $~lib/array/Array<~lib/string/String>#__get - local.tee $108 + local.tee $109 + call $~lib/rt/pure/__retain + local.set $110 i32.const 272 - call $~lib/string/String.__eq - local.set $109 + call $~lib/rt/pure/__retain + local.set $108 + local.get $110 + i32.eqz + local.get $108 + i32.eqz + i32.or + if (result i32) + local.get $110 + local.get $108 + i32.eq + else + local.get $110 + local.get $108 + call $~lib/string/String.__eq + end + local.set $111 local.get $108 call $~lib/rt/pure/__release + local.get $110 + call $~lib/rt/pure/__release + local.get $111 + i32.const 0 + i32.ne + local.set $110 local.get $109 + call $~lib/rt/pure/__release + local.get $110 else i32.const 0 end @@ -15891,13 +19305,38 @@ local.get $107 i32.const 3 call $~lib/array/Array<~lib/string/String>#__get - local.tee $108 + local.tee $109 + call $~lib/rt/pure/__retain + local.set $108 i32.const 11264 - call $~lib/string/String.__eq - local.set $109 + call $~lib/rt/pure/__retain + local.set $111 + local.get $108 + i32.eqz + local.get $111 + i32.eqz + i32.or + if (result i32) + local.get $108 + local.get $111 + i32.eq + else + local.get $108 + local.get $111 + call $~lib/string/String.__eq + end + local.set $110 + local.get $111 + call $~lib/rt/pure/__release local.get $108 call $~lib/rt/pure/__release + local.get $110 + i32.const 0 + i32.ne + local.set $108 local.get $109 + call $~lib/rt/pure/__release + local.get $108 else i32.const 0 end @@ -15916,10 +19355,10 @@ i32.const 1024 global.get $~lib/builtins/i32.MAX_VALUE call $~lib/string/String#split - local.set $109 + local.set $110 local.get $107 call $~lib/rt/pure/__release - local.get $109 + local.get $110 local.set $107 local.get $107 call $~lib/array/Array<~lib/string/String>#get:length @@ -15929,11 +19368,36 @@ local.get $107 i32.const 0 call $~lib/array/Array<~lib/string/String>#__get - local.tee $109 - i32.const 272 - call $~lib/string/String.__eq + local.tee $110 + call $~lib/rt/pure/__retain local.set $108 + i32.const 272 + call $~lib/rt/pure/__retain + local.set $111 + local.get $108 + i32.eqz + local.get $111 + i32.eqz + i32.or + if (result i32) + local.get $108 + local.get $111 + i32.eq + else + local.get $108 + local.get $111 + call $~lib/string/String.__eq + end + local.set $109 + local.get $111 + call $~lib/rt/pure/__release + local.get $108 + call $~lib/rt/pure/__release local.get $109 + i32.const 0 + i32.ne + local.set $108 + local.get $110 call $~lib/rt/pure/__release local.get $108 else @@ -15945,13 +19409,38 @@ local.get $107 i32.const 1 call $~lib/array/Array<~lib/string/String>#__get - local.tee $109 + local.tee $110 + call $~lib/rt/pure/__retain + local.set $111 i32.const 320 - call $~lib/string/String.__eq + call $~lib/rt/pure/__retain + local.set $109 + local.get $111 + i32.eqz + local.get $109 + i32.eqz + i32.or + if (result i32) + local.get $111 + local.get $109 + i32.eq + else + local.get $111 + local.get $109 + call $~lib/string/String.__eq + end local.set $108 local.get $109 call $~lib/rt/pure/__release + local.get $111 + call $~lib/rt/pure/__release local.get $108 + i32.const 0 + i32.ne + local.set $111 + local.get $110 + call $~lib/rt/pure/__release + local.get $111 else i32.const 0 end @@ -15961,13 +19450,38 @@ local.get $107 i32.const 2 call $~lib/array/Array<~lib/string/String>#__get - local.tee $109 + local.tee $110 + call $~lib/rt/pure/__retain + local.set $109 i32.const 10416 - call $~lib/string/String.__eq + call $~lib/rt/pure/__retain local.set $108 local.get $109 - call $~lib/rt/pure/__release + i32.eqz + local.get $108 + i32.eqz + i32.or + if (result i32) + local.get $109 + local.get $108 + i32.eq + else + local.get $109 + local.get $108 + call $~lib/string/String.__eq + end + local.set $111 local.get $108 + call $~lib/rt/pure/__release + local.get $109 + call $~lib/rt/pure/__release + local.get $111 + i32.const 0 + i32.ne + local.set $109 + local.get $110 + call $~lib/rt/pure/__release + local.get $109 else i32.const 0 end @@ -15977,11 +19491,36 @@ local.get $107 i32.const 3 call $~lib/array/Array<~lib/string/String>#__get - local.tee $109 - i32.const 11264 - call $~lib/string/String.__eq + local.tee $110 + call $~lib/rt/pure/__retain local.set $108 + i32.const 11264 + call $~lib/rt/pure/__retain + local.set $111 + local.get $108 + i32.eqz + local.get $111 + i32.eqz + i32.or + if (result i32) + local.get $108 + local.get $111 + i32.eq + else + local.get $108 + local.get $111 + call $~lib/string/String.__eq + end + local.set $109 + local.get $111 + call $~lib/rt/pure/__release + local.get $108 + call $~lib/rt/pure/__release local.get $109 + i32.const 0 + i32.ne + local.set $108 + local.get $110 call $~lib/rt/pure/__release local.get $108 else @@ -16002,10 +19541,10 @@ i32.const 1024 global.get $~lib/builtins/i32.MAX_VALUE call $~lib/string/String#split - local.set $108 + local.set $109 local.get $107 call $~lib/rt/pure/__release - local.get $108 + local.get $109 local.set $107 local.get $107 call $~lib/array/Array<~lib/string/String>#get:length @@ -16015,13 +19554,38 @@ local.get $107 i32.const 0 call $~lib/array/Array<~lib/string/String>#__get - local.tee $108 + local.tee $109 + call $~lib/rt/pure/__retain + local.set $108 i32.const 320 - call $~lib/string/String.__eq - local.set $109 + call $~lib/rt/pure/__retain + local.set $111 + local.get $108 + i32.eqz + local.get $111 + i32.eqz + i32.or + if (result i32) + local.get $108 + local.get $111 + i32.eq + else + local.get $108 + local.get $111 + call $~lib/string/String.__eq + end + local.set $110 + local.get $111 + call $~lib/rt/pure/__release local.get $108 call $~lib/rt/pure/__release + local.get $110 + i32.const 0 + i32.ne + local.set $108 local.get $109 + call $~lib/rt/pure/__release + local.get $108 else i32.const 0 end @@ -16031,13 +19595,38 @@ local.get $107 i32.const 1 call $~lib/array/Array<~lib/string/String>#__get - local.tee $108 + local.tee $109 + call $~lib/rt/pure/__retain + local.set $111 i32.const 10416 - call $~lib/string/String.__eq - local.set $109 - local.get $108 + call $~lib/rt/pure/__retain + local.set $110 + local.get $111 + i32.eqz + local.get $110 + i32.eqz + i32.or + if (result i32) + local.get $111 + local.get $110 + i32.eq + else + local.get $111 + local.get $110 + call $~lib/string/String.__eq + end + local.set $108 + local.get $110 call $~lib/rt/pure/__release + local.get $111 + call $~lib/rt/pure/__release + local.get $108 + i32.const 0 + i32.ne + local.set $111 local.get $109 + call $~lib/rt/pure/__release + local.get $111 else i32.const 0 end @@ -16047,13 +19636,38 @@ local.get $107 i32.const 2 call $~lib/array/Array<~lib/string/String>#__get - local.tee $108 + local.tee $109 + call $~lib/rt/pure/__retain + local.set $110 i32.const 11264 - call $~lib/string/String.__eq - local.set $109 + call $~lib/rt/pure/__retain + local.set $108 + local.get $110 + i32.eqz + local.get $108 + i32.eqz + i32.or + if (result i32) + local.get $110 + local.get $108 + i32.eq + else + local.get $110 + local.get $108 + call $~lib/string/String.__eq + end + local.set $111 local.get $108 call $~lib/rt/pure/__release + local.get $110 + call $~lib/rt/pure/__release + local.get $111 + i32.const 0 + i32.ne + local.set $110 local.get $109 + call $~lib/rt/pure/__release + local.get $110 else i32.const 0 end @@ -16063,13 +19677,38 @@ local.get $107 i32.const 3 call $~lib/array/Array<~lib/string/String>#__get - local.tee $108 + local.tee $109 + call $~lib/rt/pure/__retain + local.set $108 i32.const 272 - call $~lib/string/String.__eq - local.set $109 + call $~lib/rt/pure/__retain + local.set $111 + local.get $108 + i32.eqz + local.get $111 + i32.eqz + i32.or + if (result i32) + local.get $108 + local.get $111 + i32.eq + else + local.get $108 + local.get $111 + call $~lib/string/String.__eq + end + local.set $110 + local.get $111 + call $~lib/rt/pure/__release local.get $108 call $~lib/rt/pure/__release + local.get $110 + i32.const 0 + i32.ne + local.set $108 local.get $109 + call $~lib/rt/pure/__release + local.get $108 else i32.const 0 end @@ -16088,10 +19727,10 @@ i32.const 272 global.get $~lib/builtins/i32.MAX_VALUE call $~lib/string/String#split - local.set $109 + local.set $110 local.get $107 call $~lib/rt/pure/__release - local.get $109 + local.get $110 local.set $107 local.get $107 call $~lib/array/Array<~lib/string/String>#get:length @@ -16101,11 +19740,36 @@ local.get $107 i32.const 0 call $~lib/array/Array<~lib/string/String>#__get - local.tee $109 - i32.const 320 - call $~lib/string/String.__eq + local.tee $110 + call $~lib/rt/pure/__retain local.set $108 + i32.const 320 + call $~lib/rt/pure/__retain + local.set $111 + local.get $108 + i32.eqz + local.get $111 + i32.eqz + i32.or + if (result i32) + local.get $108 + local.get $111 + i32.eq + else + local.get $108 + local.get $111 + call $~lib/string/String.__eq + end + local.set $109 + local.get $111 + call $~lib/rt/pure/__release + local.get $108 + call $~lib/rt/pure/__release local.get $109 + i32.const 0 + i32.ne + local.set $108 + local.get $110 call $~lib/rt/pure/__release local.get $108 else @@ -16117,13 +19781,38 @@ local.get $107 i32.const 1 call $~lib/array/Array<~lib/string/String>#__get - local.tee $109 + local.tee $110 + call $~lib/rt/pure/__retain + local.set $111 i32.const 10416 - call $~lib/string/String.__eq + call $~lib/rt/pure/__retain + local.set $109 + local.get $111 + i32.eqz + local.get $109 + i32.eqz + i32.or + if (result i32) + local.get $111 + local.get $109 + i32.eq + else + local.get $111 + local.get $109 + call $~lib/string/String.__eq + end local.set $108 local.get $109 call $~lib/rt/pure/__release + local.get $111 + call $~lib/rt/pure/__release local.get $108 + i32.const 0 + i32.ne + local.set $111 + local.get $110 + call $~lib/rt/pure/__release + local.get $111 else i32.const 0 end @@ -16133,13 +19822,38 @@ local.get $107 i32.const 2 call $~lib/array/Array<~lib/string/String>#__get - local.tee $109 + local.tee $110 + call $~lib/rt/pure/__retain + local.set $109 i32.const 11264 - call $~lib/string/String.__eq + call $~lib/rt/pure/__retain local.set $108 local.get $109 + i32.eqz + local.get $108 + i32.eqz + i32.or + if (result i32) + local.get $109 + local.get $108 + i32.eq + else + local.get $109 + local.get $108 + call $~lib/string/String.__eq + end + local.set $111 + local.get $108 + call $~lib/rt/pure/__release + local.get $109 call $~lib/rt/pure/__release - local.get $108 + local.get $111 + i32.const 0 + i32.ne + local.set $109 + local.get $110 + call $~lib/rt/pure/__release + local.get $109 else i32.const 0 end @@ -16158,10 +19872,10 @@ i32.const 272 i32.const 0 call $~lib/string/String#split - local.set $108 + local.set $111 local.get $107 call $~lib/rt/pure/__release - local.get $108 + local.get $111 local.set $107 local.get $107 call $~lib/array/Array<~lib/string/String>#get:length @@ -16180,10 +19894,10 @@ i32.const 272 i32.const 1 call $~lib/string/String#split - local.set $109 + local.set $108 local.get $107 call $~lib/rt/pure/__release - local.get $109 + local.get $108 local.set $107 local.get $107 call $~lib/array/Array<~lib/string/String>#get:length @@ -16193,13 +19907,38 @@ local.get $107 i32.const 0 call $~lib/array/Array<~lib/string/String>#__get - local.tee $109 + local.tee $108 + call $~lib/rt/pure/__retain + local.set $110 i32.const 320 - call $~lib/string/String.__eq - local.set $108 + call $~lib/rt/pure/__retain + local.set $109 + local.get $110 + i32.eqz + local.get $109 + i32.eqz + i32.or + if (result i32) + local.get $110 + local.get $109 + i32.eq + else + local.get $110 + local.get $109 + call $~lib/string/String.__eq + end + local.set $111 local.get $109 call $~lib/rt/pure/__release + local.get $110 + call $~lib/rt/pure/__release + local.get $111 + i32.const 0 + i32.ne + local.set $110 local.get $108 + call $~lib/rt/pure/__release + local.get $110 else i32.const 0 end @@ -16218,10 +19957,10 @@ i32.const 1024 i32.const 1 call $~lib/string/String#split - local.set $108 + local.set $111 local.get $107 call $~lib/rt/pure/__release - local.get $108 + local.get $111 local.set $107 local.get $107 call $~lib/array/Array<~lib/string/String>#get:length @@ -16231,13 +19970,38 @@ local.get $107 i32.const 0 call $~lib/array/Array<~lib/string/String>#__get - local.tee $108 + local.tee $111 + call $~lib/rt/pure/__retain + local.set $110 i32.const 320 - call $~lib/string/String.__eq + call $~lib/rt/pure/__retain local.set $109 + local.get $110 + i32.eqz + local.get $109 + i32.eqz + i32.or + if (result i32) + local.get $110 + local.get $109 + i32.eq + else + local.get $110 + local.get $109 + call $~lib/string/String.__eq + end + local.set $108 + local.get $109 + call $~lib/rt/pure/__release + local.get $110 + call $~lib/rt/pure/__release local.get $108 + i32.const 0 + i32.ne + local.set $110 + local.get $111 call $~lib/rt/pure/__release - local.get $109 + local.get $110 else i32.const 0 end @@ -16256,10 +20020,10 @@ i32.const 272 i32.const 4 call $~lib/string/String#split - local.set $109 + local.set $108 local.get $107 call $~lib/rt/pure/__release - local.get $109 + local.get $108 local.set $107 local.get $107 call $~lib/array/Array<~lib/string/String>#get:length @@ -16269,13 +20033,38 @@ local.get $107 i32.const 0 call $~lib/array/Array<~lib/string/String>#__get - local.tee $109 + local.tee $108 + call $~lib/rt/pure/__retain + local.set $110 i32.const 320 - call $~lib/string/String.__eq - local.set $108 + call $~lib/rt/pure/__retain + local.set $109 + local.get $110 + i32.eqz + local.get $109 + i32.eqz + i32.or + if (result i32) + local.get $110 + local.get $109 + i32.eq + else + local.get $110 + local.get $109 + call $~lib/string/String.__eq + end + local.set $111 local.get $109 call $~lib/rt/pure/__release + local.get $110 + call $~lib/rt/pure/__release + local.get $111 + i32.const 0 + i32.ne + local.set $110 local.get $108 + call $~lib/rt/pure/__release + local.get $110 else i32.const 0 end @@ -16285,13 +20074,38 @@ local.get $107 i32.const 1 call $~lib/array/Array<~lib/string/String>#__get - local.tee $109 + local.tee $108 + call $~lib/rt/pure/__retain + local.set $109 i32.const 10416 - call $~lib/string/String.__eq - local.set $108 + call $~lib/rt/pure/__retain + local.set $111 + local.get $109 + i32.eqz + local.get $111 + i32.eqz + i32.or + if (result i32) + local.get $109 + local.get $111 + i32.eq + else + local.get $109 + local.get $111 + call $~lib/string/String.__eq + end + local.set $110 + local.get $111 + call $~lib/rt/pure/__release local.get $109 call $~lib/rt/pure/__release + local.get $110 + i32.const 0 + i32.ne + local.set $109 local.get $108 + call $~lib/rt/pure/__release + local.get $109 else i32.const 0 end @@ -16301,13 +20115,38 @@ local.get $107 i32.const 2 call $~lib/array/Array<~lib/string/String>#__get - local.tee $109 + local.tee $108 + call $~lib/rt/pure/__retain + local.set $111 i32.const 11264 - call $~lib/string/String.__eq - local.set $108 - local.get $109 + call $~lib/rt/pure/__retain + local.set $110 + local.get $111 + i32.eqz + local.get $110 + i32.eqz + i32.or + if (result i32) + local.get $111 + local.get $110 + i32.eq + else + local.get $111 + local.get $110 + call $~lib/string/String.__eq + end + local.set $109 + local.get $110 + call $~lib/rt/pure/__release + local.get $111 call $~lib/rt/pure/__release + local.get $109 + i32.const 0 + i32.ne + local.set $111 local.get $108 + call $~lib/rt/pure/__release + local.get $111 else i32.const 0 end @@ -16326,10 +20165,10 @@ i32.const 272 i32.const -1 call $~lib/string/String#split - local.set $108 + local.set $109 local.get $107 call $~lib/rt/pure/__release - local.get $108 + local.get $109 local.set $107 local.get $107 call $~lib/array/Array<~lib/string/String>#get:length @@ -16339,13 +20178,38 @@ local.get $107 i32.const 0 call $~lib/array/Array<~lib/string/String>#__get - local.tee $108 + local.tee $109 + call $~lib/rt/pure/__retain + local.set $111 i32.const 320 - call $~lib/string/String.__eq - local.set $109 - local.get $108 + call $~lib/rt/pure/__retain + local.set $110 + local.get $111 + i32.eqz + local.get $110 + i32.eqz + i32.or + if (result i32) + local.get $111 + local.get $110 + i32.eq + else + local.get $111 + local.get $110 + call $~lib/string/String.__eq + end + local.set $108 + local.get $110 call $~lib/rt/pure/__release + local.get $111 + call $~lib/rt/pure/__release + local.get $108 + i32.const 0 + i32.ne + local.set $111 local.get $109 + call $~lib/rt/pure/__release + local.get $111 else i32.const 0 end @@ -16355,13 +20219,38 @@ local.get $107 i32.const 1 call $~lib/array/Array<~lib/string/String>#__get - local.tee $108 + local.tee $109 + call $~lib/rt/pure/__retain + local.set $110 i32.const 10416 - call $~lib/string/String.__eq - local.set $109 + call $~lib/rt/pure/__retain + local.set $108 + local.get $110 + i32.eqz + local.get $108 + i32.eqz + i32.or + if (result i32) + local.get $110 + local.get $108 + i32.eq + else + local.get $110 + local.get $108 + call $~lib/string/String.__eq + end + local.set $111 local.get $108 call $~lib/rt/pure/__release + local.get $110 + call $~lib/rt/pure/__release + local.get $111 + i32.const 0 + i32.ne + local.set $110 local.get $109 + call $~lib/rt/pure/__release + local.get $110 else i32.const 0 end @@ -16371,13 +20260,38 @@ local.get $107 i32.const 2 call $~lib/array/Array<~lib/string/String>#__get - local.tee $108 + local.tee $109 + call $~lib/rt/pure/__retain + local.set $108 i32.const 11264 - call $~lib/string/String.__eq - local.set $109 + call $~lib/rt/pure/__retain + local.set $111 + local.get $108 + i32.eqz + local.get $111 + i32.eqz + i32.or + if (result i32) + local.get $108 + local.get $111 + i32.eq + else + local.get $108 + local.get $111 + call $~lib/string/String.__eq + end + local.set $110 + local.get $111 + call $~lib/rt/pure/__release local.get $108 call $~lib/rt/pure/__release + local.get $110 + i32.const 0 + i32.ne + local.set $108 local.get $109 + call $~lib/rt/pure/__release + local.get $108 else i32.const 0 end @@ -16396,10 +20310,10 @@ i32.const 1024 i32.const -1 call $~lib/string/String#split - local.set $109 + local.set $110 local.get $107 call $~lib/rt/pure/__release - local.get $109 + local.get $110 local.set $107 local.get $107 call $~lib/array/Array<~lib/string/String>#get:length @@ -16409,11 +20323,36 @@ local.get $107 i32.const 0 call $~lib/array/Array<~lib/string/String>#__get - local.tee $109 - i32.const 320 - call $~lib/string/String.__eq + local.tee $110 + call $~lib/rt/pure/__retain local.set $108 + i32.const 320 + call $~lib/rt/pure/__retain + local.set $111 + local.get $108 + i32.eqz + local.get $111 + i32.eqz + i32.or + if (result i32) + local.get $108 + local.get $111 + i32.eq + else + local.get $108 + local.get $111 + call $~lib/string/String.__eq + end + local.set $109 + local.get $111 + call $~lib/rt/pure/__release + local.get $108 + call $~lib/rt/pure/__release local.get $109 + i32.const 0 + i32.ne + local.set $108 + local.get $110 call $~lib/rt/pure/__release local.get $108 else @@ -16425,13 +20364,38 @@ local.get $107 i32.const 1 call $~lib/array/Array<~lib/string/String>#__get - local.tee $109 + local.tee $110 + call $~lib/rt/pure/__retain + local.set $111 i32.const 10416 - call $~lib/string/String.__eq + call $~lib/rt/pure/__retain + local.set $109 + local.get $111 + i32.eqz + local.get $109 + i32.eqz + i32.or + if (result i32) + local.get $111 + local.get $109 + i32.eq + else + local.get $111 + local.get $109 + call $~lib/string/String.__eq + end local.set $108 local.get $109 call $~lib/rt/pure/__release + local.get $111 + call $~lib/rt/pure/__release local.get $108 + i32.const 0 + i32.ne + local.set $111 + local.get $110 + call $~lib/rt/pure/__release + local.get $111 else i32.const 0 end @@ -16441,13 +20405,38 @@ local.get $107 i32.const 2 call $~lib/array/Array<~lib/string/String>#__get - local.tee $109 + local.tee $110 + call $~lib/rt/pure/__retain + local.set $109 i32.const 11264 - call $~lib/string/String.__eq + call $~lib/rt/pure/__retain local.set $108 local.get $109 + i32.eqz + local.get $108 + i32.eqz + i32.or + if (result i32) + local.get $109 + local.get $108 + i32.eq + else + local.get $109 + local.get $108 + call $~lib/string/String.__eq + end + local.set $111 + local.get $108 + call $~lib/rt/pure/__release + local.get $109 + call $~lib/rt/pure/__release + local.get $111 + i32.const 0 + i32.ne + local.set $109 + local.get $110 call $~lib/rt/pure/__release - local.get $108 + local.get $109 else i32.const 0 end @@ -16467,8 +20456,33 @@ i32.const 0 call $~lib/util/number/itoa32 local.tee $107 + call $~lib/rt/pure/__retain + local.set $108 i32.const 1424 - call $~lib/string/String.__eq + call $~lib/rt/pure/__retain + local.set $111 + local.get $108 + i32.eqz + local.get $111 + i32.eqz + i32.or + if (result i32) + local.get $108 + local.get $111 + i32.eq + else + local.get $108 + local.get $111 + call $~lib/string/String.__eq + end + local.set $110 + local.get $111 + call $~lib/rt/pure/__release + local.get $108 + call $~lib/rt/pure/__release + local.get $110 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -16480,9 +20494,34 @@ end i32.const 1 call $~lib/util/number/itoa32 - local.tee $109 + local.tee $108 + call $~lib/rt/pure/__retain + local.set $110 i32.const 1488 - call $~lib/string/String.__eq + call $~lib/rt/pure/__retain + local.set $109 + local.get $110 + i32.eqz + local.get $109 + i32.eqz + i32.or + if (result i32) + local.get $110 + local.get $109 + i32.eq + else + local.get $110 + local.get $109 + call $~lib/string/String.__eq + end + local.set $111 + local.get $109 + call $~lib/rt/pure/__release + local.get $110 + call $~lib/rt/pure/__release + local.get $111 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -16494,9 +20533,34 @@ end i32.const 8 call $~lib/util/number/itoa32 - local.tee $108 + local.tee $110 + call $~lib/rt/pure/__retain + local.set $109 i32.const 12992 - call $~lib/string/String.__eq + call $~lib/rt/pure/__retain + local.set $111 + local.get $109 + i32.eqz + local.get $111 + i32.eqz + i32.or + if (result i32) + local.get $109 + local.get $111 + i32.eq + else + local.get $109 + local.get $111 + call $~lib/string/String.__eq + end + local.set $112 + local.get $111 + call $~lib/rt/pure/__release + local.get $109 + call $~lib/rt/pure/__release + local.get $112 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -16508,9 +20572,34 @@ end i32.const 12 call $~lib/util/number/itoa32 - local.tee $110 + local.tee $109 + call $~lib/rt/pure/__retain + local.set $111 i32.const 13024 - call $~lib/string/String.__eq + call $~lib/rt/pure/__retain + local.set $112 + local.get $111 + i32.eqz + local.get $112 + i32.eqz + i32.or + if (result i32) + local.get $111 + local.get $112 + i32.eq + else + local.get $111 + local.get $112 + call $~lib/string/String.__eq + end + local.set $113 + local.get $112 + call $~lib/rt/pure/__release + local.get $111 + call $~lib/rt/pure/__release + local.get $113 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -16523,8 +20612,33 @@ i32.const 123 call $~lib/util/number/itoa32 local.tee $111 + call $~lib/rt/pure/__retain + local.set $112 i32.const 832 - call $~lib/string/String.__eq + call $~lib/rt/pure/__retain + local.set $113 + local.get $112 + i32.eqz + local.get $113 + i32.eqz + i32.or + if (result i32) + local.get $112 + local.get $113 + i32.eq + else + local.get $112 + local.get $113 + call $~lib/string/String.__eq + end + local.set $114 + local.get $113 + call $~lib/rt/pure/__release + local.get $112 + call $~lib/rt/pure/__release + local.get $114 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -16537,8 +20651,33 @@ i32.const -1000 call $~lib/util/number/itoa32 local.tee $112 + call $~lib/rt/pure/__retain + local.set $113 i32.const 13056 - call $~lib/string/String.__eq + call $~lib/rt/pure/__retain + local.set $114 + local.get $113 + i32.eqz + local.get $114 + i32.eqz + i32.or + if (result i32) + local.get $113 + local.get $114 + i32.eq + else + local.get $113 + local.get $114 + call $~lib/string/String.__eq + end + local.set $115 + local.get $114 + call $~lib/rt/pure/__release + local.get $113 + call $~lib/rt/pure/__release + local.get $115 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -16551,8 +20690,33 @@ i32.const 1234 call $~lib/util/number/itoa32 local.tee $113 + call $~lib/rt/pure/__retain + local.set $114 i32.const 13088 - call $~lib/string/String.__eq + call $~lib/rt/pure/__retain + local.set $115 + local.get $114 + i32.eqz + local.get $115 + i32.eqz + i32.or + if (result i32) + local.get $114 + local.get $115 + i32.eq + else + local.get $114 + local.get $115 + call $~lib/string/String.__eq + end + local.set $116 + local.get $115 + call $~lib/rt/pure/__release + local.get $114 + call $~lib/rt/pure/__release + local.get $116 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -16565,8 +20729,33 @@ i32.const 12345 call $~lib/util/number/itoa32 local.tee $114 + call $~lib/rt/pure/__retain + local.set $115 i32.const 13120 - call $~lib/string/String.__eq + call $~lib/rt/pure/__retain + local.set $116 + local.get $115 + i32.eqz + local.get $116 + i32.eqz + i32.or + if (result i32) + local.get $115 + local.get $116 + i32.eq + else + local.get $115 + local.get $116 + call $~lib/string/String.__eq + end + local.set $117 + local.get $116 + call $~lib/rt/pure/__release + local.get $115 + call $~lib/rt/pure/__release + local.get $117 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -16579,8 +20768,33 @@ i32.const 123456 call $~lib/util/number/itoa32 local.tee $115 + call $~lib/rt/pure/__retain + local.set $116 i32.const 13152 - call $~lib/string/String.__eq + call $~lib/rt/pure/__retain + local.set $117 + local.get $116 + i32.eqz + local.get $117 + i32.eqz + i32.or + if (result i32) + local.get $116 + local.get $117 + i32.eq + else + local.get $116 + local.get $117 + call $~lib/string/String.__eq + end + local.set $118 + local.get $117 + call $~lib/rt/pure/__release + local.get $116 + call $~lib/rt/pure/__release + local.get $118 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -16593,8 +20807,33 @@ i32.const 1111111 call $~lib/util/number/itoa32 local.tee $116 + call $~lib/rt/pure/__retain + local.set $117 i32.const 13184 - call $~lib/string/String.__eq + call $~lib/rt/pure/__retain + local.set $118 + local.get $117 + i32.eqz + local.get $118 + i32.eqz + i32.or + if (result i32) + local.get $117 + local.get $118 + i32.eq + else + local.get $117 + local.get $118 + call $~lib/string/String.__eq + end + local.set $119 + local.get $118 + call $~lib/rt/pure/__release + local.get $117 + call $~lib/rt/pure/__release + local.get $119 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -16607,8 +20846,33 @@ i32.const 1234567 call $~lib/util/number/itoa32 local.tee $117 + call $~lib/rt/pure/__retain + local.set $118 i32.const 13216 - call $~lib/string/String.__eq + call $~lib/rt/pure/__retain + local.set $119 + local.get $118 + i32.eqz + local.get $119 + i32.eqz + i32.or + if (result i32) + local.get $118 + local.get $119 + i32.eq + else + local.get $118 + local.get $119 + call $~lib/string/String.__eq + end + local.set $120 + local.get $119 + call $~lib/rt/pure/__release + local.get $118 + call $~lib/rt/pure/__release + local.get $120 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -16621,8 +20885,33 @@ i32.const 12345678 call $~lib/util/number/itoa32 local.tee $118 + call $~lib/rt/pure/__retain + local.set $119 i32.const 13248 - call $~lib/string/String.__eq + call $~lib/rt/pure/__retain + local.set $120 + local.get $119 + i32.eqz + local.get $120 + i32.eqz + i32.or + if (result i32) + local.get $119 + local.get $120 + i32.eq + else + local.get $119 + local.get $120 + call $~lib/string/String.__eq + end + local.set $121 + local.get $120 + call $~lib/rt/pure/__release + local.get $119 + call $~lib/rt/pure/__release + local.get $121 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -16632,11 +20921,36 @@ call $~lib/builtins/abort unreachable end - i32.const 123456789 - call $~lib/util/number/itoa32 - local.tee $119 - i32.const 13280 - call $~lib/string/String.__eq + i32.const 123456789 + call $~lib/util/number/itoa32 + local.tee $119 + call $~lib/rt/pure/__retain + local.set $120 + i32.const 13280 + call $~lib/rt/pure/__retain + local.set $121 + local.get $120 + i32.eqz + local.get $121 + i32.eqz + i32.or + if (result i32) + local.get $120 + local.get $121 + i32.eq + else + local.get $120 + local.get $121 + call $~lib/string/String.__eq + end + local.set $122 + local.get $121 + call $~lib/rt/pure/__release + local.get $120 + call $~lib/rt/pure/__release + local.get $122 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -16649,8 +20963,33 @@ i32.const 2147483646 call $~lib/util/number/itoa32 local.tee $120 + call $~lib/rt/pure/__retain + local.set $121 i32.const 13328 - call $~lib/string/String.__eq + call $~lib/rt/pure/__retain + local.set $122 + local.get $121 + i32.eqz + local.get $122 + i32.eqz + i32.or + if (result i32) + local.get $121 + local.get $122 + i32.eq + else + local.get $121 + local.get $122 + call $~lib/string/String.__eq + end + local.set $123 + local.get $122 + call $~lib/rt/pure/__release + local.get $121 + call $~lib/rt/pure/__release + local.get $123 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -16663,8 +21002,33 @@ i32.const 2147483647 call $~lib/util/number/itoa32 local.tee $121 + call $~lib/rt/pure/__retain + local.set $122 i32.const 13376 - call $~lib/string/String.__eq + call $~lib/rt/pure/__retain + local.set $123 + local.get $122 + i32.eqz + local.get $123 + i32.eqz + i32.or + if (result i32) + local.get $122 + local.get $123 + i32.eq + else + local.get $122 + local.get $123 + call $~lib/string/String.__eq + end + local.set $124 + local.get $123 + call $~lib/rt/pure/__release + local.get $122 + call $~lib/rt/pure/__release + local.get $124 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -16677,8 +21041,33 @@ i32.const -2147483648 call $~lib/util/number/itoa32 local.tee $122 + call $~lib/rt/pure/__retain + local.set $123 i32.const 13424 - call $~lib/string/String.__eq + call $~lib/rt/pure/__retain + local.set $124 + local.get $123 + i32.eqz + local.get $124 + i32.eqz + i32.or + if (result i32) + local.get $123 + local.get $124 + i32.eq + else + local.get $123 + local.get $124 + call $~lib/string/String.__eq + end + local.set $125 + local.get $124 + call $~lib/rt/pure/__release + local.get $123 + call $~lib/rt/pure/__release + local.get $125 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -16691,8 +21080,33 @@ i32.const -1 call $~lib/util/number/itoa32 local.tee $123 + call $~lib/rt/pure/__retain + local.set $124 i32.const 13472 - call $~lib/string/String.__eq + call $~lib/rt/pure/__retain + local.set $125 + local.get $124 + i32.eqz + local.get $125 + i32.eqz + i32.or + if (result i32) + local.get $124 + local.get $125 + i32.eq + else + local.get $124 + local.get $125 + call $~lib/string/String.__eq + end + local.set $126 + local.get $125 + call $~lib/rt/pure/__release + local.get $124 + call $~lib/rt/pure/__release + local.get $126 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -16705,8 +21119,33 @@ i32.const 0 call $~lib/util/number/utoa32 local.tee $124 + call $~lib/rt/pure/__retain + local.set $125 i32.const 1424 - call $~lib/string/String.__eq + call $~lib/rt/pure/__retain + local.set $126 + local.get $125 + i32.eqz + local.get $126 + i32.eqz + i32.or + if (result i32) + local.get $125 + local.get $126 + i32.eq + else + local.get $125 + local.get $126 + call $~lib/string/String.__eq + end + local.set $127 + local.get $126 + call $~lib/rt/pure/__release + local.get $125 + call $~lib/rt/pure/__release + local.get $127 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -16719,8 +21158,33 @@ i32.const 1000 call $~lib/util/number/utoa32 local.tee $125 + call $~lib/rt/pure/__retain + local.set $126 i32.const 13504 - call $~lib/string/String.__eq + call $~lib/rt/pure/__retain + local.set $127 + local.get $126 + i32.eqz + local.get $127 + i32.eqz + i32.or + if (result i32) + local.get $126 + local.get $127 + i32.eq + else + local.get $126 + local.get $127 + call $~lib/string/String.__eq + end + local.set $128 + local.get $127 + call $~lib/rt/pure/__release + local.get $126 + call $~lib/rt/pure/__release + local.get $128 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -16733,8 +21197,33 @@ i32.const 2147483647 call $~lib/util/number/utoa32 local.tee $126 + call $~lib/rt/pure/__retain + local.set $127 i32.const 13376 - call $~lib/string/String.__eq + call $~lib/rt/pure/__retain + local.set $128 + local.get $127 + i32.eqz + local.get $128 + i32.eqz + i32.or + if (result i32) + local.get $127 + local.get $128 + i32.eq + else + local.get $127 + local.get $128 + call $~lib/string/String.__eq + end + local.set $129 + local.get $128 + call $~lib/rt/pure/__release + local.get $127 + call $~lib/rt/pure/__release + local.get $129 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -16747,8 +21236,33 @@ i32.const -2147483648 call $~lib/util/number/utoa32 local.tee $127 + call $~lib/rt/pure/__retain + local.set $128 i32.const 13536 - call $~lib/string/String.__eq + call $~lib/rt/pure/__retain + local.set $129 + local.get $128 + i32.eqz + local.get $129 + i32.eqz + i32.or + if (result i32) + local.get $128 + local.get $129 + i32.eq + else + local.get $128 + local.get $129 + call $~lib/string/String.__eq + end + local.set $130 + local.get $129 + call $~lib/rt/pure/__release + local.get $128 + call $~lib/rt/pure/__release + local.get $130 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -16761,8 +21275,33 @@ i32.const -1 call $~lib/util/number/utoa32 local.tee $128 + call $~lib/rt/pure/__retain + local.set $129 i32.const 13584 - call $~lib/string/String.__eq + call $~lib/rt/pure/__retain + local.set $130 + local.get $129 + i32.eqz + local.get $130 + i32.eqz + i32.or + if (result i32) + local.get $129 + local.get $130 + i32.eq + else + local.get $129 + local.get $130 + call $~lib/string/String.__eq + end + local.set $131 + local.get $130 + call $~lib/rt/pure/__release + local.get $129 + call $~lib/rt/pure/__release + local.get $131 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -16775,8 +21314,33 @@ i64.const 0 call $~lib/util/number/utoa64 local.tee $129 + call $~lib/rt/pure/__retain + local.set $130 i32.const 1424 - call $~lib/string/String.__eq + call $~lib/rt/pure/__retain + local.set $131 + local.get $130 + i32.eqz + local.get $131 + i32.eqz + i32.or + if (result i32) + local.get $130 + local.get $131 + i32.eq + else + local.get $130 + local.get $131 + call $~lib/string/String.__eq + end + local.set $132 + local.get $131 + call $~lib/rt/pure/__release + local.get $130 + call $~lib/rt/pure/__release + local.get $132 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -16789,8 +21353,33 @@ i64.const 12 call $~lib/util/number/utoa64 local.tee $130 + call $~lib/rt/pure/__retain + local.set $131 i32.const 13024 - call $~lib/string/String.__eq + call $~lib/rt/pure/__retain + local.set $132 + local.get $131 + i32.eqz + local.get $132 + i32.eqz + i32.or + if (result i32) + local.get $131 + local.get $132 + i32.eq + else + local.get $131 + local.get $132 + call $~lib/string/String.__eq + end + local.set $133 + local.get $132 + call $~lib/rt/pure/__release + local.get $131 + call $~lib/rt/pure/__release + local.get $133 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -16803,8 +21392,33 @@ i64.const 123 call $~lib/util/number/utoa64 local.tee $131 + call $~lib/rt/pure/__retain + local.set $132 i32.const 832 - call $~lib/string/String.__eq + call $~lib/rt/pure/__retain + local.set $133 + local.get $132 + i32.eqz + local.get $133 + i32.eqz + i32.or + if (result i32) + local.get $132 + local.get $133 + i32.eq + else + local.get $132 + local.get $133 + call $~lib/string/String.__eq + end + local.set $134 + local.get $133 + call $~lib/rt/pure/__release + local.get $132 + call $~lib/rt/pure/__release + local.get $134 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -16817,8 +21431,33 @@ i64.const 1234 call $~lib/util/number/utoa64 local.tee $132 + call $~lib/rt/pure/__retain + local.set $133 i32.const 13088 - call $~lib/string/String.__eq + call $~lib/rt/pure/__retain + local.set $134 + local.get $133 + i32.eqz + local.get $134 + i32.eqz + i32.or + if (result i32) + local.get $133 + local.get $134 + i32.eq + else + local.get $133 + local.get $134 + call $~lib/string/String.__eq + end + local.set $135 + local.get $134 + call $~lib/rt/pure/__release + local.get $133 + call $~lib/rt/pure/__release + local.get $135 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -16831,8 +21470,33 @@ i64.const 12345 call $~lib/util/number/utoa64 local.tee $133 + call $~lib/rt/pure/__retain + local.set $134 i32.const 13120 - call $~lib/string/String.__eq + call $~lib/rt/pure/__retain + local.set $135 + local.get $134 + i32.eqz + local.get $135 + i32.eqz + i32.or + if (result i32) + local.get $134 + local.get $135 + i32.eq + else + local.get $134 + local.get $135 + call $~lib/string/String.__eq + end + local.set $136 + local.get $135 + call $~lib/rt/pure/__release + local.get $134 + call $~lib/rt/pure/__release + local.get $136 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -16845,8 +21509,33 @@ i64.const 123456 call $~lib/util/number/utoa64 local.tee $134 + call $~lib/rt/pure/__retain + local.set $135 i32.const 13152 - call $~lib/string/String.__eq + call $~lib/rt/pure/__retain + local.set $136 + local.get $135 + i32.eqz + local.get $136 + i32.eqz + i32.or + if (result i32) + local.get $135 + local.get $136 + i32.eq + else + local.get $135 + local.get $136 + call $~lib/string/String.__eq + end + local.set $137 + local.get $136 + call $~lib/rt/pure/__release + local.get $135 + call $~lib/rt/pure/__release + local.get $137 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -16859,8 +21548,33 @@ i64.const 1234567 call $~lib/util/number/utoa64 local.tee $135 + call $~lib/rt/pure/__retain + local.set $136 i32.const 13216 - call $~lib/string/String.__eq + call $~lib/rt/pure/__retain + local.set $137 + local.get $136 + i32.eqz + local.get $137 + i32.eqz + i32.or + if (result i32) + local.get $136 + local.get $137 + i32.eq + else + local.get $136 + local.get $137 + call $~lib/string/String.__eq + end + local.set $138 + local.get $137 + call $~lib/rt/pure/__release + local.get $136 + call $~lib/rt/pure/__release + local.get $138 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -16873,8 +21587,33 @@ i64.const 99999999 call $~lib/util/number/utoa64 local.tee $136 + call $~lib/rt/pure/__retain + local.set $137 i32.const 13632 - call $~lib/string/String.__eq + call $~lib/rt/pure/__retain + local.set $138 + local.get $137 + i32.eqz + local.get $138 + i32.eqz + i32.or + if (result i32) + local.get $137 + local.get $138 + i32.eq + else + local.get $137 + local.get $138 + call $~lib/string/String.__eq + end + local.set $139 + local.get $138 + call $~lib/rt/pure/__release + local.get $137 + call $~lib/rt/pure/__release + local.get $139 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -16887,8 +21626,33 @@ i64.const 100000000 call $~lib/util/number/utoa64 local.tee $137 + call $~lib/rt/pure/__retain + local.set $138 i32.const 13664 - call $~lib/string/String.__eq + call $~lib/rt/pure/__retain + local.set $139 + local.get $138 + i32.eqz + local.get $139 + i32.eqz + i32.or + if (result i32) + local.get $138 + local.get $139 + i32.eq + else + local.get $138 + local.get $139 + call $~lib/string/String.__eq + end + local.set $140 + local.get $139 + call $~lib/rt/pure/__release + local.get $138 + call $~lib/rt/pure/__release + local.get $140 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -16901,8 +21665,33 @@ i64.const 4294967295 call $~lib/util/number/utoa64 local.tee $138 + call $~lib/rt/pure/__retain + local.set $139 i32.const 13584 - call $~lib/string/String.__eq + call $~lib/rt/pure/__retain + local.set $140 + local.get $139 + i32.eqz + local.get $140 + i32.eqz + i32.or + if (result i32) + local.get $139 + local.get $140 + i32.eq + else + local.get $139 + local.get $140 + call $~lib/string/String.__eq + end + local.set $141 + local.get $140 + call $~lib/rt/pure/__release + local.get $139 + call $~lib/rt/pure/__release + local.get $141 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -16915,8 +21704,33 @@ i64.const 4294967297 call $~lib/util/number/utoa64 local.tee $139 + call $~lib/rt/pure/__retain + local.set $140 i32.const 13712 - call $~lib/string/String.__eq + call $~lib/rt/pure/__retain + local.set $141 + local.get $140 + i32.eqz + local.get $141 + i32.eqz + i32.or + if (result i32) + local.get $140 + local.get $141 + i32.eq + else + local.get $140 + local.get $141 + call $~lib/string/String.__eq + end + local.set $142 + local.get $141 + call $~lib/rt/pure/__release + local.get $140 + call $~lib/rt/pure/__release + local.get $142 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -16929,8 +21743,33 @@ i64.const 68719476735 call $~lib/util/number/utoa64 local.tee $140 + call $~lib/rt/pure/__retain + local.set $141 i32.const 13760 - call $~lib/string/String.__eq + call $~lib/rt/pure/__retain + local.set $142 + local.get $141 + i32.eqz + local.get $142 + i32.eqz + i32.or + if (result i32) + local.get $141 + local.get $142 + i32.eq + else + local.get $141 + local.get $142 + call $~lib/string/String.__eq + end + local.set $143 + local.get $142 + call $~lib/rt/pure/__release + local.get $141 + call $~lib/rt/pure/__release + local.get $143 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -16943,8 +21782,33 @@ i64.const 868719476735 call $~lib/util/number/utoa64 local.tee $141 + call $~lib/rt/pure/__retain + local.set $142 i32.const 13808 - call $~lib/string/String.__eq + call $~lib/rt/pure/__retain + local.set $143 + local.get $142 + i32.eqz + local.get $143 + i32.eqz + i32.or + if (result i32) + local.get $142 + local.get $143 + i32.eq + else + local.get $142 + local.get $143 + call $~lib/string/String.__eq + end + local.set $144 + local.get $143 + call $~lib/rt/pure/__release + local.get $142 + call $~lib/rt/pure/__release + local.get $144 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -16957,8 +21821,33 @@ i64.const 8687194767350 call $~lib/util/number/utoa64 local.tee $142 + call $~lib/rt/pure/__retain + local.set $143 i32.const 13856 - call $~lib/string/String.__eq + call $~lib/rt/pure/__retain + local.set $144 + local.get $143 + i32.eqz + local.get $144 + i32.eqz + i32.or + if (result i32) + local.get $143 + local.get $144 + i32.eq + else + local.get $143 + local.get $144 + call $~lib/string/String.__eq + end + local.set $145 + local.get $144 + call $~lib/rt/pure/__release + local.get $143 + call $~lib/rt/pure/__release + local.get $145 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -16971,8 +21860,33 @@ i64.const 86871947673501 call $~lib/util/number/utoa64 local.tee $143 + call $~lib/rt/pure/__retain + local.set $144 i32.const 13904 - call $~lib/string/String.__eq + call $~lib/rt/pure/__retain + local.set $145 + local.get $144 + i32.eqz + local.get $145 + i32.eqz + i32.or + if (result i32) + local.get $144 + local.get $145 + i32.eq + else + local.get $144 + local.get $145 + call $~lib/string/String.__eq + end + local.set $146 + local.get $145 + call $~lib/rt/pure/__release + local.get $144 + call $~lib/rt/pure/__release + local.get $146 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -16985,8 +21899,33 @@ i64.const 999868719476735 call $~lib/util/number/utoa64 local.tee $144 + call $~lib/rt/pure/__retain + local.set $145 i32.const 13952 - call $~lib/string/String.__eq + call $~lib/rt/pure/__retain + local.set $146 + local.get $145 + i32.eqz + local.get $146 + i32.eqz + i32.or + if (result i32) + local.get $145 + local.get $146 + i32.eq + else + local.get $145 + local.get $146 + call $~lib/string/String.__eq + end + local.set $147 + local.get $146 + call $~lib/rt/pure/__release + local.get $145 + call $~lib/rt/pure/__release + local.get $147 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -16999,8 +21938,33 @@ i64.const 9999868719476735 call $~lib/util/number/utoa64 local.tee $145 + call $~lib/rt/pure/__retain + local.set $146 i32.const 14000 - call $~lib/string/String.__eq + call $~lib/rt/pure/__retain + local.set $147 + local.get $146 + i32.eqz + local.get $147 + i32.eqz + i32.or + if (result i32) + local.get $146 + local.get $147 + i32.eq + else + local.get $146 + local.get $147 + call $~lib/string/String.__eq + end + local.set $148 + local.get $147 + call $~lib/rt/pure/__release + local.get $146 + call $~lib/rt/pure/__release + local.get $148 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -17013,8 +21977,33 @@ i64.const 19999868719476735 call $~lib/util/number/utoa64 local.tee $146 + call $~lib/rt/pure/__retain + local.set $147 i32.const 14048 - call $~lib/string/String.__eq + call $~lib/rt/pure/__retain + local.set $148 + local.get $147 + i32.eqz + local.get $148 + i32.eqz + i32.or + if (result i32) + local.get $147 + local.get $148 + i32.eq + else + local.get $147 + local.get $148 + call $~lib/string/String.__eq + end + local.set $149 + local.get $148 + call $~lib/rt/pure/__release + local.get $147 + call $~lib/rt/pure/__release + local.get $149 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -17027,8 +22016,33 @@ i64.const 129999868719476735 call $~lib/util/number/utoa64 local.tee $147 + call $~lib/rt/pure/__retain + local.set $148 i32.const 14112 - call $~lib/string/String.__eq + call $~lib/rt/pure/__retain + local.set $149 + local.get $148 + i32.eqz + local.get $149 + i32.eqz + i32.or + if (result i32) + local.get $148 + local.get $149 + i32.eq + else + local.get $148 + local.get $149 + call $~lib/string/String.__eq + end + local.set $150 + local.get $149 + call $~lib/rt/pure/__release + local.get $148 + call $~lib/rt/pure/__release + local.get $150 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -17041,8 +22055,33 @@ i64.const 1239999868719476735 call $~lib/util/number/utoa64 local.tee $148 + call $~lib/rt/pure/__retain + local.set $149 i32.const 14176 - call $~lib/string/String.__eq + call $~lib/rt/pure/__retain + local.set $150 + local.get $149 + i32.eqz + local.get $150 + i32.eqz + i32.or + if (result i32) + local.get $149 + local.get $150 + i32.eq + else + local.get $149 + local.get $150 + call $~lib/string/String.__eq + end + local.set $151 + local.get $150 + call $~lib/rt/pure/__release + local.get $149 + call $~lib/rt/pure/__release + local.get $151 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -17055,8 +22094,33 @@ i64.const -1 call $~lib/util/number/utoa64 local.tee $149 + call $~lib/rt/pure/__retain + local.set $150 i32.const 14240 - call $~lib/string/String.__eq + call $~lib/rt/pure/__retain + local.set $151 + local.get $150 + i32.eqz + local.get $151 + i32.eqz + i32.or + if (result i32) + local.get $150 + local.get $151 + i32.eq + else + local.get $150 + local.get $151 + call $~lib/string/String.__eq + end + local.set $152 + local.get $151 + call $~lib/rt/pure/__release + local.get $150 + call $~lib/rt/pure/__release + local.get $152 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -17069,8 +22133,33 @@ i64.const 0 call $~lib/util/number/itoa64 local.tee $150 + call $~lib/rt/pure/__retain + local.set $151 i32.const 1424 - call $~lib/string/String.__eq + call $~lib/rt/pure/__retain + local.set $152 + local.get $151 + i32.eqz + local.get $152 + i32.eqz + i32.or + if (result i32) + local.get $151 + local.get $152 + i32.eq + else + local.get $151 + local.get $152 + call $~lib/string/String.__eq + end + local.set $153 + local.get $152 + call $~lib/rt/pure/__release + local.get $151 + call $~lib/rt/pure/__release + local.get $153 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -17083,8 +22172,33 @@ i64.const -1234 call $~lib/util/number/itoa64 local.tee $151 + call $~lib/rt/pure/__retain + local.set $152 i32.const 14304 - call $~lib/string/String.__eq + call $~lib/rt/pure/__retain + local.set $153 + local.get $152 + i32.eqz + local.get $153 + i32.eqz + i32.or + if (result i32) + local.get $152 + local.get $153 + i32.eq + else + local.get $152 + local.get $153 + call $~lib/string/String.__eq + end + local.set $154 + local.get $153 + call $~lib/rt/pure/__release + local.get $152 + call $~lib/rt/pure/__release + local.get $154 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -17097,8 +22211,33 @@ i64.const 4294967295 call $~lib/util/number/itoa64 local.tee $152 + call $~lib/rt/pure/__retain + local.set $153 i32.const 13584 - call $~lib/string/String.__eq + call $~lib/rt/pure/__retain + local.set $154 + local.get $153 + i32.eqz + local.get $154 + i32.eqz + i32.or + if (result i32) + local.get $153 + local.get $154 + i32.eq + else + local.get $153 + local.get $154 + call $~lib/string/String.__eq + end + local.set $155 + local.get $154 + call $~lib/rt/pure/__release + local.get $153 + call $~lib/rt/pure/__release + local.get $155 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -17111,8 +22250,33 @@ i64.const 4294967297 call $~lib/util/number/itoa64 local.tee $153 + call $~lib/rt/pure/__retain + local.set $154 i32.const 13712 - call $~lib/string/String.__eq + call $~lib/rt/pure/__retain + local.set $155 + local.get $154 + i32.eqz + local.get $155 + i32.eqz + i32.or + if (result i32) + local.get $154 + local.get $155 + i32.eq + else + local.get $154 + local.get $155 + call $~lib/string/String.__eq + end + local.set $156 + local.get $155 + call $~lib/rt/pure/__release + local.get $154 + call $~lib/rt/pure/__release + local.get $156 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -17125,8 +22289,33 @@ i64.const -4294967295 call $~lib/util/number/itoa64 local.tee $154 + call $~lib/rt/pure/__retain + local.set $155 i32.const 14336 - call $~lib/string/String.__eq + call $~lib/rt/pure/__retain + local.set $156 + local.get $155 + i32.eqz + local.get $156 + i32.eqz + i32.or + if (result i32) + local.get $155 + local.get $156 + i32.eq + else + local.get $155 + local.get $156 + call $~lib/string/String.__eq + end + local.set $157 + local.get $156 + call $~lib/rt/pure/__release + local.get $155 + call $~lib/rt/pure/__release + local.get $157 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -17139,8 +22328,33 @@ i64.const 68719476735 call $~lib/util/number/itoa64 local.tee $155 + call $~lib/rt/pure/__retain + local.set $156 i32.const 13760 - call $~lib/string/String.__eq + call $~lib/rt/pure/__retain + local.set $157 + local.get $156 + i32.eqz + local.get $157 + i32.eqz + i32.or + if (result i32) + local.get $156 + local.get $157 + i32.eq + else + local.get $156 + local.get $157 + call $~lib/string/String.__eq + end + local.set $158 + local.get $157 + call $~lib/rt/pure/__release + local.get $156 + call $~lib/rt/pure/__release + local.get $158 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -17153,8 +22367,33 @@ i64.const -68719476735 call $~lib/util/number/itoa64 local.tee $156 + call $~lib/rt/pure/__retain + local.set $157 i32.const 14384 - call $~lib/string/String.__eq + call $~lib/rt/pure/__retain + local.set $158 + local.get $157 + i32.eqz + local.get $158 + i32.eqz + i32.or + if (result i32) + local.get $157 + local.get $158 + i32.eq + else + local.get $157 + local.get $158 + call $~lib/string/String.__eq + end + local.set $159 + local.get $158 + call $~lib/rt/pure/__release + local.get $157 + call $~lib/rt/pure/__release + local.get $159 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -17167,8 +22406,33 @@ i64.const -868719476735 call $~lib/util/number/itoa64 local.tee $157 + call $~lib/rt/pure/__retain + local.set $158 i32.const 14432 - call $~lib/string/String.__eq + call $~lib/rt/pure/__retain + local.set $159 + local.get $158 + i32.eqz + local.get $159 + i32.eqz + i32.or + if (result i32) + local.get $158 + local.get $159 + i32.eq + else + local.get $158 + local.get $159 + call $~lib/string/String.__eq + end + local.set $160 + local.get $159 + call $~lib/rt/pure/__release + local.get $158 + call $~lib/rt/pure/__release + local.get $160 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -17181,8 +22445,33 @@ i64.const -999868719476735 call $~lib/util/number/itoa64 local.tee $158 + call $~lib/rt/pure/__retain + local.set $159 i32.const 14480 - call $~lib/string/String.__eq + call $~lib/rt/pure/__retain + local.set $160 + local.get $159 + i32.eqz + local.get $160 + i32.eqz + i32.or + if (result i32) + local.get $159 + local.get $160 + i32.eq + else + local.get $159 + local.get $160 + call $~lib/string/String.__eq + end + local.set $161 + local.get $160 + call $~lib/rt/pure/__release + local.get $159 + call $~lib/rt/pure/__release + local.get $161 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -17192,11 +22481,36 @@ call $~lib/builtins/abort unreachable end - i64.const -19999868719476735 - call $~lib/util/number/itoa64 - local.tee $159 - i32.const 14528 - call $~lib/string/String.__eq + i64.const -19999868719476735 + call $~lib/util/number/itoa64 + local.tee $159 + call $~lib/rt/pure/__retain + local.set $160 + i32.const 14528 + call $~lib/rt/pure/__retain + local.set $161 + local.get $160 + i32.eqz + local.get $161 + i32.eqz + i32.or + if (result i32) + local.get $160 + local.get $161 + i32.eq + else + local.get $160 + local.get $161 + call $~lib/string/String.__eq + end + local.set $162 + local.get $161 + call $~lib/rt/pure/__release + local.get $160 + call $~lib/rt/pure/__release + local.get $162 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -17209,8 +22523,33 @@ i64.const 9223372036854775807 call $~lib/util/number/itoa64 local.tee $160 + call $~lib/rt/pure/__retain + local.set $161 i32.const 14592 - call $~lib/string/String.__eq + call $~lib/rt/pure/__retain + local.set $162 + local.get $161 + i32.eqz + local.get $162 + i32.eqz + i32.or + if (result i32) + local.get $161 + local.get $162 + i32.eq + else + local.get $161 + local.get $162 + call $~lib/string/String.__eq + end + local.set $163 + local.get $162 + call $~lib/rt/pure/__release + local.get $161 + call $~lib/rt/pure/__release + local.get $163 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -17223,8 +22562,33 @@ i64.const -9223372036854775808 call $~lib/util/number/itoa64 local.tee $161 + call $~lib/rt/pure/__retain + local.set $162 i32.const 14656 - call $~lib/string/String.__eq + call $~lib/rt/pure/__retain + local.set $163 + local.get $162 + i32.eqz + local.get $163 + i32.eqz + i32.or + if (result i32) + local.get $162 + local.get $163 + i32.eq + else + local.get $162 + local.get $163 + call $~lib/string/String.__eq + end + local.set $164 + local.get $163 + call $~lib/rt/pure/__release + local.get $162 + call $~lib/rt/pure/__release + local.get $164 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -17237,8 +22601,33 @@ f64.const 0 call $~lib/util/number/dtoa local.tee $162 + call $~lib/rt/pure/__retain + local.set $163 i32.const 14720 - call $~lib/string/String.__eq + call $~lib/rt/pure/__retain + local.set $164 + local.get $163 + i32.eqz + local.get $164 + i32.eqz + i32.or + if (result i32) + local.get $163 + local.get $164 + i32.eq + else + local.get $163 + local.get $164 + call $~lib/string/String.__eq + end + local.set $165 + local.get $164 + call $~lib/rt/pure/__release + local.get $163 + call $~lib/rt/pure/__release + local.get $165 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -17251,8 +22640,33 @@ f64.const -0 call $~lib/util/number/dtoa local.tee $163 + call $~lib/rt/pure/__retain + local.set $164 i32.const 14720 - call $~lib/string/String.__eq + call $~lib/rt/pure/__retain + local.set $165 + local.get $164 + i32.eqz + local.get $165 + i32.eqz + i32.or + if (result i32) + local.get $164 + local.get $165 + i32.eq + else + local.get $164 + local.get $165 + call $~lib/string/String.__eq + end + local.set $166 + local.get $165 + call $~lib/rt/pure/__release + local.get $164 + call $~lib/rt/pure/__release + local.get $166 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -17265,8 +22679,33 @@ f64.const nan:0x8000000000000 call $~lib/util/number/dtoa local.tee $164 + call $~lib/rt/pure/__retain + local.set $165 i32.const 4832 - call $~lib/string/String.__eq + call $~lib/rt/pure/__retain + local.set $166 + local.get $165 + i32.eqz + local.get $166 + i32.eqz + i32.or + if (result i32) + local.get $165 + local.get $166 + i32.eq + else + local.get $165 + local.get $166 + call $~lib/string/String.__eq + end + local.set $167 + local.get $166 + call $~lib/rt/pure/__release + local.get $165 + call $~lib/rt/pure/__release + local.get $167 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -17279,8 +22718,33 @@ f64.const inf call $~lib/util/number/dtoa local.tee $165 + call $~lib/rt/pure/__retain + local.set $166 i32.const 14752 - call $~lib/string/String.__eq + call $~lib/rt/pure/__retain + local.set $167 + local.get $166 + i32.eqz + local.get $167 + i32.eqz + i32.or + if (result i32) + local.get $166 + local.get $167 + i32.eq + else + local.get $166 + local.get $167 + call $~lib/string/String.__eq + end + local.set $168 + local.get $167 + call $~lib/rt/pure/__release + local.get $166 + call $~lib/rt/pure/__release + local.get $168 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -17293,8 +22757,33 @@ f64.const -inf call $~lib/util/number/dtoa local.tee $166 + call $~lib/rt/pure/__retain + local.set $167 i32.const 6048 - call $~lib/string/String.__eq + call $~lib/rt/pure/__retain + local.set $168 + local.get $167 + i32.eqz + local.get $168 + i32.eqz + i32.or + if (result i32) + local.get $167 + local.get $168 + i32.eq + else + local.get $167 + local.get $168 + call $~lib/string/String.__eq + end + local.set $169 + local.get $168 + call $~lib/rt/pure/__release + local.get $167 + call $~lib/rt/pure/__release + local.get $169 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -17307,8 +22796,33 @@ f64.const 2.220446049250313e-16 call $~lib/util/number/dtoa local.tee $167 + call $~lib/rt/pure/__retain + local.set $168 i32.const 5344 - call $~lib/string/String.__eq + call $~lib/rt/pure/__retain + local.set $169 + local.get $168 + i32.eqz + local.get $169 + i32.eqz + i32.or + if (result i32) + local.get $168 + local.get $169 + i32.eq + else + local.get $168 + local.get $169 + call $~lib/string/String.__eq + end + local.set $170 + local.get $169 + call $~lib/rt/pure/__release + local.get $168 + call $~lib/rt/pure/__release + local.get $170 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -17321,8 +22835,33 @@ f64.const -2.220446049250313e-16 call $~lib/util/number/dtoa local.tee $168 + call $~lib/rt/pure/__retain + local.set $169 i32.const 15760 - call $~lib/string/String.__eq + call $~lib/rt/pure/__retain + local.set $170 + local.get $169 + i32.eqz + local.get $170 + i32.eqz + i32.or + if (result i32) + local.get $169 + local.get $170 + i32.eq + else + local.get $169 + local.get $170 + call $~lib/string/String.__eq + end + local.set $171 + local.get $170 + call $~lib/rt/pure/__release + local.get $169 + call $~lib/rt/pure/__release + local.get $171 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -17335,8 +22874,33 @@ f64.const 1797693134862315708145274e284 call $~lib/util/number/dtoa local.tee $169 + call $~lib/rt/pure/__retain + local.set $170 i32.const 5408 - call $~lib/string/String.__eq + call $~lib/rt/pure/__retain + local.set $171 + local.get $170 + i32.eqz + local.get $171 + i32.eqz + i32.or + if (result i32) + local.get $170 + local.get $171 + i32.eq + else + local.get $170 + local.get $171 + call $~lib/string/String.__eq + end + local.set $172 + local.get $171 + call $~lib/rt/pure/__release + local.get $170 + call $~lib/rt/pure/__release + local.get $172 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -17349,8 +22913,33 @@ f64.const -1797693134862315708145274e284 call $~lib/util/number/dtoa local.tee $170 + call $~lib/rt/pure/__retain + local.set $171 i32.const 15824 - call $~lib/string/String.__eq + call $~lib/rt/pure/__retain + local.set $172 + local.get $171 + i32.eqz + local.get $172 + i32.eqz + i32.or + if (result i32) + local.get $171 + local.get $172 + i32.eq + else + local.get $171 + local.get $172 + call $~lib/string/String.__eq + end + local.set $173 + local.get $172 + call $~lib/rt/pure/__release + local.get $171 + call $~lib/rt/pure/__release + local.get $173 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -17363,8 +22952,33 @@ f64.const 4185580496821356722454785e274 call $~lib/util/number/dtoa local.tee $171 + call $~lib/rt/pure/__retain + local.set $172 i32.const 15888 - call $~lib/string/String.__eq + call $~lib/rt/pure/__retain + local.set $173 + local.get $172 + i32.eqz + local.get $173 + i32.eqz + i32.or + if (result i32) + local.get $172 + local.get $173 + i32.eq + else + local.get $172 + local.get $173 + call $~lib/string/String.__eq + end + local.set $174 + local.get $173 + call $~lib/rt/pure/__release + local.get $172 + call $~lib/rt/pure/__release + local.get $174 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -17374,11 +22988,36 @@ call $~lib/builtins/abort unreachable end - f64.const 2.2250738585072014e-308 - call $~lib/util/number/dtoa - local.tee $172 - i32.const 15952 - call $~lib/string/String.__eq + f64.const 2.2250738585072014e-308 + call $~lib/util/number/dtoa + local.tee $172 + call $~lib/rt/pure/__retain + local.set $173 + i32.const 15952 + call $~lib/rt/pure/__retain + local.set $174 + local.get $173 + i32.eqz + local.get $174 + i32.eqz + i32.or + if (result i32) + local.get $173 + local.get $174 + i32.eq + else + local.get $173 + local.get $174 + call $~lib/string/String.__eq + end + local.set $175 + local.get $174 + call $~lib/rt/pure/__release + local.get $173 + call $~lib/rt/pure/__release + local.get $175 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -17391,8 +23030,33 @@ f64.const 4.940656e-318 call $~lib/util/number/dtoa local.tee $173 + call $~lib/rt/pure/__retain + local.set $174 i32.const 16016 - call $~lib/string/String.__eq + call $~lib/rt/pure/__retain + local.set $175 + local.get $174 + i32.eqz + local.get $175 + i32.eqz + i32.or + if (result i32) + local.get $174 + local.get $175 + i32.eq + else + local.get $174 + local.get $175 + call $~lib/string/String.__eq + end + local.set $176 + local.get $175 + call $~lib/rt/pure/__release + local.get $174 + call $~lib/rt/pure/__release + local.get $176 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -17405,8 +23069,33 @@ f64.const 9060801153433600 call $~lib/util/number/dtoa local.tee $174 + call $~lib/rt/pure/__retain + local.set $175 i32.const 16064 - call $~lib/string/String.__eq + call $~lib/rt/pure/__retain + local.set $176 + local.get $175 + i32.eqz + local.get $176 + i32.eqz + i32.or + if (result i32) + local.get $175 + local.get $176 + i32.eq + else + local.get $175 + local.get $176 + call $~lib/string/String.__eq + end + local.set $177 + local.get $176 + call $~lib/rt/pure/__release + local.get $175 + call $~lib/rt/pure/__release + local.get $177 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -17419,8 +23108,33 @@ f64.const 4708356024711512064 call $~lib/util/number/dtoa local.tee $175 + call $~lib/rt/pure/__retain + local.set $176 i32.const 16128 - call $~lib/string/String.__eq + call $~lib/rt/pure/__retain + local.set $177 + local.get $176 + i32.eqz + local.get $177 + i32.eqz + i32.or + if (result i32) + local.get $176 + local.get $177 + i32.eq + else + local.get $176 + local.get $177 + call $~lib/string/String.__eq + end + local.set $178 + local.get $177 + call $~lib/rt/pure/__release + local.get $176 + call $~lib/rt/pure/__release + local.get $178 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -17433,8 +23147,33 @@ f64.const 9409340012568248320 call $~lib/util/number/dtoa local.tee $176 + call $~lib/rt/pure/__retain + local.set $177 i32.const 16192 - call $~lib/string/String.__eq + call $~lib/rt/pure/__retain + local.set $178 + local.get $177 + i32.eqz + local.get $178 + i32.eqz + i32.or + if (result i32) + local.get $177 + local.get $178 + i32.eq + else + local.get $177 + local.get $178 + call $~lib/string/String.__eq + end + local.set $179 + local.get $178 + call $~lib/rt/pure/__release + local.get $177 + call $~lib/rt/pure/__release + local.get $179 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -17447,8 +23186,33 @@ f64.const 5e-324 call $~lib/util/number/dtoa local.tee $177 + call $~lib/rt/pure/__retain + local.set $178 i32.const 5472 - call $~lib/string/String.__eq + call $~lib/rt/pure/__retain + local.set $179 + local.get $178 + i32.eqz + local.get $179 + i32.eqz + i32.or + if (result i32) + local.get $178 + local.get $179 + i32.eq + else + local.get $178 + local.get $179 + call $~lib/string/String.__eq + end + local.set $180 + local.get $179 + call $~lib/rt/pure/__release + local.get $178 + call $~lib/rt/pure/__release + local.get $180 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -17461,8 +23225,33 @@ f64.const 1 call $~lib/util/number/dtoa local.tee $178 + call $~lib/rt/pure/__retain + local.set $179 i32.const 16256 - call $~lib/string/String.__eq + call $~lib/rt/pure/__retain + local.set $180 + local.get $179 + i32.eqz + local.get $180 + i32.eqz + i32.or + if (result i32) + local.get $179 + local.get $180 + i32.eq + else + local.get $179 + local.get $180 + call $~lib/string/String.__eq + end + local.set $181 + local.get $180 + call $~lib/rt/pure/__release + local.get $179 + call $~lib/rt/pure/__release + local.get $181 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -17475,8 +23264,33 @@ f64.const 0.1 call $~lib/util/number/dtoa local.tee $179 + call $~lib/rt/pure/__retain + local.set $180 i32.const 2480 - call $~lib/string/String.__eq + call $~lib/rt/pure/__retain + local.set $181 + local.get $180 + i32.eqz + local.get $181 + i32.eqz + i32.or + if (result i32) + local.get $180 + local.get $181 + i32.eq + else + local.get $180 + local.get $181 + call $~lib/string/String.__eq + end + local.set $182 + local.get $181 + call $~lib/rt/pure/__release + local.get $180 + call $~lib/rt/pure/__release + local.get $182 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -17489,8 +23303,33 @@ f64.const -1 call $~lib/util/number/dtoa local.tee $180 + call $~lib/rt/pure/__retain + local.set $181 i32.const 16288 - call $~lib/string/String.__eq + call $~lib/rt/pure/__retain + local.set $182 + local.get $181 + i32.eqz + local.get $182 + i32.eqz + i32.or + if (result i32) + local.get $181 + local.get $182 + i32.eq + else + local.get $181 + local.get $182 + call $~lib/string/String.__eq + end + local.set $183 + local.get $182 + call $~lib/rt/pure/__release + local.get $181 + call $~lib/rt/pure/__release + local.get $183 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -17503,8 +23342,33 @@ f64.const -0.1 call $~lib/util/number/dtoa local.tee $181 + call $~lib/rt/pure/__retain + local.set $182 i32.const 16320 - call $~lib/string/String.__eq + call $~lib/rt/pure/__retain + local.set $183 + local.get $182 + i32.eqz + local.get $183 + i32.eqz + i32.or + if (result i32) + local.get $182 + local.get $183 + i32.eq + else + local.get $182 + local.get $183 + call $~lib/string/String.__eq + end + local.set $184 + local.get $183 + call $~lib/rt/pure/__release + local.get $182 + call $~lib/rt/pure/__release + local.get $184 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -17517,8 +23381,33 @@ f64.const 1e6 call $~lib/util/number/dtoa local.tee $182 + call $~lib/rt/pure/__retain + local.set $183 i32.const 16352 - call $~lib/string/String.__eq + call $~lib/rt/pure/__retain + local.set $184 + local.get $183 + i32.eqz + local.get $184 + i32.eqz + i32.or + if (result i32) + local.get $183 + local.get $184 + i32.eq + else + local.get $183 + local.get $184 + call $~lib/string/String.__eq + end + local.set $185 + local.get $184 + call $~lib/rt/pure/__release + local.get $183 + call $~lib/rt/pure/__release + local.get $185 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -17531,8 +23420,33 @@ f64.const 1e-06 call $~lib/util/number/dtoa local.tee $183 + call $~lib/rt/pure/__retain + local.set $184 i32.const 16400 - call $~lib/string/String.__eq + call $~lib/rt/pure/__retain + local.set $185 + local.get $184 + i32.eqz + local.get $185 + i32.eqz + i32.or + if (result i32) + local.get $184 + local.get $185 + i32.eq + else + local.get $184 + local.get $185 + call $~lib/string/String.__eq + end + local.set $186 + local.get $185 + call $~lib/rt/pure/__release + local.get $184 + call $~lib/rt/pure/__release + local.get $186 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -17545,8 +23459,33 @@ f64.const -1e6 call $~lib/util/number/dtoa local.tee $184 + call $~lib/rt/pure/__retain + local.set $185 i32.const 16432 - call $~lib/string/String.__eq + call $~lib/rt/pure/__retain + local.set $186 + local.get $185 + i32.eqz + local.get $186 + i32.eqz + i32.or + if (result i32) + local.get $185 + local.get $186 + i32.eq + else + local.get $185 + local.get $186 + call $~lib/string/String.__eq + end + local.set $187 + local.get $186 + call $~lib/rt/pure/__release + local.get $185 + call $~lib/rt/pure/__release + local.get $187 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -17556,11 +23495,36 @@ call $~lib/builtins/abort unreachable end - f64.const -1e-06 - call $~lib/util/number/dtoa - local.tee $185 - i32.const 16480 - call $~lib/string/String.__eq + f64.const -1e-06 + call $~lib/util/number/dtoa + local.tee $185 + call $~lib/rt/pure/__retain + local.set $186 + i32.const 16480 + call $~lib/rt/pure/__retain + local.set $187 + local.get $186 + i32.eqz + local.get $187 + i32.eqz + i32.or + if (result i32) + local.get $186 + local.get $187 + i32.eq + else + local.get $186 + local.get $187 + call $~lib/string/String.__eq + end + local.set $188 + local.get $187 + call $~lib/rt/pure/__release + local.get $186 + call $~lib/rt/pure/__release + local.get $188 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -17573,8 +23537,33 @@ f64.const 1e7 call $~lib/util/number/dtoa local.tee $186 + call $~lib/rt/pure/__retain + local.set $187 i32.const 16528 - call $~lib/string/String.__eq + call $~lib/rt/pure/__retain + local.set $188 + local.get $187 + i32.eqz + local.get $188 + i32.eqz + i32.or + if (result i32) + local.get $187 + local.get $188 + i32.eq + else + local.get $187 + local.get $188 + call $~lib/string/String.__eq + end + local.set $189 + local.get $188 + call $~lib/rt/pure/__release + local.get $187 + call $~lib/rt/pure/__release + local.get $189 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -17587,8 +23576,33 @@ f64.const 1e-07 call $~lib/util/number/dtoa local.tee $187 + call $~lib/rt/pure/__retain + local.set $188 i32.const 16576 - call $~lib/string/String.__eq + call $~lib/rt/pure/__retain + local.set $189 + local.get $188 + i32.eqz + local.get $189 + i32.eqz + i32.or + if (result i32) + local.get $188 + local.get $189 + i32.eq + else + local.get $188 + local.get $189 + call $~lib/string/String.__eq + end + local.set $190 + local.get $189 + call $~lib/rt/pure/__release + local.get $188 + call $~lib/rt/pure/__release + local.get $190 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -17601,8 +23615,33 @@ f64.const 1.e+308 call $~lib/util/number/dtoa local.tee $188 + call $~lib/rt/pure/__retain + local.set $189 i32.const 2704 - call $~lib/string/String.__eq + call $~lib/rt/pure/__retain + local.set $190 + local.get $189 + i32.eqz + local.get $190 + i32.eqz + i32.or + if (result i32) + local.get $189 + local.get $190 + i32.eq + else + local.get $189 + local.get $190 + call $~lib/string/String.__eq + end + local.set $191 + local.get $190 + call $~lib/rt/pure/__release + local.get $189 + call $~lib/rt/pure/__release + local.get $191 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -17615,8 +23654,33 @@ f64.const -1.e+308 call $~lib/util/number/dtoa local.tee $189 + call $~lib/rt/pure/__retain + local.set $190 i32.const 16608 - call $~lib/string/String.__eq + call $~lib/rt/pure/__retain + local.set $191 + local.get $190 + i32.eqz + local.get $191 + i32.eqz + i32.or + if (result i32) + local.get $190 + local.get $191 + i32.eq + else + local.get $190 + local.get $191 + call $~lib/string/String.__eq + end + local.set $192 + local.get $191 + call $~lib/rt/pure/__release + local.get $190 + call $~lib/rt/pure/__release + local.get $192 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -17629,8 +23693,33 @@ f64.const inf call $~lib/util/number/dtoa local.tee $190 + call $~lib/rt/pure/__retain + local.set $191 i32.const 14752 - call $~lib/string/String.__eq + call $~lib/rt/pure/__retain + local.set $192 + local.get $191 + i32.eqz + local.get $192 + i32.eqz + i32.or + if (result i32) + local.get $191 + local.get $192 + i32.eq + else + local.get $191 + local.get $192 + call $~lib/string/String.__eq + end + local.set $193 + local.get $192 + call $~lib/rt/pure/__release + local.get $191 + call $~lib/rt/pure/__release + local.get $193 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -17643,8 +23732,33 @@ f64.const -inf call $~lib/util/number/dtoa local.tee $191 + call $~lib/rt/pure/__retain + local.set $192 i32.const 6048 - call $~lib/string/String.__eq + call $~lib/rt/pure/__retain + local.set $193 + local.get $192 + i32.eqz + local.get $193 + i32.eqz + i32.or + if (result i32) + local.get $192 + local.get $193 + i32.eq + else + local.get $192 + local.get $193 + call $~lib/string/String.__eq + end + local.set $194 + local.get $193 + call $~lib/rt/pure/__release + local.get $192 + call $~lib/rt/pure/__release + local.get $194 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -17657,8 +23771,33 @@ f64.const 1e-308 call $~lib/util/number/dtoa local.tee $192 + call $~lib/rt/pure/__retain + local.set $193 i32.const 16640 - call $~lib/string/String.__eq + call $~lib/rt/pure/__retain + local.set $194 + local.get $193 + i32.eqz + local.get $194 + i32.eqz + i32.or + if (result i32) + local.get $193 + local.get $194 + i32.eq + else + local.get $193 + local.get $194 + call $~lib/string/String.__eq + end + local.set $195 + local.get $194 + call $~lib/rt/pure/__release + local.get $193 + call $~lib/rt/pure/__release + local.get $195 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -17671,8 +23810,33 @@ f64.const -1e-308 call $~lib/util/number/dtoa local.tee $193 + call $~lib/rt/pure/__retain + local.set $194 i32.const 16672 - call $~lib/string/String.__eq + call $~lib/rt/pure/__retain + local.set $195 + local.get $194 + i32.eqz + local.get $195 + i32.eqz + i32.or + if (result i32) + local.get $194 + local.get $195 + i32.eq + else + local.get $194 + local.get $195 + call $~lib/string/String.__eq + end + local.set $196 + local.get $195 + call $~lib/rt/pure/__release + local.get $194 + call $~lib/rt/pure/__release + local.get $196 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -17685,8 +23849,33 @@ f64.const 1e-323 call $~lib/util/number/dtoa local.tee $194 + call $~lib/rt/pure/__retain + local.set $195 i32.const 16704 - call $~lib/string/String.__eq + call $~lib/rt/pure/__retain + local.set $196 + local.get $195 + i32.eqz + local.get $196 + i32.eqz + i32.or + if (result i32) + local.get $195 + local.get $196 + i32.eq + else + local.get $195 + local.get $196 + call $~lib/string/String.__eq + end + local.set $197 + local.get $196 + call $~lib/rt/pure/__release + local.get $195 + call $~lib/rt/pure/__release + local.get $197 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -17699,8 +23888,33 @@ f64.const -1e-323 call $~lib/util/number/dtoa local.tee $195 + call $~lib/rt/pure/__retain + local.set $196 i32.const 16736 - call $~lib/string/String.__eq + call $~lib/rt/pure/__retain + local.set $197 + local.get $196 + i32.eqz + local.get $197 + i32.eqz + i32.or + if (result i32) + local.get $196 + local.get $197 + i32.eq + else + local.get $196 + local.get $197 + call $~lib/string/String.__eq + end + local.set $198 + local.get $197 + call $~lib/rt/pure/__release + local.get $196 + call $~lib/rt/pure/__release + local.get $198 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -17713,8 +23927,33 @@ f64.const 0 call $~lib/util/number/dtoa local.tee $196 + call $~lib/rt/pure/__retain + local.set $197 i32.const 14720 - call $~lib/string/String.__eq + call $~lib/rt/pure/__retain + local.set $198 + local.get $197 + i32.eqz + local.get $198 + i32.eqz + i32.or + if (result i32) + local.get $197 + local.get $198 + i32.eq + else + local.get $197 + local.get $198 + call $~lib/string/String.__eq + end + local.set $199 + local.get $198 + call $~lib/rt/pure/__release + local.get $197 + call $~lib/rt/pure/__release + local.get $199 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -17727,8 +23966,33 @@ f64.const 4294967272 call $~lib/util/number/dtoa local.tee $197 + call $~lib/rt/pure/__retain + local.set $198 i32.const 16768 - call $~lib/string/String.__eq + call $~lib/rt/pure/__retain + local.set $199 + local.get $198 + i32.eqz + local.get $199 + i32.eqz + i32.or + if (result i32) + local.get $198 + local.get $199 + i32.eq + else + local.get $198 + local.get $199 + call $~lib/string/String.__eq + end + local.set $200 + local.get $199 + call $~lib/rt/pure/__release + local.get $198 + call $~lib/rt/pure/__release + local.get $200 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -17738,11 +24002,36 @@ call $~lib/builtins/abort unreachable end - f64.const 1.2312145673456234e-08 - call $~lib/util/number/dtoa - local.tee $198 - i32.const 16816 - call $~lib/string/String.__eq + f64.const 1.2312145673456234e-08 + call $~lib/util/number/dtoa + local.tee $198 + call $~lib/rt/pure/__retain + local.set $199 + i32.const 16816 + call $~lib/rt/pure/__retain + local.set $200 + local.get $199 + i32.eqz + local.get $200 + i32.eqz + i32.or + if (result i32) + local.get $199 + local.get $200 + i32.eq + else + local.get $199 + local.get $200 + call $~lib/string/String.__eq + end + local.set $201 + local.get $200 + call $~lib/rt/pure/__release + local.get $199 + call $~lib/rt/pure/__release + local.get $201 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -17755,8 +24044,33 @@ f64.const 555555555.5555556 call $~lib/util/number/dtoa local.tee $199 + call $~lib/rt/pure/__retain + local.set $200 i32.const 16880 - call $~lib/string/String.__eq + call $~lib/rt/pure/__retain + local.set $201 + local.get $200 + i32.eqz + local.get $201 + i32.eqz + i32.or + if (result i32) + local.get $200 + local.get $201 + i32.eq + else + local.get $200 + local.get $201 + call $~lib/string/String.__eq + end + local.set $202 + local.get $201 + call $~lib/rt/pure/__release + local.get $200 + call $~lib/rt/pure/__release + local.get $202 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -17769,8 +24083,33 @@ f64.const 0.9999999999999999 call $~lib/util/number/dtoa local.tee $200 + call $~lib/rt/pure/__retain + local.set $201 i32.const 16944 - call $~lib/string/String.__eq + call $~lib/rt/pure/__retain + local.set $202 + local.get $201 + i32.eqz + local.get $202 + i32.eqz + i32.or + if (result i32) + local.get $201 + local.get $202 + i32.eq + else + local.get $201 + local.get $202 + call $~lib/string/String.__eq + end + local.set $203 + local.get $202 + call $~lib/rt/pure/__release + local.get $201 + call $~lib/rt/pure/__release + local.get $203 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -17783,8 +24122,33 @@ f64.const 1 call $~lib/util/number/dtoa local.tee $201 + call $~lib/rt/pure/__retain + local.set $202 i32.const 16256 - call $~lib/string/String.__eq + call $~lib/rt/pure/__retain + local.set $203 + local.get $202 + i32.eqz + local.get $203 + i32.eqz + i32.or + if (result i32) + local.get $202 + local.get $203 + i32.eq + else + local.get $202 + local.get $203 + call $~lib/string/String.__eq + end + local.set $204 + local.get $203 + call $~lib/rt/pure/__release + local.get $202 + call $~lib/rt/pure/__release + local.get $204 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -17797,8 +24161,33 @@ f64.const 12.34 call $~lib/util/number/dtoa local.tee $202 + call $~lib/rt/pure/__retain + local.set $203 i32.const 17008 - call $~lib/string/String.__eq + call $~lib/rt/pure/__retain + local.set $204 + local.get $203 + i32.eqz + local.get $204 + i32.eqz + i32.or + if (result i32) + local.get $203 + local.get $204 + i32.eq + else + local.get $203 + local.get $204 + call $~lib/string/String.__eq + end + local.set $205 + local.get $204 + call $~lib/rt/pure/__release + local.get $203 + call $~lib/rt/pure/__release + local.get $205 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -17811,8 +24200,33 @@ f64.const 0.3333333333333333 call $~lib/util/number/dtoa local.tee $203 + call $~lib/rt/pure/__retain + local.set $204 i32.const 17040 - call $~lib/string/String.__eq + call $~lib/rt/pure/__retain + local.set $205 + local.get $204 + i32.eqz + local.get $205 + i32.eqz + i32.or + if (result i32) + local.get $204 + local.get $205 + i32.eq + else + local.get $204 + local.get $205 + call $~lib/string/String.__eq + end + local.set $206 + local.get $205 + call $~lib/rt/pure/__release + local.get $204 + call $~lib/rt/pure/__release + local.get $206 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -17825,8 +24239,33 @@ f64.const 1234e17 call $~lib/util/number/dtoa local.tee $204 + call $~lib/rt/pure/__retain + local.set $205 i32.const 17104 - call $~lib/string/String.__eq + call $~lib/rt/pure/__retain + local.set $206 + local.get $205 + i32.eqz + local.get $206 + i32.eqz + i32.or + if (result i32) + local.get $205 + local.get $206 + i32.eq + else + local.get $205 + local.get $206 + call $~lib/string/String.__eq + end + local.set $207 + local.get $206 + call $~lib/rt/pure/__release + local.get $205 + call $~lib/rt/pure/__release + local.get $207 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -17839,8 +24278,33 @@ f64.const 1234e18 call $~lib/util/number/dtoa local.tee $205 + call $~lib/rt/pure/__retain + local.set $206 i32.const 17168 - call $~lib/string/String.__eq + call $~lib/rt/pure/__retain + local.set $207 + local.get $206 + i32.eqz + local.get $207 + i32.eqz + i32.or + if (result i32) + local.get $206 + local.get $207 + i32.eq + else + local.get $206 + local.get $207 + call $~lib/string/String.__eq + end + local.set $208 + local.get $207 + call $~lib/rt/pure/__release + local.get $206 + call $~lib/rt/pure/__release + local.get $208 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -17853,8 +24317,33 @@ f64.const 2.71828 call $~lib/util/number/dtoa local.tee $206 + call $~lib/rt/pure/__retain + local.set $207 i32.const 17216 - call $~lib/string/String.__eq + call $~lib/rt/pure/__retain + local.set $208 + local.get $207 + i32.eqz + local.get $208 + i32.eqz + i32.or + if (result i32) + local.get $207 + local.get $208 + i32.eq + else + local.get $207 + local.get $208 + call $~lib/string/String.__eq + end + local.set $209 + local.get $208 + call $~lib/rt/pure/__release + local.get $207 + call $~lib/rt/pure/__release + local.get $209 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -17867,8 +24356,33 @@ f64.const 0.0271828 call $~lib/util/number/dtoa local.tee $207 + call $~lib/rt/pure/__retain + local.set $208 i32.const 17248 - call $~lib/string/String.__eq + call $~lib/rt/pure/__retain + local.set $209 + local.get $208 + i32.eqz + local.get $209 + i32.eqz + i32.or + if (result i32) + local.get $208 + local.get $209 + i32.eq + else + local.get $208 + local.get $209 + call $~lib/string/String.__eq + end + local.set $210 + local.get $209 + call $~lib/rt/pure/__release + local.get $208 + call $~lib/rt/pure/__release + local.get $210 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -17881,8 +24395,33 @@ f64.const 271.828 call $~lib/util/number/dtoa local.tee $208 + call $~lib/rt/pure/__retain + local.set $209 i32.const 17296 - call $~lib/string/String.__eq + call $~lib/rt/pure/__retain + local.set $210 + local.get $209 + i32.eqz + local.get $210 + i32.eqz + i32.or + if (result i32) + local.get $209 + local.get $210 + i32.eq + else + local.get $209 + local.get $210 + call $~lib/string/String.__eq + end + local.set $211 + local.get $210 + call $~lib/rt/pure/__release + local.get $209 + call $~lib/rt/pure/__release + local.get $211 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -17895,8 +24434,33 @@ f64.const 1.1e+128 call $~lib/util/number/dtoa local.tee $209 + call $~lib/rt/pure/__retain + local.set $210 i32.const 17328 - call $~lib/string/String.__eq + call $~lib/rt/pure/__retain + local.set $211 + local.get $210 + i32.eqz + local.get $211 + i32.eqz + i32.or + if (result i32) + local.get $210 + local.get $211 + i32.eq + else + local.get $210 + local.get $211 + call $~lib/string/String.__eq + end + local.set $212 + local.get $211 + call $~lib/rt/pure/__release + local.get $210 + call $~lib/rt/pure/__release + local.get $212 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -17909,8 +24473,33 @@ f64.const 1.1e-64 call $~lib/util/number/dtoa local.tee $210 + call $~lib/rt/pure/__retain + local.set $211 i32.const 17360 - call $~lib/string/String.__eq + call $~lib/rt/pure/__retain + local.set $212 + local.get $211 + i32.eqz + local.get $212 + i32.eqz + i32.or + if (result i32) + local.get $211 + local.get $212 + i32.eq + else + local.get $211 + local.get $212 + call $~lib/string/String.__eq + end + local.set $213 + local.get $212 + call $~lib/rt/pure/__release + local.get $211 + call $~lib/rt/pure/__release + local.get $213 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -17923,8 +24512,33 @@ f64.const 0.000035689 call $~lib/util/number/dtoa local.tee $211 + call $~lib/rt/pure/__retain + local.set $212 i32.const 17392 - call $~lib/string/String.__eq + call $~lib/rt/pure/__retain + local.set $213 + local.get $212 + i32.eqz + local.get $213 + i32.eqz + i32.or + if (result i32) + local.get $212 + local.get $213 + i32.eq + else + local.get $212 + local.get $213 + call $~lib/string/String.__eq + end + local.set $214 + local.get $213 + call $~lib/rt/pure/__release + local.get $212 + call $~lib/rt/pure/__release + local.get $214 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -18000,12 +24614,12 @@ call $~lib/rt/pure/__release local.get $31 call $~lib/rt/pure/__release + local.get $32 + call $~lib/rt/pure/__release local.get $33 call $~lib/rt/pure/__release local.get $34 call $~lib/rt/pure/__release - local.get $35 - call $~lib/rt/pure/__release local.get $36 call $~lib/rt/pure/__release local.get $37 @@ -18359,11 +24973,11 @@ local.get $211 call $~lib/rt/pure/__release ) - (func $std/string/getString (; 93 ;) (result i32) + (func $std/string/getString (; 91 ;) (result i32) global.get $std/string/str call $~lib/rt/pure/__retain ) - (func $~start (; 94 ;) + (func $~start (; 92 ;) global.get $~started if return @@ -18373,7 +24987,7 @@ end call $start:std/string ) - (func $~lib/rt/pure/decrement (; 95 ;) (param $0 i32) + (func $~lib/rt/pure/decrement (; 93 ;) (param $0 i32) (local $1 i32) (local $2 i32) local.get $0 @@ -18450,10 +25064,10 @@ i32.store offset=4 end ) - (func $~lib/rt/pure/__collect (; 96 ;) + (func $~lib/rt/pure/__collect (; 94 ;) return ) - (func $~lib/rt/pure/__visit (; 97 ;) (param $0 i32) (param $1 i32) + (func $~lib/rt/pure/__visit (; 95 ;) (param $0 i32) (param $1 i32) local.get $0 global.get $~lib/heap/__heap_base i32.lt_u @@ -18477,10 +25091,10 @@ i32.sub call $~lib/rt/pure/decrement ) - (func $~lib/staticarray/StaticArray#__visit_impl (; 98 ;) (param $0 i32) (param $1 i32) + (func $~lib/staticarray/StaticArray#__visit_impl (; 96 ;) (param $0 i32) (param $1 i32) nop ) - (func $~lib/array/Array<~lib/string/String>#__visit_impl (; 99 ;) (param $0 i32) (param $1 i32) + (func $~lib/array/Array<~lib/string/String>#__visit_impl (; 97 ;) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -18523,22 +25137,22 @@ local.get $1 call $~lib/rt/pure/__visit ) - (func $~lib/array/Array#__visit_impl (; 100 ;) (param $0 i32) (param $1 i32) + (func $~lib/array/Array#__visit_impl (; 98 ;) (param $0 i32) (param $1 i32) local.get $0 i32.load local.get $1 call $~lib/rt/pure/__visit ) - (func $~lib/staticarray/StaticArray#__visit_impl (; 101 ;) (param $0 i32) (param $1 i32) + (func $~lib/staticarray/StaticArray#__visit_impl (; 99 ;) (param $0 i32) (param $1 i32) nop ) - (func $~lib/staticarray/StaticArray#__visit_impl (; 102 ;) (param $0 i32) (param $1 i32) + (func $~lib/staticarray/StaticArray#__visit_impl (; 100 ;) (param $0 i32) (param $1 i32) nop ) - (func $~lib/staticarray/StaticArray#__visit_impl (; 103 ;) (param $0 i32) (param $1 i32) + (func $~lib/staticarray/StaticArray#__visit_impl (; 101 ;) (param $0 i32) (param $1 i32) nop ) - (func $~lib/rt/__visit_members (; 104 ;) (param $0 i32) (param $1 i32) + (func $~lib/rt/__visit_members (; 102 ;) (param $0 i32) (param $1 i32) (local $2 i32) block $switch$1$default block $switch$1$case$10 diff --git a/tests/compiler/std/symbol.optimized.wat b/tests/compiler/std/symbol.optimized.wat index 7880fad6c6..8be63cb58c 100644 --- a/tests/compiler/std/symbol.optimized.wat +++ b/tests/compiler/std/symbol.optimized.wat @@ -486,34 +486,20 @@ (func $~lib/string/String.__eq (; 9 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) local.get $0 + call $~lib/string/String#get:length + local.tee $2 local.get $1 - i32.eq + call $~lib/string/String#get:length + i32.ne if - i32.const 1 - return - end - block $folding-inner0 - local.get $1 - i32.eqz - i32.const 1 - local.get $0 - select - br_if $folding-inner0 - local.get $0 - call $~lib/string/String#get:length - local.tee $2 - local.get $1 - call $~lib/string/String#get:length - i32.ne - br_if $folding-inner0 - local.get $0 - local.get $1 - local.get $2 - call $~lib/util/string/compareImpl - i32.eqz + i32.const 0 return end - i32.const 0 + local.get $0 + local.get $1 + local.get $2 + call $~lib/util/string/compareImpl + i32.eqz ) (func $~lib/map/Map<~lib/string/String,usize>#find (; 10 ;) (param $0 i32) (param $1 i32) (result i32) local.get $0 @@ -526,31 +512,39 @@ i32.shl i32.add i32.load - local.set $0 + local.set $1 loop $while-continue|0 - local.get $0 + local.get $1 if - local.get $0 + local.get $1 i32.load offset=8 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $0 + local.get $1 i32.load - i32.const 1040 - call $~lib/string/String.__eq + local.tee $0 + if (result i32) + local.get $0 + i32.const 1040 + call $~lib/string/String.__eq + else + local.get $0 + i32.const 1040 + i32.eq + end end if - local.get $0 + local.get $1 return end - local.get $0 + local.get $1 i32.load offset=8 i32.const -2 i32.and - local.set $0 + local.set $1 br $while-continue|0 end end @@ -1465,6 +1459,7 @@ ) (func $start:std/symbol (; 24 ;) (local $0 i32) + (local $1 i32) call $~lib/symbol/Symbol global.set $std/symbol/sym1 call $~lib/symbol/Symbol @@ -1552,8 +1547,16 @@ local.get $0 global.set $std/symbol/key4 global.get $std/symbol/key3 - i32.const 1040 - call $~lib/string/String.__eq + local.tee $0 + if (result i32) + local.get $0 + i32.const 1040 + call $~lib/string/String.__eq + else + local.get $0 + i32.const 1040 + i32.eq + end i32.eqz if i32.const 0 @@ -1564,8 +1567,21 @@ unreachable end global.get $std/symbol/key3 + local.tee $0 + i32.eqz global.get $std/symbol/key4 - call $~lib/string/String.__eq + local.tee $1 + i32.eqz + i32.or + if (result i32) + local.get $0 + local.get $1 + i32.eq + else + local.get $0 + local.get $1 + call $~lib/string/String.__eq + end i32.eqz if i32.const 0 @@ -1577,8 +1593,18 @@ end call $~lib/symbol/Symbol call $~lib/symbol/_Symbol#toString - i32.const 1904 - call $~lib/string/String.__eq + local.tee $1 + local.set $0 + local.get $1 + if (result i32) + local.get $0 + i32.const 1904 + call $~lib/string/String.__eq + else + local.get $0 + i32.const 1904 + i32.eq + end i32.eqz if i32.const 0 @@ -1590,8 +1616,18 @@ end global.get $std/symbol/sym3 call $~lib/symbol/_Symbol#toString - i32.const 1936 - call $~lib/string/String.__eq + local.tee $1 + local.set $0 + local.get $1 + if (result i32) + local.get $0 + i32.const 1936 + call $~lib/string/String.__eq + else + local.get $0 + i32.const 1936 + i32.eq + end i32.eqz if i32.const 0 @@ -1607,8 +1643,18 @@ global.set $std/symbol/isConcatSpreadable i32.const 1 call $~lib/symbol/_Symbol#toString - i32.const 1984 - call $~lib/string/String.__eq + local.tee $1 + local.set $0 + local.get $1 + if (result i32) + local.get $0 + i32.const 1984 + call $~lib/string/String.__eq + else + local.get $0 + i32.const 1984 + i32.eq + end i32.eqz if i32.const 0 @@ -1620,8 +1666,18 @@ end global.get $std/symbol/isConcatSpreadable call $~lib/symbol/_Symbol#toString - i32.const 2048 - call $~lib/string/String.__eq + local.tee $1 + local.set $0 + local.get $1 + if (result i32) + local.get $0 + i32.const 2048 + call $~lib/string/String.__eq + else + local.get $0 + i32.const 2048 + i32.eq + end i32.eqz if i32.const 0 diff --git a/tests/compiler/std/symbol.untouched.wat b/tests/compiler/std/symbol.untouched.wat index 7f3444876b..b1d63336a3 100644 --- a/tests/compiler/std/symbol.untouched.wat +++ b/tests/compiler/std/symbol.untouched.wat @@ -760,71 +760,42 @@ call $~lib/rt/stub/__retain local.set $1 local.get $0 - local.get $1 - i32.eq - if - i32.const 1 - local.set $2 - local.get $0 - call $~lib/rt/stub/__release - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - return - end - local.get $0 - i32.eqz - if (result i32) - i32.const 1 - else - local.get $1 - i32.eqz - end - if - i32.const 0 - local.set $2 - local.get $0 - call $~lib/rt/stub/__release - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - return - end - local.get $0 call $~lib/string/String#get:length - local.set $3 - local.get $3 + local.set $2 + local.get $2 local.get $1 call $~lib/string/String#get:length i32.ne if i32.const 0 - local.set $2 + local.set $3 local.get $0 call $~lib/rt/stub/__release local.get $1 call $~lib/rt/stub/__release - local.get $2 + local.get $3 return end local.get $0 i32.const 0 local.get $1 i32.const 0 - local.get $3 + local.get $2 call $~lib/util/string/compareImpl i32.eqz - local.set $2 + local.set $3 local.get $0 call $~lib/rt/stub/__release local.get $1 call $~lib/rt/stub/__release - local.get $2 + local.get $3 ) (func $~lib/map/Map<~lib/string/String,usize>#find (; 16 ;) (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.get $1 call $~lib/rt/stub/__retain local.set $1 @@ -852,17 +823,40 @@ if (result i32) local.get $3 i32.load + call $~lib/rt/stub/__retain + local.set $6 local.get $1 - call $~lib/string/String.__eq + call $~lib/rt/stub/__retain + local.set $5 + local.get $6 + i32.eqz + local.get $5 + i32.eqz + i32.or + if (result i32) + local.get $6 + local.get $5 + i32.eq + else + local.get $6 + local.get $5 + call $~lib/string/String.__eq + end + local.set $7 + local.get $5 + call $~lib/rt/stub/__release + local.get $6 + call $~lib/rt/stub/__release + local.get $7 else i32.const 0 end if local.get $3 - local.set $5 + local.set $6 local.get $1 call $~lib/rt/stub/__release - local.get $5 + local.get $6 return end local.get $3 @@ -3254,6 +3248,9 @@ (local $1 i32) (local $2 i32) (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) i32.const 32 call $~lib/symbol/Symbol global.set $std/symbol/sym1 @@ -3361,8 +3358,33 @@ call $~lib/rt/stub/__retain global.set $std/symbol/key4 global.get $std/symbol/key3 + call $~lib/rt/stub/__retain + local.set $1 i32.const 32 - call $~lib/string/String.__eq + call $~lib/rt/stub/__retain + local.set $0 + local.get $1 + i32.eqz + local.get $0 + i32.eqz + i32.or + if (result i32) + local.get $1 + local.get $0 + i32.eq + else + local.get $1 + local.get $0 + call $~lib/string/String.__eq + end + local.set $2 + local.get $0 + call $~lib/rt/stub/__release + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -3373,8 +3395,33 @@ unreachable end global.get $std/symbol/key3 + call $~lib/rt/stub/__retain + local.set $0 global.get $std/symbol/key4 - call $~lib/string/String.__eq + call $~lib/rt/stub/__retain + local.set $2 + local.get $0 + i32.eqz + local.get $2 + i32.eqz + i32.or + if (result i32) + local.get $0 + local.get $2 + i32.eq + else + local.get $0 + local.get $2 + call $~lib/string/String.__eq + end + local.set $1 + local.get $2 + call $~lib/rt/stub/__release + local.get $0 + call $~lib/rt/stub/__release + local.get $1 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -3388,8 +3435,33 @@ call $~lib/symbol/Symbol call $~lib/symbol/_Symbol#toString local.tee $0 + call $~lib/rt/stub/__retain + local.set $2 i32.const 896 - call $~lib/string/String.__eq + call $~lib/rt/stub/__retain + local.set $1 + local.get $2 + i32.eqz + local.get $1 + i32.eqz + i32.or + if (result i32) + local.get $2 + local.get $1 + i32.eq + else + local.get $2 + local.get $1 + call $~lib/string/String.__eq + end + local.set $3 + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release + local.get $3 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -3401,9 +3473,34 @@ end global.get $std/symbol/sym3 call $~lib/symbol/_Symbol#toString - local.tee $1 + local.tee $2 + call $~lib/rt/stub/__retain + local.set $1 i32.const 928 - call $~lib/string/String.__eq + call $~lib/rt/stub/__retain + local.set $3 + local.get $1 + i32.eqz + local.get $3 + i32.eqz + i32.or + if (result i32) + local.get $1 + local.get $3 + i32.eq + else + local.get $1 + local.get $3 + call $~lib/string/String.__eq + end + local.set $4 + local.get $3 + call $~lib/rt/stub/__release + local.get $1 + call $~lib/rt/stub/__release + local.get $4 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -3419,9 +3516,34 @@ global.set $std/symbol/isConcatSpreadable global.get $std/symbol/hasInstance call $~lib/symbol/_Symbol#toString - local.tee $2 + local.tee $1 + call $~lib/rt/stub/__retain + local.set $3 i32.const 976 - call $~lib/string/String.__eq + call $~lib/rt/stub/__retain + local.set $4 + local.get $3 + i32.eqz + local.get $4 + i32.eqz + i32.or + if (result i32) + local.get $3 + local.get $4 + i32.eq + else + local.get $3 + local.get $4 + call $~lib/string/String.__eq + end + local.set $5 + local.get $4 + call $~lib/rt/stub/__release + local.get $3 + call $~lib/rt/stub/__release + local.get $5 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -3434,8 +3556,33 @@ global.get $std/symbol/isConcatSpreadable call $~lib/symbol/_Symbol#toString local.tee $3 + call $~lib/rt/stub/__retain + local.set $4 i32.const 1040 - call $~lib/string/String.__eq + call $~lib/rt/stub/__retain + local.set $5 + local.get $4 + i32.eqz + local.get $5 + i32.eqz + i32.or + if (result i32) + local.get $4 + local.get $5 + i32.eq + else + local.get $4 + local.get $5 + call $~lib/string/String.__eq + end + local.set $6 + local.get $5 + call $~lib/rt/stub/__release + local.get $4 + call $~lib/rt/stub/__release + local.get $6 + i32.const 0 + i32.ne i32.eqz if i32.const 0 diff --git a/tests/compiler/std/typedarray.optimized.wat b/tests/compiler/std/typedarray.optimized.wat index b0028ac155..bdf8dae8b9 100644 --- a/tests/compiler/std/typedarray.optimized.wat +++ b/tests/compiler/std/typedarray.optimized.wat @@ -1,6 +1,6 @@ (module - (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) (type $none_=>_none (func)) + (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) (type $i32_=>_i32 (func (param i32) (result i32))) (type $i32_i32_=>_none (func (param i32 i32))) @@ -16662,38 +16662,102 @@ (func $~lib/string/String.__eq (; 246 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) local.get $0 + call $~lib/string/String#get:length + local.tee $2 local.get $1 - i32.eq + call $~lib/string/String#get:length + i32.ne if - i32.const 1 + i32.const 0 return end + local.get $0 local.get $1 + local.get $2 + call $~lib/util/string/compareImpl i32.eqz + ) + (func $std/typedarray/testArrayJoinAndToString<~lib/typedarray/Int8Array,i8> (; 247 ;) + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + i32.const 5 + call $~lib/typedarray/Int8Array#constructor + local.tee $0 + local.get $0 + i32.const 0 i32.const 1 + call $~lib/typedarray/Int8Array#__set local.get $0 - select + i32.const 1 + i32.const 2 + call $~lib/typedarray/Int8Array#__set + local.get $0 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Int8Array#__set + local.get $0 + i32.const 3 + i32.const 4 + call $~lib/typedarray/Int8Array#__set + local.get $0 + i32.const 4 + i32.const 5 + call $~lib/typedarray/Int8Array#__set + local.get $0 + call $~lib/typedarray/Int8Array#join + local.tee $3 + local.set $1 + local.get $3 + if (result i32) + local.get $1 + i32.const 3008 + call $~lib/string/String.__eq + else + local.get $1 + i32.const 3008 + i32.eq + end + i32.eqz if i32.const 0 - return + i32.const 1312 + i32.const 629 + i32.const 4 + call $~lib/builtins/abort + unreachable end - local.get $0 - call $~lib/string/String#get:length - local.tee $2 + call $~lib/typedarray/Int8Array#join + local.tee $1 + local.set $2 local.get $1 - call $~lib/string/String#get:length - i32.ne + if (result i32) + local.get $2 + i32.const 3008 + call $~lib/string/String.__eq + else + local.get $2 + i32.const 3008 + i32.eq + end + i32.eqz if i32.const 0 - return + i32.const 1312 + i32.const 630 + i32.const 4 + call $~lib/builtins/abort + unreachable end - local.get $0 + local.get $3 + call $~lib/rt/pure/__release local.get $1 - local.get $2 - call $~lib/util/string/compareImpl - i32.eqz + call $~lib/rt/pure/__release + local.get $0 + call $~lib/rt/pure/__release ) - (func $~lib/util/number/utoa32 (; 247 ;) (param $0 i32) (result i32) + (func $~lib/util/number/utoa32 (; 248 ;) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) local.get $0 @@ -16716,7 +16780,7 @@ local.get $2 call $~lib/rt/pure/__retain ) - (func $~lib/util/number/itoa_stream (; 248 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/util/number/itoa_stream (; 249 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 local.get $1 i32.const 1 @@ -16751,7 +16815,7 @@ call $~lib/util/number/utoa_simple local.get $1 ) - (func $~lib/util/string/joinIntegerArray (; 249 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/util/string/joinIntegerArray (; 250 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -16852,14 +16916,174 @@ end local.get $1 ) - (func $~lib/typedarray/Uint8Array#join (; 250 ;) (param $0 i32) (result i32) + (func $~lib/typedarray/Uint8Array#join (; 251 ;) (param $0 i32) (result i32) local.get $0 i32.load offset=4 local.get $0 i32.load offset=8 call $~lib/util/string/joinIntegerArray ) - (func $~lib/util/number/itoa_stream (; 251 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayJoinAndToString<~lib/typedarray/Uint8Array,u8> (; 252 ;) + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + i32.const 5 + call $~lib/typedarray/Uint8Array#constructor + local.tee $0 + local.get $0 + i32.const 0 + i32.const 1 + call $~lib/typedarray/Uint8Array#__set + local.get $0 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Uint8Array#__set + local.get $0 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Uint8Array#__set + local.get $0 + i32.const 3 + i32.const 4 + call $~lib/typedarray/Uint8Array#__set + local.get $0 + i32.const 4 + i32.const 5 + call $~lib/typedarray/Uint8Array#__set + local.get $0 + call $~lib/typedarray/Uint8Array#join + local.tee $3 + local.set $1 + local.get $3 + if (result i32) + local.get $1 + i32.const 3008 + call $~lib/string/String.__eq + else + local.get $1 + i32.const 3008 + i32.eq + end + i32.eqz + if + i32.const 0 + i32.const 1312 + i32.const 629 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + call $~lib/typedarray/Uint8Array#join + local.tee $1 + local.set $2 + local.get $1 + if (result i32) + local.get $2 + i32.const 3008 + call $~lib/string/String.__eq + else + local.get $2 + i32.const 3008 + i32.eq + end + i32.eqz + if + i32.const 0 + i32.const 1312 + i32.const 630 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $3 + call $~lib/rt/pure/__release + local.get $1 + call $~lib/rt/pure/__release + local.get $0 + call $~lib/rt/pure/__release + ) + (func $std/typedarray/testArrayJoinAndToString<~lib/typedarray/Uint8ClampedArray,u8> (; 253 ;) + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + i32.const 5 + call $~lib/typedarray/Uint8ClampedArray#constructor + local.tee $0 + local.get $0 + i32.const 0 + i32.const 1 + call $~lib/typedarray/Uint8ClampedArray#__set + local.get $0 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Uint8ClampedArray#__set + local.get $0 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Uint8ClampedArray#__set + local.get $0 + i32.const 3 + i32.const 4 + call $~lib/typedarray/Uint8ClampedArray#__set + local.get $0 + i32.const 4 + i32.const 5 + call $~lib/typedarray/Uint8ClampedArray#__set + local.get $0 + call $~lib/typedarray/Uint8Array#join + local.tee $3 + local.set $1 + local.get $3 + if (result i32) + local.get $1 + i32.const 3008 + call $~lib/string/String.__eq + else + local.get $1 + i32.const 3008 + i32.eq + end + i32.eqz + if + i32.const 0 + i32.const 1312 + i32.const 629 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + call $~lib/typedarray/Uint8Array#join + local.tee $1 + local.set $2 + local.get $1 + if (result i32) + local.get $2 + i32.const 3008 + call $~lib/string/String.__eq + else + local.get $2 + i32.const 3008 + i32.eq + end + i32.eqz + if + i32.const 0 + i32.const 1312 + i32.const 630 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $3 + call $~lib/rt/pure/__release + local.get $1 + call $~lib/rt/pure/__release + local.get $0 + call $~lib/rt/pure/__release + ) + (func $~lib/util/number/itoa_stream (; 254 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 local.get $1 i32.const 1 @@ -16925,7 +17149,7 @@ call $~lib/util/number/utoa_simple local.get $1 ) - (func $~lib/util/string/joinIntegerArray (; 252 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/util/string/joinIntegerArray (; 255 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -17030,7 +17254,7 @@ end local.get $1 ) - (func $~lib/typedarray/Int16Array#join (; 253 ;) (param $0 i32) (result i32) + (func $~lib/typedarray/Int16Array#join (; 256 ;) (param $0 i32) (result i32) local.get $0 i32.load offset=4 local.get $0 @@ -17039,42 +17263,122 @@ i32.shr_u call $~lib/util/string/joinIntegerArray ) - (func $~lib/util/number/itoa_stream (; 254 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayJoinAndToString<~lib/typedarray/Int16Array,i16> (; 257 ;) + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + i32.const 5 + call $~lib/typedarray/Int16Array#constructor + local.tee $0 local.get $0 - local.get $1 + i32.const 0 i32.const 1 - i32.shl - i32.add - local.set $0 - local.get $2 - i32.const 65535 - i32.and - i32.const 10 - i32.lt_u - if - local.get $0 - local.get $2 - i32.const 65535 - i32.and - i32.const 48 - i32.or - i32.store16 - i32.const 1 - return - end - local.get $2 - i32.const 65535 - i32.and - local.tee $2 - call $~lib/util/number/decimalCount32 - local.set $1 + call $~lib/typedarray/Int16Array#__set + local.get $0 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Int16Array#__set + local.get $0 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Int16Array#__set + local.get $0 + i32.const 3 + i32.const 4 + call $~lib/typedarray/Int16Array#__set + local.get $0 + i32.const 4 + i32.const 5 + call $~lib/typedarray/Int16Array#__set + local.get $0 + call $~lib/typedarray/Int16Array#join + local.tee $3 + local.set $1 + local.get $3 + if (result i32) + local.get $1 + i32.const 3008 + call $~lib/string/String.__eq + else + local.get $1 + i32.const 3008 + i32.eq + end + i32.eqz + if + i32.const 0 + i32.const 1312 + i32.const 629 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + call $~lib/typedarray/Int16Array#join + local.tee $1 + local.set $2 + local.get $1 + if (result i32) + local.get $2 + i32.const 3008 + call $~lib/string/String.__eq + else + local.get $2 + i32.const 3008 + i32.eq + end + i32.eqz + if + i32.const 0 + i32.const 1312 + i32.const 630 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $3 + call $~lib/rt/pure/__release + local.get $1 + call $~lib/rt/pure/__release + local.get $0 + call $~lib/rt/pure/__release + ) + (func $~lib/util/number/itoa_stream (; 258 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + local.get $0 + local.get $1 + i32.const 1 + i32.shl + i32.add + local.set $0 + local.get $2 + i32.const 65535 + i32.and + i32.const 10 + i32.lt_u + if + local.get $0 + local.get $2 + i32.const 65535 + i32.and + i32.const 48 + i32.or + i32.store16 + i32.const 1 + return + end + local.get $2 + i32.const 65535 + i32.and + local.tee $2 + call $~lib/util/number/decimalCount32 + local.set $1 local.get $0 local.get $2 local.get $1 call $~lib/util/number/utoa_simple local.get $1 ) - (func $~lib/util/string/joinIntegerArray (; 255 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/util/string/joinIntegerArray (; 259 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -17179,7 +17483,7 @@ end local.get $1 ) - (func $~lib/typedarray/Uint16Array#join (; 256 ;) (param $0 i32) (result i32) + (func $~lib/typedarray/Uint16Array#join (; 260 ;) (param $0 i32) (result i32) local.get $0 i32.load offset=4 local.get $0 @@ -17188,7 +17492,87 @@ i32.shr_u call $~lib/util/string/joinIntegerArray ) - (func $~lib/util/number/itoa_stream (; 257 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayJoinAndToString<~lib/typedarray/Uint16Array,u16> (; 261 ;) + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + i32.const 5 + call $~lib/typedarray/Uint16Array#constructor + local.tee $0 + local.get $0 + i32.const 0 + i32.const 1 + call $~lib/typedarray/Uint16Array#__set + local.get $0 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Uint16Array#__set + local.get $0 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Uint16Array#__set + local.get $0 + i32.const 3 + i32.const 4 + call $~lib/typedarray/Uint16Array#__set + local.get $0 + i32.const 4 + i32.const 5 + call $~lib/typedarray/Uint16Array#__set + local.get $0 + call $~lib/typedarray/Uint16Array#join + local.tee $3 + local.set $1 + local.get $3 + if (result i32) + local.get $1 + i32.const 3008 + call $~lib/string/String.__eq + else + local.get $1 + i32.const 3008 + i32.eq + end + i32.eqz + if + i32.const 0 + i32.const 1312 + i32.const 629 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + call $~lib/typedarray/Uint16Array#join + local.tee $1 + local.set $2 + local.get $1 + if (result i32) + local.get $2 + i32.const 3008 + call $~lib/string/String.__eq + else + local.get $2 + i32.const 3008 + i32.eq + end + i32.eqz + if + i32.const 0 + i32.const 1312 + i32.const 630 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $3 + call $~lib/rt/pure/__release + local.get $1 + call $~lib/rt/pure/__release + local.get $0 + call $~lib/rt/pure/__release + ) + (func $~lib/util/number/itoa_stream (; 262 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 local.get $1 i32.const 1 @@ -17236,7 +17620,7 @@ call $~lib/util/number/utoa_simple local.get $0 ) - (func $~lib/util/string/joinIntegerArray (; 258 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/util/string/joinIntegerArray (; 263 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -17341,7 +17725,7 @@ end local.get $1 ) - (func $~lib/typedarray/Int32Array#join (; 259 ;) (param $0 i32) (result i32) + (func $~lib/typedarray/Int32Array#join (; 264 ;) (param $0 i32) (result i32) local.get $0 i32.load offset=4 local.get $0 @@ -17350,7 +17734,87 @@ i32.shr_u call $~lib/util/string/joinIntegerArray ) - (func $~lib/util/number/itoa_stream (; 260 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayJoinAndToString<~lib/typedarray/Int32Array,i32> (; 265 ;) + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + i32.const 5 + call $~lib/typedarray/Int32Array#constructor + local.tee $0 + local.get $0 + i32.const 0 + i32.const 1 + call $~lib/typedarray/Int32Array#__set + local.get $0 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Int32Array#__set + local.get $0 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Int32Array#__set + local.get $0 + i32.const 3 + i32.const 4 + call $~lib/typedarray/Int32Array#__set + local.get $0 + i32.const 4 + i32.const 5 + call $~lib/typedarray/Int32Array#__set + local.get $0 + call $~lib/typedarray/Int32Array#join + local.tee $3 + local.set $1 + local.get $3 + if (result i32) + local.get $1 + i32.const 3008 + call $~lib/string/String.__eq + else + local.get $1 + i32.const 3008 + i32.eq + end + i32.eqz + if + i32.const 0 + i32.const 1312 + i32.const 629 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + call $~lib/typedarray/Int32Array#join + local.tee $1 + local.set $2 + local.get $1 + if (result i32) + local.get $2 + i32.const 3008 + call $~lib/string/String.__eq + else + local.get $2 + i32.const 3008 + i32.eq + end + i32.eqz + if + i32.const 0 + i32.const 1312 + i32.const 630 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $3 + call $~lib/rt/pure/__release + local.get $1 + call $~lib/rt/pure/__release + local.get $0 + call $~lib/rt/pure/__release + ) + (func $~lib/util/number/itoa_stream (; 266 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 local.get $1 i32.const 1 @@ -17377,7 +17841,7 @@ call $~lib/util/number/utoa_simple local.get $0 ) - (func $~lib/util/string/joinIntegerArray (; 261 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/util/string/joinIntegerArray (; 267 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -17482,7 +17946,7 @@ end local.get $1 ) - (func $~lib/typedarray/Uint32Array#join (; 262 ;) (param $0 i32) (result i32) + (func $~lib/typedarray/Uint32Array#join (; 268 ;) (param $0 i32) (result i32) local.get $0 i32.load offset=4 local.get $0 @@ -17491,27 +17955,107 @@ i32.shr_u call $~lib/util/string/joinIntegerArray ) - (func $~lib/util/number/decimalCount64High (; 263 ;) (param $0 i64) (result i32) - local.get $0 - i64.const 100000000000 - i64.ge_u - i32.const 10 - i32.add + (func $std/typedarray/testArrayJoinAndToString<~lib/typedarray/Uint32Array,u32> (; 269 ;) + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + i32.const 5 + call $~lib/typedarray/Uint32Array#constructor + local.tee $0 local.get $0 - i64.const 10000000000 - i64.ge_u - i32.add + i32.const 0 + i32.const 1 + call $~lib/typedarray/Uint32Array#__set local.get $0 - i64.const 100000000000000 - i64.ge_u - i32.const 13 - i32.add + i32.const 1 + i32.const 2 + call $~lib/typedarray/Uint32Array#__set local.get $0 - i64.const 10000000000000 - i64.ge_u - i32.add + i32.const 2 + i32.const 3 + call $~lib/typedarray/Uint32Array#__set local.get $0 - i64.const 1000000000000 + i32.const 3 + i32.const 4 + call $~lib/typedarray/Uint32Array#__set + local.get $0 + i32.const 4 + i32.const 5 + call $~lib/typedarray/Uint32Array#__set + local.get $0 + call $~lib/typedarray/Uint32Array#join + local.tee $3 + local.set $1 + local.get $3 + if (result i32) + local.get $1 + i32.const 3008 + call $~lib/string/String.__eq + else + local.get $1 + i32.const 3008 + i32.eq + end + i32.eqz + if + i32.const 0 + i32.const 1312 + i32.const 629 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + call $~lib/typedarray/Uint32Array#join + local.tee $1 + local.set $2 + local.get $1 + if (result i32) + local.get $2 + i32.const 3008 + call $~lib/string/String.__eq + else + local.get $2 + i32.const 3008 + i32.eq + end + i32.eqz + if + i32.const 0 + i32.const 1312 + i32.const 630 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $3 + call $~lib/rt/pure/__release + local.get $1 + call $~lib/rt/pure/__release + local.get $0 + call $~lib/rt/pure/__release + ) + (func $~lib/util/number/decimalCount64High (; 270 ;) (param $0 i64) (result i32) + local.get $0 + i64.const 100000000000 + i64.ge_u + i32.const 10 + i32.add + local.get $0 + i64.const 10000000000 + i64.ge_u + i32.add + local.get $0 + i64.const 100000000000000 + i64.ge_u + i32.const 13 + i32.add + local.get $0 + i64.const 10000000000000 + i64.ge_u + i32.add + local.get $0 + i64.const 1000000000000 i64.lt_u select local.get $0 @@ -17537,7 +18081,7 @@ i64.lt_u select ) - (func $~lib/util/number/utoa_simple (; 264 ;) (param $0 i32) (param $1 i64) (param $2 i32) + (func $~lib/util/number/utoa_simple (; 271 ;) (param $0 i32) (param $1 i64) (param $2 i32) (local $3 i32) loop $do-continue|0 local.get $1 @@ -17567,7 +18111,7 @@ br_if $do-continue|0 end ) - (func $~lib/util/number/itoa_stream (; 265 ;) (param $0 i32) (param $1 i32) (param $2 i64) (result i32) + (func $~lib/util/number/itoa_stream (; 272 ;) (param $0 i32) (param $1 i32) (param $2 i64) (result i32) (local $3 i32) local.get $0 local.get $1 @@ -17633,7 +18177,7 @@ end local.get $0 ) - (func $~lib/util/string/joinIntegerArray (; 266 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/util/string/joinIntegerArray (; 273 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i64) (local $4 i32) @@ -17797,7 +18341,7 @@ end local.get $1 ) - (func $~lib/typedarray/Int64Array#join (; 267 ;) (param $0 i32) (result i32) + (func $~lib/typedarray/Int64Array#join (; 274 ;) (param $0 i32) (result i32) local.get $0 i32.load offset=4 local.get $0 @@ -17806,7 +18350,87 @@ i32.shr_u call $~lib/util/string/joinIntegerArray ) - (func $~lib/util/number/itoa_stream (; 268 ;) (param $0 i32) (param $1 i32) (param $2 i64) (result i32) + (func $std/typedarray/testArrayJoinAndToString<~lib/typedarray/Int64Array,i64> (; 275 ;) + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + i32.const 5 + call $~lib/typedarray/Int64Array#constructor + local.tee $0 + local.get $0 + i32.const 0 + i64.const 1 + call $~lib/typedarray/Int64Array#__set + local.get $0 + i32.const 1 + i64.const 2 + call $~lib/typedarray/Int64Array#__set + local.get $0 + i32.const 2 + i64.const 3 + call $~lib/typedarray/Int64Array#__set + local.get $0 + i32.const 3 + i64.const 4 + call $~lib/typedarray/Int64Array#__set + local.get $0 + i32.const 4 + i64.const 5 + call $~lib/typedarray/Int64Array#__set + local.get $0 + call $~lib/typedarray/Int64Array#join + local.tee $3 + local.set $1 + local.get $3 + if (result i32) + local.get $1 + i32.const 3008 + call $~lib/string/String.__eq + else + local.get $1 + i32.const 3008 + i32.eq + end + i32.eqz + if + i32.const 0 + i32.const 1312 + i32.const 629 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + call $~lib/typedarray/Int64Array#join + local.tee $1 + local.set $2 + local.get $1 + if (result i32) + local.get $2 + i32.const 3008 + call $~lib/string/String.__eq + else + local.get $2 + i32.const 3008 + i32.eq + end + i32.eqz + if + i32.const 0 + i32.const 1312 + i32.const 630 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $3 + call $~lib/rt/pure/__release + local.get $1 + call $~lib/rt/pure/__release + local.get $0 + call $~lib/rt/pure/__release + ) + (func $~lib/util/number/itoa_stream (; 276 ;) (param $0 i32) (param $1 i32) (param $2 i64) (result i32) (local $3 i32) local.get $0 local.get $1 @@ -17849,7 +18473,7 @@ end local.get $1 ) - (func $~lib/util/string/joinIntegerArray (; 269 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/util/string/joinIntegerArray (; 277 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i64) @@ -17992,7 +18616,7 @@ end local.get $1 ) - (func $~lib/typedarray/Uint64Array#join (; 270 ;) (param $0 i32) (result i32) + (func $~lib/typedarray/Uint64Array#join (; 278 ;) (param $0 i32) (result i32) local.get $0 i32.load offset=4 local.get $0 @@ -18001,7 +18625,87 @@ i32.shr_u call $~lib/util/string/joinIntegerArray ) - (func $~lib/util/number/genDigits (; 271 ;) (param $0 i32) (param $1 i64) (param $2 i32) (param $3 i64) (param $4 i32) (param $5 i64) (param $6 i32) (result i32) + (func $std/typedarray/testArrayJoinAndToString<~lib/typedarray/Uint64Array,u64> (; 279 ;) + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + i32.const 5 + call $~lib/typedarray/Uint64Array#constructor + local.tee $0 + local.get $0 + i32.const 0 + i64.const 1 + call $~lib/typedarray/Uint64Array#__set + local.get $0 + i32.const 1 + i64.const 2 + call $~lib/typedarray/Uint64Array#__set + local.get $0 + i32.const 2 + i64.const 3 + call $~lib/typedarray/Uint64Array#__set + local.get $0 + i32.const 3 + i64.const 4 + call $~lib/typedarray/Uint64Array#__set + local.get $0 + i32.const 4 + i64.const 5 + call $~lib/typedarray/Uint64Array#__set + local.get $0 + call $~lib/typedarray/Uint64Array#join + local.tee $3 + local.set $1 + local.get $3 + if (result i32) + local.get $1 + i32.const 3008 + call $~lib/string/String.__eq + else + local.get $1 + i32.const 3008 + i32.eq + end + i32.eqz + if + i32.const 0 + i32.const 1312 + i32.const 629 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + call $~lib/typedarray/Uint64Array#join + local.tee $1 + local.set $2 + local.get $1 + if (result i32) + local.get $2 + i32.const 3008 + call $~lib/string/String.__eq + else + local.get $2 + i32.const 3008 + i32.eq + end + i32.eqz + if + i32.const 0 + i32.const 1312 + i32.const 630 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $3 + call $~lib/rt/pure/__release + local.get $1 + call $~lib/rt/pure/__release + local.get $0 + call $~lib/rt/pure/__release + ) + (func $~lib/util/number/genDigits (; 280 ;) (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) @@ -18392,7 +19096,7 @@ local.get $6 end ) - (func $~lib/util/number/prettify (; 272 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/util/number/prettify (; 281 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $2 i32.eqz @@ -18637,7 +19341,7 @@ end end ) - (func $~lib/util/number/dtoa_core (; 273 ;) (param $0 i32) (param $1 f64) (result i32) + (func $~lib/util/number/dtoa_core (; 282 ;) (param $0 i32) (param $1 f64) (result i32) (local $2 i64) (local $3 i64) (local $4 i32) @@ -18929,7 +19633,7 @@ local.get $7 i32.add ) - (func $~lib/util/number/dtoa (; 274 ;) (param $0 f64) (result i32) + (func $~lib/util/number/dtoa (; 283 ;) (param $0 f64) (result i32) (local $1 i32) (local $2 i32) local.get $0 @@ -18983,7 +19687,7 @@ call $~lib/rt/tlsf/checkUsedBlock call $~lib/rt/tlsf/freeBlock ) - (func $~lib/util/number/dtoa_stream (; 275 ;) (param $0 i32) (param $1 i32) (param $2 f64) (result i32) + (func $~lib/util/number/dtoa_stream (; 284 ;) (param $0 i32) (param $1 i32) (param $2 f64) (result i32) local.get $0 local.get $1 i32.const 1 @@ -19058,7 +19762,7 @@ local.get $2 call $~lib/util/number/dtoa_core ) - (func $~lib/util/string/joinFloatArray (; 276 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/util/string/joinFloatArray (; 285 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -19166,7 +19870,7 @@ end local.get $1 ) - (func $~lib/typedarray/Float32Array#join (; 277 ;) (param $0 i32) (result i32) + (func $~lib/typedarray/Float32Array#join (; 286 ;) (param $0 i32) (result i32) local.get $0 i32.load offset=4 local.get $0 @@ -19175,31 +19879,111 @@ i32.shr_u call $~lib/util/string/joinFloatArray ) - (func $~lib/util/string/joinFloatArray (; 278 ;) (param $0 i32) (param $1 i32) (result i32) + (func $std/typedarray/testArrayJoinAndToString<~lib/typedarray/Float32Array,f32> (; 287 ;) + (local $0 i32) + (local $1 i32) (local $2 i32) (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $1 + i32.const 5 + call $~lib/typedarray/Float32Array#constructor + local.tee $0 + local.get $0 + i32.const 0 + f32.const 1 + call $~lib/typedarray/Float32Array#__set + local.get $0 i32.const 1 - i32.sub + f32.const 2 + call $~lib/typedarray/Float32Array#__set + local.get $0 + i32.const 2 + f32.const 3 + call $~lib/typedarray/Float32Array#__set + local.get $0 + i32.const 3 + f32.const 4 + call $~lib/typedarray/Float32Array#__set + local.get $0 + i32.const 4 + f32.const 5 + call $~lib/typedarray/Float32Array#__set + local.get $0 + call $~lib/typedarray/Float32Array#join local.tee $3 - i32.const 0 - i32.lt_s - if - i32.const 2928 - return - end + local.set $1 local.get $3 + if (result i32) + local.get $1 + i32.const 4176 + call $~lib/string/String.__eq + else + local.get $1 + i32.const 4176 + i32.eq + end i32.eqz if - local.get $0 - f64.load - call $~lib/util/number/dtoa - return - end - local.get $3 + i32.const 0 + i32.const 1312 + i32.const 626 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + call $~lib/typedarray/Float32Array#join + local.tee $1 + local.set $2 + local.get $1 + if (result i32) + local.get $2 + i32.const 4176 + call $~lib/string/String.__eq + else + local.get $2 + i32.const 4176 + i32.eq + end + i32.eqz + if + i32.const 0 + i32.const 1312 + i32.const 627 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $3 + call $~lib/rt/pure/__release + local.get $1 + call $~lib/rt/pure/__release + local.get $0 + call $~lib/rt/pure/__release + ) + (func $~lib/util/string/joinFloatArray (; 288 ;) (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 $1 + i32.const 1 + i32.sub + local.tee $3 + i32.const 0 + i32.lt_s + if + i32.const 2928 + return + end + local.get $3 + i32.eqz + if + local.get $0 + f64.load + call $~lib/util/number/dtoa + return + end + local.get $3 i32.const 2976 call $~lib/string/String#get:length local.tee $4 @@ -19280,7 +20064,7 @@ end local.get $1 ) - (func $~lib/typedarray/Float64Array#join (; 279 ;) (param $0 i32) (result i32) + (func $~lib/typedarray/Float64Array#join (; 289 ;) (param $0 i32) (result i32) local.get $0 i32.load offset=4 local.get $0 @@ -19289,7 +20073,87 @@ i32.shr_u call $~lib/util/string/joinFloatArray ) - (func $~lib/arraybuffer/ArrayBuffer#constructor (; 280 ;) (param $0 i32) (result i32) + (func $std/typedarray/testArrayJoinAndToString<~lib/typedarray/Float64Array,f64> (; 290 ;) + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + i32.const 5 + call $~lib/typedarray/Float64Array#constructor + local.tee $0 + local.get $0 + i32.const 0 + f64.const 1 + call $~lib/typedarray/Float64Array#__set + local.get $0 + i32.const 1 + f64.const 2 + call $~lib/typedarray/Float64Array#__set + local.get $0 + i32.const 2 + f64.const 3 + call $~lib/typedarray/Float64Array#__set + local.get $0 + i32.const 3 + f64.const 4 + call $~lib/typedarray/Float64Array#__set + local.get $0 + i32.const 4 + f64.const 5 + call $~lib/typedarray/Float64Array#__set + local.get $0 + call $~lib/typedarray/Float64Array#join + local.tee $3 + local.set $1 + local.get $3 + if (result i32) + local.get $1 + i32.const 4176 + call $~lib/string/String.__eq + else + local.get $1 + i32.const 4176 + i32.eq + end + i32.eqz + if + i32.const 0 + i32.const 1312 + i32.const 626 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + call $~lib/typedarray/Float64Array#join + local.tee $1 + local.set $2 + local.get $1 + if (result i32) + local.get $2 + i32.const 4176 + call $~lib/string/String.__eq + else + local.get $2 + i32.const 4176 + i32.eq + end + i32.eqz + if + i32.const 0 + i32.const 1312 + i32.const 627 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $3 + call $~lib/rt/pure/__release + local.get $1 + call $~lib/rt/pure/__release + local.get $0 + call $~lib/rt/pure/__release + ) + (func $~lib/arraybuffer/ArrayBuffer#constructor (; 291 ;) (param $0 i32) (result i32) (local $1 i32) local.get $0 i32.const 1073741808 @@ -19312,7 +20176,7 @@ local.get $1 call $~lib/rt/pure/__retain ) - (func $~lib/typedarray/Uint8Array.wrap|trampoline (; 281 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Uint8Array.wrap|trampoline (; 292 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) block $2of2 @@ -19400,7 +20264,7 @@ local.get $2 call $~lib/rt/pure/__retain ) - (func $~lib/arraybuffer/ArrayBuffer#slice (; 282 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/arraybuffer/ArrayBuffer#slice (; 293 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $0 i32.const 16 @@ -19470,7 +20334,7 @@ local.get $3 call $~lib/rt/pure/__retain ) - (func $std/typedarray/testArrayWrap<~lib/typedarray/Int8Array,i8> (; 283 ;) + (func $std/typedarray/testArrayWrap<~lib/typedarray/Int8Array,i8> (; 294 ;) (local $0 i32) (local $1 i32) (local $2 i32) @@ -19586,7 +20450,7 @@ local.get $0 call $~lib/rt/pure/__release ) - (func $std/typedarray/testArrayWrap<~lib/typedarray/Uint8Array,u8> (; 284 ;) + (func $std/typedarray/testArrayWrap<~lib/typedarray/Uint8Array,u8> (; 295 ;) (local $0 i32) (local $1 i32) (local $2 i32) @@ -19670,7 +20534,7 @@ local.get $4 call $~lib/rt/pure/__release ) - (func $std/typedarray/testArrayWrap<~lib/typedarray/Uint8ClampedArray,u8> (; 285 ;) + (func $std/typedarray/testArrayWrap<~lib/typedarray/Uint8ClampedArray,u8> (; 296 ;) (local $0 i32) (local $1 i32) (local $2 i32) @@ -19784,7 +20648,7 @@ local.get $0 call $~lib/rt/pure/__release ) - (func $std/typedarray/testArrayWrap<~lib/typedarray/Int16Array,i16> (; 286 ;) + (func $std/typedarray/testArrayWrap<~lib/typedarray/Int16Array,i16> (; 297 ;) (local $0 i32) (local $1 i32) (local $2 i32) @@ -19909,7 +20773,7 @@ local.get $2 call $~lib/rt/pure/__release ) - (func $std/typedarray/testArrayWrap<~lib/typedarray/Uint16Array,u16> (; 287 ;) + (func $std/typedarray/testArrayWrap<~lib/typedarray/Uint16Array,u16> (; 298 ;) (local $0 i32) (local $1 i32) (local $2 i32) @@ -20032,7 +20896,7 @@ local.get $2 call $~lib/rt/pure/__release ) - (func $std/typedarray/testArrayWrap<~lib/typedarray/Int32Array,i32> (; 288 ;) + (func $std/typedarray/testArrayWrap<~lib/typedarray/Int32Array,i32> (; 299 ;) (local $0 i32) (local $1 i32) (local $2 i32) @@ -20153,7 +21017,7 @@ local.get $2 call $~lib/rt/pure/__release ) - (func $std/typedarray/testArrayWrap<~lib/typedarray/Uint32Array,u32> (; 289 ;) + (func $std/typedarray/testArrayWrap<~lib/typedarray/Uint32Array,u32> (; 300 ;) (local $0 i32) (local $1 i32) (local $2 i32) @@ -20274,7 +21138,7 @@ local.get $2 call $~lib/rt/pure/__release ) - (func $std/typedarray/testArrayWrap<~lib/typedarray/Int64Array,i64> (; 290 ;) + (func $std/typedarray/testArrayWrap<~lib/typedarray/Int64Array,i64> (; 301 ;) (local $0 i32) (local $1 i32) (local $2 i32) @@ -20396,7 +21260,7 @@ local.get $2 call $~lib/rt/pure/__release ) - (func $std/typedarray/testArrayWrap<~lib/typedarray/Uint64Array,u64> (; 291 ;) + (func $std/typedarray/testArrayWrap<~lib/typedarray/Uint64Array,u64> (; 302 ;) (local $0 i32) (local $1 i32) (local $2 i32) @@ -20518,7 +21382,7 @@ local.get $2 call $~lib/rt/pure/__release ) - (func $std/typedarray/testArrayWrap<~lib/typedarray/Float32Array,f32> (; 292 ;) + (func $std/typedarray/testArrayWrap<~lib/typedarray/Float32Array,f32> (; 303 ;) (local $0 i32) (local $1 i32) (local $2 i32) @@ -20640,7 +21504,7 @@ local.get $2 call $~lib/rt/pure/__release ) - (func $std/typedarray/testArrayWrap<~lib/typedarray/Float64Array,f64> (; 293 ;) + (func $std/typedarray/testArrayWrap<~lib/typedarray/Float64Array,f64> (; 304 ;) (local $0 i32) (local $1 i32) (local $2 i32) @@ -20762,7 +21626,7 @@ local.get $2 call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Int8Array#set<~lib/array/Array> (; 294 ;) (param $0 i32) + (func $~lib/typedarray/Int8Array#set<~lib/array/Array> (; 305 ;) (param $0 i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -20811,7 +21675,7 @@ end end ) - (func $std/typedarray/valuesEqual<~lib/typedarray/Int8Array> (; 295 ;) (param $0 i32) (param $1 i32) + (func $std/typedarray/valuesEqual<~lib/typedarray/Int8Array> (; 306 ;) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -20871,7 +21735,7 @@ end end ) - (func $~lib/typedarray/Int8Array#set<~lib/typedarray/Int64Array> (; 296 ;) (param $0 i32) (param $1 i32) + (func $~lib/typedarray/Int8Array#set<~lib/typedarray/Int64Array> (; 307 ;) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) local.get $1 @@ -20927,7 +21791,7 @@ end end ) - (func $~lib/typedarray/Int8Array#set<~lib/typedarray/Uint8Array> (; 297 ;) (param $0 i32) (param $1 i32) + (func $~lib/typedarray/Int8Array#set<~lib/typedarray/Uint8Array> (; 308 ;) (param $0 i32) (param $1 i32) local.get $1 i32.load offset=8 local.get $0 @@ -20949,7 +21813,7 @@ i32.load offset=8 call $~lib/memory/memory.copy ) - (func $~lib/typedarray/Int8Array#set<~lib/typedarray/Int16Array> (; 298 ;) (param $0 i32) (param $1 i32) + (func $~lib/typedarray/Int8Array#set<~lib/typedarray/Int16Array> (; 309 ;) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) local.get $1 @@ -21005,7 +21869,7 @@ end end ) - (func $~lib/typedarray/Int8Array#set<~lib/array/Array> (; 299 ;) (param $0 i32) + (func $~lib/typedarray/Int8Array#set<~lib/array/Array> (; 310 ;) (param $0 i32) i32.const 4588 i32.load i32.const 7 @@ -21031,7 +21895,7 @@ i32.load call $~lib/memory/memory.copy ) - (func $std/typedarray/testTypedArraySet<~lib/typedarray/Int8Array> (; 300 ;) + (func $std/typedarray/testTypedArraySet<~lib/typedarray/Int8Array> (; 311 ;) (local $0 i32) (local $1 i32) (local $2 i32) @@ -21285,14 +22149,14 @@ call $~lib/builtins/abort unreachable ) - (func $~lib/array/Array#__unchecked_get (; 301 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#__unchecked_get (; 312 ;) (param $0 i32) (param $1 i32) (result i32) local.get $0 i32.load offset=4 local.get $1 i32.add i32.load8_u ) - (func $std/typedarray/valuesEqual<~lib/typedarray/Uint8Array> (; 302 ;) (param $0 i32) (param $1 i32) + (func $std/typedarray/valuesEqual<~lib/typedarray/Uint8Array> (; 313 ;) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -21352,7 +22216,7 @@ end end ) - (func $std/typedarray/testTypedArraySet<~lib/typedarray/Uint8Array> (; 303 ;) + (func $std/typedarray/testTypedArraySet<~lib/typedarray/Uint8Array> (; 314 ;) (local $0 i32) (local $1 i32) (local $2 i32) @@ -21606,7 +22470,7 @@ call $~lib/builtins/abort unreachable ) - (func $std/typedarray/valuesEqual<~lib/typedarray/Uint8ClampedArray> (; 304 ;) (param $0 i32) (param $1 i32) + (func $std/typedarray/valuesEqual<~lib/typedarray/Uint8ClampedArray> (; 315 ;) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -21666,7 +22530,7 @@ end end ) - (func $~lib/typedarray/Uint8ClampedArray#set<~lib/typedarray/Int64Array> (; 305 ;) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/typedarray/Uint8ClampedArray#set<~lib/typedarray/Int64Array> (; 316 ;) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i64) local.get $2 @@ -21750,7 +22614,7 @@ end end ) - (func $~lib/typedarray/Uint8ClampedArray#set<~lib/typedarray/Int16Array> (; 306 ;) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/typedarray/Uint8ClampedArray#set<~lib/typedarray/Int16Array> (; 317 ;) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) local.get $2 @@ -21830,7 +22694,7 @@ end end ) - (func $std/typedarray/testTypedArraySet<~lib/typedarray/Uint8ClampedArray> (; 307 ;) + (func $std/typedarray/testTypedArraySet<~lib/typedarray/Uint8ClampedArray> (; 318 ;) (local $0 i32) (local $1 i32) (local $2 i32) @@ -22199,7 +23063,7 @@ call $~lib/builtins/abort unreachable ) - (func $~lib/typedarray/Int16Array#set<~lib/array/Array> (; 308 ;) (param $0 i32) + (func $~lib/typedarray/Int16Array#set<~lib/array/Array> (; 319 ;) (param $0 i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -22252,7 +23116,7 @@ end end ) - (func $std/typedarray/valuesEqual<~lib/typedarray/Int16Array> (; 309 ;) (param $0 i32) (param $1 i32) + (func $std/typedarray/valuesEqual<~lib/typedarray/Int16Array> (; 320 ;) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -22322,7 +23186,7 @@ end end ) - (func $~lib/typedarray/Int16Array#set<~lib/typedarray/Int64Array> (; 310 ;) (param $0 i32) (param $1 i32) + (func $~lib/typedarray/Int16Array#set<~lib/typedarray/Int64Array> (; 321 ;) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) local.get $1 @@ -22382,7 +23246,7 @@ end end ) - (func $~lib/typedarray/Int16Array#set<~lib/typedarray/Uint8Array> (; 311 ;) (param $0 i32) (param $1 i32) + (func $~lib/typedarray/Int16Array#set<~lib/typedarray/Uint8Array> (; 322 ;) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) local.get $1 @@ -22432,7 +23296,7 @@ end end ) - (func $~lib/typedarray/Int16Array#set<~lib/typedarray/Int16Array> (; 312 ;) (param $0 i32) (param $1 i32) + (func $~lib/typedarray/Int16Array#set<~lib/typedarray/Int16Array> (; 323 ;) (param $0 i32) (param $1 i32) local.get $1 i32.load offset=8 i32.const 1 @@ -22462,7 +23326,7 @@ i32.load offset=8 call $~lib/memory/memory.copy ) - (func $~lib/typedarray/Int16Array#set<~lib/array/Array> (; 313 ;) (param $0 i32) + (func $~lib/typedarray/Int16Array#set<~lib/array/Array> (; 324 ;) (param $0 i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -22517,7 +23381,7 @@ end end ) - (func $std/typedarray/testTypedArraySet<~lib/typedarray/Int16Array> (; 314 ;) + (func $std/typedarray/testTypedArraySet<~lib/typedarray/Int16Array> (; 325 ;) (local $0 i32) (local $1 i32) (local $2 i32) @@ -22779,7 +23643,7 @@ call $~lib/builtins/abort unreachable ) - (func $std/typedarray/valuesEqual<~lib/typedarray/Uint16Array> (; 315 ;) (param $0 i32) (param $1 i32) + (func $std/typedarray/valuesEqual<~lib/typedarray/Uint16Array> (; 326 ;) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -22849,7 +23713,7 @@ end end ) - (func $std/typedarray/testTypedArraySet<~lib/typedarray/Uint16Array> (; 316 ;) + (func $std/typedarray/testTypedArraySet<~lib/typedarray/Uint16Array> (; 327 ;) (local $0 i32) (local $1 i32) (local $2 i32) @@ -23111,7 +23975,7 @@ call $~lib/builtins/abort unreachable ) - (func $~lib/typedarray/Int32Array#set<~lib/array/Array> (; 317 ;) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/typedarray/Int32Array#set<~lib/array/Array> (; 328 ;) (param $0 i32) (param $1 i32) (param $2 i32) local.get $2 i32.const 0 i32.lt_s @@ -23152,7 +24016,7 @@ i32.load offset=8 call $~lib/memory/memory.copy ) - (func $std/typedarray/valuesEqual<~lib/typedarray/Int32Array> (; 318 ;) (param $0 i32) (param $1 i32) + (func $std/typedarray/valuesEqual<~lib/typedarray/Int32Array> (; 329 ;) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -23214,7 +24078,7 @@ end end ) - (func $~lib/typedarray/Int32Array#set<~lib/typedarray/Int64Array> (; 319 ;) (param $0 i32) (param $1 i32) + (func $~lib/typedarray/Int32Array#set<~lib/typedarray/Int64Array> (; 330 ;) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) local.get $1 @@ -23274,7 +24138,7 @@ end end ) - (func $~lib/typedarray/Int32Array#set<~lib/typedarray/Uint8Array> (; 320 ;) (param $0 i32) (param $1 i32) + (func $~lib/typedarray/Int32Array#set<~lib/typedarray/Uint8Array> (; 331 ;) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) local.get $1 @@ -23324,7 +24188,7 @@ end end ) - (func $~lib/typedarray/Int32Array#set<~lib/typedarray/Int16Array> (; 321 ;) (param $0 i32) (param $1 i32) + (func $~lib/typedarray/Int32Array#set<~lib/typedarray/Int16Array> (; 332 ;) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) local.get $1 @@ -23384,7 +24248,7 @@ end end ) - (func $~lib/typedarray/Int32Array#set<~lib/array/Array> (; 322 ;) (param $0 i32) + (func $~lib/typedarray/Int32Array#set<~lib/array/Array> (; 333 ;) (param $0 i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -23439,7 +24303,7 @@ end end ) - (func $std/typedarray/testTypedArraySet<~lib/typedarray/Int32Array> (; 323 ;) + (func $std/typedarray/testTypedArraySet<~lib/typedarray/Int32Array> (; 334 ;) (local $0 i32) (local $1 i32) (local $2 i32) @@ -23702,7 +24566,7 @@ call $~lib/builtins/abort unreachable ) - (func $std/typedarray/valuesEqual<~lib/typedarray/Uint32Array> (; 324 ;) (param $0 i32) (param $1 i32) + (func $std/typedarray/valuesEqual<~lib/typedarray/Uint32Array> (; 335 ;) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -23764,7 +24628,7 @@ end end ) - (func $std/typedarray/testTypedArraySet<~lib/typedarray/Uint32Array> (; 325 ;) + (func $std/typedarray/testTypedArraySet<~lib/typedarray/Uint32Array> (; 336 ;) (local $0 i32) (local $1 i32) (local $2 i32) @@ -24027,7 +24891,7 @@ call $~lib/builtins/abort unreachable ) - (func $~lib/typedarray/Int64Array#set<~lib/array/Array> (; 326 ;) (param $0 i32) + (func $~lib/typedarray/Int64Array#set<~lib/array/Array> (; 337 ;) (param $0 i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -24080,7 +24944,7 @@ end end ) - (func $~lib/array/Array#__unchecked_get (; 327 ;) (param $0 i32) (param $1 i32) (result i64) + (func $~lib/array/Array#__unchecked_get (; 338 ;) (param $0 i32) (param $1 i32) (result i64) local.get $0 i32.load offset=4 local.get $1 @@ -24089,7 +24953,7 @@ i32.add i64.load ) - (func $std/typedarray/valuesEqual<~lib/typedarray/Int64Array> (; 328 ;) (param $0 i32) (param $1 i32) + (func $std/typedarray/valuesEqual<~lib/typedarray/Int64Array> (; 339 ;) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i64) @@ -24151,7 +25015,7 @@ end end ) - (func $~lib/typedarray/Int64Array#set<~lib/typedarray/Int64Array> (; 329 ;) (param $0 i32) (param $1 i32) + (func $~lib/typedarray/Int64Array#set<~lib/typedarray/Int64Array> (; 340 ;) (param $0 i32) (param $1 i32) local.get $1 i32.load offset=8 i32.const 3 @@ -24181,7 +25045,7 @@ i32.load offset=8 call $~lib/memory/memory.copy ) - (func $~lib/typedarray/Int64Array#set<~lib/typedarray/Uint8Array> (; 330 ;) (param $0 i32) (param $1 i32) + (func $~lib/typedarray/Int64Array#set<~lib/typedarray/Uint8Array> (; 341 ;) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) local.get $1 @@ -24231,7 +25095,7 @@ end end ) - (func $~lib/typedarray/Int64Array#set<~lib/typedarray/Int16Array> (; 331 ;) (param $0 i32) (param $1 i32) + (func $~lib/typedarray/Int64Array#set<~lib/typedarray/Int16Array> (; 342 ;) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) local.get $1 @@ -24291,7 +25155,7 @@ end end ) - (func $~lib/typedarray/Int64Array#set<~lib/array/Array> (; 332 ;) (param $0 i32) + (func $~lib/typedarray/Int64Array#set<~lib/array/Array> (; 343 ;) (param $0 i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -24346,7 +25210,7 @@ end end ) - (func $std/typedarray/testTypedArraySet<~lib/typedarray/Int64Array> (; 333 ;) + (func $std/typedarray/testTypedArraySet<~lib/typedarray/Int64Array> (; 344 ;) (local $0 i32) (local $1 i32) (local $2 i32) @@ -24608,7 +25472,7 @@ call $~lib/builtins/abort unreachable ) - (func $std/typedarray/valuesEqual<~lib/typedarray/Uint64Array> (; 334 ;) (param $0 i32) (param $1 i32) + (func $std/typedarray/valuesEqual<~lib/typedarray/Uint64Array> (; 345 ;) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i64) @@ -24670,7 +25534,7 @@ end end ) - (func $std/typedarray/testTypedArraySet<~lib/typedarray/Uint64Array> (; 335 ;) + (func $std/typedarray/testTypedArraySet<~lib/typedarray/Uint64Array> (; 346 ;) (local $0 i32) (local $1 i32) (local $2 i32) @@ -24932,7 +25796,7 @@ call $~lib/builtins/abort unreachable ) - (func $std/typedarray/valuesEqual<~lib/typedarray/Float32Array> (; 336 ;) (param $0 i32) (param $1 i32) + (func $std/typedarray/valuesEqual<~lib/typedarray/Float32Array> (; 347 ;) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 f32) (local $4 i32) @@ -25002,7 +25866,7 @@ end end ) - (func $std/typedarray/testTypedArraySet<~lib/typedarray/Float32Array> (; 337 ;) + (func $std/typedarray/testTypedArraySet<~lib/typedarray/Float32Array> (; 348 ;) (local $0 i32) (local $1 i32) (local $2 i32) @@ -25363,7 +26227,7 @@ call $~lib/builtins/abort unreachable ) - (func $std/typedarray/valuesEqual<~lib/typedarray/Float64Array> (; 338 ;) (param $0 i32) (param $1 i32) + (func $std/typedarray/valuesEqual<~lib/typedarray/Float64Array> (; 349 ;) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 f64) (local $4 i32) @@ -25431,7 +26295,7 @@ end end ) - (func $std/typedarray/testTypedArraySet<~lib/typedarray/Float64Array> (; 339 ;) + (func $std/typedarray/testTypedArraySet<~lib/typedarray/Float64Array> (; 350 ;) (local $0 i32) (local $1 i32) (local $2 i32) @@ -25836,7 +26700,7 @@ call $~lib/builtins/abort unreachable ) - (func $start:std/typedarray (; 340 ;) + (func $start:std/typedarray (; 351 ;) (local $0 i32) (local $1 i32) (local $2 i32) @@ -27652,4429 +28516,3946 @@ br $for-loop|0 end end - block $folding-inner16 - block $folding-inner15 - block $folding-inner14 - block $folding-inner13 - block $folding-inner12 - block $folding-inner11 - block $folding-inner10 - block $folding-inner9 - block $folding-inner8 - block $folding-inner7 - block $folding-inner6 - block $folding-inner5 - block $folding-inner4 - block $folding-inner3 - block $folding-inner2 - block $folding-inner1 - block $folding-inner0 - local.get $1 - i32.const 255 - i32.and - i32.const 6 - i32.ne - br_if $folding-inner0 - local.get $29 - call $~lib/rt/pure/__release - i32.const 3 - call $~lib/typedarray/Uint8Array#constructor - local.tee $1 - i32.const 0 - i32.const 1 - call $~lib/typedarray/Uint8Array#__set - local.get $1 - i32.const 1 - i32.const 2 - call $~lib/typedarray/Uint8Array#__set - local.get $1 - i32.const 2 - i32.const 3 - call $~lib/typedarray/Uint8Array#__set - local.get $1 - i32.const 3 - call $~lib/typedarray/Uint8Array#reduce - i32.const 255 - i32.and - i32.const 6 - i32.ne - br_if $folding-inner0 - local.get $1 - call $~lib/rt/pure/__release - i32.const 3 - call $~lib/typedarray/Uint8ClampedArray#constructor - local.tee $1 - i32.const 0 - i32.const 1 - call $~lib/typedarray/Uint8ClampedArray#__set - local.get $1 - i32.const 1 - i32.const 2 - call $~lib/typedarray/Uint8ClampedArray#__set - local.get $1 - i32.const 2 - i32.const 3 - call $~lib/typedarray/Uint8ClampedArray#__set - local.get $1 - i32.const 4 - call $~lib/typedarray/Uint8Array#reduce - i32.const 255 - i32.and - i32.const 6 - i32.ne - br_if $folding-inner0 - local.get $1 - call $~lib/rt/pure/__release - i32.const 3 - call $~lib/typedarray/Int16Array#constructor - local.tee $29 - i32.const 0 - i32.const 1 - call $~lib/typedarray/Int16Array#__set - local.get $29 - i32.const 1 - i32.const 2 - call $~lib/typedarray/Int16Array#__set - local.get $29 - i32.const 2 - i32.const 3 - call $~lib/typedarray/Int16Array#__set - i32.const 0 - local.set $0 - i32.const 0 - local.set $1 - local.get $29 - i32.load offset=4 - local.set $28 - local.get $29 - i32.load offset=8 - i32.const 1 - i32.shr_u - local.set $27 - loop $for-loop|00 - local.get $0 - local.get $27 - i32.lt_s - if - i32.const 4 - global.set $~argumentsLength - local.get $1 - local.get $28 - local.get $0 - i32.const 1 - i32.shl - i32.add - i32.load16_s - i32.add - local.set $1 - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|00 - end - end - local.get $1 - i32.const 65535 - i32.and - i32.const 6 - i32.ne - br_if $folding-inner0 - local.get $29 - call $~lib/rt/pure/__release - i32.const 3 - call $~lib/typedarray/Uint16Array#constructor - local.tee $29 - i32.const 0 - i32.const 1 - call $~lib/typedarray/Uint16Array#__set - local.get $29 - i32.const 1 - i32.const 2 - call $~lib/typedarray/Uint16Array#__set - local.get $29 - i32.const 2 - i32.const 3 - call $~lib/typedarray/Uint16Array#__set - i32.const 0 - local.set $0 - i32.const 0 - local.set $1 - local.get $29 - i32.load offset=4 - local.set $28 - local.get $29 - i32.load offset=8 - i32.const 1 - i32.shr_u - local.set $27 - loop $for-loop|01 - local.get $0 - local.get $27 - i32.lt_s - if - i32.const 4 - global.set $~argumentsLength - local.get $1 - local.get $28 - local.get $0 - i32.const 1 - i32.shl - i32.add - i32.load16_u - i32.add - local.set $1 - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|01 - end - end - local.get $1 - i32.const 65535 - i32.and - i32.const 6 - i32.ne - br_if $folding-inner0 - local.get $29 - call $~lib/rt/pure/__release - i32.const 3 - call $~lib/typedarray/Int32Array#constructor - local.tee $1 - i32.const 0 - i32.const 1 - call $~lib/typedarray/Int32Array#__set - local.get $1 - i32.const 1 - i32.const 2 - call $~lib/typedarray/Int32Array#__set - local.get $1 - i32.const 2 - i32.const 3 - call $~lib/typedarray/Int32Array#__set - local.get $1 - i32.const 7 - call $~lib/typedarray/Int32Array#reduce - i32.const 6 - i32.ne - br_if $folding-inner0 - local.get $1 - call $~lib/rt/pure/__release - i32.const 3 - call $~lib/typedarray/Uint32Array#constructor - local.tee $1 - i32.const 0 - i32.const 1 - call $~lib/typedarray/Uint32Array#__set - local.get $1 - i32.const 1 - i32.const 2 - call $~lib/typedarray/Uint32Array#__set - local.get $1 - i32.const 2 - i32.const 3 - call $~lib/typedarray/Uint32Array#__set - local.get $1 - i32.const 8 - call $~lib/typedarray/Int32Array#reduce - i32.const 6 - i32.ne - br_if $folding-inner0 - local.get $1 - call $~lib/rt/pure/__release - i32.const 3 - call $~lib/typedarray/Int64Array#constructor - local.tee $1 - i32.const 0 - i64.const 1 - call $~lib/typedarray/Int64Array#__set - local.get $1 - i32.const 1 - i64.const 2 - call $~lib/typedarray/Int64Array#__set - local.get $1 - i32.const 2 - i64.const 3 - call $~lib/typedarray/Int64Array#__set - local.get $1 - i32.const 9 - call $~lib/typedarray/Int64Array#reduce - i64.const 6 - i64.ne - br_if $folding-inner0 - local.get $1 - call $~lib/rt/pure/__release - i32.const 3 - call $~lib/typedarray/Uint64Array#constructor - local.tee $1 - i32.const 0 - i64.const 1 - call $~lib/typedarray/Uint64Array#__set - local.get $1 - i32.const 1 - i64.const 2 - call $~lib/typedarray/Uint64Array#__set - local.get $1 - i32.const 2 - i64.const 3 - call $~lib/typedarray/Uint64Array#__set - local.get $1 - i32.const 10 - call $~lib/typedarray/Int64Array#reduce - i64.const 6 - i64.ne - br_if $folding-inner0 - local.get $1 - call $~lib/rt/pure/__release - i32.const 3 - call $~lib/typedarray/Float32Array#constructor - local.tee $0 - i32.const 0 - f32.const 1 - call $~lib/typedarray/Float32Array#__set - local.get $0 - i32.const 1 - f32.const 2 - call $~lib/typedarray/Float32Array#__set - local.get $0 - i32.const 2 - f32.const 3 - call $~lib/typedarray/Float32Array#__set - i32.const 0 - local.set $1 - local.get $0 - i32.load offset=4 - local.set $29 - local.get $0 - i32.load offset=8 - i32.const 2 - i32.shr_u - local.set $28 - loop $for-loop|02 - local.get $1 - local.get $28 - i32.lt_s - if - i32.const 4 - global.set $~argumentsLength - local.get $21 - local.get $29 - local.get $1 - i32.const 2 - i32.shl - i32.add - f32.load - f32.add - local.set $21 - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|02 - end - end - local.get $21 - f32.const 6 - f32.ne - br_if $folding-inner0 - local.get $0 - call $~lib/rt/pure/__release - i32.const 3 - call $~lib/typedarray/Float64Array#constructor - local.tee $0 - i32.const 0 - f64.const 1 - call $~lib/typedarray/Float64Array#__set - local.get $0 - i32.const 1 - f64.const 2 - call $~lib/typedarray/Float64Array#__set - local.get $0 - i32.const 2 - f64.const 3 - call $~lib/typedarray/Float64Array#__set - i32.const 0 - local.set $1 - f64.const 0 - local.set $22 - local.get $0 - i32.load offset=4 - local.set $29 - local.get $0 - i32.load offset=8 - i32.const 3 - i32.shr_u - local.set $28 - loop $for-loop|03 - local.get $1 - local.get $28 - i32.lt_s - if - i32.const 4 - global.set $~argumentsLength - local.get $22 - local.get $29 - local.get $1 - i32.const 3 - i32.shl - i32.add - f64.load - f64.add - local.set $22 - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|03 - end - end - local.get $22 - f64.const 6 - f64.ne - br_if $folding-inner0 - local.get $0 - call $~lib/rt/pure/__release - i32.const 3 - call $~lib/typedarray/Int8Array#constructor - local.tee $29 - i32.const 0 - i32.const 1 - call $~lib/typedarray/Int8Array#__set - local.get $29 - i32.const 1 - i32.const 2 - call $~lib/typedarray/Int8Array#__set - local.get $29 - i32.const 2 - i32.const 3 - call $~lib/typedarray/Int8Array#__set - i32.const 0 - local.set $0 - local.get $29 - i32.load offset=4 - local.set $28 - local.get $29 - i32.load offset=8 - i32.const 1 - i32.sub - local.set $1 - loop $for-loop|04 - local.get $1 - i32.const 0 - i32.ge_s - if - i32.const 4 - global.set $~argumentsLength - local.get $0 - local.get $1 - local.get $28 - i32.add - i32.load8_s - i32.add - local.set $0 - local.get $1 - i32.const 1 - i32.sub - local.set $1 - br $for-loop|04 - end - end - local.get $0 - i32.const 255 - i32.and - i32.const 6 - i32.ne - br_if $folding-inner1 - local.get $29 - call $~lib/rt/pure/__release - i32.const 3 - call $~lib/typedarray/Uint8Array#constructor - local.tee $1 - i32.const 0 - i32.const 1 - call $~lib/typedarray/Uint8Array#__set - local.get $1 - i32.const 1 - i32.const 2 - call $~lib/typedarray/Uint8Array#__set - local.get $1 - i32.const 2 - i32.const 3 - call $~lib/typedarray/Uint8Array#__set - local.get $1 - i32.const 14 - call $~lib/typedarray/Uint8Array#reduceRight - i32.const 255 - i32.and - i32.const 6 - i32.ne - br_if $folding-inner1 - local.get $1 - call $~lib/rt/pure/__release - i32.const 3 - call $~lib/typedarray/Uint8ClampedArray#constructor - local.tee $1 - i32.const 0 - i32.const 1 - call $~lib/typedarray/Uint8ClampedArray#__set - local.get $1 - i32.const 1 - i32.const 2 - call $~lib/typedarray/Uint8ClampedArray#__set - local.get $1 - i32.const 2 - i32.const 3 - call $~lib/typedarray/Uint8ClampedArray#__set - local.get $1 - i32.const 15 - call $~lib/typedarray/Uint8Array#reduceRight - i32.const 255 - i32.and - i32.const 6 - i32.ne - br_if $folding-inner1 - local.get $1 - call $~lib/rt/pure/__release - i32.const 3 - call $~lib/typedarray/Int16Array#constructor - local.tee $29 - i32.const 0 - i32.const 1 - call $~lib/typedarray/Int16Array#__set - local.get $29 - i32.const 1 - i32.const 2 - call $~lib/typedarray/Int16Array#__set - local.get $29 - i32.const 2 - i32.const 3 - call $~lib/typedarray/Int16Array#__set - i32.const 0 - local.set $0 - local.get $29 - i32.load offset=4 - local.set $28 - local.get $29 - i32.load offset=8 - i32.const 1 - i32.shr_u - i32.const 1 - i32.sub - local.set $1 - loop $for-loop|05 - local.get $1 - i32.const 0 - i32.ge_s - if - i32.const 4 - global.set $~argumentsLength - local.get $0 - local.get $28 - local.get $1 - i32.const 1 - i32.shl - i32.add - i32.load16_s - i32.add - local.set $0 - local.get $1 - i32.const 1 - i32.sub - local.set $1 - br $for-loop|05 - end - end - local.get $0 - i32.const 65535 - i32.and - i32.const 6 - i32.ne - br_if $folding-inner1 - local.get $29 - call $~lib/rt/pure/__release - i32.const 3 - call $~lib/typedarray/Uint16Array#constructor - local.tee $29 - i32.const 0 - i32.const 1 - call $~lib/typedarray/Uint16Array#__set - local.get $29 - i32.const 1 - i32.const 2 - call $~lib/typedarray/Uint16Array#__set - local.get $29 - i32.const 2 - i32.const 3 - call $~lib/typedarray/Uint16Array#__set - i32.const 0 - local.set $0 - local.get $29 - i32.load offset=4 - local.set $28 - local.get $29 - i32.load offset=8 - i32.const 1 - i32.shr_u - i32.const 1 - i32.sub - local.set $1 - loop $for-loop|06 - local.get $1 - i32.const 0 - i32.ge_s - if - i32.const 4 - global.set $~argumentsLength - local.get $0 - local.get $28 - local.get $1 - i32.const 1 - i32.shl - i32.add - i32.load16_u - i32.add - local.set $0 - local.get $1 - i32.const 1 - i32.sub - local.set $1 - br $for-loop|06 - end - end - local.get $0 - i32.const 65535 - i32.and - i32.const 6 - i32.ne - br_if $folding-inner1 - local.get $29 - call $~lib/rt/pure/__release - i32.const 3 - call $~lib/typedarray/Int32Array#constructor - local.tee $1 - i32.const 0 - i32.const 1 - call $~lib/typedarray/Int32Array#__set - local.get $1 - i32.const 1 - i32.const 2 - call $~lib/typedarray/Int32Array#__set - local.get $1 - i32.const 2 - i32.const 3 - call $~lib/typedarray/Int32Array#__set - local.get $1 - i32.const 18 - call $~lib/typedarray/Int32Array#reduceRight - i32.const 6 - i32.ne - br_if $folding-inner1 - local.get $1 - call $~lib/rt/pure/__release - i32.const 3 - call $~lib/typedarray/Uint32Array#constructor - local.tee $1 - i32.const 0 - i32.const 1 - call $~lib/typedarray/Uint32Array#__set - local.get $1 - i32.const 1 - i32.const 2 - call $~lib/typedarray/Uint32Array#__set - local.get $1 - i32.const 2 - i32.const 3 - call $~lib/typedarray/Uint32Array#__set - local.get $1 - i32.const 19 - call $~lib/typedarray/Int32Array#reduceRight - i32.const 6 - i32.ne - br_if $folding-inner1 - local.get $1 - call $~lib/rt/pure/__release - i32.const 3 - call $~lib/typedarray/Int64Array#constructor - local.tee $1 - i32.const 0 - i64.const 1 - call $~lib/typedarray/Int64Array#__set - local.get $1 - i32.const 1 - i64.const 2 - call $~lib/typedarray/Int64Array#__set - local.get $1 - i32.const 2 - i64.const 3 - call $~lib/typedarray/Int64Array#__set - local.get $1 - i32.const 20 - call $~lib/typedarray/Int64Array#reduceRight - i64.const 6 - i64.ne - br_if $folding-inner1 - local.get $1 - call $~lib/rt/pure/__release - i32.const 3 - call $~lib/typedarray/Uint64Array#constructor - local.tee $1 - i32.const 0 - i64.const 1 - call $~lib/typedarray/Uint64Array#__set - local.get $1 - i32.const 1 - i64.const 2 - call $~lib/typedarray/Uint64Array#__set - local.get $1 - i32.const 2 - i64.const 3 - call $~lib/typedarray/Uint64Array#__set - local.get $1 - i32.const 21 - call $~lib/typedarray/Int64Array#reduceRight - i64.const 6 - i64.ne - br_if $folding-inner1 - local.get $1 - call $~lib/rt/pure/__release - i32.const 3 - call $~lib/typedarray/Float32Array#constructor - local.tee $1 - i32.const 0 - f32.const 1 - call $~lib/typedarray/Float32Array#__set - local.get $1 - i32.const 1 - f32.const 2 - call $~lib/typedarray/Float32Array#__set - local.get $1 - i32.const 2 - f32.const 3 - call $~lib/typedarray/Float32Array#__set - f32.const 0 - local.set $21 - local.get $1 - i32.load offset=4 - local.set $29 - local.get $1 - i32.load offset=8 - i32.const 2 - i32.shr_u - i32.const 1 - i32.sub - local.set $0 - loop $for-loop|07 - local.get $0 - i32.const 0 - i32.ge_s - if - i32.const 4 - global.set $~argumentsLength - local.get $21 - local.get $29 - local.get $0 - i32.const 2 - i32.shl - i32.add - f32.load - f32.add - local.set $21 - local.get $0 - i32.const 1 - i32.sub - local.set $0 - br $for-loop|07 - end - end - local.get $21 - f32.const 6 - f32.ne - br_if $folding-inner1 - local.get $1 - call $~lib/rt/pure/__release - i32.const 3 - call $~lib/typedarray/Float64Array#constructor - local.tee $1 - i32.const 0 - f64.const 1 - call $~lib/typedarray/Float64Array#__set - local.get $1 - i32.const 1 - f64.const 2 - call $~lib/typedarray/Float64Array#__set - local.get $1 - i32.const 2 - f64.const 3 - call $~lib/typedarray/Float64Array#__set - f64.const 0 - local.set $22 - local.get $1 - i32.load offset=4 - local.set $29 - local.get $1 - i32.load offset=8 - i32.const 3 - i32.shr_u - i32.const 1 - i32.sub - local.set $0 - loop $for-loop|08 - local.get $0 - i32.const 0 - i32.ge_s - if - i32.const 4 - global.set $~argumentsLength - local.get $22 - local.get $29 - local.get $0 - i32.const 3 - i32.shl - i32.add - f64.load - f64.add - local.set $22 - local.get $0 - i32.const 1 - i32.sub - local.set $0 - br $for-loop|08 - end - end - local.get $22 - f64.const 6 - f64.ne - br_if $folding-inner1 - local.get $1 - call $~lib/rt/pure/__release - i32.const 3 - call $~lib/typedarray/Int8Array#constructor - local.tee $0 - i32.const 0 - i32.const 1 - call $~lib/typedarray/Int8Array#__set - local.get $0 - i32.const 1 - i32.const 2 - call $~lib/typedarray/Int8Array#__set - local.get $0 - i32.const 2 - i32.const 3 - call $~lib/typedarray/Int8Array#__set - i32.const 0 - local.set $1 - local.get $0 - i32.load offset=8 - local.set $28 - local.get $0 - i32.load offset=4 - local.set $25 - i32.const 12 - i32.const 3 - call $~lib/rt/tlsf/__alloc - local.set $29 - local.get $28 - i32.const 0 - call $~lib/rt/tlsf/__alloc - local.set $27 - loop $for-loop|09 - local.get $1 - local.get $28 - i32.lt_s - if - i32.const 3 - global.set $~argumentsLength - local.get $1 - local.get $27 - i32.add - local.get $1 - local.get $25 - i32.add - i32.load8_s - local.tee $26 - local.get $26 - i32.mul - i32.store8 - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|09 - end - end - local.get $29 - local.get $27 - call $~lib/rt/pure/__retain - i32.store - local.get $29 - local.get $27 - i32.store offset=4 - local.get $29 - local.get $28 - i32.store offset=8 - local.get $29 - call $~lib/rt/pure/__retain - local.tee $1 - i32.const 0 - call $~lib/typedarray/Int8Array#__get - i32.const 1 - i32.ne - br_if $folding-inner2 - local.get $1 - i32.const 1 - call $~lib/typedarray/Int8Array#__get - i32.const 4 - i32.ne - br_if $folding-inner3 - local.get $1 - i32.const 2 - call $~lib/typedarray/Int8Array#__get - i32.const 9 - i32.ne - br_if $folding-inner4 - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - i32.const 3 - call $~lib/typedarray/Uint8Array#constructor - local.tee $0 - i32.const 0 - i32.const 1 - call $~lib/typedarray/Uint8Array#__set - local.get $0 - i32.const 1 - i32.const 2 - call $~lib/typedarray/Uint8Array#__set - local.get $0 - i32.const 2 - i32.const 3 - call $~lib/typedarray/Uint8Array#__set - i32.const 0 - local.set $1 - local.get $0 - i32.load offset=8 - local.set $28 - local.get $0 - i32.load offset=4 - local.set $25 - i32.const 12 - i32.const 4 - call $~lib/rt/tlsf/__alloc - local.set $29 - local.get $28 - i32.const 0 - call $~lib/rt/tlsf/__alloc - local.set $27 - loop $for-loop|010 - local.get $1 - local.get $28 - i32.lt_s - if - i32.const 3 - global.set $~argumentsLength - local.get $1 - local.get $27 - i32.add - local.get $1 - local.get $25 - i32.add - i32.load8_u - local.tee $26 - local.get $26 - i32.mul - i32.store8 - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|010 - end - end - local.get $29 - local.get $27 - call $~lib/rt/pure/__retain - i32.store - local.get $29 - local.get $27 - i32.store offset=4 - local.get $29 - local.get $28 - i32.store offset=8 - local.get $29 - call $~lib/rt/pure/__retain - local.tee $1 - i32.const 0 - call $~lib/typedarray/Uint8Array#__get - i32.const 1 - i32.ne - br_if $folding-inner2 - local.get $1 - i32.const 1 - call $~lib/typedarray/Uint8Array#__get - i32.const 4 - i32.ne - br_if $folding-inner3 - local.get $1 - i32.const 2 - call $~lib/typedarray/Uint8Array#__get - i32.const 9 - i32.ne - br_if $folding-inner4 - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - i32.const 3 - call $~lib/typedarray/Uint8ClampedArray#constructor - local.tee $0 - i32.const 0 - i32.const 1 - call $~lib/typedarray/Uint8ClampedArray#__set - local.get $0 - i32.const 1 - i32.const 2 - call $~lib/typedarray/Uint8ClampedArray#__set - local.get $0 - i32.const 2 - i32.const 3 - call $~lib/typedarray/Uint8ClampedArray#__set - i32.const 0 - local.set $1 - local.get $0 - i32.load offset=8 - local.set $28 - local.get $0 - i32.load offset=4 - local.set $25 - i32.const 12 - i32.const 5 - call $~lib/rt/tlsf/__alloc - local.set $29 - local.get $28 - i32.const 0 - call $~lib/rt/tlsf/__alloc - local.set $27 - loop $for-loop|011 - local.get $1 - local.get $28 - i32.lt_s - if - i32.const 3 - global.set $~argumentsLength - local.get $1 - local.get $27 - i32.add - local.get $1 - local.get $25 - i32.add - i32.load8_u - local.tee $26 - local.get $26 - i32.mul - i32.store8 - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|011 - end - end - local.get $29 - local.get $27 - call $~lib/rt/pure/__retain - i32.store - local.get $29 - local.get $27 - i32.store offset=4 - local.get $29 - local.get $28 - i32.store offset=8 - local.get $29 - call $~lib/rt/pure/__retain - local.tee $1 - i32.const 0 - call $~lib/typedarray/Uint8ClampedArray#__get - i32.const 1 - i32.ne - br_if $folding-inner2 - local.get $1 - i32.const 1 - call $~lib/typedarray/Uint8ClampedArray#__get - i32.const 4 - i32.ne - br_if $folding-inner3 - local.get $1 - i32.const 2 - call $~lib/typedarray/Uint8ClampedArray#__get - i32.const 9 - i32.ne - br_if $folding-inner4 - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - i32.const 3 - call $~lib/typedarray/Int16Array#constructor - local.tee $0 - i32.const 0 - i32.const 1 - call $~lib/typedarray/Int16Array#__set - local.get $0 - i32.const 1 - i32.const 2 - call $~lib/typedarray/Int16Array#__set - local.get $0 - i32.const 2 - i32.const 3 - call $~lib/typedarray/Int16Array#__set - i32.const 0 - local.set $1 - local.get $0 - i32.load offset=8 - i32.const 1 - i32.shr_u - local.set $27 - local.get $0 - i32.load offset=4 - local.set $25 - i32.const 12 - i32.const 6 - call $~lib/rt/tlsf/__alloc - local.set $29 - local.get $27 - i32.const 1 - i32.shl - local.tee $26 - i32.const 0 - call $~lib/rt/tlsf/__alloc - local.set $28 - loop $for-loop|012 - local.get $1 - local.get $27 - i32.lt_s - if - i32.const 3 - global.set $~argumentsLength - local.get $25 - local.get $1 - i32.const 1 - i32.shl - local.tee $24 - i32.add - i32.load16_s - local.tee $23 - local.get $23 - i32.mul - local.set $23 - local.get $24 - local.get $28 - i32.add - local.get $23 - i32.store16 - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|012 - end - end - local.get $29 - local.get $28 - call $~lib/rt/pure/__retain - i32.store - local.get $29 - local.get $28 - i32.store offset=4 - local.get $29 - local.get $26 - i32.store offset=8 - local.get $29 - call $~lib/rt/pure/__retain - local.tee $1 - i32.const 0 - call $~lib/typedarray/Int16Array#__get - i32.const 1 - i32.ne - br_if $folding-inner2 - local.get $1 - i32.const 1 - call $~lib/typedarray/Int16Array#__get - i32.const 4 - i32.ne - br_if $folding-inner3 - local.get $1 - i32.const 2 - call $~lib/typedarray/Int16Array#__get - i32.const 9 - i32.ne - br_if $folding-inner4 - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - i32.const 3 - call $~lib/typedarray/Uint16Array#constructor - local.tee $0 - i32.const 0 - i32.const 1 - call $~lib/typedarray/Uint16Array#__set - local.get $0 - i32.const 1 - i32.const 2 - call $~lib/typedarray/Uint16Array#__set - local.get $0 - i32.const 2 - i32.const 3 - call $~lib/typedarray/Uint16Array#__set - i32.const 0 - local.set $1 - local.get $0 - i32.load offset=8 - i32.const 1 - i32.shr_u - local.set $27 - local.get $0 - i32.load offset=4 - local.set $25 - i32.const 12 - i32.const 7 - call $~lib/rt/tlsf/__alloc - local.set $29 - local.get $27 - i32.const 1 - i32.shl - local.tee $26 - i32.const 0 - call $~lib/rt/tlsf/__alloc - local.set $28 - loop $for-loop|013 - local.get $1 - local.get $27 - i32.lt_s - if - i32.const 3 - global.set $~argumentsLength - local.get $25 - local.get $1 - i32.const 1 - i32.shl - local.tee $24 - i32.add - i32.load16_u - local.tee $23 - local.get $23 - i32.mul - local.set $23 - local.get $24 - local.get $28 - i32.add - local.get $23 - i32.store16 - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|013 - end - end - local.get $29 - local.get $28 - call $~lib/rt/pure/__retain - i32.store - local.get $29 - local.get $28 - i32.store offset=4 - local.get $29 - local.get $26 - i32.store offset=8 - local.get $29 - call $~lib/rt/pure/__retain - local.tee $1 - i32.const 0 - call $~lib/typedarray/Uint16Array#__get - i32.const 1 - i32.ne - br_if $folding-inner2 - local.get $1 - i32.const 1 - call $~lib/typedarray/Uint16Array#__get - i32.const 4 - i32.ne - br_if $folding-inner3 - local.get $1 - i32.const 2 - call $~lib/typedarray/Uint16Array#__get - i32.const 9 - i32.ne - br_if $folding-inner4 - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - i32.const 3 - call $~lib/typedarray/Int32Array#constructor - local.tee $0 - i32.const 0 - i32.const 1 - call $~lib/typedarray/Int32Array#__set - local.get $0 - i32.const 1 - i32.const 2 - call $~lib/typedarray/Int32Array#__set - local.get $0 - i32.const 2 - i32.const 3 - call $~lib/typedarray/Int32Array#__set - i32.const 0 - local.set $1 - local.get $0 - i32.load offset=8 - i32.const 2 - i32.shr_u - local.set $27 - local.get $0 - i32.load offset=4 - local.set $25 - i32.const 12 - i32.const 8 - call $~lib/rt/tlsf/__alloc - local.set $29 - local.get $27 - i32.const 2 - i32.shl - local.tee $26 - i32.const 0 - call $~lib/rt/tlsf/__alloc - local.set $28 - loop $for-loop|014 - local.get $1 - local.get $27 - i32.lt_s - if - i32.const 3 - global.set $~argumentsLength - local.get $25 - local.get $1 - i32.const 2 - i32.shl - local.tee $24 - i32.add - i32.load - local.tee $23 - local.get $23 - i32.mul - local.set $23 - local.get $24 - local.get $28 - i32.add - local.get $23 - i32.store - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|014 - end - end - local.get $29 - local.get $28 - call $~lib/rt/pure/__retain - i32.store - local.get $29 - local.get $28 - i32.store offset=4 - local.get $29 - local.get $26 - i32.store offset=8 - local.get $29 - call $~lib/rt/pure/__retain - local.tee $1 - i32.const 0 - call $~lib/typedarray/Int32Array#__get - i32.const 1 - i32.ne - br_if $folding-inner2 - local.get $1 - i32.const 1 - call $~lib/typedarray/Int32Array#__get - i32.const 4 - i32.ne - br_if $folding-inner3 - local.get $1 - i32.const 2 - call $~lib/typedarray/Int32Array#__get - i32.const 9 - i32.ne - br_if $folding-inner4 - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - i32.const 3 - call $~lib/typedarray/Uint32Array#constructor - local.tee $0 - i32.const 0 - i32.const 1 - call $~lib/typedarray/Uint32Array#__set - local.get $0 - i32.const 1 - i32.const 2 - call $~lib/typedarray/Uint32Array#__set - local.get $0 - i32.const 2 - i32.const 3 - call $~lib/typedarray/Uint32Array#__set - i32.const 0 - local.set $1 - local.get $0 - i32.load offset=8 - i32.const 2 - i32.shr_u - local.set $27 - local.get $0 - i32.load offset=4 - local.set $25 - i32.const 12 - i32.const 9 - call $~lib/rt/tlsf/__alloc - local.set $29 - local.get $27 - i32.const 2 - i32.shl - local.tee $26 - i32.const 0 - call $~lib/rt/tlsf/__alloc - local.set $28 - loop $for-loop|015 - local.get $1 - local.get $27 - i32.lt_s - if - i32.const 3 - global.set $~argumentsLength - local.get $25 - local.get $1 - i32.const 2 - i32.shl - local.tee $24 - i32.add - i32.load - local.tee $23 - local.get $23 - i32.mul - local.set $23 - local.get $24 - local.get $28 - i32.add - local.get $23 - i32.store - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|015 - end - end - local.get $29 - local.get $28 - call $~lib/rt/pure/__retain - i32.store - local.get $29 - local.get $28 - i32.store offset=4 - local.get $29 - local.get $26 - i32.store offset=8 - local.get $29 - call $~lib/rt/pure/__retain - local.tee $1 - i32.const 0 - call $~lib/typedarray/Uint32Array#__get - i32.const 1 - i32.ne - br_if $folding-inner2 - local.get $1 - i32.const 1 - call $~lib/typedarray/Uint32Array#__get - i32.const 4 - i32.ne - br_if $folding-inner3 - local.get $1 - i32.const 2 - call $~lib/typedarray/Uint32Array#__get - i32.const 9 - i32.ne - br_if $folding-inner4 - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - i32.const 3 - call $~lib/typedarray/Int64Array#constructor - local.tee $0 - i32.const 0 - i64.const 1 - call $~lib/typedarray/Int64Array#__set - local.get $0 - i32.const 1 - i64.const 2 - call $~lib/typedarray/Int64Array#__set - local.get $0 - i32.const 2 - i64.const 3 - call $~lib/typedarray/Int64Array#__set - i32.const 0 - local.set $1 - local.get $0 - i32.load offset=8 - i32.const 3 - i32.shr_u - local.set $27 - local.get $0 - i32.load offset=4 - local.set $25 - i32.const 12 - i32.const 10 - call $~lib/rt/tlsf/__alloc - local.set $29 - local.get $27 - i32.const 3 - i32.shl - local.tee $26 - i32.const 0 - call $~lib/rt/tlsf/__alloc - local.set $28 - loop $for-loop|016 - local.get $1 - local.get $27 - i32.lt_s - if - i32.const 3 - global.set $~argumentsLength - local.get $25 - local.get $1 - i32.const 3 - i32.shl - local.tee $24 - i32.add - i64.load - local.tee $20 - local.get $20 - i64.mul - local.set $20 - local.get $24 - local.get $28 - i32.add - local.get $20 - i64.store - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|016 - end - end - local.get $29 - local.get $28 - call $~lib/rt/pure/__retain - i32.store - local.get $29 - local.get $28 - i32.store offset=4 - local.get $29 - local.get $26 - i32.store offset=8 - local.get $29 - call $~lib/rt/pure/__retain - local.tee $1 - i32.const 0 - call $~lib/typedarray/Int64Array#__get - i64.const 1 - i64.ne - br_if $folding-inner2 - local.get $1 - i32.const 1 - call $~lib/typedarray/Int64Array#__get - i64.const 4 - i64.ne - br_if $folding-inner3 - local.get $1 - i32.const 2 - call $~lib/typedarray/Int64Array#__get - i64.const 9 - i64.ne - br_if $folding-inner4 - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - i32.const 3 - call $~lib/typedarray/Uint64Array#constructor - local.tee $0 - i32.const 0 - i64.const 1 - call $~lib/typedarray/Uint64Array#__set - local.get $0 - i32.const 1 - i64.const 2 - call $~lib/typedarray/Uint64Array#__set - local.get $0 - i32.const 2 - i64.const 3 - call $~lib/typedarray/Uint64Array#__set - i32.const 0 - local.set $1 - local.get $0 - i32.load offset=8 - i32.const 3 - i32.shr_u - local.set $27 - local.get $0 - i32.load offset=4 - local.set $25 - i32.const 12 - i32.const 11 - call $~lib/rt/tlsf/__alloc - local.set $29 - local.get $27 - i32.const 3 - i32.shl - local.tee $26 - i32.const 0 - call $~lib/rt/tlsf/__alloc - local.set $28 - loop $for-loop|017 - local.get $1 - local.get $27 - i32.lt_s - if - i32.const 3 - global.set $~argumentsLength - local.get $25 - local.get $1 - i32.const 3 - i32.shl - local.tee $24 - i32.add - i64.load - local.tee $20 - local.get $20 - i64.mul - local.set $20 - local.get $24 - local.get $28 - i32.add - local.get $20 - i64.store - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|017 - end - end - local.get $29 - local.get $28 - call $~lib/rt/pure/__retain - i32.store - local.get $29 - local.get $28 - i32.store offset=4 - local.get $29 - local.get $26 - i32.store offset=8 - local.get $29 - call $~lib/rt/pure/__retain - local.tee $1 - i32.const 0 - call $~lib/typedarray/Uint64Array#__get - i64.const 1 - i64.ne - br_if $folding-inner2 - local.get $1 - i32.const 1 - call $~lib/typedarray/Uint64Array#__get - i64.const 4 - i64.ne - br_if $folding-inner3 - local.get $1 - i32.const 2 - call $~lib/typedarray/Uint64Array#__get - i64.const 9 - i64.ne - br_if $folding-inner4 - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - i32.const 3 - call $~lib/typedarray/Float32Array#constructor - local.tee $0 - i32.const 0 - f32.const 1 - call $~lib/typedarray/Float32Array#__set - local.get $0 - i32.const 1 - f32.const 2 - call $~lib/typedarray/Float32Array#__set - local.get $0 - i32.const 2 - f32.const 3 - call $~lib/typedarray/Float32Array#__set - i32.const 0 - local.set $1 - local.get $0 - i32.load offset=8 - i32.const 2 - i32.shr_u - local.set $27 - local.get $0 - i32.load offset=4 - local.set $25 - i32.const 12 - i32.const 12 - call $~lib/rt/tlsf/__alloc - local.set $29 - local.get $27 - i32.const 2 - i32.shl - local.tee $26 - i32.const 0 - call $~lib/rt/tlsf/__alloc - local.set $28 - loop $for-loop|018 - local.get $1 - local.get $27 - i32.lt_s - if - i32.const 3 - global.set $~argumentsLength - local.get $25 - local.get $1 - i32.const 2 - i32.shl - local.tee $24 - i32.add - f32.load - local.tee $21 - local.get $21 - f32.mul - local.set $21 - local.get $24 - local.get $28 - i32.add - local.get $21 - f32.store - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|018 - end - end - local.get $29 - local.get $28 - call $~lib/rt/pure/__retain - i32.store - local.get $29 - local.get $28 - i32.store offset=4 - local.get $29 - local.get $26 - i32.store offset=8 - local.get $29 - call $~lib/rt/pure/__retain - local.tee $1 - i32.const 0 - call $~lib/typedarray/Float32Array#__get - f32.const 1 - f32.ne - br_if $folding-inner2 - local.get $1 - i32.const 1 - call $~lib/typedarray/Float32Array#__get - f32.const 4 - f32.ne - br_if $folding-inner3 - local.get $1 - i32.const 2 - call $~lib/typedarray/Float32Array#__get - f32.const 9 - f32.ne - br_if $folding-inner4 - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - i32.const 3 - call $~lib/typedarray/Float64Array#constructor - local.tee $0 - i32.const 0 - f64.const 1 - call $~lib/typedarray/Float64Array#__set - local.get $0 - i32.const 1 - f64.const 2 - call $~lib/typedarray/Float64Array#__set - local.get $0 - i32.const 2 - f64.const 3 - call $~lib/typedarray/Float64Array#__set - i32.const 0 - local.set $1 - local.get $0 - i32.load offset=8 - i32.const 3 - i32.shr_u - local.set $27 - local.get $0 - i32.load offset=4 - local.set $25 - i32.const 12 - i32.const 13 - call $~lib/rt/tlsf/__alloc - local.set $29 - local.get $27 - i32.const 3 - i32.shl - local.tee $26 - i32.const 0 - call $~lib/rt/tlsf/__alloc - local.set $28 - loop $for-loop|019 - local.get $1 - local.get $27 - i32.lt_s - if - i32.const 3 - global.set $~argumentsLength - local.get $25 - local.get $1 - i32.const 3 - i32.shl - local.tee $24 - i32.add - f64.load - local.tee $22 - local.get $22 - f64.mul - local.set $22 - local.get $24 - local.get $28 - i32.add - local.get $22 - f64.store - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|019 - end - end - local.get $29 - local.get $28 - call $~lib/rt/pure/__retain - i32.store - local.get $29 - local.get $28 - i32.store offset=4 - local.get $29 - local.get $26 - i32.store offset=8 - local.get $29 - call $~lib/rt/pure/__retain - local.tee $1 - i32.const 0 - call $~lib/typedarray/Float64Array#__get - f64.const 1 - f64.ne - br_if $folding-inner2 - local.get $1 - i32.const 1 - call $~lib/typedarray/Float64Array#__get - f64.const 4 - f64.ne - br_if $folding-inner3 - local.get $1 - i32.const 2 - call $~lib/typedarray/Float64Array#__get - f64.const 9 - f64.ne - br_if $folding-inner4 - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - call $std/typedarray/testArrayFilter<~lib/typedarray/Int8Array,i8> - call $std/typedarray/testArrayFilter<~lib/typedarray/Uint8Array,u8> - call $std/typedarray/testArrayFilter<~lib/typedarray/Uint8ClampedArray,u8> - call $std/typedarray/testArrayFilter<~lib/typedarray/Int16Array,i16> - call $std/typedarray/testArrayFilter<~lib/typedarray/Uint16Array,u16> - call $std/typedarray/testArrayFilter<~lib/typedarray/Int32Array,i32> - call $std/typedarray/testArrayFilter<~lib/typedarray/Uint32Array,u32> - call $std/typedarray/testArrayFilter<~lib/typedarray/Int64Array,i64> - call $std/typedarray/testArrayFilter<~lib/typedarray/Uint64Array,u64> - call $std/typedarray/testArrayFilter<~lib/typedarray/Float32Array,f32> - call $std/typedarray/testArrayFilter<~lib/typedarray/Float64Array,f64> - i32.const 3 - call $~lib/typedarray/Int8Array#constructor - local.tee $1 - i32.const 0 - i32.const 2 - call $~lib/typedarray/Int8Array#__set - local.get $1 - i32.const 1 - i32.const 4 - call $~lib/typedarray/Int8Array#__set - local.get $1 - i32.const 2 - i32.const 6 - call $~lib/typedarray/Int8Array#__set - local.get $1 - i32.const 46 - call $~lib/typedarray/Int8Array#some - i32.eqz - br_if $folding-inner5 - local.get $1 - i32.const 47 - call $~lib/typedarray/Int8Array#some - br_if $folding-inner6 - local.get $1 - call $~lib/rt/pure/__release - i32.const 3 - call $~lib/typedarray/Uint8Array#constructor - local.tee $1 - i32.const 0 - i32.const 2 - call $~lib/typedarray/Uint8Array#__set - local.get $1 - i32.const 1 - i32.const 4 - call $~lib/typedarray/Uint8Array#__set - local.get $1 - i32.const 2 - i32.const 6 - call $~lib/typedarray/Uint8Array#__set - local.get $1 - i32.const 48 - call $~lib/typedarray/Uint8Array#some - i32.eqz - br_if $folding-inner5 - local.get $1 - i32.const 49 - call $~lib/typedarray/Uint8Array#some - br_if $folding-inner6 - local.get $1 - call $~lib/rt/pure/__release - i32.const 3 - call $~lib/typedarray/Uint8ClampedArray#constructor - local.tee $1 - i32.const 0 - i32.const 2 - call $~lib/typedarray/Uint8ClampedArray#__set - local.get $1 - i32.const 1 - i32.const 4 - call $~lib/typedarray/Uint8ClampedArray#__set - local.get $1 - i32.const 2 - i32.const 6 - call $~lib/typedarray/Uint8ClampedArray#__set - local.get $1 - i32.const 50 - call $~lib/typedarray/Uint8Array#some - i32.eqz - br_if $folding-inner5 - local.get $1 - i32.const 51 - call $~lib/typedarray/Uint8Array#some - br_if $folding-inner6 - local.get $1 - call $~lib/rt/pure/__release - i32.const 3 - call $~lib/typedarray/Int16Array#constructor - local.tee $1 - i32.const 0 - i32.const 2 - call $~lib/typedarray/Int16Array#__set - local.get $1 - i32.const 1 - i32.const 4 - call $~lib/typedarray/Int16Array#__set - local.get $1 - i32.const 2 - i32.const 6 - call $~lib/typedarray/Int16Array#__set - local.get $1 - i32.const 52 - call $~lib/typedarray/Int16Array#some - i32.eqz - br_if $folding-inner5 - local.get $1 - i32.const 53 - call $~lib/typedarray/Int16Array#some - br_if $folding-inner6 - local.get $1 - call $~lib/rt/pure/__release - i32.const 3 - call $~lib/typedarray/Uint16Array#constructor - local.tee $1 - i32.const 0 - i32.const 2 - call $~lib/typedarray/Uint16Array#__set - local.get $1 - i32.const 1 - i32.const 4 - call $~lib/typedarray/Uint16Array#__set - local.get $1 - i32.const 2 - i32.const 6 - call $~lib/typedarray/Uint16Array#__set - local.get $1 - i32.const 54 - call $~lib/typedarray/Uint16Array#some - i32.eqz - br_if $folding-inner5 - local.get $1 - i32.const 55 - call $~lib/typedarray/Uint16Array#some - br_if $folding-inner6 - local.get $1 - call $~lib/rt/pure/__release - i32.const 3 - call $~lib/typedarray/Int32Array#constructor - local.tee $1 - i32.const 0 - i32.const 2 - call $~lib/typedarray/Int32Array#__set - local.get $1 - i32.const 1 - i32.const 4 - call $~lib/typedarray/Int32Array#__set - local.get $1 - i32.const 2 - i32.const 6 - call $~lib/typedarray/Int32Array#__set - local.get $1 - i32.const 56 - call $~lib/typedarray/Int32Array#some - i32.eqz - br_if $folding-inner5 - local.get $1 - i32.const 57 - call $~lib/typedarray/Int32Array#some - br_if $folding-inner6 - local.get $1 - call $~lib/rt/pure/__release - i32.const 3 - call $~lib/typedarray/Uint32Array#constructor - local.tee $1 - i32.const 0 - i32.const 2 - call $~lib/typedarray/Uint32Array#__set - local.get $1 - i32.const 1 - i32.const 4 - call $~lib/typedarray/Uint32Array#__set - local.get $1 - i32.const 2 - i32.const 6 - call $~lib/typedarray/Uint32Array#__set - local.get $1 - i32.const 58 - call $~lib/typedarray/Int32Array#some - i32.eqz - br_if $folding-inner5 - local.get $1 - i32.const 59 - call $~lib/typedarray/Int32Array#some - br_if $folding-inner6 - local.get $1 - call $~lib/rt/pure/__release - i32.const 3 - call $~lib/typedarray/Int64Array#constructor - local.tee $1 - i32.const 0 - i64.const 2 - call $~lib/typedarray/Int64Array#__set - local.get $1 - i32.const 1 - i64.const 4 - call $~lib/typedarray/Int64Array#__set - local.get $1 - i32.const 2 - i64.const 6 - call $~lib/typedarray/Int64Array#__set - local.get $1 - i32.const 60 - call $~lib/typedarray/Int64Array#some - i32.eqz - br_if $folding-inner5 - local.get $1 - i32.const 61 - call $~lib/typedarray/Int64Array#some - br_if $folding-inner6 - local.get $1 - call $~lib/rt/pure/__release - i32.const 3 - call $~lib/typedarray/Uint64Array#constructor - local.tee $1 - i32.const 0 - i64.const 2 - call $~lib/typedarray/Uint64Array#__set - local.get $1 - i32.const 1 - i64.const 4 - call $~lib/typedarray/Uint64Array#__set - local.get $1 - i32.const 2 - i64.const 6 - call $~lib/typedarray/Uint64Array#__set - local.get $1 - i32.const 62 - call $~lib/typedarray/Int64Array#some - i32.eqz - br_if $folding-inner5 - local.get $1 - i32.const 63 - call $~lib/typedarray/Int64Array#some - br_if $folding-inner6 - local.get $1 - call $~lib/rt/pure/__release - i32.const 3 - call $~lib/typedarray/Float32Array#constructor - local.tee $1 - i32.const 0 - f32.const 2 - call $~lib/typedarray/Float32Array#__set - local.get $1 - i32.const 1 - f32.const 4 - call $~lib/typedarray/Float32Array#__set - local.get $1 - i32.const 2 - f32.const 6 - call $~lib/typedarray/Float32Array#__set - local.get $1 - i32.const 64 - call $~lib/typedarray/Float32Array#some - i32.eqz - br_if $folding-inner5 - local.get $1 - i32.const 65 - call $~lib/typedarray/Float32Array#some - br_if $folding-inner6 - local.get $1 - call $~lib/rt/pure/__release - i32.const 3 - call $~lib/typedarray/Float64Array#constructor - local.tee $1 - i32.const 0 - f64.const 2 - call $~lib/typedarray/Float64Array#__set - local.get $1 - i32.const 1 - f64.const 4 - call $~lib/typedarray/Float64Array#__set - local.get $1 - i32.const 2 - f64.const 6 - call $~lib/typedarray/Float64Array#__set - local.get $1 - i32.const 66 - call $~lib/typedarray/Float64Array#some - i32.eqz - br_if $folding-inner5 - local.get $1 - i32.const 67 - call $~lib/typedarray/Float64Array#some - br_if $folding-inner6 - local.get $1 - call $~lib/rt/pure/__release - i32.const 3 - call $~lib/typedarray/Int8Array#constructor - local.tee $1 - i32.const 0 - i32.const 1 - call $~lib/typedarray/Int8Array#__set - local.get $1 - i32.const 1 - i32.const 2 - call $~lib/typedarray/Int8Array#__set - local.get $1 - i32.const 2 - i32.const 3 - call $~lib/typedarray/Int8Array#__set - local.get $1 - i32.const 68 - call $~lib/typedarray/Int8Array#findIndex - i32.const 1 - i32.ne - br_if $folding-inner7 - local.get $1 - i32.const 69 - call $~lib/typedarray/Int8Array#findIndex - i32.const -1 - i32.ne - br_if $folding-inner8 - local.get $1 - call $~lib/rt/pure/__release - i32.const 3 - call $~lib/typedarray/Uint8Array#constructor - local.tee $1 - i32.const 0 - i32.const 1 - call $~lib/typedarray/Uint8Array#__set - local.get $1 - i32.const 1 - i32.const 2 - call $~lib/typedarray/Uint8Array#__set - local.get $1 - i32.const 2 - i32.const 3 - call $~lib/typedarray/Uint8Array#__set - local.get $1 - i32.const 70 - call $~lib/typedarray/Uint8Array#findIndex - i32.const 1 - i32.ne - br_if $folding-inner7 - local.get $1 - i32.const 71 - call $~lib/typedarray/Uint8Array#findIndex - i32.const -1 - i32.ne - br_if $folding-inner8 - local.get $1 - call $~lib/rt/pure/__release - i32.const 3 - call $~lib/typedarray/Uint8ClampedArray#constructor - local.tee $1 - i32.const 0 - i32.const 1 - call $~lib/typedarray/Uint8ClampedArray#__set - local.get $1 - i32.const 1 - i32.const 2 - call $~lib/typedarray/Uint8ClampedArray#__set - local.get $1 - i32.const 2 - i32.const 3 - call $~lib/typedarray/Uint8ClampedArray#__set - local.get $1 - i32.const 72 - call $~lib/typedarray/Uint8Array#findIndex - i32.const 1 - i32.ne - br_if $folding-inner7 - local.get $1 - i32.const 73 - call $~lib/typedarray/Uint8Array#findIndex - i32.const -1 - i32.ne - br_if $folding-inner8 - local.get $1 - call $~lib/rt/pure/__release - i32.const 3 - call $~lib/typedarray/Int16Array#constructor - local.tee $1 - i32.const 0 - i32.const 1 - call $~lib/typedarray/Int16Array#__set - local.get $1 - i32.const 1 - i32.const 2 - call $~lib/typedarray/Int16Array#__set - local.get $1 - i32.const 2 - i32.const 3 - call $~lib/typedarray/Int16Array#__set - local.get $1 - i32.const 74 - call $~lib/typedarray/Int16Array#findIndex - i32.const 1 - i32.ne - br_if $folding-inner7 - local.get $1 - i32.const 75 - call $~lib/typedarray/Int16Array#findIndex - i32.const -1 - i32.ne - br_if $folding-inner8 - local.get $1 - call $~lib/rt/pure/__release - i32.const 3 - call $~lib/typedarray/Uint16Array#constructor - local.tee $1 - i32.const 0 - i32.const 1 - call $~lib/typedarray/Uint16Array#__set - local.get $1 - i32.const 1 - i32.const 2 - call $~lib/typedarray/Uint16Array#__set - local.get $1 - i32.const 2 - i32.const 3 - call $~lib/typedarray/Uint16Array#__set - local.get $1 - i32.const 76 - call $~lib/typedarray/Uint16Array#findIndex - i32.const 1 - i32.ne - br_if $folding-inner7 - local.get $1 - i32.const 77 - call $~lib/typedarray/Uint16Array#findIndex - i32.const -1 - i32.ne - br_if $folding-inner8 - local.get $1 - call $~lib/rt/pure/__release - i32.const 3 - call $~lib/typedarray/Int32Array#constructor - local.tee $1 - i32.const 0 - i32.const 1 - call $~lib/typedarray/Int32Array#__set - local.get $1 - i32.const 1 - i32.const 2 - call $~lib/typedarray/Int32Array#__set - local.get $1 - i32.const 2 - i32.const 3 - call $~lib/typedarray/Int32Array#__set - local.get $1 - i32.const 78 - call $~lib/typedarray/Int32Array#findIndex - i32.const 1 - i32.ne - br_if $folding-inner7 - local.get $1 - i32.const 79 - call $~lib/typedarray/Int32Array#findIndex - i32.const -1 - i32.ne - br_if $folding-inner8 - local.get $1 - call $~lib/rt/pure/__release - i32.const 3 - call $~lib/typedarray/Uint32Array#constructor - local.tee $1 - i32.const 0 - i32.const 1 - call $~lib/typedarray/Uint32Array#__set - local.get $1 - i32.const 1 - i32.const 2 - call $~lib/typedarray/Uint32Array#__set - local.get $1 - i32.const 2 - i32.const 3 - call $~lib/typedarray/Uint32Array#__set - local.get $1 - i32.const 80 - call $~lib/typedarray/Int32Array#findIndex - i32.const 1 - i32.ne - br_if $folding-inner7 - local.get $1 - i32.const 81 - call $~lib/typedarray/Int32Array#findIndex - i32.const -1 - i32.ne - br_if $folding-inner8 - local.get $1 - call $~lib/rt/pure/__release - i32.const 3 - call $~lib/typedarray/Int64Array#constructor - local.tee $1 - i32.const 0 - i64.const 1 - call $~lib/typedarray/Int64Array#__set - local.get $1 - i32.const 1 - i64.const 2 - call $~lib/typedarray/Int64Array#__set - local.get $1 - i32.const 2 - i64.const 3 - call $~lib/typedarray/Int64Array#__set - local.get $1 - i32.const 82 - call $~lib/typedarray/Int64Array#findIndex - i32.const 1 - i32.ne - br_if $folding-inner7 - local.get $1 - i32.const 83 - call $~lib/typedarray/Int64Array#findIndex - i32.const -1 - i32.ne - br_if $folding-inner8 - local.get $1 - call $~lib/rt/pure/__release - i32.const 3 - call $~lib/typedarray/Uint64Array#constructor - local.tee $1 - i32.const 0 - i64.const 1 - call $~lib/typedarray/Uint64Array#__set - local.get $1 - i32.const 1 - i64.const 2 - call $~lib/typedarray/Uint64Array#__set - local.get $1 - i32.const 2 - i64.const 3 - call $~lib/typedarray/Uint64Array#__set - local.get $1 - i32.const 84 - call $~lib/typedarray/Int64Array#findIndex - i32.const 1 - i32.ne - br_if $folding-inner7 - local.get $1 - i32.const 85 - call $~lib/typedarray/Int64Array#findIndex - i32.const -1 - i32.ne - br_if $folding-inner8 - local.get $1 - call $~lib/rt/pure/__release - i32.const 3 - call $~lib/typedarray/Float32Array#constructor - local.tee $1 - i32.const 0 - f32.const 1 - call $~lib/typedarray/Float32Array#__set - local.get $1 - i32.const 1 - f32.const 2 - call $~lib/typedarray/Float32Array#__set - local.get $1 - i32.const 2 - f32.const 3 - call $~lib/typedarray/Float32Array#__set - local.get $1 - i32.const 86 - call $~lib/typedarray/Float32Array#findIndex - i32.const 1 - i32.ne - br_if $folding-inner7 - local.get $1 - i32.const 87 - call $~lib/typedarray/Float32Array#findIndex - i32.const -1 - i32.ne - br_if $folding-inner8 - local.get $1 - call $~lib/rt/pure/__release - i32.const 3 - call $~lib/typedarray/Float64Array#constructor - local.tee $1 - i32.const 0 - f64.const 1 - call $~lib/typedarray/Float64Array#__set - local.get $1 - i32.const 1 - f64.const 2 - call $~lib/typedarray/Float64Array#__set - local.get $1 - i32.const 2 - f64.const 3 - call $~lib/typedarray/Float64Array#__set - local.get $1 - i32.const 88 - call $~lib/typedarray/Float64Array#findIndex - i32.const 1 - i32.ne - br_if $folding-inner7 - local.get $1 - i32.const 89 - call $~lib/typedarray/Float64Array#findIndex - i32.const -1 - i32.ne - br_if $folding-inner8 - local.get $1 - call $~lib/rt/pure/__release - i32.const 3 - call $~lib/typedarray/Int8Array#constructor - local.tee $1 - i32.const 0 - i32.const 2 - call $~lib/typedarray/Int8Array#__set - local.get $1 - i32.const 1 - i32.const 4 - call $~lib/typedarray/Int8Array#__set - local.get $1 - i32.const 2 - i32.const 6 - call $~lib/typedarray/Int8Array#__set - local.get $1 - i32.const 90 - call $~lib/typedarray/Int8Array#every - i32.eqz - br_if $folding-inner9 - local.get $1 - i32.const 91 - call $~lib/typedarray/Int8Array#every - br_if $folding-inner10 - local.get $1 - call $~lib/rt/pure/__release - i32.const 3 - call $~lib/typedarray/Uint8Array#constructor - local.tee $1 - i32.const 0 - i32.const 2 - call $~lib/typedarray/Uint8Array#__set - local.get $1 - i32.const 1 - i32.const 4 - call $~lib/typedarray/Uint8Array#__set - local.get $1 - i32.const 2 - i32.const 6 - call $~lib/typedarray/Uint8Array#__set - local.get $1 - i32.const 92 - call $~lib/typedarray/Uint8Array#every - i32.eqz - br_if $folding-inner9 - local.get $1 - i32.const 93 - call $~lib/typedarray/Uint8Array#every - br_if $folding-inner10 - local.get $1 - call $~lib/rt/pure/__release - i32.const 3 - call $~lib/typedarray/Uint8ClampedArray#constructor - local.tee $1 - i32.const 0 - i32.const 2 - call $~lib/typedarray/Uint8ClampedArray#__set - local.get $1 - i32.const 1 - i32.const 4 - call $~lib/typedarray/Uint8ClampedArray#__set - local.get $1 - i32.const 2 - i32.const 6 - call $~lib/typedarray/Uint8ClampedArray#__set - local.get $1 - i32.const 94 - call $~lib/typedarray/Uint8Array#every - i32.eqz - br_if $folding-inner9 - local.get $1 - i32.const 95 - call $~lib/typedarray/Uint8Array#every - br_if $folding-inner10 - local.get $1 - call $~lib/rt/pure/__release - i32.const 3 - call $~lib/typedarray/Int16Array#constructor - local.tee $1 - i32.const 0 - i32.const 2 - call $~lib/typedarray/Int16Array#__set - local.get $1 - i32.const 1 - i32.const 4 - call $~lib/typedarray/Int16Array#__set - local.get $1 - i32.const 2 - i32.const 6 - call $~lib/typedarray/Int16Array#__set - local.get $1 - i32.const 96 - call $~lib/typedarray/Int16Array#every - i32.eqz - br_if $folding-inner9 - local.get $1 - i32.const 97 - call $~lib/typedarray/Int16Array#every - br_if $folding-inner10 - local.get $1 - call $~lib/rt/pure/__release - i32.const 3 - call $~lib/typedarray/Uint16Array#constructor - local.tee $1 - i32.const 0 - i32.const 2 - call $~lib/typedarray/Uint16Array#__set - local.get $1 - i32.const 1 - i32.const 4 - call $~lib/typedarray/Uint16Array#__set - local.get $1 - i32.const 2 - i32.const 6 - call $~lib/typedarray/Uint16Array#__set - local.get $1 - i32.const 98 - call $~lib/typedarray/Uint16Array#every - i32.eqz - br_if $folding-inner9 - local.get $1 - i32.const 99 - call $~lib/typedarray/Uint16Array#every - br_if $folding-inner10 - local.get $1 - call $~lib/rt/pure/__release - i32.const 3 - call $~lib/typedarray/Int32Array#constructor - local.tee $1 - i32.const 0 - i32.const 2 - call $~lib/typedarray/Int32Array#__set - local.get $1 - i32.const 1 - i32.const 4 - call $~lib/typedarray/Int32Array#__set - local.get $1 - i32.const 2 - i32.const 6 - call $~lib/typedarray/Int32Array#__set - local.get $1 - i32.const 100 - call $~lib/typedarray/Int32Array#every - i32.eqz - br_if $folding-inner9 - local.get $1 - i32.const 101 - call $~lib/typedarray/Int32Array#every - br_if $folding-inner10 - local.get $1 - call $~lib/rt/pure/__release - i32.const 3 - call $~lib/typedarray/Uint32Array#constructor - local.tee $1 - i32.const 0 - i32.const 2 - call $~lib/typedarray/Uint32Array#__set - local.get $1 - i32.const 1 - i32.const 4 - call $~lib/typedarray/Uint32Array#__set - local.get $1 - i32.const 2 - i32.const 6 - call $~lib/typedarray/Uint32Array#__set - local.get $1 - i32.const 102 - call $~lib/typedarray/Int32Array#every - i32.eqz - br_if $folding-inner9 - local.get $1 - i32.const 103 - call $~lib/typedarray/Int32Array#every - br_if $folding-inner10 - local.get $1 - call $~lib/rt/pure/__release - i32.const 3 - call $~lib/typedarray/Int64Array#constructor - local.tee $1 - i32.const 0 - i64.const 2 - call $~lib/typedarray/Int64Array#__set - local.get $1 - i32.const 1 - i64.const 4 - call $~lib/typedarray/Int64Array#__set - local.get $1 - i32.const 2 - i64.const 6 - call $~lib/typedarray/Int64Array#__set - local.get $1 - i32.const 104 - call $~lib/typedarray/Int64Array#every - i32.eqz - br_if $folding-inner9 - local.get $1 - i32.const 105 - call $~lib/typedarray/Int64Array#every - br_if $folding-inner10 - local.get $1 - call $~lib/rt/pure/__release - i32.const 3 - call $~lib/typedarray/Uint64Array#constructor - local.tee $1 - i32.const 0 - i64.const 2 - call $~lib/typedarray/Uint64Array#__set - local.get $1 - i32.const 1 - i64.const 4 - call $~lib/typedarray/Uint64Array#__set - local.get $1 - i32.const 2 - i64.const 6 - call $~lib/typedarray/Uint64Array#__set - local.get $1 - i32.const 106 - call $~lib/typedarray/Int64Array#every - i32.eqz - br_if $folding-inner9 - local.get $1 - i32.const 107 - call $~lib/typedarray/Int64Array#every - br_if $folding-inner10 - local.get $1 - call $~lib/rt/pure/__release - i32.const 3 - call $~lib/typedarray/Float32Array#constructor - local.tee $1 - i32.const 0 - f32.const 2 - call $~lib/typedarray/Float32Array#__set - local.get $1 - i32.const 1 - f32.const 4 - call $~lib/typedarray/Float32Array#__set - local.get $1 - i32.const 2 - f32.const 6 - call $~lib/typedarray/Float32Array#__set - local.get $1 - i32.const 108 - call $~lib/typedarray/Float32Array#every - i32.eqz - br_if $folding-inner9 - local.get $1 - i32.const 109 - call $~lib/typedarray/Float32Array#every - br_if $folding-inner10 - local.get $1 - call $~lib/rt/pure/__release - i32.const 3 - call $~lib/typedarray/Float64Array#constructor - local.tee $1 - i32.const 0 - f64.const 2 - call $~lib/typedarray/Float64Array#__set - local.get $1 - i32.const 1 - f64.const 4 - call $~lib/typedarray/Float64Array#__set - local.get $1 - i32.const 2 - f64.const 6 - call $~lib/typedarray/Float64Array#__set - local.get $1 - i32.const 110 - call $~lib/typedarray/Float64Array#every - i32.eqz - br_if $folding-inner9 - local.get $1 - i32.const 111 - call $~lib/typedarray/Float64Array#every - br_if $folding-inner10 - local.get $1 - call $~lib/rt/pure/__release - i32.const 0 - global.set $std/typedarray/forEachCallCount - i32.const 3 - call $~lib/typedarray/Int8Array#constructor - local.tee $0 - global.set $std/typedarray/forEachSelf - local.get $0 - i32.const 0 - i32.const 2704 - i32.const 0 - call $~lib/array/Array#__get - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s - call $~lib/typedarray/Int8Array#__set - local.get $0 - i32.const 1 - i32.const 2704 - i32.const 1 - call $~lib/array/Array#__get - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s - call $~lib/typedarray/Int8Array#__set - local.get $0 - i32.const 2 - i32.const 2704 - i32.const 2 - call $~lib/array/Array#__get - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s - call $~lib/typedarray/Int8Array#__set - i32.const 0 - local.set $1 - local.get $0 - i32.load offset=4 - local.set $29 - local.get $0 - i32.load offset=8 - local.set $28 - loop $for-loop|020 - local.get $1 - local.get $28 - i32.lt_s - if - i32.const 3 - global.set $~argumentsLength - local.get $1 - local.get $29 - i32.add - i32.load8_s - local.get $1 - local.get $0 - call $std/typedarray/testArrayForEach<~lib/typedarray/Int8Array,i8>~anonymous|0 - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|020 - end - end - global.get $std/typedarray/forEachCallCount - i32.const 3 - i32.ne - br_if $folding-inner11 - local.get $0 - call $~lib/rt/pure/__release - i32.const 0 - global.set $std/typedarray/forEachCallCount - i32.const 3 - call $~lib/typedarray/Uint8Array#constructor - local.tee $1 - global.set $std/typedarray/forEachSelf - local.get $1 - i32.const 0 - i32.const 2704 - i32.const 0 - call $~lib/array/Array#__get - i32.const 255 - i32.and - call $~lib/typedarray/Uint8Array#__set - local.get $1 - i32.const 1 - i32.const 2704 - i32.const 1 - call $~lib/array/Array#__get - i32.const 255 - i32.and - call $~lib/typedarray/Uint8Array#__set - local.get $1 - i32.const 2 - i32.const 2704 - i32.const 2 - call $~lib/array/Array#__get - i32.const 255 - i32.and - call $~lib/typedarray/Uint8Array#__set - local.get $1 - i32.const 113 - call $~lib/typedarray/Uint8Array#forEach - global.get $std/typedarray/forEachCallCount - i32.const 3 - i32.ne - br_if $folding-inner11 - local.get $1 - call $~lib/rt/pure/__release - i32.const 0 - global.set $std/typedarray/forEachCallCount - i32.const 3 - call $~lib/typedarray/Uint8ClampedArray#constructor - local.tee $1 - global.set $std/typedarray/forEachSelf - local.get $1 - i32.const 0 - i32.const 2704 - i32.const 0 - call $~lib/array/Array#__get - i32.const 255 - i32.and - call $~lib/typedarray/Uint8ClampedArray#__set - local.get $1 - i32.const 1 - i32.const 2704 - i32.const 1 - call $~lib/array/Array#__get - i32.const 255 - i32.and - call $~lib/typedarray/Uint8ClampedArray#__set - local.get $1 - i32.const 2 - i32.const 2704 - i32.const 2 - call $~lib/array/Array#__get - i32.const 255 - i32.and - call $~lib/typedarray/Uint8ClampedArray#__set - local.get $1 - i32.const 114 - call $~lib/typedarray/Uint8Array#forEach - global.get $std/typedarray/forEachCallCount - i32.const 3 - i32.ne - br_if $folding-inner11 - local.get $1 - call $~lib/rt/pure/__release - i32.const 0 - global.set $std/typedarray/forEachCallCount - i32.const 3 - call $~lib/typedarray/Int16Array#constructor - local.tee $0 - global.set $std/typedarray/forEachSelf - local.get $0 - i32.const 0 - i32.const 2704 - i32.const 0 - call $~lib/array/Array#__get - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s - call $~lib/typedarray/Int16Array#__set - local.get $0 - i32.const 1 - i32.const 2704 - i32.const 1 - call $~lib/array/Array#__get - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s - call $~lib/typedarray/Int16Array#__set - local.get $0 - i32.const 2 - i32.const 2704 - i32.const 2 - call $~lib/array/Array#__get - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s - call $~lib/typedarray/Int16Array#__set - i32.const 0 - local.set $1 - local.get $0 - i32.load offset=4 - local.set $29 - local.get $0 - i32.load offset=8 - i32.const 1 - i32.shr_u - local.set $28 - loop $for-loop|021 - local.get $1 - local.get $28 - i32.lt_s - if - i32.const 3 - global.set $~argumentsLength - local.get $29 - local.get $1 - i32.const 1 - i32.shl - i32.add - i32.load16_s - local.get $1 - local.get $0 - call $std/typedarray/testArrayForEach<~lib/typedarray/Int16Array,i16>~anonymous|0 - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|021 - end - end - global.get $std/typedarray/forEachCallCount - i32.const 3 - i32.ne - br_if $folding-inner11 - local.get $0 - call $~lib/rt/pure/__release - i32.const 0 - global.set $std/typedarray/forEachCallCount - i32.const 3 - call $~lib/typedarray/Uint16Array#constructor - local.tee $0 - global.set $std/typedarray/forEachSelf - local.get $0 - i32.const 0 - i32.const 2704 - i32.const 0 - call $~lib/array/Array#__get - i32.const 65535 - i32.and - call $~lib/typedarray/Uint16Array#__set - local.get $0 - i32.const 1 - i32.const 2704 - i32.const 1 - call $~lib/array/Array#__get - i32.const 65535 - i32.and - call $~lib/typedarray/Uint16Array#__set - local.get $0 - i32.const 2 - i32.const 2704 - i32.const 2 - call $~lib/array/Array#__get - i32.const 65535 - i32.and - call $~lib/typedarray/Uint16Array#__set - i32.const 0 - local.set $1 - local.get $0 - i32.load offset=4 - local.set $29 - local.get $0 - i32.load offset=8 - i32.const 1 - i32.shr_u - local.set $28 - loop $for-loop|022 - local.get $1 - local.get $28 - i32.lt_s - if - i32.const 3 - global.set $~argumentsLength - local.get $29 - local.get $1 - i32.const 1 - i32.shl - i32.add - i32.load16_u - local.get $1 - local.get $0 - call $std/typedarray/testArrayForEach<~lib/typedarray/Int16Array,i16>~anonymous|0 - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|022 - end - end - global.get $std/typedarray/forEachCallCount - i32.const 3 - i32.ne - br_if $folding-inner11 - local.get $0 - call $~lib/rt/pure/__release - i32.const 0 - global.set $std/typedarray/forEachCallCount - i32.const 3 - call $~lib/typedarray/Int32Array#constructor - local.tee $1 - global.set $std/typedarray/forEachSelf - local.get $1 - i32.const 0 - i32.const 2704 - i32.const 0 - call $~lib/array/Array#__get - call $~lib/typedarray/Int32Array#__set - local.get $1 - i32.const 1 - i32.const 2704 - i32.const 1 - call $~lib/array/Array#__get - call $~lib/typedarray/Int32Array#__set - local.get $1 - i32.const 2 - i32.const 2704 - i32.const 2 - call $~lib/array/Array#__get - call $~lib/typedarray/Int32Array#__set - local.get $1 - i32.const 117 - call $~lib/typedarray/Int32Array#forEach - global.get $std/typedarray/forEachCallCount - i32.const 3 - i32.ne - br_if $folding-inner11 - local.get $1 - call $~lib/rt/pure/__release - i32.const 0 - global.set $std/typedarray/forEachCallCount - i32.const 3 - call $~lib/typedarray/Uint32Array#constructor - local.tee $1 - global.set $std/typedarray/forEachSelf - local.get $1 - i32.const 0 - i32.const 2704 - i32.const 0 - call $~lib/array/Array#__get - call $~lib/typedarray/Uint32Array#__set - local.get $1 - i32.const 1 - i32.const 2704 - i32.const 1 - call $~lib/array/Array#__get - call $~lib/typedarray/Uint32Array#__set - local.get $1 - i32.const 2 - i32.const 2704 - i32.const 2 - call $~lib/array/Array#__get - call $~lib/typedarray/Uint32Array#__set - local.get $1 - i32.const 118 - call $~lib/typedarray/Int32Array#forEach - global.get $std/typedarray/forEachCallCount - i32.const 3 - i32.ne - br_if $folding-inner11 - local.get $1 - call $~lib/rt/pure/__release - i32.const 0 - global.set $std/typedarray/forEachCallCount - i32.const 3 - call $~lib/typedarray/Int64Array#constructor - local.tee $1 - global.set $std/typedarray/forEachSelf - local.get $1 - i32.const 0 - i32.const 2704 - i32.const 0 - call $~lib/array/Array#__get - i64.extend_i32_s - call $~lib/typedarray/Int64Array#__set - local.get $1 - i32.const 1 - i32.const 2704 - i32.const 1 - call $~lib/array/Array#__get - i64.extend_i32_s - call $~lib/typedarray/Int64Array#__set - local.get $1 - i32.const 2 - i32.const 2704 - i32.const 2 - call $~lib/array/Array#__get - i64.extend_i32_s - call $~lib/typedarray/Int64Array#__set - local.get $1 - i32.const 119 - call $~lib/typedarray/Int64Array#forEach - global.get $std/typedarray/forEachCallCount - i32.const 3 - i32.ne - br_if $folding-inner11 - local.get $1 - call $~lib/rt/pure/__release - i32.const 0 - global.set $std/typedarray/forEachCallCount - i32.const 3 - call $~lib/typedarray/Uint64Array#constructor - local.tee $1 - global.set $std/typedarray/forEachSelf - local.get $1 - i32.const 0 - i32.const 2704 - i32.const 0 - call $~lib/array/Array#__get - i64.extend_i32_s - call $~lib/typedarray/Uint64Array#__set - local.get $1 - i32.const 1 - i32.const 2704 - i32.const 1 - call $~lib/array/Array#__get - i64.extend_i32_s - call $~lib/typedarray/Uint64Array#__set - local.get $1 - i32.const 2 - i32.const 2704 - i32.const 2 - call $~lib/array/Array#__get - i64.extend_i32_s - call $~lib/typedarray/Uint64Array#__set - local.get $1 - i32.const 120 - call $~lib/typedarray/Int64Array#forEach - global.get $std/typedarray/forEachCallCount - i32.const 3 - i32.ne - br_if $folding-inner11 - local.get $1 - call $~lib/rt/pure/__release - i32.const 0 - global.set $std/typedarray/forEachCallCount - i32.const 3 - call $~lib/typedarray/Float32Array#constructor - local.tee $0 - global.set $std/typedarray/forEachSelf - local.get $0 - i32.const 0 - i32.const 2704 - i32.const 0 - call $~lib/array/Array#__get - f32.convert_i32_s - call $~lib/typedarray/Float32Array#__set - local.get $0 - i32.const 1 - i32.const 2704 - i32.const 1 - call $~lib/array/Array#__get - f32.convert_i32_s - call $~lib/typedarray/Float32Array#__set - local.get $0 - i32.const 2 - i32.const 2704 - i32.const 2 - call $~lib/array/Array#__get - f32.convert_i32_s - call $~lib/typedarray/Float32Array#__set - i32.const 0 - local.set $1 - local.get $0 - i32.load offset=4 - local.set $29 - local.get $0 - i32.load offset=8 - i32.const 2 - i32.shr_u - local.set $28 - loop $for-loop|023 - local.get $1 - local.get $28 - i32.lt_s - if - i32.const 3 - global.set $~argumentsLength - local.get $29 - local.get $1 - i32.const 2 - i32.shl - i32.add - f32.load - local.get $1 - local.get $0 - call $std/typedarray/testArrayForEach<~lib/typedarray/Float32Array,f32>~anonymous|0 - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|023 - end - end - global.get $std/typedarray/forEachCallCount - i32.const 3 - i32.ne - br_if $folding-inner11 - local.get $0 - call $~lib/rt/pure/__release - i32.const 0 - global.set $std/typedarray/forEachCallCount - i32.const 3 - call $~lib/typedarray/Float64Array#constructor - local.tee $0 - global.set $std/typedarray/forEachSelf - local.get $0 - i32.const 0 - i32.const 2704 - i32.const 0 - call $~lib/array/Array#__get - f64.convert_i32_s - call $~lib/typedarray/Float64Array#__set - local.get $0 - i32.const 1 - i32.const 2704 - i32.const 1 - call $~lib/array/Array#__get - f64.convert_i32_s - call $~lib/typedarray/Float64Array#__set - local.get $0 - i32.const 2 - i32.const 2704 - i32.const 2 - call $~lib/array/Array#__get - f64.convert_i32_s - call $~lib/typedarray/Float64Array#__set - i32.const 0 - local.set $1 - local.get $0 - i32.load offset=4 - local.set $29 - local.get $0 - i32.load offset=8 - i32.const 3 - i32.shr_u - local.set $28 - loop $for-loop|024 - local.get $1 - local.get $28 - i32.lt_s - if - i32.const 3 - global.set $~argumentsLength - local.get $29 - local.get $1 - i32.const 3 - i32.shl - i32.add - f64.load - local.get $1 - local.get $0 - call $std/typedarray/testArrayForEach<~lib/typedarray/Float64Array,f64>~anonymous|0 - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|024 - end - end - global.get $std/typedarray/forEachCallCount - i32.const 3 - i32.ne - br_if $folding-inner11 - local.get $0 - call $~lib/rt/pure/__release - call $std/typedarray/testArrayReverse<~lib/typedarray/Int8Array,i8> - call $std/typedarray/testArrayReverse<~lib/typedarray/Uint8Array,u8> - call $std/typedarray/testArrayReverse<~lib/typedarray/Uint8ClampedArray,u8> - call $std/typedarray/testArrayReverse<~lib/typedarray/Int16Array,i16> - call $std/typedarray/testArrayReverse<~lib/typedarray/Uint16Array,u16> - call $std/typedarray/testArrayReverse<~lib/typedarray/Int32Array,i32> - call $std/typedarray/testArrayReverse<~lib/typedarray/Uint32Array,u32> - call $std/typedarray/testArrayReverse<~lib/typedarray/Int64Array,i64> - call $std/typedarray/testArrayReverse<~lib/typedarray/Uint64Array,u64> - call $std/typedarray/testArrayReverse<~lib/typedarray/Float32Array,f32> - call $std/typedarray/testArrayReverse<~lib/typedarray/Float64Array,f64> - call $std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Int8Array,i8> - call $std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Uint8Array,u8> - call $std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Uint8ClampedArray,u8> - call $std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Int16Array,i16> - call $std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Uint16Array,u16> - call $std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Int32Array,i32> - call $std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Uint32Array,u32> - call $std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Int64Array,i64> - call $std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Uint64Array,u64> - call $std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Float32Array,f32> - call $std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Float64Array,f64> - i32.const 1 - call $~lib/typedarray/Float64Array#constructor - local.tee $29 - i32.const 0 - f64.const nan:0x8000000000000 - call $~lib/typedarray/Float64Array#__set - local.get $29 - f64.const nan:0x8000000000000 - i32.const 0 - call $~lib/typedarray/Float64Array#indexOf - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 607 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - local.set $1 - i32.const 0 - local.set $0 - block $~lib/typedarray/INCLUDES<~lib/typedarray/Float64Array,f64>|inlined.0 - local.get $29 - i32.load offset=8 - i32.const 3 - i32.shr_u - local.tee $28 - if (result i32) - i32.const 0 - local.get $28 - i32.ge_s - else - i32.const 1 - end - br_if $~lib/typedarray/INCLUDES<~lib/typedarray/Float64Array,f64>|inlined.0 - local.get $29 - i32.load offset=4 - local.set $25 - loop $while-continue|0 - local.get $1 - local.get $28 - i32.lt_s - if - local.get $25 - local.get $1 - i32.const 3 - i32.shl - i32.add - f64.load - local.tee $22 - f64.const nan:0x8000000000000 - f64.eq - if (result i32) - i32.const 1 - else - local.get $22 - local.get $22 - f64.ne - end - if - i32.const 1 - local.set $0 - br $~lib/typedarray/INCLUDES<~lib/typedarray/Float64Array,f64>|inlined.0 - end - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $while-continue|0 - end - end - end - local.get $0 - i32.const 0 - i32.ne - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 608 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - call $~lib/typedarray/Float32Array#constructor - local.tee $0 - i32.const 0 - f32.const nan:0x400000 - call $~lib/typedarray/Float32Array#__set - local.get $0 - f32.const nan:0x400000 - i32.const 0 - call $~lib/typedarray/Float32Array#indexOf - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 613 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - local.set $28 - i32.const 0 - local.set $1 - block $~lib/typedarray/INCLUDES<~lib/typedarray/Float32Array,f32>|inlined.0 - local.get $0 - i32.load offset=8 - i32.const 2 - i32.shr_u - local.tee $27 - if (result i32) - i32.const 0 - local.get $27 - i32.ge_s - else - i32.const 1 - end - br_if $~lib/typedarray/INCLUDES<~lib/typedarray/Float32Array,f32>|inlined.0 - local.get $0 - i32.load offset=4 - local.set $26 - loop $while-continue|025 - local.get $28 - local.get $27 - i32.lt_s - if - local.get $26 - local.get $28 - i32.const 2 - i32.shl - i32.add - f32.load - local.tee $21 - f32.const nan:0x400000 - f32.eq - if (result i32) - i32.const 1 - else - local.get $21 - local.get $21 - f32.ne - end - if - i32.const 1 - local.set $1 - br $~lib/typedarray/INCLUDES<~lib/typedarray/Float32Array,f32>|inlined.0 - end - local.get $28 - i32.const 1 - i32.add - local.set $28 - br $while-continue|025 - end - end - end - local.get $1 - i32.const 0 - i32.ne - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 614 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $29 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - i32.const 5 - call $~lib/typedarray/Int8Array#constructor - local.tee $1 - i32.const 0 - i32.const 1 - call $~lib/typedarray/Int8Array#__set - local.get $1 - i32.const 1 - i32.const 2 - call $~lib/typedarray/Int8Array#__set - local.get $1 - i32.const 2 - i32.const 3 - call $~lib/typedarray/Int8Array#__set - local.get $1 - i32.const 3 - i32.const 4 - call $~lib/typedarray/Int8Array#__set - local.get $1 - i32.const 4 - i32.const 5 - call $~lib/typedarray/Int8Array#__set - local.get $1 - call $~lib/typedarray/Int8Array#join - local.tee $0 - i32.const 3008 - call $~lib/string/String.__eq - i32.eqz - br_if $folding-inner12 - local.get $1 - call $~lib/typedarray/Int8Array#join - local.tee $29 - i32.const 3008 - call $~lib/string/String.__eq - i32.eqz - br_if $folding-inner13 - local.get $0 - call $~lib/rt/pure/__release - local.get $29 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - i32.const 5 - call $~lib/typedarray/Uint8Array#constructor - local.tee $1 - i32.const 0 - i32.const 1 - call $~lib/typedarray/Uint8Array#__set - local.get $1 - i32.const 1 - i32.const 2 - call $~lib/typedarray/Uint8Array#__set - local.get $1 - i32.const 2 - i32.const 3 - call $~lib/typedarray/Uint8Array#__set - local.get $1 - i32.const 3 - i32.const 4 - call $~lib/typedarray/Uint8Array#__set - local.get $1 - i32.const 4 - i32.const 5 - call $~lib/typedarray/Uint8Array#__set - local.get $1 - call $~lib/typedarray/Uint8Array#join - local.tee $0 - i32.const 3008 - call $~lib/string/String.__eq - i32.eqz - br_if $folding-inner12 - local.get $1 - call $~lib/typedarray/Uint8Array#join - local.tee $29 - i32.const 3008 - call $~lib/string/String.__eq - i32.eqz - br_if $folding-inner13 - local.get $0 - call $~lib/rt/pure/__release - local.get $29 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - i32.const 5 - call $~lib/typedarray/Uint8ClampedArray#constructor - local.tee $1 - i32.const 0 - i32.const 1 - call $~lib/typedarray/Uint8ClampedArray#__set - local.get $1 - i32.const 1 - i32.const 2 - call $~lib/typedarray/Uint8ClampedArray#__set - local.get $1 - i32.const 2 - i32.const 3 - call $~lib/typedarray/Uint8ClampedArray#__set - local.get $1 - i32.const 3 - i32.const 4 - call $~lib/typedarray/Uint8ClampedArray#__set - local.get $1 - i32.const 4 - i32.const 5 - call $~lib/typedarray/Uint8ClampedArray#__set - local.get $1 - call $~lib/typedarray/Uint8Array#join - local.tee $0 - i32.const 3008 - call $~lib/string/String.__eq - i32.eqz - br_if $folding-inner12 - local.get $1 - call $~lib/typedarray/Uint8Array#join - local.tee $29 - i32.const 3008 - call $~lib/string/String.__eq - i32.eqz - br_if $folding-inner13 - local.get $0 - call $~lib/rt/pure/__release - local.get $29 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - i32.const 5 - call $~lib/typedarray/Int16Array#constructor - local.tee $1 - i32.const 0 - i32.const 1 - call $~lib/typedarray/Int16Array#__set - local.get $1 - i32.const 1 - i32.const 2 - call $~lib/typedarray/Int16Array#__set - local.get $1 - i32.const 2 - i32.const 3 - call $~lib/typedarray/Int16Array#__set - local.get $1 - i32.const 3 - i32.const 4 - call $~lib/typedarray/Int16Array#__set - local.get $1 - i32.const 4 - i32.const 5 - call $~lib/typedarray/Int16Array#__set - local.get $1 - call $~lib/typedarray/Int16Array#join - local.tee $0 - i32.const 3008 - call $~lib/string/String.__eq - i32.eqz - br_if $folding-inner12 - local.get $1 - call $~lib/typedarray/Int16Array#join - local.tee $29 - i32.const 3008 - call $~lib/string/String.__eq - i32.eqz - br_if $folding-inner13 - local.get $0 - call $~lib/rt/pure/__release - local.get $29 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - i32.const 5 - call $~lib/typedarray/Uint16Array#constructor - local.tee $1 - i32.const 0 - i32.const 1 - call $~lib/typedarray/Uint16Array#__set - local.get $1 - i32.const 1 - i32.const 2 - call $~lib/typedarray/Uint16Array#__set - local.get $1 - i32.const 2 - i32.const 3 - call $~lib/typedarray/Uint16Array#__set - local.get $1 - i32.const 3 - i32.const 4 - call $~lib/typedarray/Uint16Array#__set - local.get $1 - i32.const 4 - i32.const 5 - call $~lib/typedarray/Uint16Array#__set - local.get $1 - call $~lib/typedarray/Uint16Array#join - local.tee $0 - i32.const 3008 - call $~lib/string/String.__eq - i32.eqz - br_if $folding-inner12 - local.get $1 - call $~lib/typedarray/Uint16Array#join - local.tee $29 - i32.const 3008 - call $~lib/string/String.__eq - i32.eqz - br_if $folding-inner13 - local.get $0 - call $~lib/rt/pure/__release - local.get $29 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - i32.const 5 - call $~lib/typedarray/Int32Array#constructor - local.tee $1 - i32.const 0 - i32.const 1 - call $~lib/typedarray/Int32Array#__set - local.get $1 - i32.const 1 - i32.const 2 - call $~lib/typedarray/Int32Array#__set - local.get $1 - i32.const 2 - i32.const 3 - call $~lib/typedarray/Int32Array#__set - local.get $1 - i32.const 3 - i32.const 4 - call $~lib/typedarray/Int32Array#__set - local.get $1 - i32.const 4 - i32.const 5 - call $~lib/typedarray/Int32Array#__set - local.get $1 - call $~lib/typedarray/Int32Array#join - local.tee $0 - i32.const 3008 - call $~lib/string/String.__eq - i32.eqz - br_if $folding-inner12 - local.get $1 - call $~lib/typedarray/Int32Array#join - local.tee $29 - i32.const 3008 - call $~lib/string/String.__eq - i32.eqz - br_if $folding-inner13 - local.get $0 - call $~lib/rt/pure/__release - local.get $29 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - i32.const 5 - call $~lib/typedarray/Uint32Array#constructor - local.tee $1 - i32.const 0 - i32.const 1 - call $~lib/typedarray/Uint32Array#__set - local.get $1 - i32.const 1 - i32.const 2 - call $~lib/typedarray/Uint32Array#__set - local.get $1 - i32.const 2 - i32.const 3 - call $~lib/typedarray/Uint32Array#__set - local.get $1 - i32.const 3 - i32.const 4 - call $~lib/typedarray/Uint32Array#__set - local.get $1 - i32.const 4 - i32.const 5 - call $~lib/typedarray/Uint32Array#__set - local.get $1 - call $~lib/typedarray/Uint32Array#join - local.tee $0 - i32.const 3008 - call $~lib/string/String.__eq - i32.eqz - br_if $folding-inner12 - local.get $1 - call $~lib/typedarray/Uint32Array#join - local.tee $29 - i32.const 3008 - call $~lib/string/String.__eq - i32.eqz - br_if $folding-inner13 - local.get $0 - call $~lib/rt/pure/__release - local.get $29 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - i32.const 5 - call $~lib/typedarray/Int64Array#constructor - local.tee $1 - i32.const 0 - i64.const 1 - call $~lib/typedarray/Int64Array#__set - local.get $1 - i32.const 1 - i64.const 2 - call $~lib/typedarray/Int64Array#__set - local.get $1 - i32.const 2 - i64.const 3 - call $~lib/typedarray/Int64Array#__set - local.get $1 - i32.const 3 - i64.const 4 - call $~lib/typedarray/Int64Array#__set - local.get $1 - i32.const 4 - i64.const 5 - call $~lib/typedarray/Int64Array#__set - local.get $1 - call $~lib/typedarray/Int64Array#join - local.tee $0 - i32.const 3008 - call $~lib/string/String.__eq - i32.eqz - br_if $folding-inner12 - local.get $1 - call $~lib/typedarray/Int64Array#join - local.tee $29 - i32.const 3008 - call $~lib/string/String.__eq - i32.eqz - br_if $folding-inner13 - local.get $0 - call $~lib/rt/pure/__release - local.get $29 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - i32.const 5 - call $~lib/typedarray/Uint64Array#constructor - local.tee $1 - i32.const 0 - i64.const 1 - call $~lib/typedarray/Uint64Array#__set - local.get $1 - i32.const 1 - i64.const 2 - call $~lib/typedarray/Uint64Array#__set - local.get $1 - i32.const 2 - i64.const 3 - call $~lib/typedarray/Uint64Array#__set - local.get $1 - i32.const 3 - i64.const 4 - call $~lib/typedarray/Uint64Array#__set - local.get $1 - i32.const 4 - i64.const 5 - call $~lib/typedarray/Uint64Array#__set - local.get $1 - call $~lib/typedarray/Uint64Array#join - local.tee $0 - i32.const 3008 - call $~lib/string/String.__eq - i32.eqz - br_if $folding-inner12 - local.get $1 - call $~lib/typedarray/Uint64Array#join - local.tee $29 - i32.const 3008 - call $~lib/string/String.__eq - i32.eqz - br_if $folding-inner13 - local.get $0 - call $~lib/rt/pure/__release - local.get $29 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - i32.const 5 - call $~lib/typedarray/Float32Array#constructor - local.tee $1 - i32.const 0 - f32.const 1 - call $~lib/typedarray/Float32Array#__set - local.get $1 + block $folding-inner12 + block $folding-inner11 + block $folding-inner10 + block $folding-inner9 + block $folding-inner8 + block $folding-inner7 + block $folding-inner6 + block $folding-inner5 + block $folding-inner4 + block $folding-inner3 + block $folding-inner2 + block $folding-inner1 + block $folding-inner0 + local.get $1 + i32.const 255 + i32.and + i32.const 6 + i32.ne + br_if $folding-inner0 + local.get $29 + call $~lib/rt/pure/__release + i32.const 3 + call $~lib/typedarray/Uint8Array#constructor + local.tee $1 + i32.const 0 + i32.const 1 + call $~lib/typedarray/Uint8Array#__set + local.get $1 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Uint8Array#__set + local.get $1 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Uint8Array#__set + local.get $1 + i32.const 3 + call $~lib/typedarray/Uint8Array#reduce + i32.const 255 + i32.and + i32.const 6 + i32.ne + br_if $folding-inner0 + local.get $1 + call $~lib/rt/pure/__release + i32.const 3 + call $~lib/typedarray/Uint8ClampedArray#constructor + local.tee $1 + i32.const 0 + i32.const 1 + call $~lib/typedarray/Uint8ClampedArray#__set + local.get $1 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Uint8ClampedArray#__set + local.get $1 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Uint8ClampedArray#__set + local.get $1 + i32.const 4 + call $~lib/typedarray/Uint8Array#reduce + i32.const 255 + i32.and + i32.const 6 + i32.ne + br_if $folding-inner0 + local.get $1 + call $~lib/rt/pure/__release + i32.const 3 + call $~lib/typedarray/Int16Array#constructor + local.tee $29 + i32.const 0 + i32.const 1 + call $~lib/typedarray/Int16Array#__set + local.get $29 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Int16Array#__set + local.get $29 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Int16Array#__set + i32.const 0 + local.set $0 + i32.const 0 + local.set $1 + local.get $29 + i32.load offset=4 + local.set $28 + local.get $29 + i32.load offset=8 + i32.const 1 + i32.shr_u + local.set $27 + loop $for-loop|00 + local.get $0 + local.get $27 + i32.lt_s + if + i32.const 4 + global.set $~argumentsLength + local.get $1 + local.get $28 + local.get $0 + i32.const 1 + i32.shl + i32.add + i32.load16_s + i32.add + local.set $1 + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|00 + end + end + local.get $1 + i32.const 65535 + i32.and + i32.const 6 + i32.ne + br_if $folding-inner0 + local.get $29 + call $~lib/rt/pure/__release + i32.const 3 + call $~lib/typedarray/Uint16Array#constructor + local.tee $29 + i32.const 0 + i32.const 1 + call $~lib/typedarray/Uint16Array#__set + local.get $29 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Uint16Array#__set + local.get $29 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Uint16Array#__set + i32.const 0 + local.set $0 + i32.const 0 + local.set $1 + local.get $29 + i32.load offset=4 + local.set $28 + local.get $29 + i32.load offset=8 + i32.const 1 + i32.shr_u + local.set $27 + loop $for-loop|01 + local.get $0 + local.get $27 + i32.lt_s + if + i32.const 4 + global.set $~argumentsLength + local.get $1 + local.get $28 + local.get $0 + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.add + local.set $1 + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|01 + end + end + local.get $1 + i32.const 65535 + i32.and + i32.const 6 + i32.ne + br_if $folding-inner0 + local.get $29 + call $~lib/rt/pure/__release + i32.const 3 + call $~lib/typedarray/Int32Array#constructor + local.tee $1 + i32.const 0 + i32.const 1 + call $~lib/typedarray/Int32Array#__set + local.get $1 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Int32Array#__set + local.get $1 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Int32Array#__set + local.get $1 + i32.const 7 + call $~lib/typedarray/Int32Array#reduce + i32.const 6 + i32.ne + br_if $folding-inner0 + local.get $1 + call $~lib/rt/pure/__release + i32.const 3 + call $~lib/typedarray/Uint32Array#constructor + local.tee $1 + i32.const 0 + i32.const 1 + call $~lib/typedarray/Uint32Array#__set + local.get $1 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Uint32Array#__set + local.get $1 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Uint32Array#__set + local.get $1 + i32.const 8 + call $~lib/typedarray/Int32Array#reduce + i32.const 6 + i32.ne + br_if $folding-inner0 + local.get $1 + call $~lib/rt/pure/__release + i32.const 3 + call $~lib/typedarray/Int64Array#constructor + local.tee $1 + i32.const 0 + i64.const 1 + call $~lib/typedarray/Int64Array#__set + local.get $1 + i32.const 1 + i64.const 2 + call $~lib/typedarray/Int64Array#__set + local.get $1 + i32.const 2 + i64.const 3 + call $~lib/typedarray/Int64Array#__set + local.get $1 + i32.const 9 + call $~lib/typedarray/Int64Array#reduce + i64.const 6 + i64.ne + br_if $folding-inner0 + local.get $1 + call $~lib/rt/pure/__release + i32.const 3 + call $~lib/typedarray/Uint64Array#constructor + local.tee $1 + i32.const 0 + i64.const 1 + call $~lib/typedarray/Uint64Array#__set + local.get $1 + i32.const 1 + i64.const 2 + call $~lib/typedarray/Uint64Array#__set + local.get $1 + i32.const 2 + i64.const 3 + call $~lib/typedarray/Uint64Array#__set + local.get $1 + i32.const 10 + call $~lib/typedarray/Int64Array#reduce + i64.const 6 + i64.ne + br_if $folding-inner0 + local.get $1 + call $~lib/rt/pure/__release + i32.const 3 + call $~lib/typedarray/Float32Array#constructor + local.tee $0 + i32.const 0 + f32.const 1 + call $~lib/typedarray/Float32Array#__set + local.get $0 + i32.const 1 + f32.const 2 + call $~lib/typedarray/Float32Array#__set + local.get $0 + i32.const 2 + f32.const 3 + call $~lib/typedarray/Float32Array#__set + i32.const 0 + local.set $1 + local.get $0 + i32.load offset=4 + local.set $29 + local.get $0 + i32.load offset=8 + i32.const 2 + i32.shr_u + local.set $28 + loop $for-loop|02 + local.get $1 + local.get $28 + i32.lt_s + if + i32.const 4 + global.set $~argumentsLength + local.get $21 + local.get $29 + local.get $1 + i32.const 2 + i32.shl + i32.add + f32.load + f32.add + local.set $21 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|02 + end + end + local.get $21 + f32.const 6 + f32.ne + br_if $folding-inner0 + local.get $0 + call $~lib/rt/pure/__release + i32.const 3 + call $~lib/typedarray/Float64Array#constructor + local.tee $0 + i32.const 0 + f64.const 1 + call $~lib/typedarray/Float64Array#__set + local.get $0 + i32.const 1 + f64.const 2 + call $~lib/typedarray/Float64Array#__set + local.get $0 + i32.const 2 + f64.const 3 + call $~lib/typedarray/Float64Array#__set + i32.const 0 + local.set $1 + f64.const 0 + local.set $22 + local.get $0 + i32.load offset=4 + local.set $29 + local.get $0 + i32.load offset=8 + i32.const 3 + i32.shr_u + local.set $28 + loop $for-loop|03 + local.get $1 + local.get $28 + i32.lt_s + if + i32.const 4 + global.set $~argumentsLength + local.get $22 + local.get $29 + local.get $1 + i32.const 3 + i32.shl + i32.add + f64.load + f64.add + local.set $22 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|03 + end + end + local.get $22 + f64.const 6 + f64.ne + br_if $folding-inner0 + local.get $0 + call $~lib/rt/pure/__release + i32.const 3 + call $~lib/typedarray/Int8Array#constructor + local.tee $29 + i32.const 0 + i32.const 1 + call $~lib/typedarray/Int8Array#__set + local.get $29 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Int8Array#__set + local.get $29 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Int8Array#__set + i32.const 0 + local.set $0 + local.get $29 + i32.load offset=4 + local.set $28 + local.get $29 + i32.load offset=8 + i32.const 1 + i32.sub + local.set $1 + loop $for-loop|04 + local.get $1 + i32.const 0 + i32.ge_s + if + i32.const 4 + global.set $~argumentsLength + local.get $0 + local.get $1 + local.get $28 + i32.add + i32.load8_s + i32.add + local.set $0 + local.get $1 + i32.const 1 + i32.sub + local.set $1 + br $for-loop|04 + end + end + local.get $0 + i32.const 255 + i32.and + i32.const 6 + i32.ne + br_if $folding-inner1 + local.get $29 + call $~lib/rt/pure/__release + i32.const 3 + call $~lib/typedarray/Uint8Array#constructor + local.tee $1 + i32.const 0 + i32.const 1 + call $~lib/typedarray/Uint8Array#__set + local.get $1 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Uint8Array#__set + local.get $1 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Uint8Array#__set + local.get $1 + i32.const 14 + call $~lib/typedarray/Uint8Array#reduceRight + i32.const 255 + i32.and + i32.const 6 + i32.ne + br_if $folding-inner1 + local.get $1 + call $~lib/rt/pure/__release + i32.const 3 + call $~lib/typedarray/Uint8ClampedArray#constructor + local.tee $1 + i32.const 0 + i32.const 1 + call $~lib/typedarray/Uint8ClampedArray#__set + local.get $1 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Uint8ClampedArray#__set + local.get $1 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Uint8ClampedArray#__set + local.get $1 + i32.const 15 + call $~lib/typedarray/Uint8Array#reduceRight + i32.const 255 + i32.and + i32.const 6 + i32.ne + br_if $folding-inner1 + local.get $1 + call $~lib/rt/pure/__release + i32.const 3 + call $~lib/typedarray/Int16Array#constructor + local.tee $29 + i32.const 0 + i32.const 1 + call $~lib/typedarray/Int16Array#__set + local.get $29 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Int16Array#__set + local.get $29 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Int16Array#__set + i32.const 0 + local.set $0 + local.get $29 + i32.load offset=4 + local.set $28 + local.get $29 + i32.load offset=8 + i32.const 1 + i32.shr_u + i32.const 1 + i32.sub + local.set $1 + loop $for-loop|05 + local.get $1 + i32.const 0 + i32.ge_s + if + i32.const 4 + global.set $~argumentsLength + local.get $0 + local.get $28 + local.get $1 + i32.const 1 + i32.shl + i32.add + i32.load16_s + i32.add + local.set $0 + local.get $1 + i32.const 1 + i32.sub + local.set $1 + br $for-loop|05 + end + end + local.get $0 + i32.const 65535 + i32.and + i32.const 6 + i32.ne + br_if $folding-inner1 + local.get $29 + call $~lib/rt/pure/__release + i32.const 3 + call $~lib/typedarray/Uint16Array#constructor + local.tee $29 + i32.const 0 + i32.const 1 + call $~lib/typedarray/Uint16Array#__set + local.get $29 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Uint16Array#__set + local.get $29 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Uint16Array#__set + i32.const 0 + local.set $0 + local.get $29 + i32.load offset=4 + local.set $28 + local.get $29 + i32.load offset=8 + i32.const 1 + i32.shr_u + i32.const 1 + i32.sub + local.set $1 + loop $for-loop|06 + local.get $1 + i32.const 0 + i32.ge_s + if + i32.const 4 + global.set $~argumentsLength + local.get $0 + local.get $28 + local.get $1 + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.add + local.set $0 + local.get $1 + i32.const 1 + i32.sub + local.set $1 + br $for-loop|06 + end + end + local.get $0 + i32.const 65535 + i32.and + i32.const 6 + i32.ne + br_if $folding-inner1 + local.get $29 + call $~lib/rt/pure/__release + i32.const 3 + call $~lib/typedarray/Int32Array#constructor + local.tee $1 + i32.const 0 + i32.const 1 + call $~lib/typedarray/Int32Array#__set + local.get $1 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Int32Array#__set + local.get $1 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Int32Array#__set + local.get $1 + i32.const 18 + call $~lib/typedarray/Int32Array#reduceRight + i32.const 6 + i32.ne + br_if $folding-inner1 + local.get $1 + call $~lib/rt/pure/__release + i32.const 3 + call $~lib/typedarray/Uint32Array#constructor + local.tee $1 + i32.const 0 + i32.const 1 + call $~lib/typedarray/Uint32Array#__set + local.get $1 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Uint32Array#__set + local.get $1 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Uint32Array#__set + local.get $1 + i32.const 19 + call $~lib/typedarray/Int32Array#reduceRight + i32.const 6 + i32.ne + br_if $folding-inner1 + local.get $1 + call $~lib/rt/pure/__release + i32.const 3 + call $~lib/typedarray/Int64Array#constructor + local.tee $1 + i32.const 0 + i64.const 1 + call $~lib/typedarray/Int64Array#__set + local.get $1 + i32.const 1 + i64.const 2 + call $~lib/typedarray/Int64Array#__set + local.get $1 + i32.const 2 + i64.const 3 + call $~lib/typedarray/Int64Array#__set + local.get $1 + i32.const 20 + call $~lib/typedarray/Int64Array#reduceRight + i64.const 6 + i64.ne + br_if $folding-inner1 + local.get $1 + call $~lib/rt/pure/__release + i32.const 3 + call $~lib/typedarray/Uint64Array#constructor + local.tee $1 + i32.const 0 + i64.const 1 + call $~lib/typedarray/Uint64Array#__set + local.get $1 + i32.const 1 + i64.const 2 + call $~lib/typedarray/Uint64Array#__set + local.get $1 + i32.const 2 + i64.const 3 + call $~lib/typedarray/Uint64Array#__set + local.get $1 + i32.const 21 + call $~lib/typedarray/Int64Array#reduceRight + i64.const 6 + i64.ne + br_if $folding-inner1 + local.get $1 + call $~lib/rt/pure/__release + i32.const 3 + call $~lib/typedarray/Float32Array#constructor + local.tee $1 + i32.const 0 + f32.const 1 + call $~lib/typedarray/Float32Array#__set + local.get $1 + i32.const 1 + f32.const 2 + call $~lib/typedarray/Float32Array#__set + local.get $1 + i32.const 2 + f32.const 3 + call $~lib/typedarray/Float32Array#__set + f32.const 0 + local.set $21 + local.get $1 + i32.load offset=4 + local.set $29 + local.get $1 + i32.load offset=8 + i32.const 2 + i32.shr_u + i32.const 1 + i32.sub + local.set $0 + loop $for-loop|07 + local.get $0 + i32.const 0 + i32.ge_s + if + i32.const 4 + global.set $~argumentsLength + local.get $21 + local.get $29 + local.get $0 + i32.const 2 + i32.shl + i32.add + f32.load + f32.add + local.set $21 + local.get $0 + i32.const 1 + i32.sub + local.set $0 + br $for-loop|07 + end + end + local.get $21 + f32.const 6 + f32.ne + br_if $folding-inner1 + local.get $1 + call $~lib/rt/pure/__release + i32.const 3 + call $~lib/typedarray/Float64Array#constructor + local.tee $1 + i32.const 0 + f64.const 1 + call $~lib/typedarray/Float64Array#__set + local.get $1 + i32.const 1 + f64.const 2 + call $~lib/typedarray/Float64Array#__set + local.get $1 + i32.const 2 + f64.const 3 + call $~lib/typedarray/Float64Array#__set + f64.const 0 + local.set $22 + local.get $1 + i32.load offset=4 + local.set $29 + local.get $1 + i32.load offset=8 + i32.const 3 + i32.shr_u + i32.const 1 + i32.sub + local.set $0 + loop $for-loop|08 + local.get $0 + i32.const 0 + i32.ge_s + if + i32.const 4 + global.set $~argumentsLength + local.get $22 + local.get $29 + local.get $0 + i32.const 3 + i32.shl + i32.add + f64.load + f64.add + local.set $22 + local.get $0 + i32.const 1 + i32.sub + local.set $0 + br $for-loop|08 + end + end + local.get $22 + f64.const 6 + f64.ne + br_if $folding-inner1 + local.get $1 + call $~lib/rt/pure/__release + i32.const 3 + call $~lib/typedarray/Int8Array#constructor + local.tee $0 + i32.const 0 + i32.const 1 + call $~lib/typedarray/Int8Array#__set + local.get $0 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Int8Array#__set + local.get $0 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Int8Array#__set + i32.const 0 + local.set $1 + local.get $0 + i32.load offset=8 + local.set $28 + local.get $0 + i32.load offset=4 + local.set $25 + i32.const 12 + i32.const 3 + call $~lib/rt/tlsf/__alloc + local.set $29 + local.get $28 + i32.const 0 + call $~lib/rt/tlsf/__alloc + local.set $27 + loop $for-loop|09 + local.get $1 + local.get $28 + i32.lt_s + if + i32.const 3 + global.set $~argumentsLength + local.get $1 + local.get $27 + i32.add + local.get $1 + local.get $25 + i32.add + i32.load8_s + local.tee $26 + local.get $26 + i32.mul + i32.store8 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|09 + end + end + local.get $29 + local.get $27 + call $~lib/rt/pure/__retain + i32.store + local.get $29 + local.get $27 + i32.store offset=4 + local.get $29 + local.get $28 + i32.store offset=8 + local.get $29 + call $~lib/rt/pure/__retain + local.tee $1 + i32.const 0 + call $~lib/typedarray/Int8Array#__get + i32.const 1 + i32.ne + br_if $folding-inner2 + local.get $1 + i32.const 1 + call $~lib/typedarray/Int8Array#__get + i32.const 4 + i32.ne + br_if $folding-inner3 + local.get $1 + i32.const 2 + call $~lib/typedarray/Int8Array#__get + i32.const 9 + i32.ne + br_if $folding-inner4 + local.get $0 + call $~lib/rt/pure/__release + local.get $1 + call $~lib/rt/pure/__release + i32.const 3 + call $~lib/typedarray/Uint8Array#constructor + local.tee $0 + i32.const 0 + i32.const 1 + call $~lib/typedarray/Uint8Array#__set + local.get $0 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Uint8Array#__set + local.get $0 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Uint8Array#__set + i32.const 0 + local.set $1 + local.get $0 + i32.load offset=8 + local.set $28 + local.get $0 + i32.load offset=4 + local.set $25 + i32.const 12 + i32.const 4 + call $~lib/rt/tlsf/__alloc + local.set $29 + local.get $28 + i32.const 0 + call $~lib/rt/tlsf/__alloc + local.set $27 + loop $for-loop|010 + local.get $1 + local.get $28 + i32.lt_s + if + i32.const 3 + global.set $~argumentsLength + local.get $1 + local.get $27 + i32.add + local.get $1 + local.get $25 + i32.add + i32.load8_u + local.tee $26 + local.get $26 + i32.mul + i32.store8 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|010 + end + end + local.get $29 + local.get $27 + call $~lib/rt/pure/__retain + i32.store + local.get $29 + local.get $27 + i32.store offset=4 + local.get $29 + local.get $28 + i32.store offset=8 + local.get $29 + call $~lib/rt/pure/__retain + local.tee $1 + i32.const 0 + call $~lib/typedarray/Uint8Array#__get + i32.const 1 + i32.ne + br_if $folding-inner2 + local.get $1 + i32.const 1 + call $~lib/typedarray/Uint8Array#__get + i32.const 4 + i32.ne + br_if $folding-inner3 + local.get $1 + i32.const 2 + call $~lib/typedarray/Uint8Array#__get + i32.const 9 + i32.ne + br_if $folding-inner4 + local.get $0 + call $~lib/rt/pure/__release + local.get $1 + call $~lib/rt/pure/__release + i32.const 3 + call $~lib/typedarray/Uint8ClampedArray#constructor + local.tee $0 + i32.const 0 + i32.const 1 + call $~lib/typedarray/Uint8ClampedArray#__set + local.get $0 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Uint8ClampedArray#__set + local.get $0 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Uint8ClampedArray#__set + i32.const 0 + local.set $1 + local.get $0 + i32.load offset=8 + local.set $28 + local.get $0 + i32.load offset=4 + local.set $25 + i32.const 12 + i32.const 5 + call $~lib/rt/tlsf/__alloc + local.set $29 + local.get $28 + i32.const 0 + call $~lib/rt/tlsf/__alloc + local.set $27 + loop $for-loop|011 + local.get $1 + local.get $28 + i32.lt_s + if + i32.const 3 + global.set $~argumentsLength + local.get $1 + local.get $27 + i32.add + local.get $1 + local.get $25 + i32.add + i32.load8_u + local.tee $26 + local.get $26 + i32.mul + i32.store8 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|011 + end + end + local.get $29 + local.get $27 + call $~lib/rt/pure/__retain + i32.store + local.get $29 + local.get $27 + i32.store offset=4 + local.get $29 + local.get $28 + i32.store offset=8 + local.get $29 + call $~lib/rt/pure/__retain + local.tee $1 + i32.const 0 + call $~lib/typedarray/Uint8ClampedArray#__get + i32.const 1 + i32.ne + br_if $folding-inner2 + local.get $1 + i32.const 1 + call $~lib/typedarray/Uint8ClampedArray#__get + i32.const 4 + i32.ne + br_if $folding-inner3 + local.get $1 + i32.const 2 + call $~lib/typedarray/Uint8ClampedArray#__get + i32.const 9 + i32.ne + br_if $folding-inner4 + local.get $0 + call $~lib/rt/pure/__release + local.get $1 + call $~lib/rt/pure/__release + i32.const 3 + call $~lib/typedarray/Int16Array#constructor + local.tee $0 + i32.const 0 + i32.const 1 + call $~lib/typedarray/Int16Array#__set + local.get $0 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Int16Array#__set + local.get $0 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Int16Array#__set + i32.const 0 + local.set $1 + local.get $0 + i32.load offset=8 + i32.const 1 + i32.shr_u + local.set $27 + local.get $0 + i32.load offset=4 + local.set $25 + i32.const 12 + i32.const 6 + call $~lib/rt/tlsf/__alloc + local.set $29 + local.get $27 + i32.const 1 + i32.shl + local.tee $26 + i32.const 0 + call $~lib/rt/tlsf/__alloc + local.set $28 + loop $for-loop|012 + local.get $1 + local.get $27 + i32.lt_s + if + i32.const 3 + global.set $~argumentsLength + local.get $25 + local.get $1 + i32.const 1 + i32.shl + local.tee $24 + i32.add + i32.load16_s + local.tee $23 + local.get $23 + i32.mul + local.set $23 + local.get $24 + local.get $28 + i32.add + local.get $23 + i32.store16 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|012 + end + end + local.get $29 + local.get $28 + call $~lib/rt/pure/__retain + i32.store + local.get $29 + local.get $28 + i32.store offset=4 + local.get $29 + local.get $26 + i32.store offset=8 + local.get $29 + call $~lib/rt/pure/__retain + local.tee $1 + i32.const 0 + call $~lib/typedarray/Int16Array#__get + i32.const 1 + i32.ne + br_if $folding-inner2 + local.get $1 + i32.const 1 + call $~lib/typedarray/Int16Array#__get + i32.const 4 + i32.ne + br_if $folding-inner3 + local.get $1 + i32.const 2 + call $~lib/typedarray/Int16Array#__get + i32.const 9 + i32.ne + br_if $folding-inner4 + local.get $0 + call $~lib/rt/pure/__release + local.get $1 + call $~lib/rt/pure/__release + i32.const 3 + call $~lib/typedarray/Uint16Array#constructor + local.tee $0 + i32.const 0 + i32.const 1 + call $~lib/typedarray/Uint16Array#__set + local.get $0 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Uint16Array#__set + local.get $0 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Uint16Array#__set + i32.const 0 + local.set $1 + local.get $0 + i32.load offset=8 + i32.const 1 + i32.shr_u + local.set $27 + local.get $0 + i32.load offset=4 + local.set $25 + i32.const 12 + i32.const 7 + call $~lib/rt/tlsf/__alloc + local.set $29 + local.get $27 + i32.const 1 + i32.shl + local.tee $26 + i32.const 0 + call $~lib/rt/tlsf/__alloc + local.set $28 + loop $for-loop|013 + local.get $1 + local.get $27 + i32.lt_s + if + i32.const 3 + global.set $~argumentsLength + local.get $25 + local.get $1 + i32.const 1 + i32.shl + local.tee $24 + i32.add + i32.load16_u + local.tee $23 + local.get $23 + i32.mul + local.set $23 + local.get $24 + local.get $28 + i32.add + local.get $23 + i32.store16 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|013 + end + end + local.get $29 + local.get $28 + call $~lib/rt/pure/__retain + i32.store + local.get $29 + local.get $28 + i32.store offset=4 + local.get $29 + local.get $26 + i32.store offset=8 + local.get $29 + call $~lib/rt/pure/__retain + local.tee $1 + i32.const 0 + call $~lib/typedarray/Uint16Array#__get + i32.const 1 + i32.ne + br_if $folding-inner2 + local.get $1 + i32.const 1 + call $~lib/typedarray/Uint16Array#__get + i32.const 4 + i32.ne + br_if $folding-inner3 + local.get $1 + i32.const 2 + call $~lib/typedarray/Uint16Array#__get + i32.const 9 + i32.ne + br_if $folding-inner4 + local.get $0 + call $~lib/rt/pure/__release + local.get $1 + call $~lib/rt/pure/__release + i32.const 3 + call $~lib/typedarray/Int32Array#constructor + local.tee $0 + i32.const 0 + i32.const 1 + call $~lib/typedarray/Int32Array#__set + local.get $0 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Int32Array#__set + local.get $0 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Int32Array#__set + i32.const 0 + local.set $1 + local.get $0 + i32.load offset=8 + i32.const 2 + i32.shr_u + local.set $27 + local.get $0 + i32.load offset=4 + local.set $25 + i32.const 12 + i32.const 8 + call $~lib/rt/tlsf/__alloc + local.set $29 + local.get $27 + i32.const 2 + i32.shl + local.tee $26 + i32.const 0 + call $~lib/rt/tlsf/__alloc + local.set $28 + loop $for-loop|014 + local.get $1 + local.get $27 + i32.lt_s + if + i32.const 3 + global.set $~argumentsLength + local.get $25 + local.get $1 + i32.const 2 + i32.shl + local.tee $24 + i32.add + i32.load + local.tee $23 + local.get $23 + i32.mul + local.set $23 + local.get $24 + local.get $28 + i32.add + local.get $23 + i32.store + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|014 + end + end + local.get $29 + local.get $28 + call $~lib/rt/pure/__retain + i32.store + local.get $29 + local.get $28 + i32.store offset=4 + local.get $29 + local.get $26 + i32.store offset=8 + local.get $29 + call $~lib/rt/pure/__retain + local.tee $1 + i32.const 0 + call $~lib/typedarray/Int32Array#__get + i32.const 1 + i32.ne + br_if $folding-inner2 + local.get $1 + i32.const 1 + call $~lib/typedarray/Int32Array#__get + i32.const 4 + i32.ne + br_if $folding-inner3 + local.get $1 + i32.const 2 + call $~lib/typedarray/Int32Array#__get + i32.const 9 + i32.ne + br_if $folding-inner4 + local.get $0 + call $~lib/rt/pure/__release + local.get $1 + call $~lib/rt/pure/__release + i32.const 3 + call $~lib/typedarray/Uint32Array#constructor + local.tee $0 + i32.const 0 + i32.const 1 + call $~lib/typedarray/Uint32Array#__set + local.get $0 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Uint32Array#__set + local.get $0 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Uint32Array#__set + i32.const 0 + local.set $1 + local.get $0 + i32.load offset=8 + i32.const 2 + i32.shr_u + local.set $27 + local.get $0 + i32.load offset=4 + local.set $25 + i32.const 12 + i32.const 9 + call $~lib/rt/tlsf/__alloc + local.set $29 + local.get $27 + i32.const 2 + i32.shl + local.tee $26 + i32.const 0 + call $~lib/rt/tlsf/__alloc + local.set $28 + loop $for-loop|015 + local.get $1 + local.get $27 + i32.lt_s + if + i32.const 3 + global.set $~argumentsLength + local.get $25 + local.get $1 + i32.const 2 + i32.shl + local.tee $24 + i32.add + i32.load + local.tee $23 + local.get $23 + i32.mul + local.set $23 + local.get $24 + local.get $28 + i32.add + local.get $23 + i32.store + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|015 + end + end + local.get $29 + local.get $28 + call $~lib/rt/pure/__retain + i32.store + local.get $29 + local.get $28 + i32.store offset=4 + local.get $29 + local.get $26 + i32.store offset=8 + local.get $29 + call $~lib/rt/pure/__retain + local.tee $1 + i32.const 0 + call $~lib/typedarray/Uint32Array#__get + i32.const 1 + i32.ne + br_if $folding-inner2 + local.get $1 + i32.const 1 + call $~lib/typedarray/Uint32Array#__get + i32.const 4 + i32.ne + br_if $folding-inner3 + local.get $1 + i32.const 2 + call $~lib/typedarray/Uint32Array#__get + i32.const 9 + i32.ne + br_if $folding-inner4 + local.get $0 + call $~lib/rt/pure/__release + local.get $1 + call $~lib/rt/pure/__release + i32.const 3 + call $~lib/typedarray/Int64Array#constructor + local.tee $0 + i32.const 0 + i64.const 1 + call $~lib/typedarray/Int64Array#__set + local.get $0 + i32.const 1 + i64.const 2 + call $~lib/typedarray/Int64Array#__set + local.get $0 + i32.const 2 + i64.const 3 + call $~lib/typedarray/Int64Array#__set + i32.const 0 + local.set $1 + local.get $0 + i32.load offset=8 + i32.const 3 + i32.shr_u + local.set $27 + local.get $0 + i32.load offset=4 + local.set $25 + i32.const 12 + i32.const 10 + call $~lib/rt/tlsf/__alloc + local.set $29 + local.get $27 + i32.const 3 + i32.shl + local.tee $26 + i32.const 0 + call $~lib/rt/tlsf/__alloc + local.set $28 + loop $for-loop|016 + local.get $1 + local.get $27 + i32.lt_s + if + i32.const 3 + global.set $~argumentsLength + local.get $25 + local.get $1 + i32.const 3 + i32.shl + local.tee $24 + i32.add + i64.load + local.tee $20 + local.get $20 + i64.mul + local.set $20 + local.get $24 + local.get $28 + i32.add + local.get $20 + i64.store + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|016 + end + end + local.get $29 + local.get $28 + call $~lib/rt/pure/__retain + i32.store + local.get $29 + local.get $28 + i32.store offset=4 + local.get $29 + local.get $26 + i32.store offset=8 + local.get $29 + call $~lib/rt/pure/__retain + local.tee $1 + i32.const 0 + call $~lib/typedarray/Int64Array#__get + i64.const 1 + i64.ne + br_if $folding-inner2 + local.get $1 + i32.const 1 + call $~lib/typedarray/Int64Array#__get + i64.const 4 + i64.ne + br_if $folding-inner3 + local.get $1 + i32.const 2 + call $~lib/typedarray/Int64Array#__get + i64.const 9 + i64.ne + br_if $folding-inner4 + local.get $0 + call $~lib/rt/pure/__release + local.get $1 + call $~lib/rt/pure/__release + i32.const 3 + call $~lib/typedarray/Uint64Array#constructor + local.tee $0 + i32.const 0 + i64.const 1 + call $~lib/typedarray/Uint64Array#__set + local.get $0 + i32.const 1 + i64.const 2 + call $~lib/typedarray/Uint64Array#__set + local.get $0 + i32.const 2 + i64.const 3 + call $~lib/typedarray/Uint64Array#__set + i32.const 0 + local.set $1 + local.get $0 + i32.load offset=8 + i32.const 3 + i32.shr_u + local.set $27 + local.get $0 + i32.load offset=4 + local.set $25 + i32.const 12 + i32.const 11 + call $~lib/rt/tlsf/__alloc + local.set $29 + local.get $27 + i32.const 3 + i32.shl + local.tee $26 + i32.const 0 + call $~lib/rt/tlsf/__alloc + local.set $28 + loop $for-loop|017 + local.get $1 + local.get $27 + i32.lt_s + if + i32.const 3 + global.set $~argumentsLength + local.get $25 + local.get $1 + i32.const 3 + i32.shl + local.tee $24 + i32.add + i64.load + local.tee $20 + local.get $20 + i64.mul + local.set $20 + local.get $24 + local.get $28 + i32.add + local.get $20 + i64.store + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|017 + end + end + local.get $29 + local.get $28 + call $~lib/rt/pure/__retain + i32.store + local.get $29 + local.get $28 + i32.store offset=4 + local.get $29 + local.get $26 + i32.store offset=8 + local.get $29 + call $~lib/rt/pure/__retain + local.tee $1 + i32.const 0 + call $~lib/typedarray/Uint64Array#__get + i64.const 1 + i64.ne + br_if $folding-inner2 + local.get $1 + i32.const 1 + call $~lib/typedarray/Uint64Array#__get + i64.const 4 + i64.ne + br_if $folding-inner3 + local.get $1 + i32.const 2 + call $~lib/typedarray/Uint64Array#__get + i64.const 9 + i64.ne + br_if $folding-inner4 + local.get $0 + call $~lib/rt/pure/__release + local.get $1 + call $~lib/rt/pure/__release + i32.const 3 + call $~lib/typedarray/Float32Array#constructor + local.tee $0 + i32.const 0 + f32.const 1 + call $~lib/typedarray/Float32Array#__set + local.get $0 + i32.const 1 + f32.const 2 + call $~lib/typedarray/Float32Array#__set + local.get $0 + i32.const 2 + f32.const 3 + call $~lib/typedarray/Float32Array#__set + i32.const 0 + local.set $1 + local.get $0 + i32.load offset=8 + i32.const 2 + i32.shr_u + local.set $27 + local.get $0 + i32.load offset=4 + local.set $25 + i32.const 12 + i32.const 12 + call $~lib/rt/tlsf/__alloc + local.set $29 + local.get $27 + i32.const 2 + i32.shl + local.tee $26 + i32.const 0 + call $~lib/rt/tlsf/__alloc + local.set $28 + loop $for-loop|018 + local.get $1 + local.get $27 + i32.lt_s + if + i32.const 3 + global.set $~argumentsLength + local.get $25 + local.get $1 + i32.const 2 + i32.shl + local.tee $24 + i32.add + f32.load + local.tee $21 + local.get $21 + f32.mul + local.set $21 + local.get $24 + local.get $28 + i32.add + local.get $21 + f32.store + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|018 + end + end + local.get $29 + local.get $28 + call $~lib/rt/pure/__retain + i32.store + local.get $29 + local.get $28 + i32.store offset=4 + local.get $29 + local.get $26 + i32.store offset=8 + local.get $29 + call $~lib/rt/pure/__retain + local.tee $1 + i32.const 0 + call $~lib/typedarray/Float32Array#__get + f32.const 1 + f32.ne + br_if $folding-inner2 + local.get $1 + i32.const 1 + call $~lib/typedarray/Float32Array#__get + f32.const 4 + f32.ne + br_if $folding-inner3 + local.get $1 + i32.const 2 + call $~lib/typedarray/Float32Array#__get + f32.const 9 + f32.ne + br_if $folding-inner4 + local.get $0 + call $~lib/rt/pure/__release + local.get $1 + call $~lib/rt/pure/__release + i32.const 3 + call $~lib/typedarray/Float64Array#constructor + local.tee $0 + i32.const 0 + f64.const 1 + call $~lib/typedarray/Float64Array#__set + local.get $0 + i32.const 1 + f64.const 2 + call $~lib/typedarray/Float64Array#__set + local.get $0 + i32.const 2 + f64.const 3 + call $~lib/typedarray/Float64Array#__set + i32.const 0 + local.set $1 + local.get $0 + i32.load offset=8 + i32.const 3 + i32.shr_u + local.set $27 + local.get $0 + i32.load offset=4 + local.set $25 + i32.const 12 + i32.const 13 + call $~lib/rt/tlsf/__alloc + local.set $29 + local.get $27 + i32.const 3 + i32.shl + local.tee $26 + i32.const 0 + call $~lib/rt/tlsf/__alloc + local.set $28 + loop $for-loop|019 + local.get $1 + local.get $27 + i32.lt_s + if + i32.const 3 + global.set $~argumentsLength + local.get $25 + local.get $1 + i32.const 3 + i32.shl + local.tee $24 + i32.add + f64.load + local.tee $22 + local.get $22 + f64.mul + local.set $22 + local.get $24 + local.get $28 + i32.add + local.get $22 + f64.store + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|019 + end + end + local.get $29 + local.get $28 + call $~lib/rt/pure/__retain + i32.store + local.get $29 + local.get $28 + i32.store offset=4 + local.get $29 + local.get $26 + i32.store offset=8 + local.get $29 + call $~lib/rt/pure/__retain + local.tee $1 + i32.const 0 + call $~lib/typedarray/Float64Array#__get + f64.const 1 + f64.ne + br_if $folding-inner2 + local.get $1 + i32.const 1 + call $~lib/typedarray/Float64Array#__get + f64.const 4 + f64.ne + br_if $folding-inner3 + local.get $1 + i32.const 2 + call $~lib/typedarray/Float64Array#__get + f64.const 9 + f64.ne + br_if $folding-inner4 + local.get $0 + call $~lib/rt/pure/__release + local.get $1 + call $~lib/rt/pure/__release + call $std/typedarray/testArrayFilter<~lib/typedarray/Int8Array,i8> + call $std/typedarray/testArrayFilter<~lib/typedarray/Uint8Array,u8> + call $std/typedarray/testArrayFilter<~lib/typedarray/Uint8ClampedArray,u8> + call $std/typedarray/testArrayFilter<~lib/typedarray/Int16Array,i16> + call $std/typedarray/testArrayFilter<~lib/typedarray/Uint16Array,u16> + call $std/typedarray/testArrayFilter<~lib/typedarray/Int32Array,i32> + call $std/typedarray/testArrayFilter<~lib/typedarray/Uint32Array,u32> + call $std/typedarray/testArrayFilter<~lib/typedarray/Int64Array,i64> + call $std/typedarray/testArrayFilter<~lib/typedarray/Uint64Array,u64> + call $std/typedarray/testArrayFilter<~lib/typedarray/Float32Array,f32> + call $std/typedarray/testArrayFilter<~lib/typedarray/Float64Array,f64> + i32.const 3 + call $~lib/typedarray/Int8Array#constructor + local.tee $1 + i32.const 0 + i32.const 2 + call $~lib/typedarray/Int8Array#__set + local.get $1 + i32.const 1 + i32.const 4 + call $~lib/typedarray/Int8Array#__set + local.get $1 + i32.const 2 + i32.const 6 + call $~lib/typedarray/Int8Array#__set + local.get $1 + i32.const 46 + call $~lib/typedarray/Int8Array#some + i32.eqz + br_if $folding-inner5 + local.get $1 + i32.const 47 + call $~lib/typedarray/Int8Array#some + br_if $folding-inner6 + local.get $1 + call $~lib/rt/pure/__release + i32.const 3 + call $~lib/typedarray/Uint8Array#constructor + local.tee $1 + i32.const 0 + i32.const 2 + call $~lib/typedarray/Uint8Array#__set + local.get $1 + i32.const 1 + i32.const 4 + call $~lib/typedarray/Uint8Array#__set + local.get $1 + i32.const 2 + i32.const 6 + call $~lib/typedarray/Uint8Array#__set + local.get $1 + i32.const 48 + call $~lib/typedarray/Uint8Array#some + i32.eqz + br_if $folding-inner5 + local.get $1 + i32.const 49 + call $~lib/typedarray/Uint8Array#some + br_if $folding-inner6 + local.get $1 + call $~lib/rt/pure/__release + i32.const 3 + call $~lib/typedarray/Uint8ClampedArray#constructor + local.tee $1 + i32.const 0 + i32.const 2 + call $~lib/typedarray/Uint8ClampedArray#__set + local.get $1 + i32.const 1 + i32.const 4 + call $~lib/typedarray/Uint8ClampedArray#__set + local.get $1 + i32.const 2 + i32.const 6 + call $~lib/typedarray/Uint8ClampedArray#__set + local.get $1 + i32.const 50 + call $~lib/typedarray/Uint8Array#some + i32.eqz + br_if $folding-inner5 + local.get $1 + i32.const 51 + call $~lib/typedarray/Uint8Array#some + br_if $folding-inner6 + local.get $1 + call $~lib/rt/pure/__release + i32.const 3 + call $~lib/typedarray/Int16Array#constructor + local.tee $1 + i32.const 0 + i32.const 2 + call $~lib/typedarray/Int16Array#__set + local.get $1 + i32.const 1 + i32.const 4 + call $~lib/typedarray/Int16Array#__set + local.get $1 + i32.const 2 + i32.const 6 + call $~lib/typedarray/Int16Array#__set + local.get $1 + i32.const 52 + call $~lib/typedarray/Int16Array#some + i32.eqz + br_if $folding-inner5 + local.get $1 + i32.const 53 + call $~lib/typedarray/Int16Array#some + br_if $folding-inner6 + local.get $1 + call $~lib/rt/pure/__release + i32.const 3 + call $~lib/typedarray/Uint16Array#constructor + local.tee $1 + i32.const 0 + i32.const 2 + call $~lib/typedarray/Uint16Array#__set + local.get $1 + i32.const 1 + i32.const 4 + call $~lib/typedarray/Uint16Array#__set + local.get $1 + i32.const 2 + i32.const 6 + call $~lib/typedarray/Uint16Array#__set + local.get $1 + i32.const 54 + call $~lib/typedarray/Uint16Array#some + i32.eqz + br_if $folding-inner5 + local.get $1 + i32.const 55 + call $~lib/typedarray/Uint16Array#some + br_if $folding-inner6 + local.get $1 + call $~lib/rt/pure/__release + i32.const 3 + call $~lib/typedarray/Int32Array#constructor + local.tee $1 + i32.const 0 + i32.const 2 + call $~lib/typedarray/Int32Array#__set + local.get $1 + i32.const 1 + i32.const 4 + call $~lib/typedarray/Int32Array#__set + local.get $1 + i32.const 2 + i32.const 6 + call $~lib/typedarray/Int32Array#__set + local.get $1 + i32.const 56 + call $~lib/typedarray/Int32Array#some + i32.eqz + br_if $folding-inner5 + local.get $1 + i32.const 57 + call $~lib/typedarray/Int32Array#some + br_if $folding-inner6 + local.get $1 + call $~lib/rt/pure/__release + i32.const 3 + call $~lib/typedarray/Uint32Array#constructor + local.tee $1 + i32.const 0 + i32.const 2 + call $~lib/typedarray/Uint32Array#__set + local.get $1 + i32.const 1 + i32.const 4 + call $~lib/typedarray/Uint32Array#__set + local.get $1 + i32.const 2 + i32.const 6 + call $~lib/typedarray/Uint32Array#__set + local.get $1 + i32.const 58 + call $~lib/typedarray/Int32Array#some + i32.eqz + br_if $folding-inner5 + local.get $1 + i32.const 59 + call $~lib/typedarray/Int32Array#some + br_if $folding-inner6 + local.get $1 + call $~lib/rt/pure/__release + i32.const 3 + call $~lib/typedarray/Int64Array#constructor + local.tee $1 + i32.const 0 + i64.const 2 + call $~lib/typedarray/Int64Array#__set + local.get $1 + i32.const 1 + i64.const 4 + call $~lib/typedarray/Int64Array#__set + local.get $1 + i32.const 2 + i64.const 6 + call $~lib/typedarray/Int64Array#__set + local.get $1 + i32.const 60 + call $~lib/typedarray/Int64Array#some + i32.eqz + br_if $folding-inner5 + local.get $1 + i32.const 61 + call $~lib/typedarray/Int64Array#some + br_if $folding-inner6 + local.get $1 + call $~lib/rt/pure/__release + i32.const 3 + call $~lib/typedarray/Uint64Array#constructor + local.tee $1 + i32.const 0 + i64.const 2 + call $~lib/typedarray/Uint64Array#__set + local.get $1 + i32.const 1 + i64.const 4 + call $~lib/typedarray/Uint64Array#__set + local.get $1 + i32.const 2 + i64.const 6 + call $~lib/typedarray/Uint64Array#__set + local.get $1 + i32.const 62 + call $~lib/typedarray/Int64Array#some + i32.eqz + br_if $folding-inner5 + local.get $1 + i32.const 63 + call $~lib/typedarray/Int64Array#some + br_if $folding-inner6 + local.get $1 + call $~lib/rt/pure/__release + i32.const 3 + call $~lib/typedarray/Float32Array#constructor + local.tee $1 + i32.const 0 + f32.const 2 + call $~lib/typedarray/Float32Array#__set + local.get $1 + i32.const 1 + f32.const 4 + call $~lib/typedarray/Float32Array#__set + local.get $1 + i32.const 2 + f32.const 6 + call $~lib/typedarray/Float32Array#__set + local.get $1 + i32.const 64 + call $~lib/typedarray/Float32Array#some + i32.eqz + br_if $folding-inner5 + local.get $1 + i32.const 65 + call $~lib/typedarray/Float32Array#some + br_if $folding-inner6 + local.get $1 + call $~lib/rt/pure/__release + i32.const 3 + call $~lib/typedarray/Float64Array#constructor + local.tee $1 + i32.const 0 + f64.const 2 + call $~lib/typedarray/Float64Array#__set + local.get $1 + i32.const 1 + f64.const 4 + call $~lib/typedarray/Float64Array#__set + local.get $1 + i32.const 2 + f64.const 6 + call $~lib/typedarray/Float64Array#__set + local.get $1 + i32.const 66 + call $~lib/typedarray/Float64Array#some + i32.eqz + br_if $folding-inner5 + local.get $1 + i32.const 67 + call $~lib/typedarray/Float64Array#some + br_if $folding-inner6 + local.get $1 + call $~lib/rt/pure/__release + i32.const 3 + call $~lib/typedarray/Int8Array#constructor + local.tee $1 + i32.const 0 + i32.const 1 + call $~lib/typedarray/Int8Array#__set + local.get $1 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Int8Array#__set + local.get $1 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Int8Array#__set + local.get $1 + i32.const 68 + call $~lib/typedarray/Int8Array#findIndex + i32.const 1 + i32.ne + br_if $folding-inner7 + local.get $1 + i32.const 69 + call $~lib/typedarray/Int8Array#findIndex + i32.const -1 + i32.ne + br_if $folding-inner8 + local.get $1 + call $~lib/rt/pure/__release + i32.const 3 + call $~lib/typedarray/Uint8Array#constructor + local.tee $1 + i32.const 0 + i32.const 1 + call $~lib/typedarray/Uint8Array#__set + local.get $1 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Uint8Array#__set + local.get $1 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Uint8Array#__set + local.get $1 + i32.const 70 + call $~lib/typedarray/Uint8Array#findIndex + i32.const 1 + i32.ne + br_if $folding-inner7 + local.get $1 + i32.const 71 + call $~lib/typedarray/Uint8Array#findIndex + i32.const -1 + i32.ne + br_if $folding-inner8 + local.get $1 + call $~lib/rt/pure/__release + i32.const 3 + call $~lib/typedarray/Uint8ClampedArray#constructor + local.tee $1 + i32.const 0 + i32.const 1 + call $~lib/typedarray/Uint8ClampedArray#__set + local.get $1 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Uint8ClampedArray#__set + local.get $1 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Uint8ClampedArray#__set + local.get $1 + i32.const 72 + call $~lib/typedarray/Uint8Array#findIndex + i32.const 1 + i32.ne + br_if $folding-inner7 + local.get $1 + i32.const 73 + call $~lib/typedarray/Uint8Array#findIndex + i32.const -1 + i32.ne + br_if $folding-inner8 + local.get $1 + call $~lib/rt/pure/__release + i32.const 3 + call $~lib/typedarray/Int16Array#constructor + local.tee $1 + i32.const 0 + i32.const 1 + call $~lib/typedarray/Int16Array#__set + local.get $1 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Int16Array#__set + local.get $1 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Int16Array#__set + local.get $1 + i32.const 74 + call $~lib/typedarray/Int16Array#findIndex + i32.const 1 + i32.ne + br_if $folding-inner7 + local.get $1 + i32.const 75 + call $~lib/typedarray/Int16Array#findIndex + i32.const -1 + i32.ne + br_if $folding-inner8 + local.get $1 + call $~lib/rt/pure/__release + i32.const 3 + call $~lib/typedarray/Uint16Array#constructor + local.tee $1 + i32.const 0 + i32.const 1 + call $~lib/typedarray/Uint16Array#__set + local.get $1 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Uint16Array#__set + local.get $1 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Uint16Array#__set + local.get $1 + i32.const 76 + call $~lib/typedarray/Uint16Array#findIndex + i32.const 1 + i32.ne + br_if $folding-inner7 + local.get $1 + i32.const 77 + call $~lib/typedarray/Uint16Array#findIndex + i32.const -1 + i32.ne + br_if $folding-inner8 + local.get $1 + call $~lib/rt/pure/__release + i32.const 3 + call $~lib/typedarray/Int32Array#constructor + local.tee $1 + i32.const 0 + i32.const 1 + call $~lib/typedarray/Int32Array#__set + local.get $1 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Int32Array#__set + local.get $1 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Int32Array#__set + local.get $1 + i32.const 78 + call $~lib/typedarray/Int32Array#findIndex + i32.const 1 + i32.ne + br_if $folding-inner7 + local.get $1 + i32.const 79 + call $~lib/typedarray/Int32Array#findIndex + i32.const -1 + i32.ne + br_if $folding-inner8 + local.get $1 + call $~lib/rt/pure/__release + i32.const 3 + call $~lib/typedarray/Uint32Array#constructor + local.tee $1 + i32.const 0 + i32.const 1 + call $~lib/typedarray/Uint32Array#__set + local.get $1 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Uint32Array#__set + local.get $1 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Uint32Array#__set + local.get $1 + i32.const 80 + call $~lib/typedarray/Int32Array#findIndex + i32.const 1 + i32.ne + br_if $folding-inner7 + local.get $1 + i32.const 81 + call $~lib/typedarray/Int32Array#findIndex + i32.const -1 + i32.ne + br_if $folding-inner8 + local.get $1 + call $~lib/rt/pure/__release + i32.const 3 + call $~lib/typedarray/Int64Array#constructor + local.tee $1 + i32.const 0 + i64.const 1 + call $~lib/typedarray/Int64Array#__set + local.get $1 + i32.const 1 + i64.const 2 + call $~lib/typedarray/Int64Array#__set + local.get $1 + i32.const 2 + i64.const 3 + call $~lib/typedarray/Int64Array#__set + local.get $1 + i32.const 82 + call $~lib/typedarray/Int64Array#findIndex + i32.const 1 + i32.ne + br_if $folding-inner7 + local.get $1 + i32.const 83 + call $~lib/typedarray/Int64Array#findIndex + i32.const -1 + i32.ne + br_if $folding-inner8 + local.get $1 + call $~lib/rt/pure/__release + i32.const 3 + call $~lib/typedarray/Uint64Array#constructor + local.tee $1 + i32.const 0 + i64.const 1 + call $~lib/typedarray/Uint64Array#__set + local.get $1 + i32.const 1 + i64.const 2 + call $~lib/typedarray/Uint64Array#__set + local.get $1 + i32.const 2 + i64.const 3 + call $~lib/typedarray/Uint64Array#__set + local.get $1 + i32.const 84 + call $~lib/typedarray/Int64Array#findIndex + i32.const 1 + i32.ne + br_if $folding-inner7 + local.get $1 + i32.const 85 + call $~lib/typedarray/Int64Array#findIndex + i32.const -1 + i32.ne + br_if $folding-inner8 + local.get $1 + call $~lib/rt/pure/__release + i32.const 3 + call $~lib/typedarray/Float32Array#constructor + local.tee $1 + i32.const 0 + f32.const 1 + call $~lib/typedarray/Float32Array#__set + local.get $1 + i32.const 1 + f32.const 2 + call $~lib/typedarray/Float32Array#__set + local.get $1 + i32.const 2 + f32.const 3 + call $~lib/typedarray/Float32Array#__set + local.get $1 + i32.const 86 + call $~lib/typedarray/Float32Array#findIndex + i32.const 1 + i32.ne + br_if $folding-inner7 + local.get $1 + i32.const 87 + call $~lib/typedarray/Float32Array#findIndex + i32.const -1 + i32.ne + br_if $folding-inner8 + local.get $1 + call $~lib/rt/pure/__release + i32.const 3 + call $~lib/typedarray/Float64Array#constructor + local.tee $1 + i32.const 0 + f64.const 1 + call $~lib/typedarray/Float64Array#__set + local.get $1 + i32.const 1 + f64.const 2 + call $~lib/typedarray/Float64Array#__set + local.get $1 + i32.const 2 + f64.const 3 + call $~lib/typedarray/Float64Array#__set + local.get $1 + i32.const 88 + call $~lib/typedarray/Float64Array#findIndex + i32.const 1 + i32.ne + br_if $folding-inner7 + local.get $1 + i32.const 89 + call $~lib/typedarray/Float64Array#findIndex + i32.const -1 + i32.ne + br_if $folding-inner8 + local.get $1 + call $~lib/rt/pure/__release + i32.const 3 + call $~lib/typedarray/Int8Array#constructor + local.tee $1 + i32.const 0 + i32.const 2 + call $~lib/typedarray/Int8Array#__set + local.get $1 + i32.const 1 + i32.const 4 + call $~lib/typedarray/Int8Array#__set + local.get $1 + i32.const 2 + i32.const 6 + call $~lib/typedarray/Int8Array#__set + local.get $1 + i32.const 90 + call $~lib/typedarray/Int8Array#every + i32.eqz + br_if $folding-inner9 + local.get $1 + i32.const 91 + call $~lib/typedarray/Int8Array#every + br_if $folding-inner10 + local.get $1 + call $~lib/rt/pure/__release + i32.const 3 + call $~lib/typedarray/Uint8Array#constructor + local.tee $1 + i32.const 0 + i32.const 2 + call $~lib/typedarray/Uint8Array#__set + local.get $1 + i32.const 1 + i32.const 4 + call $~lib/typedarray/Uint8Array#__set + local.get $1 + i32.const 2 + i32.const 6 + call $~lib/typedarray/Uint8Array#__set + local.get $1 + i32.const 92 + call $~lib/typedarray/Uint8Array#every + i32.eqz + br_if $folding-inner9 + local.get $1 + i32.const 93 + call $~lib/typedarray/Uint8Array#every + br_if $folding-inner10 + local.get $1 + call $~lib/rt/pure/__release + i32.const 3 + call $~lib/typedarray/Uint8ClampedArray#constructor + local.tee $1 + i32.const 0 + i32.const 2 + call $~lib/typedarray/Uint8ClampedArray#__set + local.get $1 + i32.const 1 + i32.const 4 + call $~lib/typedarray/Uint8ClampedArray#__set + local.get $1 + i32.const 2 + i32.const 6 + call $~lib/typedarray/Uint8ClampedArray#__set + local.get $1 + i32.const 94 + call $~lib/typedarray/Uint8Array#every + i32.eqz + br_if $folding-inner9 + local.get $1 + i32.const 95 + call $~lib/typedarray/Uint8Array#every + br_if $folding-inner10 + local.get $1 + call $~lib/rt/pure/__release + i32.const 3 + call $~lib/typedarray/Int16Array#constructor + local.tee $1 + i32.const 0 + i32.const 2 + call $~lib/typedarray/Int16Array#__set + local.get $1 + i32.const 1 + i32.const 4 + call $~lib/typedarray/Int16Array#__set + local.get $1 + i32.const 2 + i32.const 6 + call $~lib/typedarray/Int16Array#__set + local.get $1 + i32.const 96 + call $~lib/typedarray/Int16Array#every + i32.eqz + br_if $folding-inner9 + local.get $1 + i32.const 97 + call $~lib/typedarray/Int16Array#every + br_if $folding-inner10 + local.get $1 + call $~lib/rt/pure/__release + i32.const 3 + call $~lib/typedarray/Uint16Array#constructor + local.tee $1 + i32.const 0 + i32.const 2 + call $~lib/typedarray/Uint16Array#__set + local.get $1 + i32.const 1 + i32.const 4 + call $~lib/typedarray/Uint16Array#__set + local.get $1 + i32.const 2 + i32.const 6 + call $~lib/typedarray/Uint16Array#__set + local.get $1 + i32.const 98 + call $~lib/typedarray/Uint16Array#every + i32.eqz + br_if $folding-inner9 + local.get $1 + i32.const 99 + call $~lib/typedarray/Uint16Array#every + br_if $folding-inner10 + local.get $1 + call $~lib/rt/pure/__release + i32.const 3 + call $~lib/typedarray/Int32Array#constructor + local.tee $1 + i32.const 0 + i32.const 2 + call $~lib/typedarray/Int32Array#__set + local.get $1 + i32.const 1 + i32.const 4 + call $~lib/typedarray/Int32Array#__set + local.get $1 + i32.const 2 + i32.const 6 + call $~lib/typedarray/Int32Array#__set + local.get $1 + i32.const 100 + call $~lib/typedarray/Int32Array#every + i32.eqz + br_if $folding-inner9 + local.get $1 + i32.const 101 + call $~lib/typedarray/Int32Array#every + br_if $folding-inner10 + local.get $1 + call $~lib/rt/pure/__release + i32.const 3 + call $~lib/typedarray/Uint32Array#constructor + local.tee $1 + i32.const 0 + i32.const 2 + call $~lib/typedarray/Uint32Array#__set + local.get $1 + i32.const 1 + i32.const 4 + call $~lib/typedarray/Uint32Array#__set + local.get $1 + i32.const 2 + i32.const 6 + call $~lib/typedarray/Uint32Array#__set + local.get $1 + i32.const 102 + call $~lib/typedarray/Int32Array#every + i32.eqz + br_if $folding-inner9 + local.get $1 + i32.const 103 + call $~lib/typedarray/Int32Array#every + br_if $folding-inner10 + local.get $1 + call $~lib/rt/pure/__release + i32.const 3 + call $~lib/typedarray/Int64Array#constructor + local.tee $1 + i32.const 0 + i64.const 2 + call $~lib/typedarray/Int64Array#__set + local.get $1 + i32.const 1 + i64.const 4 + call $~lib/typedarray/Int64Array#__set + local.get $1 + i32.const 2 + i64.const 6 + call $~lib/typedarray/Int64Array#__set + local.get $1 + i32.const 104 + call $~lib/typedarray/Int64Array#every + i32.eqz + br_if $folding-inner9 + local.get $1 + i32.const 105 + call $~lib/typedarray/Int64Array#every + br_if $folding-inner10 + local.get $1 + call $~lib/rt/pure/__release + i32.const 3 + call $~lib/typedarray/Uint64Array#constructor + local.tee $1 + i32.const 0 + i64.const 2 + call $~lib/typedarray/Uint64Array#__set + local.get $1 + i32.const 1 + i64.const 4 + call $~lib/typedarray/Uint64Array#__set + local.get $1 + i32.const 2 + i64.const 6 + call $~lib/typedarray/Uint64Array#__set + local.get $1 + i32.const 106 + call $~lib/typedarray/Int64Array#every + i32.eqz + br_if $folding-inner9 + local.get $1 + i32.const 107 + call $~lib/typedarray/Int64Array#every + br_if $folding-inner10 + local.get $1 + call $~lib/rt/pure/__release + i32.const 3 + call $~lib/typedarray/Float32Array#constructor + local.tee $1 + i32.const 0 + f32.const 2 + call $~lib/typedarray/Float32Array#__set + local.get $1 + i32.const 1 + f32.const 4 + call $~lib/typedarray/Float32Array#__set + local.get $1 + i32.const 2 + f32.const 6 + call $~lib/typedarray/Float32Array#__set + local.get $1 + i32.const 108 + call $~lib/typedarray/Float32Array#every + i32.eqz + br_if $folding-inner9 + local.get $1 + i32.const 109 + call $~lib/typedarray/Float32Array#every + br_if $folding-inner10 + local.get $1 + call $~lib/rt/pure/__release + i32.const 3 + call $~lib/typedarray/Float64Array#constructor + local.tee $1 + i32.const 0 + f64.const 2 + call $~lib/typedarray/Float64Array#__set + local.get $1 + i32.const 1 + f64.const 4 + call $~lib/typedarray/Float64Array#__set + local.get $1 + i32.const 2 + f64.const 6 + call $~lib/typedarray/Float64Array#__set + local.get $1 + i32.const 110 + call $~lib/typedarray/Float64Array#every + i32.eqz + br_if $folding-inner9 + local.get $1 + i32.const 111 + call $~lib/typedarray/Float64Array#every + br_if $folding-inner10 + local.get $1 + call $~lib/rt/pure/__release + i32.const 0 + global.set $std/typedarray/forEachCallCount + i32.const 3 + call $~lib/typedarray/Int8Array#constructor + local.tee $0 + global.set $std/typedarray/forEachSelf + local.get $0 + i32.const 0 + i32.const 2704 + i32.const 0 + call $~lib/array/Array#__get + i32.const 24 + i32.shl + i32.const 24 + i32.shr_s + call $~lib/typedarray/Int8Array#__set + local.get $0 + i32.const 1 + i32.const 2704 + i32.const 1 + call $~lib/array/Array#__get + i32.const 24 + i32.shl + i32.const 24 + i32.shr_s + call $~lib/typedarray/Int8Array#__set + local.get $0 + i32.const 2 + i32.const 2704 + i32.const 2 + call $~lib/array/Array#__get + i32.const 24 + i32.shl + i32.const 24 + i32.shr_s + call $~lib/typedarray/Int8Array#__set + i32.const 0 + local.set $1 + local.get $0 + i32.load offset=4 + local.set $29 + local.get $0 + i32.load offset=8 + local.set $28 + loop $for-loop|020 + local.get $1 + local.get $28 + i32.lt_s + if + i32.const 3 + global.set $~argumentsLength + local.get $1 + local.get $29 + i32.add + i32.load8_s + local.get $1 + local.get $0 + call $std/typedarray/testArrayForEach<~lib/typedarray/Int8Array,i8>~anonymous|0 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|020 + end + end + global.get $std/typedarray/forEachCallCount + i32.const 3 + i32.ne + br_if $folding-inner11 + local.get $0 + call $~lib/rt/pure/__release + i32.const 0 + global.set $std/typedarray/forEachCallCount + i32.const 3 + call $~lib/typedarray/Uint8Array#constructor + local.tee $1 + global.set $std/typedarray/forEachSelf + local.get $1 + i32.const 0 + i32.const 2704 + i32.const 0 + call $~lib/array/Array#__get + i32.const 255 + i32.and + call $~lib/typedarray/Uint8Array#__set + local.get $1 + i32.const 1 + i32.const 2704 + i32.const 1 + call $~lib/array/Array#__get + i32.const 255 + i32.and + call $~lib/typedarray/Uint8Array#__set + local.get $1 + i32.const 2 + i32.const 2704 + i32.const 2 + call $~lib/array/Array#__get + i32.const 255 + i32.and + call $~lib/typedarray/Uint8Array#__set + local.get $1 + i32.const 113 + call $~lib/typedarray/Uint8Array#forEach + global.get $std/typedarray/forEachCallCount + i32.const 3 + i32.ne + br_if $folding-inner11 + local.get $1 + call $~lib/rt/pure/__release + i32.const 0 + global.set $std/typedarray/forEachCallCount + i32.const 3 + call $~lib/typedarray/Uint8ClampedArray#constructor + local.tee $1 + global.set $std/typedarray/forEachSelf + local.get $1 + i32.const 0 + i32.const 2704 + i32.const 0 + call $~lib/array/Array#__get + i32.const 255 + i32.and + call $~lib/typedarray/Uint8ClampedArray#__set + local.get $1 + i32.const 1 + i32.const 2704 + i32.const 1 + call $~lib/array/Array#__get + i32.const 255 + i32.and + call $~lib/typedarray/Uint8ClampedArray#__set + local.get $1 + i32.const 2 + i32.const 2704 + i32.const 2 + call $~lib/array/Array#__get + i32.const 255 + i32.and + call $~lib/typedarray/Uint8ClampedArray#__set + local.get $1 + i32.const 114 + call $~lib/typedarray/Uint8Array#forEach + global.get $std/typedarray/forEachCallCount + i32.const 3 + i32.ne + br_if $folding-inner11 + local.get $1 + call $~lib/rt/pure/__release + i32.const 0 + global.set $std/typedarray/forEachCallCount + i32.const 3 + call $~lib/typedarray/Int16Array#constructor + local.tee $0 + global.set $std/typedarray/forEachSelf + local.get $0 + i32.const 0 + i32.const 2704 + i32.const 0 + call $~lib/array/Array#__get + i32.const 16 + i32.shl + i32.const 16 + i32.shr_s + call $~lib/typedarray/Int16Array#__set + local.get $0 + i32.const 1 + i32.const 2704 + i32.const 1 + call $~lib/array/Array#__get + i32.const 16 + i32.shl + i32.const 16 + i32.shr_s + call $~lib/typedarray/Int16Array#__set + local.get $0 + i32.const 2 + i32.const 2704 + i32.const 2 + call $~lib/array/Array#__get + i32.const 16 + i32.shl + i32.const 16 + i32.shr_s + call $~lib/typedarray/Int16Array#__set + i32.const 0 + local.set $1 + local.get $0 + i32.load offset=4 + local.set $29 + local.get $0 + i32.load offset=8 + i32.const 1 + i32.shr_u + local.set $28 + loop $for-loop|021 + local.get $1 + local.get $28 + i32.lt_s + if + i32.const 3 + global.set $~argumentsLength + local.get $29 + local.get $1 + i32.const 1 + i32.shl + i32.add + i32.load16_s + local.get $1 + local.get $0 + call $std/typedarray/testArrayForEach<~lib/typedarray/Int16Array,i16>~anonymous|0 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|021 + end + end + global.get $std/typedarray/forEachCallCount + i32.const 3 + i32.ne + br_if $folding-inner11 + local.get $0 + call $~lib/rt/pure/__release + i32.const 0 + global.set $std/typedarray/forEachCallCount + i32.const 3 + call $~lib/typedarray/Uint16Array#constructor + local.tee $0 + global.set $std/typedarray/forEachSelf + local.get $0 + i32.const 0 + i32.const 2704 + i32.const 0 + call $~lib/array/Array#__get + i32.const 65535 + i32.and + call $~lib/typedarray/Uint16Array#__set + local.get $0 + i32.const 1 + i32.const 2704 + i32.const 1 + call $~lib/array/Array#__get + i32.const 65535 + i32.and + call $~lib/typedarray/Uint16Array#__set + local.get $0 + i32.const 2 + i32.const 2704 + i32.const 2 + call $~lib/array/Array#__get + i32.const 65535 + i32.and + call $~lib/typedarray/Uint16Array#__set + i32.const 0 + local.set $1 + local.get $0 + i32.load offset=4 + local.set $29 + local.get $0 + i32.load offset=8 + i32.const 1 + i32.shr_u + local.set $28 + loop $for-loop|022 + local.get $1 + local.get $28 + i32.lt_s + if + i32.const 3 + global.set $~argumentsLength + local.get $29 + local.get $1 + i32.const 1 + i32.shl + i32.add + i32.load16_u + local.get $1 + local.get $0 + call $std/typedarray/testArrayForEach<~lib/typedarray/Int16Array,i16>~anonymous|0 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|022 + end + end + global.get $std/typedarray/forEachCallCount + i32.const 3 + i32.ne + br_if $folding-inner11 + local.get $0 + call $~lib/rt/pure/__release + i32.const 0 + global.set $std/typedarray/forEachCallCount + i32.const 3 + call $~lib/typedarray/Int32Array#constructor + local.tee $1 + global.set $std/typedarray/forEachSelf + local.get $1 + i32.const 0 + i32.const 2704 + i32.const 0 + call $~lib/array/Array#__get + call $~lib/typedarray/Int32Array#__set + local.get $1 + i32.const 1 + i32.const 2704 + i32.const 1 + call $~lib/array/Array#__get + call $~lib/typedarray/Int32Array#__set + local.get $1 + i32.const 2 + i32.const 2704 + i32.const 2 + call $~lib/array/Array#__get + call $~lib/typedarray/Int32Array#__set + local.get $1 + i32.const 117 + call $~lib/typedarray/Int32Array#forEach + global.get $std/typedarray/forEachCallCount + i32.const 3 + i32.ne + br_if $folding-inner11 + local.get $1 + call $~lib/rt/pure/__release + i32.const 0 + global.set $std/typedarray/forEachCallCount + i32.const 3 + call $~lib/typedarray/Uint32Array#constructor + local.tee $1 + global.set $std/typedarray/forEachSelf + local.get $1 + i32.const 0 + i32.const 2704 + i32.const 0 + call $~lib/array/Array#__get + call $~lib/typedarray/Uint32Array#__set + local.get $1 + i32.const 1 + i32.const 2704 + i32.const 1 + call $~lib/array/Array#__get + call $~lib/typedarray/Uint32Array#__set + local.get $1 + i32.const 2 + i32.const 2704 + i32.const 2 + call $~lib/array/Array#__get + call $~lib/typedarray/Uint32Array#__set + local.get $1 + i32.const 118 + call $~lib/typedarray/Int32Array#forEach + global.get $std/typedarray/forEachCallCount + i32.const 3 + i32.ne + br_if $folding-inner11 + local.get $1 + call $~lib/rt/pure/__release + i32.const 0 + global.set $std/typedarray/forEachCallCount + i32.const 3 + call $~lib/typedarray/Int64Array#constructor + local.tee $1 + global.set $std/typedarray/forEachSelf + local.get $1 + i32.const 0 + i32.const 2704 + i32.const 0 + call $~lib/array/Array#__get + i64.extend_i32_s + call $~lib/typedarray/Int64Array#__set + local.get $1 + i32.const 1 + i32.const 2704 + i32.const 1 + call $~lib/array/Array#__get + i64.extend_i32_s + call $~lib/typedarray/Int64Array#__set + local.get $1 + i32.const 2 + i32.const 2704 + i32.const 2 + call $~lib/array/Array#__get + i64.extend_i32_s + call $~lib/typedarray/Int64Array#__set + local.get $1 + i32.const 119 + call $~lib/typedarray/Int64Array#forEach + global.get $std/typedarray/forEachCallCount + i32.const 3 + i32.ne + br_if $folding-inner11 + local.get $1 + call $~lib/rt/pure/__release + i32.const 0 + global.set $std/typedarray/forEachCallCount + i32.const 3 + call $~lib/typedarray/Uint64Array#constructor + local.tee $1 + global.set $std/typedarray/forEachSelf + local.get $1 + i32.const 0 + i32.const 2704 + i32.const 0 + call $~lib/array/Array#__get + i64.extend_i32_s + call $~lib/typedarray/Uint64Array#__set + local.get $1 + i32.const 1 + i32.const 2704 + i32.const 1 + call $~lib/array/Array#__get + i64.extend_i32_s + call $~lib/typedarray/Uint64Array#__set + local.get $1 + i32.const 2 + i32.const 2704 + i32.const 2 + call $~lib/array/Array#__get + i64.extend_i32_s + call $~lib/typedarray/Uint64Array#__set + local.get $1 + i32.const 120 + call $~lib/typedarray/Int64Array#forEach + global.get $std/typedarray/forEachCallCount + i32.const 3 + i32.ne + br_if $folding-inner11 + local.get $1 + call $~lib/rt/pure/__release + i32.const 0 + global.set $std/typedarray/forEachCallCount + i32.const 3 + call $~lib/typedarray/Float32Array#constructor + local.tee $0 + global.set $std/typedarray/forEachSelf + local.get $0 + i32.const 0 + i32.const 2704 + i32.const 0 + call $~lib/array/Array#__get + f32.convert_i32_s + call $~lib/typedarray/Float32Array#__set + local.get $0 + i32.const 1 + i32.const 2704 + i32.const 1 + call $~lib/array/Array#__get + f32.convert_i32_s + call $~lib/typedarray/Float32Array#__set + local.get $0 + i32.const 2 + i32.const 2704 + i32.const 2 + call $~lib/array/Array#__get + f32.convert_i32_s + call $~lib/typedarray/Float32Array#__set + i32.const 0 + local.set $1 + local.get $0 + i32.load offset=4 + local.set $29 + local.get $0 + i32.load offset=8 + i32.const 2 + i32.shr_u + local.set $28 + loop $for-loop|023 + local.get $1 + local.get $28 + i32.lt_s + if + i32.const 3 + global.set $~argumentsLength + local.get $29 + local.get $1 + i32.const 2 + i32.shl + i32.add + f32.load + local.get $1 + local.get $0 + call $std/typedarray/testArrayForEach<~lib/typedarray/Float32Array,f32>~anonymous|0 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|023 + end + end + global.get $std/typedarray/forEachCallCount + i32.const 3 + i32.ne + br_if $folding-inner11 + local.get $0 + call $~lib/rt/pure/__release + i32.const 0 + global.set $std/typedarray/forEachCallCount + i32.const 3 + call $~lib/typedarray/Float64Array#constructor + local.tee $0 + global.set $std/typedarray/forEachSelf + local.get $0 + i32.const 0 + i32.const 2704 + i32.const 0 + call $~lib/array/Array#__get + f64.convert_i32_s + call $~lib/typedarray/Float64Array#__set + local.get $0 + i32.const 1 + i32.const 2704 + i32.const 1 + call $~lib/array/Array#__get + f64.convert_i32_s + call $~lib/typedarray/Float64Array#__set + local.get $0 + i32.const 2 + i32.const 2704 + i32.const 2 + call $~lib/array/Array#__get + f64.convert_i32_s + call $~lib/typedarray/Float64Array#__set + i32.const 0 + local.set $1 + local.get $0 + i32.load offset=4 + local.set $29 + local.get $0 + i32.load offset=8 + i32.const 3 + i32.shr_u + local.set $28 + loop $for-loop|024 + local.get $1 + local.get $28 + i32.lt_s + if + i32.const 3 + global.set $~argumentsLength + local.get $29 + local.get $1 + i32.const 3 + i32.shl + i32.add + f64.load + local.get $1 + local.get $0 + call $std/typedarray/testArrayForEach<~lib/typedarray/Float64Array,f64>~anonymous|0 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|024 + end + end + global.get $std/typedarray/forEachCallCount + i32.const 3 + i32.ne + br_if $folding-inner11 + local.get $0 + call $~lib/rt/pure/__release + call $std/typedarray/testArrayReverse<~lib/typedarray/Int8Array,i8> + call $std/typedarray/testArrayReverse<~lib/typedarray/Uint8Array,u8> + call $std/typedarray/testArrayReverse<~lib/typedarray/Uint8ClampedArray,u8> + call $std/typedarray/testArrayReverse<~lib/typedarray/Int16Array,i16> + call $std/typedarray/testArrayReverse<~lib/typedarray/Uint16Array,u16> + call $std/typedarray/testArrayReverse<~lib/typedarray/Int32Array,i32> + call $std/typedarray/testArrayReverse<~lib/typedarray/Uint32Array,u32> + call $std/typedarray/testArrayReverse<~lib/typedarray/Int64Array,i64> + call $std/typedarray/testArrayReverse<~lib/typedarray/Uint64Array,u64> + call $std/typedarray/testArrayReverse<~lib/typedarray/Float32Array,f32> + call $std/typedarray/testArrayReverse<~lib/typedarray/Float64Array,f64> + call $std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Int8Array,i8> + call $std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Uint8Array,u8> + call $std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Uint8ClampedArray,u8> + call $std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Int16Array,i16> + call $std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Uint16Array,u16> + call $std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Int32Array,i32> + call $std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Uint32Array,u32> + call $std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Int64Array,i64> + call $std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Uint64Array,u64> + call $std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Float32Array,f32> + call $std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Float64Array,f64> + i32.const 1 + call $~lib/typedarray/Float64Array#constructor + local.tee $29 + i32.const 0 + f64.const nan:0x8000000000000 + call $~lib/typedarray/Float64Array#__set + local.get $29 + f64.const nan:0x8000000000000 + i32.const 0 + call $~lib/typedarray/Float64Array#indexOf + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1312 + i32.const 607 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + local.set $1 + i32.const 0 + local.set $0 + block $~lib/typedarray/INCLUDES<~lib/typedarray/Float64Array,f64>|inlined.0 + local.get $29 + i32.load offset=8 + i32.const 3 + i32.shr_u + local.tee $28 + if (result i32) + i32.const 0 + local.get $28 + i32.ge_s + else + i32.const 1 + end + br_if $~lib/typedarray/INCLUDES<~lib/typedarray/Float64Array,f64>|inlined.0 + local.get $29 + i32.load offset=4 + local.set $25 + loop $while-continue|0 + local.get $1 + local.get $28 + i32.lt_s + if + local.get $25 + local.get $1 + i32.const 3 + i32.shl + i32.add + f64.load + local.tee $22 + f64.const nan:0x8000000000000 + f64.eq + if (result i32) i32.const 1 - f32.const 2 - call $~lib/typedarray/Float32Array#__set - local.get $1 - i32.const 2 - f32.const 3 - call $~lib/typedarray/Float32Array#__set - local.get $1 - i32.const 3 - f32.const 4 - call $~lib/typedarray/Float32Array#__set - local.get $1 - i32.const 4 - f32.const 5 - call $~lib/typedarray/Float32Array#__set - local.get $1 - call $~lib/typedarray/Float32Array#join - local.tee $0 - i32.const 4176 - call $~lib/string/String.__eq - i32.eqz - br_if $folding-inner14 - local.get $1 - call $~lib/typedarray/Float32Array#join - local.tee $29 - i32.const 4176 - call $~lib/string/String.__eq - i32.eqz - br_if $folding-inner15 - local.get $0 - call $~lib/rt/pure/__release - local.get $29 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - i32.const 5 - call $~lib/typedarray/Float64Array#constructor - local.tee $1 - i32.const 0 - f64.const 1 - call $~lib/typedarray/Float64Array#__set - local.get $1 + else + local.get $22 + local.get $22 + f64.ne + end + if i32.const 1 - f64.const 2 - call $~lib/typedarray/Float64Array#__set - local.get $1 - i32.const 2 - f64.const 3 - call $~lib/typedarray/Float64Array#__set - local.get $1 - i32.const 3 - f64.const 4 - call $~lib/typedarray/Float64Array#__set - local.get $1 - i32.const 4 - f64.const 5 - call $~lib/typedarray/Float64Array#__set - local.get $1 - call $~lib/typedarray/Float64Array#join - local.tee $0 - i32.const 4176 - call $~lib/string/String.__eq - i32.eqz - br_if $folding-inner14 - local.get $1 - call $~lib/typedarray/Float64Array#join - local.tee $29 - i32.const 4176 - call $~lib/string/String.__eq - i32.eqz - br_if $folding-inner15 - local.get $0 - call $~lib/rt/pure/__release - local.get $29 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - i32.const 0 - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $1 - i32.const 2 - global.set $~argumentsLength - local.get $1 - i32.const 0 - call $~lib/typedarray/Uint8Array.wrap|trampoline - local.tee $29 - i32.load offset=8 - if - i32.const 0 - i32.const 1312 - i32.const 691 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - i32.const 2 - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $0 - local.get $1 - call $~lib/rt/pure/__release - i32.const 2 - global.set $~argumentsLength - local.get $0 - i32.const 2 - call $~lib/typedarray/Uint8Array.wrap|trampoline - local.set $1 - local.get $29 - call $~lib/rt/pure/__release - local.get $1 - i32.load offset=8 - if - i32.const 0 - i32.const 1312 - i32.const 695 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - call $std/typedarray/testArrayWrap<~lib/typedarray/Int8Array,i8> - call $std/typedarray/testArrayWrap<~lib/typedarray/Uint8Array,u8> - call $std/typedarray/testArrayWrap<~lib/typedarray/Uint8ClampedArray,u8> - call $std/typedarray/testArrayWrap<~lib/typedarray/Int16Array,i16> - call $std/typedarray/testArrayWrap<~lib/typedarray/Uint16Array,u16> - call $std/typedarray/testArrayWrap<~lib/typedarray/Int32Array,i32> - call $std/typedarray/testArrayWrap<~lib/typedarray/Uint32Array,u32> - call $std/typedarray/testArrayWrap<~lib/typedarray/Int64Array,i64> - call $std/typedarray/testArrayWrap<~lib/typedarray/Uint64Array,u64> - call $std/typedarray/testArrayWrap<~lib/typedarray/Float32Array,f32> - call $std/typedarray/testArrayWrap<~lib/typedarray/Float64Array,f64> - call $std/typedarray/testTypedArraySet<~lib/typedarray/Int8Array> - call $std/typedarray/testTypedArraySet<~lib/typedarray/Uint8Array> - call $std/typedarray/testTypedArraySet<~lib/typedarray/Uint8ClampedArray> - call $std/typedarray/testTypedArraySet<~lib/typedarray/Int16Array> - call $std/typedarray/testTypedArraySet<~lib/typedarray/Uint16Array> - call $std/typedarray/testTypedArraySet<~lib/typedarray/Int32Array> - call $std/typedarray/testTypedArraySet<~lib/typedarray/Uint32Array> - call $std/typedarray/testTypedArraySet<~lib/typedarray/Int64Array> - call $std/typedarray/testTypedArraySet<~lib/typedarray/Uint64Array> - call $std/typedarray/testTypedArraySet<~lib/typedarray/Float32Array> - call $std/typedarray/testTypedArraySet<~lib/typedarray/Float64Array> - i32.const 10 - call $~lib/typedarray/Uint8ClampedArray#constructor local.set $0 - i32.const 3 - call $~lib/typedarray/Float32Array#constructor - local.tee $29 - i32.const 0 - f32.const 400 - call $~lib/typedarray/Float32Array#__set - local.get $29 - i32.const 1 - f32.const nan:0x400000 - call $~lib/typedarray/Float32Array#__set - local.get $29 - i32.const 2 - f32.const inf - call $~lib/typedarray/Float32Array#__set - i32.const 4 - call $~lib/typedarray/Int64Array#constructor - local.tee $28 - i32.const 0 - i64.const -10 - call $~lib/typedarray/Int64Array#__set - local.get $28 - i32.const 1 - i64.const 100 - call $~lib/typedarray/Int64Array#__set - local.get $28 - i32.const 2 - i64.const 10 - call $~lib/typedarray/Int64Array#__set - local.get $28 - i32.const 3 - i64.const 300 - call $~lib/typedarray/Int64Array#__set - i32.const 2 - call $~lib/typedarray/Int32Array#constructor - local.tee $27 - i32.const 0 - i32.const 300 - call $~lib/typedarray/Int32Array#__set - local.get $27 - i32.const 1 - i32.const -1 - call $~lib/typedarray/Int32Array#__set - i32.const 0 - local.set $1 - local.get $29 - i32.load offset=8 - i32.const 2 - i32.shr_u + br $~lib/typedarray/INCLUDES<~lib/typedarray/Float64Array,f64>|inlined.0 + end + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $while-continue|0 + end + end + end + local.get $0 + i32.const 0 + i32.ne + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1312 + i32.const 608 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + call $~lib/typedarray/Float32Array#constructor + local.tee $0 + i32.const 0 + f32.const nan:0x400000 + call $~lib/typedarray/Float32Array#__set + local.get $0 + f32.const nan:0x400000 + i32.const 0 + call $~lib/typedarray/Float32Array#indexOf + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1312 + i32.const 613 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + local.set $28 + i32.const 0 + local.set $1 + block $~lib/typedarray/INCLUDES<~lib/typedarray/Float32Array,f32>|inlined.0 + local.get $0 + i32.load offset=8 + i32.const 2 + i32.shr_u + local.tee $27 + if (result i32) + i32.const 0 + local.get $27 + i32.ge_s + else + i32.const 1 + end + br_if $~lib/typedarray/INCLUDES<~lib/typedarray/Float32Array,f32>|inlined.0 + local.get $0 + i32.load offset=4 + local.set $26 + loop $while-continue|025 + local.get $28 + local.get $27 + i32.lt_s + if + local.get $26 + local.get $28 + i32.const 2 + i32.shl + i32.add + f32.load + local.tee $21 + f32.const nan:0x400000 + f32.eq + if (result i32) i32.const 1 - i32.add - local.get $0 - i32.load offset=8 - i32.gt_s - br_if $folding-inner16 - local.get $0 - i32.load offset=4 + else + local.get $21 + local.get $21 + f32.ne + end + if i32.const 1 - i32.add - local.set $26 - local.get $29 - i32.load offset=4 - local.set $24 - local.get $29 - i32.load offset=8 - i32.const 2 - i32.shr_u - local.set $23 - loop $for-loop|026 - local.get $1 - local.get $23 - i32.lt_s - if - local.get $1 - local.get $26 - i32.add - local.get $24 - local.get $1 - i32.const 2 - i32.shl - i32.add - f32.load - local.tee $21 - local.get $21 - f32.sub - f32.const 0 - f32.eq - if (result i32) - f32.const 0 - f32.const 255 - local.get $21 - f32.min - f32.max - i32.trunc_f32_u - else - i32.const 0 - end - i32.store8 - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|026 - end - end - local.get $0 - local.get $28 - i32.const 4 - call $~lib/typedarray/Uint8ClampedArray#set<~lib/typedarray/Int64Array> - i32.const 0 local.set $1 - local.get $27 - i32.load offset=8 - i32.const 2 - i32.shr_u - i32.const 8 - i32.add - local.get $0 - i32.load offset=8 - i32.gt_s - br_if $folding-inner16 - local.get $0 - i32.load offset=4 - i32.const 8 - i32.add - local.set $26 - local.get $27 - i32.load offset=4 - local.set $24 - local.get $27 - i32.load offset=8 - i32.const 2 - i32.shr_u - local.set $23 - loop $for-loop|027 - local.get $1 - local.get $23 - i32.lt_s - if - local.get $1 - local.get $26 - i32.add - local.get $24 - local.get $1 - i32.const 2 - i32.shl - i32.add - i32.load - local.tee $25 - i32.const 31 - i32.shr_s - i32.const -1 - i32.xor - local.get $25 - i32.const 255 - local.get $25 - i32.sub - i32.const 31 - i32.shr_s - i32.or - i32.and - i32.store8 - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|027 - end - end - local.get $0 - i32.const 10 - i32.const 0 - i32.const 21 - i32.const 8352 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $24 - call $std/typedarray/valuesEqual<~lib/typedarray/Uint8ClampedArray> - i32.const 4 - call $~lib/typedarray/Uint32Array#constructor - local.tee $1 - i32.const 0 - i32.const 1 - call $~lib/typedarray/Uint32Array#__set - local.get $1 - i32.const 1 - i32.const 300 - call $~lib/typedarray/Uint32Array#__set - local.get $1 - i32.const 2 - i32.const 100 - call $~lib/typedarray/Uint32Array#__set - local.get $1 - i32.const 3 - i32.const -1 - call $~lib/typedarray/Uint32Array#__set - i32.const 4 - call $~lib/typedarray/Int16Array#constructor - local.tee $25 - i32.const 0 - i32.const -10 - call $~lib/typedarray/Int16Array#__set - local.get $25 - i32.const 1 - i32.const 100 - call $~lib/typedarray/Int16Array#__set - local.get $25 - i32.const 2 - i32.const 10 - call $~lib/typedarray/Int16Array#__set - local.get $25 - i32.const 3 - i32.const 300 - call $~lib/typedarray/Int16Array#__set - i32.const 0 - local.set $26 - local.get $1 - i32.load offset=8 - i32.const 2 - i32.shr_u - local.get $0 - i32.load offset=8 - i32.gt_s - br_if $folding-inner16 - local.get $0 - i32.load offset=4 - local.set $23 - local.get $1 - i32.load offset=4 - local.set $19 - local.get $1 - i32.load offset=8 - i32.const 2 - i32.shr_u - local.set $18 - loop $for-loop|028 - local.get $26 - local.get $18 - i32.lt_s - if - local.get $23 - local.get $26 - i32.add - i32.const 255 - local.get $19 - local.get $26 - i32.const 2 - i32.shl - i32.add - i32.load - local.tee $17 - i32.const 255 - local.get $17 - i32.lt_u - select - i32.store8 - local.get $26 - i32.const 1 - i32.add - local.set $26 - br $for-loop|028 - end - end - local.get $0 - local.get $25 - i32.const 5 - call $~lib/typedarray/Uint8ClampedArray#set<~lib/typedarray/Int16Array> - local.get $0 - i32.const 10 - i32.const 0 - i32.const 21 - i32.const 8384 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $26 - call $std/typedarray/valuesEqual<~lib/typedarray/Uint8ClampedArray> - local.get $0 - call $~lib/rt/pure/__release - local.get $29 - call $~lib/rt/pure/__release - local.get $28 - call $~lib/rt/pure/__release - local.get $27 - call $~lib/rt/pure/__release - local.get $24 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $25 - call $~lib/rt/pure/__release - local.get $26 - call $~lib/rt/pure/__release - return + br $~lib/typedarray/INCLUDES<~lib/typedarray/Float32Array,f32>|inlined.0 end - i32.const 0 - i32.const 1312 - i32.const 323 - i32.const 2 - call $~lib/builtins/abort - unreachable + local.get $28 + i32.const 1 + i32.add + local.set $28 + br $while-continue|025 end - i32.const 0 - i32.const 1312 - i32.const 344 - i32.const 2 - call $~lib/builtins/abort - unreachable end + end + local.get $1 + i32.const 0 + i32.ne + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1312 + i32.const 614 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $29 + call $~lib/rt/pure/__release + local.get $0 + call $~lib/rt/pure/__release + call $std/typedarray/testArrayJoinAndToString<~lib/typedarray/Int8Array,i8> + call $std/typedarray/testArrayJoinAndToString<~lib/typedarray/Uint8Array,u8> + call $std/typedarray/testArrayJoinAndToString<~lib/typedarray/Uint8ClampedArray,u8> + call $std/typedarray/testArrayJoinAndToString<~lib/typedarray/Int16Array,i16> + call $std/typedarray/testArrayJoinAndToString<~lib/typedarray/Uint16Array,u16> + call $std/typedarray/testArrayJoinAndToString<~lib/typedarray/Int32Array,i32> + call $std/typedarray/testArrayJoinAndToString<~lib/typedarray/Uint32Array,u32> + call $std/typedarray/testArrayJoinAndToString<~lib/typedarray/Int64Array,i64> + call $std/typedarray/testArrayJoinAndToString<~lib/typedarray/Uint64Array,u64> + call $std/typedarray/testArrayJoinAndToString<~lib/typedarray/Float32Array,f32> + call $std/typedarray/testArrayJoinAndToString<~lib/typedarray/Float64Array,f64> + i32.const 0 + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $1 + i32.const 2 + global.set $~argumentsLength + local.get $1 + i32.const 0 + call $~lib/typedarray/Uint8Array.wrap|trampoline + local.tee $29 + i32.load offset=8 + if + i32.const 0 + i32.const 1312 + i32.const 691 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + i32.const 2 + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $0 + local.get $1 + call $~lib/rt/pure/__release + i32.const 2 + global.set $~argumentsLength + local.get $0 + i32.const 2 + call $~lib/typedarray/Uint8Array.wrap|trampoline + local.set $1 + local.get $29 + call $~lib/rt/pure/__release + local.get $1 + i32.load offset=8 + if i32.const 0 i32.const 1312 - i32.const 365 + i32.const 695 i32.const 2 call $~lib/builtins/abort unreachable end + local.get $0 + call $~lib/rt/pure/__release + local.get $1 + call $~lib/rt/pure/__release + call $std/typedarray/testArrayWrap<~lib/typedarray/Int8Array,i8> + call $std/typedarray/testArrayWrap<~lib/typedarray/Uint8Array,u8> + call $std/typedarray/testArrayWrap<~lib/typedarray/Uint8ClampedArray,u8> + call $std/typedarray/testArrayWrap<~lib/typedarray/Int16Array,i16> + call $std/typedarray/testArrayWrap<~lib/typedarray/Uint16Array,u16> + call $std/typedarray/testArrayWrap<~lib/typedarray/Int32Array,i32> + call $std/typedarray/testArrayWrap<~lib/typedarray/Uint32Array,u32> + call $std/typedarray/testArrayWrap<~lib/typedarray/Int64Array,i64> + call $std/typedarray/testArrayWrap<~lib/typedarray/Uint64Array,u64> + call $std/typedarray/testArrayWrap<~lib/typedarray/Float32Array,f32> + call $std/typedarray/testArrayWrap<~lib/typedarray/Float64Array,f64> + call $std/typedarray/testTypedArraySet<~lib/typedarray/Int8Array> + call $std/typedarray/testTypedArraySet<~lib/typedarray/Uint8Array> + call $std/typedarray/testTypedArraySet<~lib/typedarray/Uint8ClampedArray> + call $std/typedarray/testTypedArraySet<~lib/typedarray/Int16Array> + call $std/typedarray/testTypedArraySet<~lib/typedarray/Uint16Array> + call $std/typedarray/testTypedArraySet<~lib/typedarray/Int32Array> + call $std/typedarray/testTypedArraySet<~lib/typedarray/Uint32Array> + call $std/typedarray/testTypedArraySet<~lib/typedarray/Int64Array> + call $std/typedarray/testTypedArraySet<~lib/typedarray/Uint64Array> + call $std/typedarray/testTypedArraySet<~lib/typedarray/Float32Array> + call $std/typedarray/testTypedArraySet<~lib/typedarray/Float64Array> + i32.const 10 + call $~lib/typedarray/Uint8ClampedArray#constructor + local.set $0 + i32.const 3 + call $~lib/typedarray/Float32Array#constructor + local.tee $29 + i32.const 0 + f32.const 400 + call $~lib/typedarray/Float32Array#__set + local.get $29 + i32.const 1 + f32.const nan:0x400000 + call $~lib/typedarray/Float32Array#__set + local.get $29 + i32.const 2 + f32.const inf + call $~lib/typedarray/Float32Array#__set + i32.const 4 + call $~lib/typedarray/Int64Array#constructor + local.tee $28 + i32.const 0 + i64.const -10 + call $~lib/typedarray/Int64Array#__set + local.get $28 + i32.const 1 + i64.const 100 + call $~lib/typedarray/Int64Array#__set + local.get $28 + i32.const 2 + i64.const 10 + call $~lib/typedarray/Int64Array#__set + local.get $28 + i32.const 3 + i64.const 300 + call $~lib/typedarray/Int64Array#__set + i32.const 2 + call $~lib/typedarray/Int32Array#constructor + local.tee $27 + i32.const 0 + i32.const 300 + call $~lib/typedarray/Int32Array#__set + local.get $27 + i32.const 1 + i32.const -1 + call $~lib/typedarray/Int32Array#__set + i32.const 0 + local.set $1 + local.get $29 + i32.load offset=8 + i32.const 2 + i32.shr_u + i32.const 1 + i32.add + local.get $0 + i32.load offset=8 + i32.gt_s + br_if $folding-inner12 + local.get $0 + i32.load offset=4 + i32.const 1 + i32.add + local.set $26 + local.get $29 + i32.load offset=4 + local.set $24 + local.get $29 + i32.load offset=8 + i32.const 2 + i32.shr_u + local.set $23 + loop $for-loop|026 + local.get $1 + local.get $23 + i32.lt_s + if + local.get $1 + local.get $26 + i32.add + local.get $24 + local.get $1 + i32.const 2 + i32.shl + i32.add + f32.load + local.tee $21 + local.get $21 + f32.sub + f32.const 0 + f32.eq + if (result i32) + f32.const 0 + f32.const 255 + local.get $21 + f32.min + f32.max + i32.trunc_f32_u + else + i32.const 0 + end + i32.store8 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|026 + end + end + local.get $0 + local.get $28 + i32.const 4 + call $~lib/typedarray/Uint8ClampedArray#set<~lib/typedarray/Int64Array> + i32.const 0 + local.set $1 + local.get $27 + i32.load offset=8 + i32.const 2 + i32.shr_u + i32.const 8 + i32.add + local.get $0 + i32.load offset=8 + i32.gt_s + br_if $folding-inner12 + local.get $0 + i32.load offset=4 + i32.const 8 + i32.add + local.set $26 + local.get $27 + i32.load offset=4 + local.set $24 + local.get $27 + i32.load offset=8 + i32.const 2 + i32.shr_u + local.set $23 + loop $for-loop|027 + local.get $1 + local.get $23 + i32.lt_s + if + local.get $1 + local.get $26 + i32.add + local.get $24 + local.get $1 + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $25 + i32.const 31 + i32.shr_s + i32.const -1 + i32.xor + local.get $25 + i32.const 255 + local.get $25 + i32.sub + i32.const 31 + i32.shr_s + i32.or + i32.and + i32.store8 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|027 + end + end + local.get $0 + i32.const 10 + i32.const 0 + i32.const 21 + i32.const 8352 + call $~lib/rt/__allocArray + call $~lib/rt/pure/__retain + local.tee $24 + call $std/typedarray/valuesEqual<~lib/typedarray/Uint8ClampedArray> + i32.const 4 + call $~lib/typedarray/Uint32Array#constructor + local.tee $1 + i32.const 0 + i32.const 1 + call $~lib/typedarray/Uint32Array#__set + local.get $1 + i32.const 1 + i32.const 300 + call $~lib/typedarray/Uint32Array#__set + local.get $1 + i32.const 2 + i32.const 100 + call $~lib/typedarray/Uint32Array#__set + local.get $1 + i32.const 3 + i32.const -1 + call $~lib/typedarray/Uint32Array#__set + i32.const 4 + call $~lib/typedarray/Int16Array#constructor + local.tee $25 + i32.const 0 + i32.const -10 + call $~lib/typedarray/Int16Array#__set + local.get $25 + i32.const 1 + i32.const 100 + call $~lib/typedarray/Int16Array#__set + local.get $25 + i32.const 2 + i32.const 10 + call $~lib/typedarray/Int16Array#__set + local.get $25 + i32.const 3 + i32.const 300 + call $~lib/typedarray/Int16Array#__set i32.const 0 - i32.const 1312 - i32.const 366 + local.set $26 + local.get $1 + i32.load offset=8 + i32.const 2 + i32.shr_u + local.get $0 + i32.load offset=8 + i32.gt_s + br_if $folding-inner12 + local.get $0 + i32.load offset=4 + local.set $23 + local.get $1 + i32.load offset=4 + local.set $19 + local.get $1 + i32.load offset=8 i32.const 2 - call $~lib/builtins/abort - unreachable + i32.shr_u + local.set $18 + loop $for-loop|028 + local.get $26 + local.get $18 + i32.lt_s + if + local.get $23 + local.get $26 + i32.add + i32.const 255 + local.get $19 + local.get $26 + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $17 + i32.const 255 + local.get $17 + i32.lt_u + select + i32.store8 + local.get $26 + i32.const 1 + i32.add + local.set $26 + br $for-loop|028 + end + end + local.get $0 + local.get $25 + i32.const 5 + call $~lib/typedarray/Uint8ClampedArray#set<~lib/typedarray/Int16Array> + local.get $0 + i32.const 10 + i32.const 0 + i32.const 21 + i32.const 8384 + call $~lib/rt/__allocArray + call $~lib/rt/pure/__retain + local.tee $26 + call $std/typedarray/valuesEqual<~lib/typedarray/Uint8ClampedArray> + local.get $0 + call $~lib/rt/pure/__release + local.get $29 + call $~lib/rt/pure/__release + local.get $28 + call $~lib/rt/pure/__release + local.get $27 + call $~lib/rt/pure/__release + local.get $24 + call $~lib/rt/pure/__release + local.get $1 + call $~lib/rt/pure/__release + local.get $25 + call $~lib/rt/pure/__release + local.get $26 + call $~lib/rt/pure/__release + return end i32.const 0 i32.const 1312 - i32.const 367 + i32.const 323 i32.const 2 call $~lib/builtins/abort unreachable end i32.const 0 i32.const 1312 - i32.const 415 + i32.const 344 i32.const 2 call $~lib/builtins/abort unreachable end i32.const 0 i32.const 1312 - i32.const 417 + i32.const 365 i32.const 2 call $~lib/builtins/abort unreachable end i32.const 0 i32.const 1312 - i32.const 438 + i32.const 366 i32.const 2 call $~lib/builtins/abort unreachable end i32.const 0 i32.const 1312 - i32.const 440 + i32.const 367 i32.const 2 call $~lib/builtins/abort unreachable end i32.const 0 i32.const 1312 - i32.const 461 + i32.const 415 i32.const 2 call $~lib/builtins/abort unreachable end i32.const 0 i32.const 1312 - i32.const 463 + i32.const 417 i32.const 2 call $~lib/builtins/abort unreachable end i32.const 0 i32.const 1312 - i32.const 495 + i32.const 438 i32.const 2 call $~lib/builtins/abort unreachable end i32.const 0 i32.const 1312 - i32.const 629 - i32.const 4 + i32.const 440 + i32.const 2 call $~lib/builtins/abort unreachable end i32.const 0 i32.const 1312 - i32.const 630 - i32.const 4 + i32.const 461 + i32.const 2 call $~lib/builtins/abort unreachable end i32.const 0 i32.const 1312 - i32.const 626 - i32.const 4 + i32.const 463 + i32.const 2 call $~lib/builtins/abort unreachable end i32.const 0 i32.const 1312 - i32.const 627 - i32.const 4 + i32.const 495 + i32.const 2 call $~lib/builtins/abort unreachable end @@ -32085,7 +32466,7 @@ call $~lib/builtins/abort unreachable ) - (func $~start (; 341 ;) + (func $~start (; 352 ;) global.get $~started if return @@ -32095,7 +32476,7 @@ end call $start:std/typedarray ) - (func $~lib/rt/pure/decrement (; 342 ;) (param $0 i32) + (func $~lib/rt/pure/decrement (; 353 ;) (param $0 i32) (local $1 i32) (local $2 i32) local.get $0 @@ -32187,7 +32568,7 @@ i32.store offset=4 end ) - (func $~lib/rt/pure/__visit (; 343 ;) (param $0 i32) + (func $~lib/rt/pure/__visit (; 354 ;) (param $0 i32) local.get $0 i32.const 8396 i32.lt_u diff --git a/tests/compiler/std/typedarray.untouched.wat b/tests/compiler/std/typedarray.untouched.wat index 1860bbffb4..0f15069224 100644 --- a/tests/compiler/std/typedarray.untouched.wat +++ b/tests/compiler/std/typedarray.untouched.wat @@ -32385,66 +32385,35 @@ call $~lib/rt/pure/__retain local.set $1 local.get $0 - local.get $1 - i32.eq - if - i32.const 1 - local.set $2 - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $2 - return - end - local.get $0 - i32.eqz - if (result i32) - i32.const 1 - else - local.get $1 - i32.eqz - end - if - i32.const 0 - local.set $2 - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $2 - return - end - local.get $0 call $~lib/string/String#get:length - local.set $3 - local.get $3 + local.set $2 + local.get $2 local.get $1 call $~lib/string/String#get:length i32.ne if i32.const 0 - local.set $2 + local.set $3 local.get $0 call $~lib/rt/pure/__release local.get $1 call $~lib/rt/pure/__release - local.get $2 + local.get $3 return end local.get $0 i32.const 0 local.get $1 i32.const 0 - local.get $3 + local.get $2 call $~lib/util/string/compareImpl i32.eqz - local.set $2 + local.set $3 local.get $0 call $~lib/rt/pure/__release local.get $1 call $~lib/rt/pure/__release - local.get $2 + local.get $3 ) (func $~lib/typedarray/Int8Array#toString (; 484 ;) (param $0 i32) (result i32) local.get $0 @@ -32456,6 +32425,9 @@ (local $1 i32) (local $2 i32) (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) i32.const 0 i32.const 5 call $~lib/typedarray/Int8Array#constructor @@ -32486,8 +32458,33 @@ i32.const 2384 call $~lib/typedarray/Int8Array#join local.tee $2 + call $~lib/rt/pure/__retain + local.set $4 i32.const 2416 - call $~lib/string/String.__eq + call $~lib/rt/pure/__retain + local.set $3 + local.get $4 + i32.eqz + local.get $3 + i32.eqz + i32.or + if (result i32) + local.get $4 + local.get $3 + i32.eq + else + local.get $4 + local.get $3 + call $~lib/string/String.__eq + end + local.set $5 + local.get $3 + call $~lib/rt/pure/__release + local.get $4 + call $~lib/rt/pure/__release + local.get $5 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -32499,9 +32496,34 @@ end local.get $1 call $~lib/typedarray/Int8Array#toString - local.tee $3 + local.tee $4 + call $~lib/rt/pure/__retain + local.set $3 i32.const 2416 - call $~lib/string/String.__eq + call $~lib/rt/pure/__retain + local.set $5 + local.get $3 + i32.eqz + local.get $5 + i32.eqz + i32.or + if (result i32) + local.get $3 + local.get $5 + i32.eq + else + local.get $3 + local.get $5 + call $~lib/string/String.__eq + end + local.set $6 + local.get $5 + call $~lib/rt/pure/__release + local.get $3 + call $~lib/rt/pure/__release + local.get $6 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -32513,7 +32535,7 @@ end local.get $2 call $~lib/rt/pure/__release - local.get $3 + local.get $4 call $~lib/rt/pure/__release local.get $0 call $~lib/rt/pure/__release @@ -32783,6 +32805,9 @@ (local $1 i32) (local $2 i32) (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) i32.const 0 i32.const 5 call $~lib/typedarray/Uint8Array#constructor @@ -32813,8 +32838,33 @@ i32.const 2384 call $~lib/typedarray/Uint8Array#join local.tee $2 + call $~lib/rt/pure/__retain + local.set $4 i32.const 2416 - call $~lib/string/String.__eq + call $~lib/rt/pure/__retain + local.set $3 + local.get $4 + i32.eqz + local.get $3 + i32.eqz + i32.or + if (result i32) + local.get $4 + local.get $3 + i32.eq + else + local.get $4 + local.get $3 + call $~lib/string/String.__eq + end + local.set $5 + local.get $3 + call $~lib/rt/pure/__release + local.get $4 + call $~lib/rt/pure/__release + local.get $5 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -32826,9 +32876,34 @@ end local.get $1 call $~lib/typedarray/Uint8Array#toString - local.tee $3 + local.tee $4 + call $~lib/rt/pure/__retain + local.set $3 i32.const 2416 - call $~lib/string/String.__eq + call $~lib/rt/pure/__retain + local.set $5 + local.get $3 + i32.eqz + local.get $5 + i32.eqz + i32.or + if (result i32) + local.get $3 + local.get $5 + i32.eq + else + local.get $3 + local.get $5 + call $~lib/string/String.__eq + end + local.set $6 + local.get $5 + call $~lib/rt/pure/__release + local.get $3 + call $~lib/rt/pure/__release + local.get $6 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -32840,7 +32915,7 @@ end local.get $2 call $~lib/rt/pure/__release - local.get $3 + local.get $4 call $~lib/rt/pure/__release local.get $0 call $~lib/rt/pure/__release @@ -32873,6 +32948,9 @@ (local $1 i32) (local $2 i32) (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) i32.const 0 i32.const 5 call $~lib/typedarray/Uint8ClampedArray#constructor @@ -32903,8 +32981,33 @@ i32.const 2384 call $~lib/typedarray/Uint8ClampedArray#join local.tee $2 + call $~lib/rt/pure/__retain + local.set $4 i32.const 2416 - call $~lib/string/String.__eq + call $~lib/rt/pure/__retain + local.set $3 + local.get $4 + i32.eqz + local.get $3 + i32.eqz + i32.or + if (result i32) + local.get $4 + local.get $3 + i32.eq + else + local.get $4 + local.get $3 + call $~lib/string/String.__eq + end + local.set $5 + local.get $3 + call $~lib/rt/pure/__release + local.get $4 + call $~lib/rt/pure/__release + local.get $5 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -32916,9 +33019,34 @@ end local.get $1 call $~lib/typedarray/Uint8ClampedArray#toString - local.tee $3 + local.tee $4 + call $~lib/rt/pure/__retain + local.set $3 i32.const 2416 - call $~lib/string/String.__eq + call $~lib/rt/pure/__retain + local.set $5 + local.get $3 + i32.eqz + local.get $5 + i32.eqz + i32.or + if (result i32) + local.get $3 + local.get $5 + i32.eq + else + local.get $3 + local.get $5 + call $~lib/string/String.__eq + end + local.set $6 + local.get $5 + call $~lib/rt/pure/__release + local.get $3 + call $~lib/rt/pure/__release + local.get $6 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -32930,7 +33058,7 @@ end local.get $2 call $~lib/rt/pure/__release - local.get $3 + local.get $4 call $~lib/rt/pure/__release local.get $0 call $~lib/rt/pure/__release @@ -33200,6 +33328,9 @@ (local $1 i32) (local $2 i32) (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) i32.const 0 i32.const 5 call $~lib/typedarray/Int16Array#constructor @@ -33230,8 +33361,33 @@ i32.const 2384 call $~lib/typedarray/Int16Array#join local.tee $2 + call $~lib/rt/pure/__retain + local.set $4 i32.const 2416 - call $~lib/string/String.__eq + call $~lib/rt/pure/__retain + local.set $3 + local.get $4 + i32.eqz + local.get $3 + i32.eqz + i32.or + if (result i32) + local.get $4 + local.get $3 + i32.eq + else + local.get $4 + local.get $3 + call $~lib/string/String.__eq + end + local.set $5 + local.get $3 + call $~lib/rt/pure/__release + local.get $4 + call $~lib/rt/pure/__release + local.get $5 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -33243,9 +33399,34 @@ end local.get $1 call $~lib/typedarray/Int16Array#toString - local.tee $3 + local.tee $4 + call $~lib/rt/pure/__retain + local.set $3 i32.const 2416 - call $~lib/string/String.__eq + call $~lib/rt/pure/__retain + local.set $5 + local.get $3 + i32.eqz + local.get $5 + i32.eqz + i32.or + if (result i32) + local.get $3 + local.get $5 + i32.eq + else + local.get $3 + local.get $5 + call $~lib/string/String.__eq + end + local.set $6 + local.get $5 + call $~lib/rt/pure/__release + local.get $3 + call $~lib/rt/pure/__release + local.get $6 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -33257,7 +33438,7 @@ end local.get $2 call $~lib/rt/pure/__release - local.get $3 + local.get $4 call $~lib/rt/pure/__release local.get $0 call $~lib/rt/pure/__release @@ -33493,6 +33674,9 @@ (local $1 i32) (local $2 i32) (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) i32.const 0 i32.const 5 call $~lib/typedarray/Uint16Array#constructor @@ -33523,8 +33707,33 @@ i32.const 2384 call $~lib/typedarray/Uint16Array#join local.tee $2 + call $~lib/rt/pure/__retain + local.set $4 i32.const 2416 - call $~lib/string/String.__eq + call $~lib/rt/pure/__retain + local.set $3 + local.get $4 + i32.eqz + local.get $3 + i32.eqz + i32.or + if (result i32) + local.get $4 + local.get $3 + i32.eq + else + local.get $4 + local.get $3 + call $~lib/string/String.__eq + end + local.set $5 + local.get $3 + call $~lib/rt/pure/__release + local.get $4 + call $~lib/rt/pure/__release + local.get $5 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -33536,9 +33745,34 @@ end local.get $1 call $~lib/typedarray/Uint16Array#toString - local.tee $3 + local.tee $4 + call $~lib/rt/pure/__retain + local.set $3 i32.const 2416 - call $~lib/string/String.__eq + call $~lib/rt/pure/__retain + local.set $5 + local.get $3 + i32.eqz + local.get $5 + i32.eqz + i32.or + if (result i32) + local.get $3 + local.get $5 + i32.eq + else + local.get $3 + local.get $5 + call $~lib/string/String.__eq + end + local.set $6 + local.get $5 + call $~lib/rt/pure/__release + local.get $3 + call $~lib/rt/pure/__release + local.get $6 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -33550,7 +33784,7 @@ end local.get $2 call $~lib/rt/pure/__release - local.get $3 + local.get $4 call $~lib/rt/pure/__release local.get $0 call $~lib/rt/pure/__release @@ -33796,6 +34030,9 @@ (local $1 i32) (local $2 i32) (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) i32.const 0 i32.const 5 call $~lib/typedarray/Int32Array#constructor @@ -33826,8 +34063,33 @@ i32.const 2384 call $~lib/typedarray/Int32Array#join local.tee $2 + call $~lib/rt/pure/__retain + local.set $4 i32.const 2416 - call $~lib/string/String.__eq + call $~lib/rt/pure/__retain + local.set $3 + local.get $4 + i32.eqz + local.get $3 + i32.eqz + i32.or + if (result i32) + local.get $4 + local.get $3 + i32.eq + else + local.get $4 + local.get $3 + call $~lib/string/String.__eq + end + local.set $5 + local.get $3 + call $~lib/rt/pure/__release + local.get $4 + call $~lib/rt/pure/__release + local.get $5 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -33839,9 +34101,34 @@ end local.get $1 call $~lib/typedarray/Int32Array#toString - local.tee $3 + local.tee $4 + call $~lib/rt/pure/__retain + local.set $3 i32.const 2416 - call $~lib/string/String.__eq + call $~lib/rt/pure/__retain + local.set $5 + local.get $3 + i32.eqz + local.get $5 + i32.eqz + i32.or + if (result i32) + local.get $3 + local.get $5 + i32.eq + else + local.get $3 + local.get $5 + call $~lib/string/String.__eq + end + local.set $6 + local.get $5 + call $~lib/rt/pure/__release + local.get $3 + call $~lib/rt/pure/__release + local.get $6 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -33853,7 +34140,7 @@ end local.get $2 call $~lib/rt/pure/__release - local.get $3 + local.get $4 call $~lib/rt/pure/__release local.get $0 call $~lib/rt/pure/__release @@ -34079,6 +34366,9 @@ (local $1 i32) (local $2 i32) (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) i32.const 0 i32.const 5 call $~lib/typedarray/Uint32Array#constructor @@ -34109,8 +34399,33 @@ i32.const 2384 call $~lib/typedarray/Uint32Array#join local.tee $2 + call $~lib/rt/pure/__retain + local.set $4 i32.const 2416 - call $~lib/string/String.__eq + call $~lib/rt/pure/__retain + local.set $3 + local.get $4 + i32.eqz + local.get $3 + i32.eqz + i32.or + if (result i32) + local.get $4 + local.get $3 + i32.eq + else + local.get $4 + local.get $3 + call $~lib/string/String.__eq + end + local.set $5 + local.get $3 + call $~lib/rt/pure/__release + local.get $4 + call $~lib/rt/pure/__release + local.get $5 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -34122,9 +34437,34 @@ end local.get $1 call $~lib/typedarray/Uint32Array#toString - local.tee $3 + local.tee $4 + call $~lib/rt/pure/__retain + local.set $3 i32.const 2416 - call $~lib/string/String.__eq + call $~lib/rt/pure/__retain + local.set $5 + local.get $3 + i32.eqz + local.get $5 + i32.eqz + i32.or + if (result i32) + local.get $3 + local.get $5 + i32.eq + else + local.get $3 + local.get $5 + call $~lib/string/String.__eq + end + local.set $6 + local.get $5 + call $~lib/rt/pure/__release + local.get $3 + call $~lib/rt/pure/__release + local.get $6 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -34136,7 +34476,7 @@ end local.get $2 call $~lib/rt/pure/__release - local.get $3 + local.get $4 call $~lib/rt/pure/__release local.get $0 call $~lib/rt/pure/__release @@ -34679,6 +35019,9 @@ (local $1 i32) (local $2 i32) (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) i32.const 0 i32.const 5 call $~lib/typedarray/Int64Array#constructor @@ -34709,8 +35052,33 @@ i32.const 2384 call $~lib/typedarray/Int64Array#join local.tee $2 + call $~lib/rt/pure/__retain + local.set $4 i32.const 2416 - call $~lib/string/String.__eq + call $~lib/rt/pure/__retain + local.set $3 + local.get $4 + i32.eqz + local.get $3 + i32.eqz + i32.or + if (result i32) + local.get $4 + local.get $3 + i32.eq + else + local.get $4 + local.get $3 + call $~lib/string/String.__eq + end + local.set $5 + local.get $3 + call $~lib/rt/pure/__release + local.get $4 + call $~lib/rt/pure/__release + local.get $5 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -34722,9 +35090,34 @@ end local.get $1 call $~lib/typedarray/Int64Array#toString - local.tee $3 + local.tee $4 + call $~lib/rt/pure/__retain + local.set $3 i32.const 2416 - call $~lib/string/String.__eq + call $~lib/rt/pure/__retain + local.set $5 + local.get $3 + i32.eqz + local.get $5 + i32.eqz + i32.or + if (result i32) + local.get $3 + local.get $5 + i32.eq + else + local.get $3 + local.get $5 + call $~lib/string/String.__eq + end + local.set $6 + local.get $5 + call $~lib/rt/pure/__release + local.get $3 + call $~lib/rt/pure/__release + local.get $6 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -34736,7 +35129,7 @@ end local.get $2 call $~lib/rt/pure/__release - local.get $3 + local.get $4 call $~lib/rt/pure/__release local.get $0 call $~lib/rt/pure/__release @@ -35054,6 +35447,9 @@ (local $1 i32) (local $2 i32) (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) i32.const 0 i32.const 5 call $~lib/typedarray/Uint64Array#constructor @@ -35084,8 +35480,33 @@ i32.const 2384 call $~lib/typedarray/Uint64Array#join local.tee $2 + call $~lib/rt/pure/__retain + local.set $4 i32.const 2416 - call $~lib/string/String.__eq + call $~lib/rt/pure/__retain + local.set $3 + local.get $4 + i32.eqz + local.get $3 + i32.eqz + i32.or + if (result i32) + local.get $4 + local.get $3 + i32.eq + else + local.get $4 + local.get $3 + call $~lib/string/String.__eq + end + local.set $5 + local.get $3 + call $~lib/rt/pure/__release + local.get $4 + call $~lib/rt/pure/__release + local.get $5 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -35097,9 +35518,34 @@ end local.get $1 call $~lib/typedarray/Uint64Array#toString - local.tee $3 + local.tee $4 + call $~lib/rt/pure/__retain + local.set $3 i32.const 2416 - call $~lib/string/String.__eq + call $~lib/rt/pure/__retain + local.set $5 + local.get $3 + i32.eqz + local.get $5 + i32.eqz + i32.or + if (result i32) + local.get $3 + local.get $5 + i32.eq + else + local.get $3 + local.get $5 + call $~lib/string/String.__eq + end + local.set $6 + local.get $5 + call $~lib/rt/pure/__release + local.get $3 + call $~lib/rt/pure/__release + local.get $6 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -35111,7 +35557,7 @@ end local.get $2 call $~lib/rt/pure/__release - local.get $3 + local.get $4 call $~lib/rt/pure/__release local.get $0 call $~lib/rt/pure/__release @@ -36675,6 +37121,9 @@ (local $1 i32) (local $2 i32) (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) i32.const 0 i32.const 5 call $~lib/typedarray/Float32Array#constructor @@ -36705,8 +37154,33 @@ i32.const 2384 call $~lib/typedarray/Float32Array#join local.tee $2 + call $~lib/rt/pure/__retain + local.set $4 i32.const 3584 - call $~lib/string/String.__eq + call $~lib/rt/pure/__retain + local.set $3 + local.get $4 + i32.eqz + local.get $3 + i32.eqz + i32.or + if (result i32) + local.get $4 + local.get $3 + i32.eq + else + local.get $4 + local.get $3 + call $~lib/string/String.__eq + end + local.set $5 + local.get $3 + call $~lib/rt/pure/__release + local.get $4 + call $~lib/rt/pure/__release + local.get $5 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -36718,9 +37192,34 @@ end local.get $1 call $~lib/typedarray/Float32Array#toString - local.tee $3 + local.tee $4 + call $~lib/rt/pure/__retain + local.set $3 i32.const 3584 - call $~lib/string/String.__eq + call $~lib/rt/pure/__retain + local.set $5 + local.get $3 + i32.eqz + local.get $5 + i32.eqz + i32.or + if (result i32) + local.get $3 + local.get $5 + i32.eq + else + local.get $3 + local.get $5 + call $~lib/string/String.__eq + end + local.set $6 + local.get $5 + call $~lib/rt/pure/__release + local.get $3 + call $~lib/rt/pure/__release + local.get $6 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -36732,7 +37231,7 @@ end local.get $2 call $~lib/rt/pure/__release - local.get $3 + local.get $4 call $~lib/rt/pure/__release local.get $0 call $~lib/rt/pure/__release @@ -36908,6 +37407,9 @@ (local $1 i32) (local $2 i32) (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) i32.const 0 i32.const 5 call $~lib/typedarray/Float64Array#constructor @@ -36938,8 +37440,33 @@ i32.const 2384 call $~lib/typedarray/Float64Array#join local.tee $2 + call $~lib/rt/pure/__retain + local.set $4 i32.const 3584 - call $~lib/string/String.__eq + call $~lib/rt/pure/__retain + local.set $3 + local.get $4 + i32.eqz + local.get $3 + i32.eqz + i32.or + if (result i32) + local.get $4 + local.get $3 + i32.eq + else + local.get $4 + local.get $3 + call $~lib/string/String.__eq + end + local.set $5 + local.get $3 + call $~lib/rt/pure/__release + local.get $4 + call $~lib/rt/pure/__release + local.get $5 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -36951,9 +37478,34 @@ end local.get $1 call $~lib/typedarray/Float64Array#toString - local.tee $3 + local.tee $4 + call $~lib/rt/pure/__retain + local.set $3 i32.const 3584 - call $~lib/string/String.__eq + call $~lib/rt/pure/__retain + local.set $5 + local.get $3 + i32.eqz + local.get $5 + i32.eqz + i32.or + if (result i32) + local.get $3 + local.get $5 + i32.eq + else + local.get $3 + local.get $5 + call $~lib/string/String.__eq + end + local.set $6 + local.get $5 + call $~lib/rt/pure/__release + local.get $3 + call $~lib/rt/pure/__release + local.get $6 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -36965,7 +37517,7 @@ end local.get $2 call $~lib/rt/pure/__release - local.get $3 + local.get $4 call $~lib/rt/pure/__release local.get $0 call $~lib/rt/pure/__release diff --git a/tests/compiler/typeof.optimized.wat b/tests/compiler/typeof.optimized.wat index 1093e5a696..2cfc580b35 100644 --- a/tests/compiler/typeof.optimized.wat +++ b/tests/compiler/typeof.optimized.wat @@ -107,34 +107,20 @@ (func $~lib/string/String.__eq (; 3 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) local.get $0 + call $~lib/string/String#get:length + local.tee $2 local.get $1 - i32.eq + call $~lib/string/String#get:length + i32.ne if - i32.const 1 - return - end - block $folding-inner0 - local.get $1 - i32.eqz - i32.const 1 - local.get $0 - select - br_if $folding-inner0 - local.get $0 - call $~lib/string/String#get:length - local.tee $2 - local.get $1 - call $~lib/string/String#get:length - i32.ne - br_if $folding-inner0 - local.get $0 - local.get $1 - local.get $2 - call $~lib/util/string/compareImpl - i32.eqz + i32.const 0 return end - i32.const 0 + local.get $0 + local.get $1 + local.get $2 + call $~lib/util/string/compareImpl + i32.eqz ) (func $start:typeof (; 4 ;) (local $0 i32) diff --git a/tests/compiler/typeof.untouched.wat b/tests/compiler/typeof.untouched.wat index 3b9eba59b1..5704abc8b4 100644 --- a/tests/compiler/typeof.untouched.wat +++ b/tests/compiler/typeof.untouched.wat @@ -36,10 +36,7 @@ (func $~lib/rt/stub/__retain (; 1 ;) (param $0 i32) (result i32) local.get $0 ) - (func $~lib/rt/stub/__release (; 2 ;) (param $0 i32) - nop - ) - (func $~lib/string/String#get:length (; 3 ;) (param $0 i32) (result i32) + (func $~lib/string/String#get:length (; 2 ;) (param $0 i32) (result i32) local.get $0 i32.const 16 i32.sub @@ -47,6 +44,9 @@ i32.const 1 i32.shr_u ) + (func $~lib/rt/stub/__release (; 3 ;) (param $0 i32) + nop + ) (func $~lib/util/string/compareImpl (; 4 ;) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (result i32) (local $5 i32) (local $6 i32) @@ -179,66 +179,35 @@ call $~lib/rt/stub/__retain local.set $1 local.get $0 - local.get $1 - i32.eq - if - i32.const 1 - local.set $2 - local.get $0 - call $~lib/rt/stub/__release - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - return - end - local.get $0 - i32.eqz - if (result i32) - i32.const 1 - else - local.get $1 - i32.eqz - end - if - i32.const 0 - local.set $2 - local.get $0 - call $~lib/rt/stub/__release - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - return - end - local.get $0 call $~lib/string/String#get:length - local.set $3 - local.get $3 + local.set $2 + local.get $2 local.get $1 call $~lib/string/String#get:length i32.ne if i32.const 0 - local.set $2 + local.set $3 local.get $0 call $~lib/rt/stub/__release local.get $1 call $~lib/rt/stub/__release - local.get $2 + local.get $3 return end local.get $0 i32.const 0 local.get $1 i32.const 0 - local.get $3 + local.get $2 call $~lib/util/string/compareImpl i32.eqz - local.set $2 + local.set $3 local.get $0 call $~lib/rt/stub/__release local.get $1 call $~lib/rt/stub/__release - local.get $2 + local.get $3 ) (func $start:typeof~anonymous|0 (; 6 ;) nop @@ -363,9 +332,37 @@ local.get $0 ) (func $start:typeof (; 10 ;) + (local $0 i32) + (local $1 i32) + (local $2 i32) i32.const 32 + call $~lib/rt/stub/__retain + local.set $1 i32.const 32 - call $~lib/string/String.__eq + call $~lib/rt/stub/__retain + local.set $0 + local.get $1 + i32.eqz + local.get $0 + i32.eqz + i32.or + if (result i32) + local.get $1 + local.get $0 + i32.eq + else + local.get $1 + local.get $0 + call $~lib/string/String.__eq + end + local.set $2 + local.get $0 + call $~lib/rt/stub/__release + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -376,8 +373,33 @@ unreachable end i32.const 112 + call $~lib/rt/stub/__retain + local.set $0 i32.const 112 - call $~lib/string/String.__eq + call $~lib/rt/stub/__retain + local.set $2 + local.get $0 + i32.eqz + local.get $2 + i32.eqz + i32.or + if (result i32) + local.get $0 + local.get $2 + i32.eq + else + local.get $0 + local.get $2 + call $~lib/string/String.__eq + end + local.set $1 + local.get $2 + call $~lib/rt/stub/__release + local.get $0 + call $~lib/rt/stub/__release + local.get $1 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -388,8 +410,33 @@ unreachable end i32.const 112 + call $~lib/rt/stub/__retain + local.set $2 i32.const 112 - call $~lib/string/String.__eq + call $~lib/rt/stub/__retain + local.set $1 + local.get $2 + i32.eqz + local.get $1 + i32.eqz + i32.or + if (result i32) + local.get $2 + local.get $1 + i32.eq + else + local.get $2 + local.get $1 + call $~lib/string/String.__eq + end + local.set $0 + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release + local.get $0 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -400,8 +447,33 @@ unreachable end i32.const 112 + call $~lib/rt/stub/__retain + local.set $1 i32.const 112 - call $~lib/string/String.__eq + call $~lib/rt/stub/__retain + local.set $0 + local.get $1 + i32.eqz + local.get $0 + i32.eqz + i32.or + if (result i32) + local.get $1 + local.get $0 + i32.eq + else + local.get $1 + local.get $0 + call $~lib/string/String.__eq + end + local.set $2 + local.get $0 + call $~lib/rt/stub/__release + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -412,8 +484,33 @@ unreachable end i32.const 144 + call $~lib/rt/stub/__retain + local.set $0 i32.const 144 - call $~lib/string/String.__eq + call $~lib/rt/stub/__retain + local.set $2 + local.get $0 + i32.eqz + local.get $2 + i32.eqz + i32.or + if (result i32) + local.get $0 + local.get $2 + i32.eq + else + local.get $0 + local.get $2 + call $~lib/string/String.__eq + end + local.set $1 + local.get $2 + call $~lib/rt/stub/__release + local.get $0 + call $~lib/rt/stub/__release + local.get $1 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -424,8 +521,33 @@ unreachable end i32.const 144 + call $~lib/rt/stub/__retain + local.set $2 i32.const 144 - call $~lib/string/String.__eq + call $~lib/rt/stub/__retain + local.set $1 + local.get $2 + i32.eqz + local.get $1 + i32.eqz + i32.or + if (result i32) + local.get $2 + local.get $1 + i32.eq + else + local.get $2 + local.get $1 + call $~lib/string/String.__eq + end + local.set $0 + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release + local.get $0 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -436,8 +558,33 @@ unreachable end i32.const 176 + call $~lib/rt/stub/__retain + local.set $1 i32.const 176 - call $~lib/string/String.__eq + call $~lib/rt/stub/__retain + local.set $0 + local.get $1 + i32.eqz + local.get $0 + i32.eqz + i32.or + if (result i32) + local.get $1 + local.get $0 + i32.eq + else + local.get $1 + local.get $0 + call $~lib/string/String.__eq + end + local.set $2 + local.get $0 + call $~lib/rt/stub/__release + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -448,8 +595,33 @@ unreachable end i32.const 112 + call $~lib/rt/stub/__retain + local.set $0 i32.const 112 - call $~lib/string/String.__eq + call $~lib/rt/stub/__retain + local.set $2 + local.get $0 + i32.eqz + local.get $2 + i32.eqz + i32.or + if (result i32) + local.get $0 + local.get $2 + i32.eq + else + local.get $0 + local.get $2 + call $~lib/string/String.__eq + end + local.set $1 + local.get $2 + call $~lib/rt/stub/__release + local.get $0 + call $~lib/rt/stub/__release + local.get $1 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -460,8 +632,33 @@ unreachable end i32.const 32 + call $~lib/rt/stub/__retain + local.set $2 i32.const 32 - call $~lib/string/String.__eq + call $~lib/rt/stub/__retain + local.set $1 + local.get $2 + i32.eqz + local.get $1 + i32.eqz + i32.or + if (result i32) + local.get $2 + local.get $1 + i32.eq + else + local.get $2 + local.get $1 + call $~lib/string/String.__eq + end + local.set $0 + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release + local.get $0 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -472,8 +669,33 @@ unreachable end i32.const 32 + call $~lib/rt/stub/__retain + local.set $1 i32.const 32 - call $~lib/string/String.__eq + call $~lib/rt/stub/__retain + local.set $0 + local.get $1 + i32.eqz + local.get $0 + i32.eqz + i32.or + if (result i32) + local.get $1 + local.get $0 + i32.eq + else + local.get $1 + local.get $0 + call $~lib/string/String.__eq + end + local.set $2 + local.get $0 + call $~lib/rt/stub/__release + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -484,8 +706,33 @@ unreachable end i32.const 32 + call $~lib/rt/stub/__retain + local.set $0 i32.const 32 - call $~lib/string/String.__eq + call $~lib/rt/stub/__retain + local.set $2 + local.get $0 + i32.eqz + local.get $2 + i32.eqz + i32.or + if (result i32) + local.get $0 + local.get $2 + i32.eq + else + local.get $0 + local.get $2 + call $~lib/string/String.__eq + end + local.set $1 + local.get $2 + call $~lib/rt/stub/__release + local.get $0 + call $~lib/rt/stub/__release + local.get $1 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -496,8 +743,33 @@ unreachable end i32.const 240 + call $~lib/rt/stub/__retain + local.set $2 i32.const 240 - call $~lib/string/String.__eq + call $~lib/rt/stub/__retain + local.set $1 + local.get $2 + i32.eqz + local.get $1 + i32.eqz + i32.or + if (result i32) + local.get $2 + local.get $1 + i32.eq + else + local.get $2 + local.get $1 + call $~lib/string/String.__eq + end + local.set $0 + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release + local.get $0 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -508,8 +780,33 @@ unreachable end i32.const 176 + call $~lib/rt/stub/__retain + local.set $1 i32.const 176 - call $~lib/string/String.__eq + call $~lib/rt/stub/__retain + local.set $0 + local.get $1 + i32.eqz + local.get $0 + i32.eqz + i32.or + if (result i32) + local.get $1 + local.get $0 + i32.eq + else + local.get $1 + local.get $0 + call $~lib/string/String.__eq + end + local.set $2 + local.get $0 + call $~lib/rt/stub/__release + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -520,8 +817,33 @@ unreachable end i32.const 32 + call $~lib/rt/stub/__retain + local.set $0 i32.const 32 - call $~lib/string/String.__eq + call $~lib/rt/stub/__retain + local.set $2 + local.get $0 + i32.eqz + local.get $2 + i32.eqz + i32.or + if (result i32) + local.get $0 + local.get $2 + i32.eq + else + local.get $0 + local.get $2 + call $~lib/string/String.__eq + end + local.set $1 + local.get $2 + call $~lib/rt/stub/__release + local.get $0 + call $~lib/rt/stub/__release + local.get $1 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -532,8 +854,33 @@ unreachable end i32.const 32 + call $~lib/rt/stub/__retain + local.set $2 i32.const 32 - call $~lib/string/String.__eq + call $~lib/rt/stub/__retain + local.set $1 + local.get $2 + i32.eqz + local.get $1 + i32.eqz + i32.or + if (result i32) + local.get $2 + local.get $1 + i32.eq + else + local.get $2 + local.get $1 + call $~lib/string/String.__eq + end + local.set $0 + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release + local.get $0 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -544,8 +891,33 @@ unreachable end i32.const 32 + call $~lib/rt/stub/__retain + local.set $1 i32.const 32 - call $~lib/string/String.__eq + call $~lib/rt/stub/__retain + local.set $0 + local.get $1 + i32.eqz + local.get $0 + i32.eqz + i32.or + if (result i32) + local.get $1 + local.get $0 + i32.eq + else + local.get $1 + local.get $0 + call $~lib/string/String.__eq + end + local.set $2 + local.get $0 + call $~lib/rt/stub/__release + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -556,8 +928,33 @@ unreachable end i32.const 32 + call $~lib/rt/stub/__retain + local.set $0 i32.const 32 - call $~lib/string/String.__eq + call $~lib/rt/stub/__retain + local.set $2 + local.get $0 + i32.eqz + local.get $2 + i32.eqz + i32.or + if (result i32) + local.get $0 + local.get $2 + i32.eq + else + local.get $0 + local.get $2 + call $~lib/string/String.__eq + end + local.set $1 + local.get $2 + call $~lib/rt/stub/__release + local.get $0 + call $~lib/rt/stub/__release + local.get $1 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -568,8 +965,33 @@ unreachable end i32.const 240 + call $~lib/rt/stub/__retain + local.set $2 i32.const 240 - call $~lib/string/String.__eq + call $~lib/rt/stub/__retain + local.set $1 + local.get $2 + i32.eqz + local.get $1 + i32.eqz + i32.or + if (result i32) + local.get $2 + local.get $1 + i32.eq + else + local.get $2 + local.get $1 + call $~lib/string/String.__eq + end + local.set $0 + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release + local.get $0 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -580,8 +1002,33 @@ unreachable end i32.const 144 + call $~lib/rt/stub/__retain + local.set $1 i32.const 144 - call $~lib/string/String.__eq + call $~lib/rt/stub/__retain + local.set $0 + local.get $1 + i32.eqz + local.get $0 + i32.eqz + i32.or + if (result i32) + local.get $1 + local.get $0 + i32.eq + else + local.get $1 + local.get $0 + call $~lib/string/String.__eq + end + local.set $2 + local.get $0 + call $~lib/rt/stub/__release + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -605,8 +1052,33 @@ call $typeof/SomeClass#constructor global.set $typeof/c i32.const 112 + call $~lib/rt/stub/__retain + local.set $0 i32.const 112 - call $~lib/string/String.__eq + call $~lib/rt/stub/__retain + local.set $2 + local.get $0 + i32.eqz + local.get $2 + i32.eqz + i32.or + if (result i32) + local.get $0 + local.get $2 + i32.eq + else + local.get $0 + local.get $2 + call $~lib/string/String.__eq + end + local.set $1 + local.get $2 + call $~lib/rt/stub/__release + local.get $0 + call $~lib/rt/stub/__release + local.get $1 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -617,8 +1089,33 @@ unreachable end i32.const 144 + call $~lib/rt/stub/__retain + local.set $2 i32.const 144 - call $~lib/string/String.__eq + call $~lib/rt/stub/__retain + local.set $1 + local.get $2 + i32.eqz + local.get $1 + i32.eqz + i32.or + if (result i32) + local.get $2 + local.get $1 + i32.eq + else + local.get $2 + local.get $1 + call $~lib/string/String.__eq + end + local.set $0 + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release + local.get $0 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -629,8 +1126,33 @@ unreachable end i32.const 272 + call $~lib/rt/stub/__retain + local.set $1 i32.const 272 - call $~lib/string/String.__eq + call $~lib/rt/stub/__retain + local.set $0 + local.get $1 + i32.eqz + local.get $0 + i32.eqz + i32.or + if (result i32) + local.get $1 + local.get $0 + i32.eq + else + local.get $1 + local.get $0 + call $~lib/string/String.__eq + end + local.set $2 + local.get $0 + call $~lib/rt/stub/__release + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -641,8 +1163,33 @@ unreachable end i32.const 272 + call $~lib/rt/stub/__retain + local.set $0 i32.const 272 - call $~lib/string/String.__eq + call $~lib/rt/stub/__retain + local.set $2 + local.get $0 + i32.eqz + local.get $2 + i32.eqz + i32.or + if (result i32) + local.get $0 + local.get $2 + i32.eq + else + local.get $0 + local.get $2 + call $~lib/string/String.__eq + end + local.set $1 + local.get $2 + call $~lib/rt/stub/__release + local.get $0 + call $~lib/rt/stub/__release + local.get $1 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -653,8 +1200,33 @@ unreachable end i32.const 272 + call $~lib/rt/stub/__retain + local.set $2 i32.const 272 - call $~lib/string/String.__eq + call $~lib/rt/stub/__retain + local.set $1 + local.get $2 + i32.eqz + local.get $1 + i32.eqz + i32.or + if (result i32) + local.get $2 + local.get $1 + i32.eq + else + local.get $2 + local.get $1 + call $~lib/string/String.__eq + end + local.set $0 + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release + local.get $0 + i32.const 0 + i32.ne i32.eqz if i32.const 0 From dd7128b7fea6fed1d17b0b4f68953d650084c9a5 Mon Sep 17 00:00:00 2001 From: dcode Date: Mon, 16 Mar 2020 15:55:18 +0100 Subject: [PATCH 7/7] internalize null checking on eq/ne, check possible null --- src/compiler.ts | 114 +- src/module.ts | 2 +- std/assembly/rt/pure.ts | 10 +- std/assembly/rt/tlsf.ts | 4 +- std/assembly/string.ts | 133 +- std/assembly/symbol.ts | 20 +- tests/compiler/builtins.optimized.wat | 42 +- tests/compiler/builtins.untouched.wat | 549 +- tests/compiler/empty.optimized.wat | 177 +- tests/compiler/empty.ts | 10 + tests/compiler/empty.untouched.wat | 323 +- .../features/reference-types.optimized.wat | 14 +- tests/compiler/features/reference-types.ts | 4 +- .../features/reference-types.untouched.wat | 24 +- tests/compiler/instanceof.optimized.wat | 94 +- tests/compiler/instanceof.ts | 4 +- tests/compiler/instanceof.untouched.wat | 174 +- tests/compiler/new.ts | 6 +- tests/compiler/number.optimized.wat | 133 +- tests/compiler/number.untouched.wat | 325 +- tests/compiler/resolve-binary.optimized.wat | 415 +- tests/compiler/resolve-binary.untouched.wat | 1569 +-- .../resolve-elementaccess.optimized.wat | 74 +- .../resolve-elementaccess.untouched.wat | 190 +- .../resolve-function-expression.optimized.wat | 35 +- .../resolve-function-expression.untouched.wat | 39 +- tests/compiler/resolve-nested.ts | 28 +- .../resolve-propertyaccess.optimized.wat | 122 +- .../resolve-propertyaccess.untouched.wat | 286 +- tests/compiler/resolve-ternary.optimized.wat | 48 +- tests/compiler/resolve-ternary.untouched.wat | 70 +- tests/compiler/resolve-unary.optimized.wat | 126 +- tests/compiler/resolve-unary.untouched.wat | 519 +- .../retain-release-sanity.optimized.wat | 6 +- .../retain-release-sanity.untouched.wat | 6 +- tests/compiler/retain-release.ts | 2 +- tests/compiler/std/array.optimized.wat | 667 +- tests/compiler/std/array.untouched.wat | 1158 +- .../compiler/std/object-literal.optimized.wat | 35 +- .../compiler/std/object-literal.untouched.wat | 39 +- tests/compiler/std/object.optimized.wat | 60 +- tests/compiler/std/object.untouched.wat | 77 +- .../std/string-casemapping.optimized.wat | 1112 +- .../std/string-casemapping.untouched.wat | 2260 +--- .../std/string-encoding.optimized.wat | 441 +- .../std/string-encoding.untouched.wat | 710 +- tests/compiler/std/string.optimized.wat | 4807 +++------ tests/compiler/std/string.ts | 2 +- tests/compiler/std/string.untouched.wat | 8207 ++------------ tests/compiler/std/symbol.optimized.wat | 182 +- tests/compiler/std/symbol.untouched.wat | 314 +- tests/compiler/std/typedarray.optimized.wat | 9391 ++++++++--------- tests/compiler/std/typedarray.untouched.wat | 714 +- tests/compiler/typeof.optimized.wat | 50 +- tests/compiler/typeof.untouched.wat | 680 +- tests/compiler/wasi/abort.untouched.wat | 242 +- tests/compiler/wasi/seed.optimized.wat | 30 +- tests/compiler/wasi/seed.untouched.wat | 247 +- tests/compiler/wasi/trace.untouched.wat | 236 +- 59 files changed, 10085 insertions(+), 27273 deletions(-) diff --git a/src/compiler.ts b/src/compiler.ts index 45b81459f2..42090a6868 100644 --- a/src/compiler.ts +++ b/src/compiler.ts @@ -1117,8 +1117,15 @@ export class Compiler extends DiagnosticEmitter { // Initialize to zero if there's no initializer } else { + let globalType = global.type; + if (globalType.is(TypeFlags.REFERENCE) && !globalType.is(TypeFlags.NULLABLE)) { + this.error( + DiagnosticCode.Object_is_possibly_null, + global.identifierNode.range + ); + } if (global.is(CommonFlags.INLINED)) { - initExpr = this.compileInlineConstant(global, global.type, Constraints.PREFER_STATIC | Constraints.WILL_RETAIN); + initExpr = this.compileInlineConstant(global, globalType, Constraints.PREFER_STATIC | Constraints.WILL_RETAIN); } else { initExpr = this.makeZero(type); } @@ -1304,10 +1311,12 @@ export class Compiler extends DiagnosticEmitter { let thisType = signature.thisType; if (thisType) { // No need to retain `this` as it can't be reassigned and thus can't become prematurely released + flow.setLocalFlag(index, LocalFlags.INITIALIZED); ++index; } let parameterTypes = signature.parameterTypes; for (let i = 0, k = parameterTypes.length; i < k; ++i, ++index) { + flow.setLocalFlag(index, LocalFlags.INITIALIZED); let type = parameterTypes[i]; if (type.isManaged) { stmts.push( @@ -2997,6 +3006,7 @@ export class Compiler extends DiagnosticEmitter { } let isManaged = type.isManaged; if (initExpr) { + flow.setLocalFlag(local.index, LocalFlags.INITIALIZED); if (flow.isNonnull(initExpr, type)) flow.setLocalFlag(local.index, LocalFlags.NONNULL); if (isManaged) { flow.setLocalFlag(local.index, LocalFlags.RETAINED); @@ -4147,12 +4157,12 @@ export class Compiler extends DiagnosticEmitter { leftType = this.currentType; // check operator overload (cannot overload explicit null comparison) - if (this.currentType.is(TypeFlags.REFERENCE) && left.kind != NodeKind.NULL && right.kind != NodeKind.NULL) { + if (this.currentType.is(TypeFlags.REFERENCE)) { let classReference = leftType.classReference; if (classReference) { let overload = classReference.lookupOverload(OperatorKind.EQ); if (overload) { - expr = this.compileBinaryOverload(overload, leftExpr, leftType, right, expression); + expr = this.compileBinaryOverloadWithNullChecking(overload, true, leftExpr, leftType, right, expression); break; } } @@ -4247,12 +4257,12 @@ export class Compiler extends DiagnosticEmitter { leftType = this.currentType; // check operator overload (cannot overload explicit null comparison) - if (this.currentType.is(TypeFlags.REFERENCE) && left.kind != NodeKind.NULL && right.kind != NodeKind.NULL) { + if (this.currentType.is(TypeFlags.REFERENCE)) { let classReference = leftType.classReference; if (classReference) { let overload = classReference.lookupOverload(OperatorKind.NE); if (overload) { - expr = this.compileBinaryOverload(overload, leftExpr, leftType, right, expression); + expr = this.compileBinaryOverloadWithNullChecking(overload, false, leftExpr, leftType, right, expression); break; } } @@ -5773,6 +5783,98 @@ export class Compiler extends DiagnosticEmitter { return this.makeCallDirect(overload, [ leftExpr, rightExpr ], reportNode); } + /** Like `compileBinaryOverload`, but with pre-applied null checking. */ + private compileBinaryOverloadWithNullChecking( + /** Overload function instance. */ + overload: Function, + /** Whether the overload returns `true` if both values are identity equal. */ + ifIdentityEqual: bool, + /** Compiled left expression. */ + leftExpr: ExpressionRef, + /** Left expression type. */ + leftType: Type, + /** Right expression to compile. */ + right: Expression, + /** Report node. */ + reportNode: BinaryExpression + ): ExpressionRef { + // Dealing with `null`s is left to the compiler and cannot be overloaded. + // This serves the purpose that we can emit properly null-checked code. + var module = this.module; + var flow = this.currentFlow; + leftExpr = this.convertExpression(leftExpr, leftType, + leftType.is(TypeFlags.NULLABLE) + ? overload.binaryOverloadLeftType.asNullable() + : overload.binaryOverloadLeftType, + false, false, reportNode.left + ); + var rightExpr = this.compileExpression(right, overload.binaryOverloadRightType); + var rightType = this.currentType; + rightExpr = this.convertExpression(rightExpr, rightType, + rightType.is(TypeFlags.NULLABLE) + ? overload.binaryOverloadRightType.asNullable() + : overload.binaryOverloadRightType, + false, false, reportNode.right + ); + var isWasm64 = this.options.isWasm64; + if (!flow.isNonnull(leftExpr, leftType)) { + if (!flow.isNonnull(rightExpr, rightType)) { + let tleft = flow.getTempLocal(leftType); + let tright = flow.getTempLocal(rightType); + let leftNativeType = leftType.toNativeType(); + let rightNativeType = rightType.toNativeType(); + let ret = module.if( + // if (EQZ left | EQZ right) ? left EQ right : OVERLOAD + module.binary(BinaryOp.OrI32, + module.unary(isWasm64 ? UnaryOp.EqzI64 : UnaryOp.EqzI32, module.local_tee(tleft.index, leftExpr)), + module.unary(isWasm64 ? UnaryOp.EqzI64 : UnaryOp.EqzI32, module.local_tee(tright.index, rightExpr)) + ), + module.binary( + isWasm64 + ? ifIdentityEqual ? BinaryOp.EqI64 : BinaryOp.NeI64 + : ifIdentityEqual ? BinaryOp.EqI32 : BinaryOp.NeI32, + module.local_get(tleft.index, leftNativeType), + module.local_get(tright.index, rightNativeType) + ), + this.makeCallDirect(overload, [ + module.local_get(tleft.index, leftNativeType), + module.local_get(tright.index, rightNativeType) + ], reportNode) + ); + flow.freeTempLocal(tright); + flow.freeTempLocal(tleft); + return ret; + } else { + let tleft = flow.getTempLocal(leftType); + let ret = module.if( + // if (EQZ left) ? false : OVERLOAD + module.unary(isWasm64 ? UnaryOp.EqzI64 : UnaryOp.EqzI32, module.local_tee(tleft.index, leftExpr)), + module.i32(ifIdentityEqual ? 0 : 1), + this.makeCallDirect(overload, [ + module.local_get(tleft.index, leftType.toNativeType()), + rightExpr + ], reportNode) + ); + flow.freeTempLocal(tleft); + return ret; + } + } else if (!flow.isNonnull(rightExpr, rightType)) { + let tright = flow.getTempLocal(rightType, findUsedLocals(leftExpr)); + let ret = module.if( + // if (EQZ right) ? false : OVERLOAD + module.unary(isWasm64 ? UnaryOp.EqzI64 : UnaryOp.EqzI32, module.local_tee(tright.index, rightExpr)), + module.i32(ifIdentityEqual ? 0 : 1), + this.makeCallDirect(overload, [ + leftExpr, + module.local_get(tright.index, rightType.toNativeType()) + ], reportNode) + ); + flow.freeTempLocal(tright); + return ret; + } + return this.makeCallDirect(overload, [ leftExpr, rightExpr ], reportNode); + } + private compileAssignment(expression: Expression, valueExpression: Expression, contextualType: Type): ExpressionRef { var program = this.program; var resolver = program.resolver; @@ -6761,6 +6863,7 @@ export class Compiler extends DiagnosticEmitter { if (!this.skippedAutoreleases.has(paramExpr)) paramExpr = this.makeRetain(paramExpr); flow.setLocalFlag(argumentLocal.index, LocalFlags.RETAINED); } + flow.setLocalFlag(argumentLocal.index, LocalFlags.INITIALIZED); body.unshift( module.local_set(argumentLocal.index, paramExpr) ); @@ -6772,6 +6875,7 @@ export class Compiler extends DiagnosticEmitter { let thisType = assert(instance.signature.thisType); let thisLocal = flow.addScopedLocal(CommonNames.this_, thisType, usedLocals); // No need to retain `this` as it can't be reassigned and thus can't become prematurely released + flow.setLocalFlag(thisLocal.index, LocalFlags.INITIALIZED); body.unshift( module.local_set(thisLocal.index, thisArg) ); diff --git a/src/module.ts b/src/module.ts index 58c40425b6..a029dbe3d3 100644 --- a/src/module.ts +++ b/src/module.ts @@ -779,7 +779,7 @@ export class Module { ): ExpressionRef { if (type == NativeType.Auto) { type = binaryen._BinaryenExpressionGetType(ifTrue); - assert(type == binaryen._BinaryenExpressionGetType(ifFalse)); + // assert(type == binaryen._BinaryenExpressionGetType(ifFalse)); } return binaryen._BinaryenSelect(this.ref, condition, ifTrue, ifFalse, type); } diff --git a/std/assembly/rt/pure.ts b/std/assembly/rt/pure.ts index 0f27bd326e..e7006d014f 100644 --- a/std/assembly/rt/pure.ts +++ b/std/assembly/rt/pure.ts @@ -1,5 +1,5 @@ import { DEBUG, BLOCK_OVERHEAD } from "rt/common"; -import { Block, freeBlock, ROOT } from "rt/tlsf"; +import { Block, freeBlock, Root, ROOT } from "rt/tlsf"; import { TypeinfoFlags } from "shared/typeinfo"; import { onincrement, ondecrement, onfree, onalloc } from "./rtrace"; @@ -124,10 +124,10 @@ function decrement(s: Block): void { __visit_members(changetype(s) + BLOCK_OVERHEAD, VISIT_DECREMENT); if (isDefined(__GC_ALL_ACYCLIC)) { if (DEBUG) assert(!(info & BUFFERED_MASK)); - freeBlock(ROOT, s); + freeBlock(changetype(ROOT), s); } else { if (!(info & BUFFERED_MASK)) { - freeBlock(ROOT, s); + freeBlock(changetype(ROOT), s); } else { s.gcInfo = BUFFERED_MASK | COLOR_BLACK | 0; } @@ -205,7 +205,7 @@ export function __collect(): void { cur += sizeof(); } else { if ((info & COLOR_MASK) == COLOR_BLACK && !(info & REFCOUNT_MASK)) { - freeBlock(ROOT, s); + freeBlock(changetype(ROOT), s); } else { s.gcInfo = info & ~BUFFERED_MASK; } @@ -261,7 +261,7 @@ function collectWhite(s: Block): void { if ((info & COLOR_MASK) == COLOR_WHITE && !(info & BUFFERED_MASK)) { s.gcInfo = (info & ~COLOR_MASK) | COLOR_BLACK; __visit_members(changetype(s) + BLOCK_OVERHEAD, VISIT_COLLECTWHITE); - freeBlock(ROOT, s); + freeBlock(changetype(ROOT), s); } } diff --git a/std/assembly/rt/tlsf.ts b/std/assembly/rt/tlsf.ts index 2a71356ff3..b6c1a1f1fe 100644 --- a/std/assembly/rt/tlsf.ts +++ b/std/assembly/rt/tlsf.ts @@ -122,7 +122,7 @@ import { REFCOUNT_MASK } from "./pure"; // │ tail │ ◄────┘ // └───────────────────────────────────────────────────────────────┘ SIZE ┘ // S: Small blocks map -@unmanaged class Root { +@unmanaged export class Root { /** First level bitmap. */ flMap: usize; } @@ -141,7 +141,7 @@ import { REFCOUNT_MASK } from "./pure"; @inline const ROOT_SIZE: usize = HL_END + sizeof(); // @ts-ignore: decorator -@lazy export var ROOT: Root; +@lazy export var ROOT: Root | null; /** Gets the second level map of the specified first level. */ // @ts-ignore: decorator diff --git a/std/assembly/string.ts b/std/assembly/string.ts index 6c50278447..0fd3f0d463 100644 --- a/std/assembly/string.ts +++ b/std/assembly/string.ts @@ -48,7 +48,7 @@ import { Array } from "./array"; return changetype(changetype(this) - BLOCK_OVERHEAD).rtSize >> 1; } - @operator("[]") charAt(pos: i32): String { + charAt(pos: i32): String { if (pos >= this.length) return changetype(""); var out = __alloc(2, idof()); store(out, load(changetype(this) + (pos << 1))); @@ -70,10 +70,6 @@ import { Array } from "./array"; return (first - 0xD800 << 10) + (second - 0xDC00) + 0x10000; } - @operator("+") private static __concat(left: String, right: String): String { - return select(left, changetype("null"), changetype(left) != 0).concat(right); - } - concat(other: String): String { var thisSize: isize = this.length << 1; var otherSize: isize = other.length << 1; @@ -94,68 +90,6 @@ import { Array } from "./array"; return !compareImpl(this, searchStart, search, 0, searchLength); } - @operator("==") @inline - private static __eqi(left: String | null, right: String | null): bool { - return i32(!changetype(left)) | i32(!changetype(right)) // one or both null - ? changetype(left) == changetype(right) - : String.__eq(changetype(left), changetype(right)); - } - - private static __eq(left: string, right: string): bool { - var leftLength = left.length; - if (leftLength != right.length) return false; - return !compareImpl(left, 0, right, 0, leftLength); - } - - @operator.prefix("!") @inline - private static __not(str: String | null): bool { - return !changetype(str) ? true : !changetype(str).length; - } - - @operator("!=") @inline - private static __ne(left: String | null, right: String | null): bool { - return !String.__eqi(left, right); - } - - @operator(">") - private static __gt(left: String | null, right: String | null): bool { - if ( - changetype(left) == changetype(right) || - !changetype(left) || - !changetype(right) - ) return false; - var leftLength = changetype(left).length; - if (!leftLength) return false; - var rightLength = changetype(right).length; - if (!rightLength) return true; - // @ts-ignore: string <-> String - return compareImpl(left, 0, right, 0, min(leftLength, rightLength)) > 0; - } - - @operator(">=") - private static __gte(left: String | null, right: String | null): bool { - return !String.__lt(left, right); - } - - @operator("<") - private static __lt(left: String | null, right: String | null): bool { - if ( - changetype(left) == changetype(right) || - !changetype(left) || - !changetype(right) - ) return false; - var rightLength = changetype(right).length; - if (!rightLength) return false; - var leftLength = changetype(left).length; - if (!leftLength) return true; - return compareImpl(changetype(left), 0, changetype(right), 0, min(leftLength, rightLength)) < 0; - } - - @operator("<=") - private static __lte(left: String | null, right: String | null): bool { - return !String.__gt(left, right); - } - includes(search: String, start: i32 = 0): bool { return this.indexOf(search, start) != -1; } @@ -644,6 +578,71 @@ import { Array } from "./array"; toString(): String { return this; } + + @operator("==") + private _eq(other: string): bool { + var thisLength = this.length; + if (thisLength != other.length) return false; + return !compareImpl(changetype(this), 0, other, 0, thisLength); + } + + @operator("!=") + private _ne(other: string): bool { + return !this._eq(other); + } + + @operator(">") + private static _gt(left: String | null, right: String | null): bool { + if ( + changetype(left) == changetype(right) || + !changetype(left) || + !changetype(right) + ) return false; + var leftLength = changetype(left).length; + if (!leftLength) return false; + var rightLength = changetype(right).length; + if (!rightLength) return true; + // @ts-ignore: string <-> String + return compareImpl(left, 0, right, 0, min(leftLength, rightLength)) > 0; + } + + @operator(">=") + private static _ge(left: String | null, right: String | null): bool { + return !String.__lt(left, right); + } + + @operator("<") + private static __lt(left: String | null, right: String | null): bool { + if ( + changetype(left) == changetype(right) || + !changetype(left) || + !changetype(right) + ) return false; + var rightLength = changetype(right).length; + if (!rightLength) return false; + var leftLength = changetype(left).length; + if (!leftLength) return true; + return compareImpl(changetype(left), 0, changetype(right), 0, min(leftLength, rightLength)) < 0; + } + + @operator("<=") + private static __le(left: String | null, right: String | null): bool { + return !String._gt(left, right); + } + + @operator("+") private static _add(left: String, right: String): String { + return select(left, changetype("null"), changetype(left) != 0).concat(right); + } + + @operator("[]") + private _get(index: i32): String { + return this.charAt(index); + } + + @operator.prefix("!") + private _not(): bool { + return !this.length; + } } // @ts-ignore: nolib diff --git a/std/assembly/symbol.ts b/std/assembly/symbol.ts index a5a0ca7a5f..0252fcc6c2 100644 --- a/std/assembly/symbol.ts +++ b/std/assembly/symbol.ts @@ -2,11 +2,11 @@ import { Map } from "./map"; // @ts-ignore: decorator @lazy -var stringToId: Map; +var stringToId: Map | null; // @ts-ignore: decorator @lazy -var idToString: Map; +var idToString: Map | null; // @ts-ignore: decorator @lazy @@ -67,21 +67,23 @@ var nextId: usize = 12; // Symbol.unscopables + 1 static readonly unscopables: symbol = changetype(11); static for(key: string): symbol { - if (!stringToId) { - stringToId = new Map(); + var stoi = stringToId; + if (!stoi) { + stringToId = stoi = new Map(); idToString = new Map(); } - else if (stringToId.has(key)) return changetype(stringToId.get(key)); + else if (stoi.has(key)) return changetype(stoi.get(key)); var id = nextId++; if (!id) unreachable(); // out of ids - stringToId.set(key, id); - idToString.set(id, key); + stoi.set(key, id); + changetype>(idToString).set(id, key); return changetype(id); } static keyFor(sym: symbol): string | null { - return idToString != null && idToString.has(changetype(sym)) - ? idToString.get(changetype(sym)) + var itos = idToString; + return itos != null && itos.has(changetype(sym)) + ? itos.get(changetype(sym)) : null; } diff --git a/tests/compiler/builtins.optimized.wat b/tests/compiler/builtins.optimized.wat index c1a0a45856..f733282686 100644 --- a/tests/compiler/builtins.optimized.wat +++ b/tests/compiler/builtins.optimized.wat @@ -141,7 +141,7 @@ end i32.const 0 ) - (func $~lib/string/String.__eq (; 5 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/string/String#_eq (; 5 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) local.get $0 call $~lib/string/String#get:length @@ -596,7 +596,7 @@ call $~lib/builtins/trace i32.const 1216 i32.const 1216 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -608,7 +608,7 @@ end i32.const 1216 i32.const 1216 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -620,7 +620,7 @@ end i32.const 1248 i32.const 1248 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -632,7 +632,7 @@ end i32.const 1280 i32.const 1280 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -644,7 +644,7 @@ end i32.const 1312 i32.const 1312 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -656,7 +656,7 @@ end i32.const 1344 i32.const 1344 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -668,7 +668,7 @@ end i32.const 1376 i32.const 1376 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -680,7 +680,7 @@ end i32.const 1408 i32.const 1408 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -692,7 +692,7 @@ end i32.const 1440 i32.const 1440 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -704,7 +704,7 @@ end i32.const 1472 i32.const 1472 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -716,7 +716,7 @@ end i32.const 1504 i32.const 1504 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -728,7 +728,7 @@ end i32.const 1536 i32.const 1536 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -740,7 +740,7 @@ end i32.const 1568 i32.const 1568 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -752,7 +752,7 @@ end i32.const 1600 i32.const 1600 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -764,7 +764,7 @@ end i32.const 1632 i32.const 1632 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -776,7 +776,7 @@ end i32.const 1664 i32.const 1664 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -788,7 +788,7 @@ end i32.const 1696 i32.const 1696 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -800,7 +800,7 @@ end i32.const 1728 i32.const 1728 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -812,7 +812,7 @@ end i32.const 1280 i32.const 1280 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -824,7 +824,7 @@ end i32.const 1216 i32.const 1216 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 diff --git a/tests/compiler/builtins.untouched.wat b/tests/compiler/builtins.untouched.wat index 202a8de363..470447c196 100644 --- a/tests/compiler/builtins.untouched.wat +++ b/tests/compiler/builtins.untouched.wat @@ -232,12 +232,9 @@ call $~lib/rt/stub/__release local.get $7 ) - (func $~lib/string/String.__eq (; 7 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/string/String#_eq (; 7 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) - local.get $0 - call $~lib/rt/stub/__retain - local.set $0 local.get $1 call $~lib/rt/stub/__retain local.set $1 @@ -251,8 +248,6 @@ if i32.const 0 local.set $3 - local.get $0 - call $~lib/rt/stub/__release local.get $1 call $~lib/rt/stub/__release local.get $3 @@ -266,8 +261,6 @@ call $~lib/util/string/compareImpl i32.eqz local.set $3 - local.get $0 - call $~lib/rt/stub/__release local.get $1 call $~lib/rt/stub/__release local.get $3 @@ -1596,33 +1589,8 @@ unreachable end i32.const 208 - call $~lib/rt/stub/__retain - local.set $1 i32.const 208 - call $~lib/rt/stub/__retain - local.set $0 - local.get $1 - i32.eqz - local.get $0 - i32.eqz - i32.or - if (result i32) - local.get $1 - local.get $0 - i32.eq - else - local.get $1 - local.get $0 - call $~lib/string/String.__eq - end - local.set $8 - local.get $0 - call $~lib/rt/stub/__release - local.get $1 - call $~lib/rt/stub/__release - local.get $8 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -1633,33 +1601,8 @@ unreachable end i32.const 208 - call $~lib/rt/stub/__retain - local.set $7 i32.const 208 - call $~lib/rt/stub/__retain - local.set $6 - local.get $7 - i32.eqz - local.get $6 - i32.eqz - i32.or - if (result i32) - local.get $7 - local.get $6 - i32.eq - else - local.get $7 - local.get $6 - call $~lib/string/String.__eq - end - local.set $1 - local.get $6 - call $~lib/rt/stub/__release - local.get $7 - call $~lib/rt/stub/__release - local.get $1 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -1670,33 +1613,8 @@ unreachable end i32.const 240 - call $~lib/rt/stub/__retain - local.set $0 i32.const 240 - call $~lib/rt/stub/__retain - local.set $8 - local.get $0 - i32.eqz - local.get $8 - i32.eqz - i32.or - if (result i32) - local.get $0 - local.get $8 - i32.eq - else - local.get $0 - local.get $8 - call $~lib/string/String.__eq - end - local.set $7 - local.get $8 - call $~lib/rt/stub/__release - local.get $0 - call $~lib/rt/stub/__release - local.get $7 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -1707,33 +1625,8 @@ unreachable end i32.const 272 - call $~lib/rt/stub/__retain - local.set $6 i32.const 272 - call $~lib/rt/stub/__retain - local.set $1 - local.get $6 - i32.eqz - local.get $1 - i32.eqz - i32.or - if (result i32) - local.get $6 - local.get $1 - i32.eq - else - local.get $6 - local.get $1 - call $~lib/string/String.__eq - end - local.set $0 - local.get $1 - call $~lib/rt/stub/__release - local.get $6 - call $~lib/rt/stub/__release - local.get $0 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -1744,33 +1637,8 @@ unreachable end i32.const 304 - call $~lib/rt/stub/__retain - local.set $8 i32.const 304 - call $~lib/rt/stub/__retain - local.set $7 - local.get $8 - i32.eqz - local.get $7 - i32.eqz - i32.or - if (result i32) - local.get $8 - local.get $7 - i32.eq - else - local.get $8 - local.get $7 - call $~lib/string/String.__eq - end - local.set $6 - local.get $7 - call $~lib/rt/stub/__release - local.get $8 - call $~lib/rt/stub/__release - local.get $6 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -1781,33 +1649,8 @@ unreachable end i32.const 336 - call $~lib/rt/stub/__retain - local.set $1 i32.const 336 - call $~lib/rt/stub/__retain - local.set $0 - local.get $1 - i32.eqz - local.get $0 - i32.eqz - i32.or - if (result i32) - local.get $1 - local.get $0 - i32.eq - else - local.get $1 - local.get $0 - call $~lib/string/String.__eq - end - local.set $8 - local.get $0 - call $~lib/rt/stub/__release - local.get $1 - call $~lib/rt/stub/__release - local.get $8 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -1818,33 +1661,8 @@ unreachable end i32.const 368 - call $~lib/rt/stub/__retain - local.set $7 i32.const 368 - call $~lib/rt/stub/__retain - local.set $6 - local.get $7 - i32.eqz - local.get $6 - i32.eqz - i32.or - if (result i32) - local.get $7 - local.get $6 - i32.eq - else - local.get $7 - local.get $6 - call $~lib/string/String.__eq - end - local.set $1 - local.get $6 - call $~lib/rt/stub/__release - local.get $7 - call $~lib/rt/stub/__release - local.get $1 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -1855,33 +1673,8 @@ unreachable end i32.const 400 - call $~lib/rt/stub/__retain - local.set $0 i32.const 400 - call $~lib/rt/stub/__retain - local.set $8 - local.get $0 - i32.eqz - local.get $8 - i32.eqz - i32.or - if (result i32) - local.get $0 - local.get $8 - i32.eq - else - local.get $0 - local.get $8 - call $~lib/string/String.__eq - end - local.set $7 - local.get $8 - call $~lib/rt/stub/__release - local.get $0 - call $~lib/rt/stub/__release - local.get $7 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -1892,33 +1685,8 @@ unreachable end i32.const 432 - call $~lib/rt/stub/__retain - local.set $6 i32.const 432 - call $~lib/rt/stub/__retain - local.set $1 - local.get $6 - i32.eqz - local.get $1 - i32.eqz - i32.or - if (result i32) - local.get $6 - local.get $1 - i32.eq - else - local.get $6 - local.get $1 - call $~lib/string/String.__eq - end - local.set $0 - local.get $1 - call $~lib/rt/stub/__release - local.get $6 - call $~lib/rt/stub/__release - local.get $0 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -1929,33 +1697,8 @@ unreachable end i32.const 464 - call $~lib/rt/stub/__retain - local.set $8 i32.const 464 - call $~lib/rt/stub/__retain - local.set $7 - local.get $8 - i32.eqz - local.get $7 - i32.eqz - i32.or - if (result i32) - local.get $8 - local.get $7 - i32.eq - else - local.get $8 - local.get $7 - call $~lib/string/String.__eq - end - local.set $6 - local.get $7 - call $~lib/rt/stub/__release - local.get $8 - call $~lib/rt/stub/__release - local.get $6 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -1966,33 +1709,8 @@ unreachable end i32.const 496 - call $~lib/rt/stub/__retain - local.set $1 i32.const 496 - call $~lib/rt/stub/__retain - local.set $0 - local.get $1 - i32.eqz - local.get $0 - i32.eqz - i32.or - if (result i32) - local.get $1 - local.get $0 - i32.eq - else - local.get $1 - local.get $0 - call $~lib/string/String.__eq - end - local.set $8 - local.get $0 - call $~lib/rt/stub/__release - local.get $1 - call $~lib/rt/stub/__release - local.get $8 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -2003,33 +1721,8 @@ unreachable end i32.const 528 - call $~lib/rt/stub/__retain - local.set $7 i32.const 528 - call $~lib/rt/stub/__retain - local.set $6 - local.get $7 - i32.eqz - local.get $6 - i32.eqz - i32.or - if (result i32) - local.get $7 - local.get $6 - i32.eq - else - local.get $7 - local.get $6 - call $~lib/string/String.__eq - end - local.set $1 - local.get $6 - call $~lib/rt/stub/__release - local.get $7 - call $~lib/rt/stub/__release - local.get $1 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -2040,33 +1733,8 @@ unreachable end i32.const 560 - call $~lib/rt/stub/__retain - local.set $0 i32.const 560 - call $~lib/rt/stub/__retain - local.set $8 - local.get $0 - i32.eqz - local.get $8 - i32.eqz - i32.or - if (result i32) - local.get $0 - local.get $8 - i32.eq - else - local.get $0 - local.get $8 - call $~lib/string/String.__eq - end - local.set $7 - local.get $8 - call $~lib/rt/stub/__release - local.get $0 - call $~lib/rt/stub/__release - local.get $7 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -2077,33 +1745,8 @@ unreachable end i32.const 592 - call $~lib/rt/stub/__retain - local.set $6 i32.const 592 - call $~lib/rt/stub/__retain - local.set $1 - local.get $6 - i32.eqz - local.get $1 - i32.eqz - i32.or - if (result i32) - local.get $6 - local.get $1 - i32.eq - else - local.get $6 - local.get $1 - call $~lib/string/String.__eq - end - local.set $0 - local.get $1 - call $~lib/rt/stub/__release - local.get $6 - call $~lib/rt/stub/__release - local.get $0 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -2114,33 +1757,8 @@ unreachable end i32.const 624 - call $~lib/rt/stub/__retain - local.set $8 i32.const 624 - call $~lib/rt/stub/__retain - local.set $7 - local.get $8 - i32.eqz - local.get $7 - i32.eqz - i32.or - if (result i32) - local.get $8 - local.get $7 - i32.eq - else - local.get $8 - local.get $7 - call $~lib/string/String.__eq - end - local.set $6 - local.get $7 - call $~lib/rt/stub/__release - local.get $8 - call $~lib/rt/stub/__release - local.get $6 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -2151,33 +1769,8 @@ unreachable end i32.const 656 - call $~lib/rt/stub/__retain - local.set $1 i32.const 656 - call $~lib/rt/stub/__retain - local.set $0 - local.get $1 - i32.eqz - local.get $0 - i32.eqz - i32.or - if (result i32) - local.get $1 - local.get $0 - i32.eq - else - local.get $1 - local.get $0 - call $~lib/string/String.__eq - end - local.set $8 - local.get $0 - call $~lib/rt/stub/__release - local.get $1 - call $~lib/rt/stub/__release - local.get $8 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -2188,33 +1781,8 @@ unreachable end i32.const 688 - call $~lib/rt/stub/__retain - local.set $7 i32.const 688 - call $~lib/rt/stub/__retain - local.set $6 - local.get $7 - i32.eqz - local.get $6 - i32.eqz - i32.or - if (result i32) - local.get $7 - local.get $6 - i32.eq - else - local.get $7 - local.get $6 - call $~lib/string/String.__eq - end - local.set $1 - local.get $6 - call $~lib/rt/stub/__release - local.get $7 - call $~lib/rt/stub/__release - local.get $1 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -2225,33 +1793,8 @@ unreachable end i32.const 720 - call $~lib/rt/stub/__retain - local.set $0 i32.const 720 - call $~lib/rt/stub/__retain - local.set $8 - local.get $0 - i32.eqz - local.get $8 - i32.eqz - i32.or - if (result i32) - local.get $0 - local.get $8 - i32.eq - else - local.get $0 - local.get $8 - call $~lib/string/String.__eq - end - local.set $7 - local.get $8 - call $~lib/rt/stub/__release - local.get $0 - call $~lib/rt/stub/__release - local.get $7 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -2262,33 +1805,8 @@ unreachable end i32.const 272 - call $~lib/rt/stub/__retain - local.set $6 i32.const 272 - call $~lib/rt/stub/__retain - local.set $1 - local.get $6 - i32.eqz - local.get $1 - i32.eqz - i32.or - if (result i32) - local.get $6 - local.get $1 - i32.eq - else - local.get $6 - local.get $1 - call $~lib/string/String.__eq - end - local.set $0 - local.get $1 - call $~lib/rt/stub/__release - local.get $6 - call $~lib/rt/stub/__release - local.get $0 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -2299,33 +1817,8 @@ unreachable end i32.const 208 - call $~lib/rt/stub/__retain - local.set $8 i32.const 208 - call $~lib/rt/stub/__retain - local.set $7 - local.get $8 - i32.eqz - local.get $7 - i32.eqz - i32.or - if (result i32) - local.get $8 - local.get $7 - i32.eq - else - local.get $8 - local.get $7 - call $~lib/string/String.__eq - end - local.set $6 - local.get $7 - call $~lib/rt/stub/__release - local.get $8 - call $~lib/rt/stub/__release - local.get $6 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 diff --git a/tests/compiler/empty.optimized.wat b/tests/compiler/empty.optimized.wat index 23da3862e2..d2889ed179 100644 --- a/tests/compiler/empty.optimized.wat +++ b/tests/compiler/empty.optimized.wat @@ -1,4 +1,179 @@ (module - (memory $0 0) + (type $i32_=>_i32 (func (param i32) (result i32))) + (type $none_=>_none (func)) + (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) + (type $i32_i32_f64_f64_f64_f64_f64_=>_none (func (param i32 i32 f64 f64 f64 f64 f64))) + (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) + (import "env" "trace" (func $~lib/builtins/trace (param i32 i32 f64 f64 f64 f64 f64))) + (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (memory $0 1) + (data (i32.const 1028) "\01\00\00\00\01") + (data (i32.const 1040) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00a") + (data (i32.const 1072) "\10\00\00\00\01\00\00\00\01\00\00\00\10\00\00\00e\00m\00p\00t\00y\00.\00t\00s") + (data (i32.const 1104) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00b") (export "memory" (memory $0)) + (start $~start) + (func $~lib/string/String#get:length (; 2 ;) (param $0 i32) (result i32) + local.get $0 + i32.const 16 + i32.sub + i32.load offset=12 + i32.const 1 + i32.shr_u + ) + (func $~lib/util/string/compareImpl (; 3 ;) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + i32.const 1056 + local.set $3 + local.get $0 + i32.const 7 + i32.and + i32.eqz + i32.const 0 + local.get $1 + i32.const 4 + i32.ge_u + select + if + loop $do-continue|0 + local.get $3 + i64.load + local.get $0 + i64.load + i64.eq + if + local.get $3 + i32.const 8 + i32.add + local.set $3 + local.get $0 + i32.const 8 + i32.add + local.set $0 + local.get $1 + i32.const 4 + i32.sub + local.tee $1 + i32.const 4 + i32.ge_u + br_if $do-continue|0 + end + end + end + loop $while-continue|1 + local.get $1 + local.tee $2 + i32.const 1 + i32.sub + local.set $1 + local.get $2 + if + local.get $3 + i32.load16_u + local.tee $2 + local.get $0 + i32.load16_u + local.tee $4 + i32.ne + if + local.get $2 + local.get $4 + i32.sub + return + end + local.get $3 + i32.const 2 + i32.add + local.set $3 + local.get $0 + i32.const 2 + i32.add + local.set $0 + br $while-continue|1 + end + end + i32.const 0 + ) + (func $~lib/string/String#_eq (; 4 ;) (param $0 i32) (result i32) + (local $1 i32) + i32.const 1056 + call $~lib/string/String#get:length + local.tee $1 + local.get $0 + call $~lib/string/String#get:length + i32.ne + if + i32.const 0 + return + end + local.get $0 + local.get $1 + call $~lib/util/string/compareImpl + i32.eqz + ) + (func $~start (; 5 ;) + i32.const 1040 + i32.const 0 + f64.const 0 + f64.const 0 + f64.const 0 + f64.const 0 + f64.const 0 + call $~lib/builtins/trace + i32.const 1056 + call $~lib/string/String#_eq + i32.eqz + if + i32.const 0 + i32.const 1088 + i32.const 2 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1040 + i32.const 0 + f64.const 0 + f64.const 0 + f64.const 0 + f64.const 0 + f64.const 0 + call $~lib/builtins/trace + i32.const 1120 + call $~lib/string/String#_eq + if + i32.const 0 + i32.const 1088 + i32.const 4 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1040 + i32.const 0 + f64.const 0 + f64.const 0 + f64.const 0 + f64.const 0 + f64.const 0 + call $~lib/builtins/trace + i32.const 1040 + i32.const 0 + f64.const 0 + f64.const 0 + f64.const 0 + f64.const 0 + f64.const 0 + call $~lib/builtins/trace + i32.const 1040 + i32.const 0 + f64.const 0 + f64.const 0 + f64.const 0 + f64.const 0 + f64.const 0 + call $~lib/builtins/trace + ) ) diff --git a/tests/compiler/empty.ts b/tests/compiler/empty.ts index e69de29bb2..be553b1fda 100644 --- a/tests/compiler/empty.ts +++ b/tests/compiler/empty.ts @@ -0,0 +1,10 @@ +trace(""); +assert("a" == "a"); +trace(""); +assert(!("a" == "b")); +trace(""); +assert(!("a" == null)); +trace(""); +assert(!(null == "a")); +trace(""); +assert(null == null); diff --git a/tests/compiler/empty.untouched.wat b/tests/compiler/empty.untouched.wat index bffe105a3d..b78894d46c 100644 --- a/tests/compiler/empty.untouched.wat +++ b/tests/compiler/empty.untouched.wat @@ -1,5 +1,326 @@ (module - (memory $0 0) + (type $none_=>_none (func)) + (type $i32_=>_i32 (func (param i32) (result i32))) + (type $i32_=>_none (func (param i32))) + (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) + (type $i32_i32_f64_f64_f64_f64_f64_=>_none (func (param i32 i32 f64 f64 f64 f64 f64))) + (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) + (type $i32_i32_i32_i32_i32_=>_i32 (func (param i32 i32 i32 i32 i32) (result i32))) + (import "env" "trace" (func $~lib/builtins/trace (param i32 i32 f64 f64 f64 f64 f64))) + (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (memory $0 1) + (data (i32.const 16) "\00\00\00\00\01\00\00\00\01\00\00\00\00\00\00\00") + (data (i32.const 32) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00a\00") + (data (i32.const 64) "\10\00\00\00\01\00\00\00\01\00\00\00\10\00\00\00e\00m\00p\00t\00y\00.\00t\00s\00") + (data (i32.const 96) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00b\00") (table $0 1 funcref) + (global $~lib/ASC_SHRINK_LEVEL i32 (i32.const 0)) (export "memory" (memory $0)) + (start $~start) + (func $~lib/rt/stub/__retain (; 2 ;) (param $0 i32) (result i32) + local.get $0 + ) + (func $~lib/string/String#get:length (; 3 ;) (param $0 i32) (result i32) + local.get $0 + i32.const 16 + i32.sub + i32.load offset=12 + i32.const 1 + i32.shr_u + ) + (func $~lib/rt/stub/__release (; 4 ;) (param $0 i32) + nop + ) + (func $~lib/util/string/compareImpl (; 5 ;) (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) + (local $8 i32) + (local $9 i32) + (local $10 i32) + local.get $0 + call $~lib/rt/stub/__retain + local.set $0 + local.get $2 + call $~lib/rt/stub/__retain + local.set $2 + local.get $0 + local.get $1 + i32.const 1 + i32.shl + i32.add + local.set $5 + local.get $2 + local.get $3 + i32.const 1 + i32.shl + i32.add + local.set $6 + local.get $4 + i32.const 4 + i32.ge_u + if (result i32) + local.get $5 + i32.const 7 + i32.and + local.get $6 + i32.const 7 + i32.and + i32.or + i32.eqz + else + i32.const 0 + end + if + block $do-break|0 + loop $do-continue|0 + local.get $5 + i64.load + local.get $6 + i64.load + i64.ne + if + br $do-break|0 + end + local.get $5 + i32.const 8 + i32.add + local.set $5 + local.get $6 + i32.const 8 + i32.add + local.set $6 + local.get $4 + i32.const 4 + i32.sub + local.set $4 + local.get $4 + i32.const 4 + i32.ge_u + local.set $7 + local.get $7 + br_if $do-continue|0 + end + end + end + loop $while-continue|1 + local.get $4 + local.tee $7 + i32.const 1 + i32.sub + local.set $4 + local.get $7 + local.set $7 + local.get $7 + if + local.get $5 + i32.load16_u + local.set $8 + local.get $6 + i32.load16_u + local.set $9 + local.get $8 + local.get $9 + i32.ne + if + local.get $8 + local.get $9 + i32.sub + local.set $10 + local.get $0 + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release + local.get $10 + return + end + local.get $5 + i32.const 2 + i32.add + local.set $5 + local.get $6 + i32.const 2 + i32.add + local.set $6 + br $while-continue|1 + end + end + i32.const 0 + local.set $7 + local.get $0 + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release + local.get $7 + ) + (func $~lib/string/String#_eq (; 6 ;) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + local.get $1 + call $~lib/rt/stub/__retain + local.set $1 + local.get $0 + call $~lib/string/String#get:length + local.set $2 + local.get $2 + local.get $1 + call $~lib/string/String#get:length + i32.ne + if + i32.const 0 + local.set $3 + local.get $1 + call $~lib/rt/stub/__release + local.get $3 + return + end + local.get $0 + i32.const 0 + local.get $1 + i32.const 0 + local.get $2 + call $~lib/util/string/compareImpl + i32.eqz + local.set $3 + local.get $1 + call $~lib/rt/stub/__release + local.get $3 + ) + (func $start:empty (; 7 ;) + (local $0 i32) + (local $1 i32) + i32.const 32 + i32.const 0 + f64.const 0 + f64.const 0 + f64.const 0 + f64.const 0 + f64.const 0 + call $~lib/builtins/trace + i32.const 48 + i32.const 48 + call $~lib/string/String#_eq + i32.eqz + if + i32.const 0 + i32.const 80 + i32.const 2 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 32 + i32.const 0 + f64.const 0 + f64.const 0 + f64.const 0 + f64.const 0 + f64.const 0 + call $~lib/builtins/trace + i32.const 48 + i32.const 112 + call $~lib/string/String#_eq + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 80 + i32.const 4 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 32 + i32.const 0 + f64.const 0 + f64.const 0 + f64.const 0 + f64.const 0 + f64.const 0 + call $~lib/builtins/trace + i32.const 0 + local.tee $0 + i32.eqz + if (result i32) + i32.const 0 + else + i32.const 48 + local.get $0 + call $~lib/string/String#_eq + end + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 80 + i32.const 6 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 32 + i32.const 0 + f64.const 0 + f64.const 0 + f64.const 0 + f64.const 0 + f64.const 0 + call $~lib/builtins/trace + i32.const 0 + local.tee $0 + i32.eqz + if (result i32) + i32.const 0 + else + local.get $0 + i32.const 48 + call $~lib/string/String#_eq + end + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 80 + i32.const 8 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 32 + i32.const 0 + f64.const 0 + f64.const 0 + f64.const 0 + f64.const 0 + f64.const 0 + call $~lib/builtins/trace + i32.const 0 + local.tee $0 + i32.eqz + i32.const 0 + local.tee $1 + i32.eqz + i32.or + if (result i32) + local.get $0 + local.get $1 + i32.eq + else + local.get $0 + local.get $1 + call $~lib/string/String#_eq + end + i32.eqz + if + i32.const 0 + i32.const 80 + i32.const 10 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + ) + (func $~start (; 8 ;) + call $start:empty + ) ) diff --git a/tests/compiler/features/reference-types.optimized.wat b/tests/compiler/features/reference-types.optimized.wat index bdc208c53b..eea73dc873 100644 --- a/tests/compiler/features/reference-types.optimized.wat +++ b/tests/compiler/features/reference-types.optimized.wat @@ -15,7 +15,6 @@ (memory $0 1) (data (i32.const 1024) "6\00\00\00\01\00\00\00\01\00\00\006\00\00\00f\00e\00a\00t\00u\00r\00e\00s\00/\00r\00e\00f\00e\00r\00e\00n\00c\00e\00-\00t\00y\00p\00e\00s\00.\00t\00s") (global $features/reference-types/nullGlobal (mut anyref) (ref.null)) - (global $features/reference-types/nullGlobalInit (mut anyref) (ref.null)) (global $features/reference-types/funcGlobal (mut anyref) (ref.null)) (export "memory" (memory $0)) (export "external" (func $features/reference-types/external)) @@ -51,21 +50,10 @@ global.get $features/reference-types/someKey call $~lib/bindings/Reflect/get call $~lib/bindings/console/log - global.get $features/reference-types/nullGlobal - ref.is_null - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 32 - i32.const 1 - call $~lib/builtins/abort - unreachable - end ref.null global.set $features/reference-types/nullGlobal ref.null - global.set $features/reference-types/nullGlobalInit + global.set $features/reference-types/nullGlobal ref.func $features/reference-types/someFunc global.set $features/reference-types/funcGlobal ) diff --git a/tests/compiler/features/reference-types.ts b/tests/compiler/features/reference-types.ts index 3a2cf0e7e0..e507e7ef59 100644 --- a/tests/compiler/features/reference-types.ts +++ b/tests/compiler/features/reference-types.ts @@ -28,12 +28,10 @@ console.log(Reflect.get(someObject, someKey)); // can represent and recognize 'null' -var nullGlobal: anyref; +var nullGlobal: anyref = null; assert(!nullGlobal); nullGlobal = null; assert(!nullGlobal); -var nullGlobalInit: anyref = null; -assert(!nullGlobalInit); { let nullLocal: anyref; assert(!nullLocal); diff --git a/tests/compiler/features/reference-types.untouched.wat b/tests/compiler/features/reference-types.untouched.wat index 985c04b056..2e294c3f7b 100644 --- a/tests/compiler/features/reference-types.untouched.wat +++ b/tests/compiler/features/reference-types.untouched.wat @@ -16,7 +16,6 @@ (data (i32.const 16) "6\00\00\00\01\00\00\00\01\00\00\006\00\00\00f\00e\00a\00t\00u\00r\00e\00s\00/\00r\00e\00f\00e\00r\00e\00n\00c\00e\00-\00t\00y\00p\00e\00s\00.\00t\00s\00") (table $0 1 funcref) (global $features/reference-types/nullGlobal (mut anyref) (ref.null)) - (global $features/reference-types/nullGlobalInit (mut anyref) (ref.null)) (global $features/reference-types/funcGlobal (mut anyref) (ref.null)) (export "memory" (memory $0)) (export "external" (func $features/reference-types/external)) @@ -50,6 +49,8 @@ global.get $features/reference-types/someKey call $~lib/bindings/Reflect/get call $~lib/bindings/console/log + ref.null + global.set $features/reference-types/nullGlobal global.get $features/reference-types/nullGlobal ref.is_null i32.eqz @@ -78,21 +79,6 @@ call $~lib/builtins/abort unreachable end - ref.null - global.set $features/reference-types/nullGlobalInit - global.get $features/reference-types/nullGlobalInit - ref.is_null - i32.eqz - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 36 - i32.const 1 - call $~lib/builtins/abort - unreachable - end local.get $0 ref.is_null i32.eqz @@ -101,7 +87,7 @@ if i32.const 0 i32.const 32 - i32.const 39 + i32.const 37 i32.const 3 call $~lib/builtins/abort unreachable @@ -116,7 +102,7 @@ if i32.const 0 i32.const 32 - i32.const 41 + i32.const 39 i32.const 3 call $~lib/builtins/abort unreachable @@ -131,7 +117,7 @@ if i32.const 0 i32.const 32 - i32.const 43 + i32.const 41 i32.const 3 call $~lib/builtins/abort unreachable diff --git a/tests/compiler/instanceof.optimized.wat b/tests/compiler/instanceof.optimized.wat index 24fbba0670..0aec014b24 100644 --- a/tests/compiler/instanceof.optimized.wat +++ b/tests/compiler/instanceof.optimized.wat @@ -1,13 +1,105 @@ (module + (type $i32_=>_i32 (func (param i32) (result i32))) (type $none_=>_none (func)) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (memory $0 1) (data (i32.const 1024) "\1a\00\00\00\01\00\00\00\01\00\00\00\1a\00\00\00i\00n\00s\00t\00a\00n\00c\00e\00o\00f\00.\00t\00s") + (global $~lib/rt/stub/startOffset (mut i32) (i32.const 0)) + (global $~lib/rt/stub/offset (mut i32) (i32.const 0)) + (global $instanceof/a (mut i32) (i32.const 0)) + (global $instanceof/b (mut i32) (i32.const 0)) (global $instanceof/an (mut i32) (i32.const 0)) (export "memory" (memory $0)) (start $~start) - (func $~start (; 1 ;) + (func $~lib/rt/stub/__alloc (; 1 ;) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/rt/stub/offset + i32.const 16 + i32.add + local.tee $3 + i32.const 16 + i32.add + local.tee $1 + memory.size + local.tee $4 + i32.const 16 + i32.shl + local.tee $2 + i32.gt_u + if + local.get $4 + local.get $1 + local.get $2 + i32.sub + i32.const 65535 + i32.add + i32.const -65536 + i32.and + i32.const 16 + i32.shr_u + local.tee $2 + local.get $4 + local.get $2 + i32.gt_s + select + memory.grow + i32.const 0 + i32.lt_s + if + local.get $2 + memory.grow + i32.const 0 + i32.lt_s + if + unreachable + end + end + end + local.get $1 + global.set $~lib/rt/stub/offset + local.get $3 + i32.const 16 + i32.sub + local.tee $1 + i32.const 16 + i32.store + local.get $1 + i32.const 1 + i32.store offset=4 + local.get $1 + local.get $0 + i32.store offset=8 + local.get $1 + i32.const 0 + i32.store offset=12 + local.get $3 + ) + (func $instanceof/A#constructor (; 2 ;) (param $0 i32) (result i32) + local.get $0 + i32.eqz + if + i32.const 3 + call $~lib/rt/stub/__alloc + local.set $0 + end + local.get $0 + ) + (func $~start (; 3 ;) + i32.const 1072 + global.set $~lib/rt/stub/startOffset + i32.const 1072 + global.set $~lib/rt/stub/offset + i32.const 0 + call $instanceof/A#constructor + global.set $instanceof/a + i32.const 4 + call $~lib/rt/stub/__alloc + call $instanceof/A#constructor + global.set $instanceof/b global.get $instanceof/an if i32.const 0 diff --git a/tests/compiler/instanceof.ts b/tests/compiler/instanceof.ts index 2cff1b0bc4..5151626b55 100644 --- a/tests/compiler/instanceof.ts +++ b/tests/compiler/instanceof.ts @@ -1,8 +1,8 @@ class A {} class B extends A {} -var a: A; -var b: B; +var a: A = new A(); +var b: B = new B(); var i: i32; var I: i64; var f: f32; diff --git a/tests/compiler/instanceof.untouched.wat b/tests/compiler/instanceof.untouched.wat index 6f99e7c909..46e913482d 100644 --- a/tests/compiler/instanceof.untouched.wat +++ b/tests/compiler/instanceof.untouched.wat @@ -3,11 +3,14 @@ (type $none_=>_none (func)) (type $i32_=>_none (func (param i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) + (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) (type $f64_=>_i32 (func (param f64) (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (memory $0 1) (data (i32.const 16) "\1a\00\00\00\01\00\00\00\01\00\00\00\1a\00\00\00i\00n\00s\00t\00a\00n\00c\00e\00o\00f\00.\00t\00s\00") (table $0 1 funcref) + (global $~lib/rt/stub/startOffset (mut i32) (i32.const 0)) + (global $~lib/rt/stub/offset (mut i32) (i32.const 0)) (global $instanceof/a (mut i32) (i32.const 0)) (global $instanceof/b (mut i32) (i32.const 0)) (global $instanceof/i (mut i32) (i32.const 0)) @@ -15,33 +18,184 @@ (global $instanceof/f (mut f32) (f32.const 0)) (global $instanceof/F (mut f64) (f64.const 0)) (global $instanceof/an (mut i32) (i32.const 0)) + (global $~lib/heap/__heap_base i32 (i32.const 60)) (export "memory" (memory $0)) (start $~start) - (func $instanceof/isI32 (; 1 ;) (param $0 i32) (result i32) + (func $~lib/rt/stub/maybeGrowMemory (; 1 ;) (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + memory.size + local.set $1 + local.get $1 + i32.const 16 + i32.shl + local.set $2 + local.get $0 + local.get $2 + i32.gt_u + if + local.get $0 + local.get $2 + i32.sub + 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 $1 + local.tee $4 + local.get $3 + local.tee $5 + local.get $4 + local.get $5 + i32.gt_s + select + local.set $4 + local.get $4 + memory.grow + i32.const 0 + i32.lt_s + if + local.get $3 + memory.grow + i32.const 0 + i32.lt_s + if + unreachable + end + end + end + local.get $0 + global.set $~lib/rt/stub/offset + ) + (func $~lib/rt/stub/__alloc (; 2 ;) (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 + i32.const 1073741808 + i32.gt_u + if + unreachable + end + global.get $~lib/rt/stub/offset + i32.const 16 + i32.add + local.set $2 + local.get $0 + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + local.tee $3 + i32.const 16 + local.tee $4 + local.get $3 + local.get $4 + i32.gt_u + select + local.set $5 + local.get $2 + local.get $5 + i32.add + call $~lib/rt/stub/maybeGrowMemory + local.get $2 + i32.const 16 + i32.sub + local.set $6 + local.get $6 + local.get $5 + i32.store + local.get $6 + i32.const 1 + i32.store offset=4 + local.get $6 + local.get $1 + i32.store offset=8 + local.get $6 + local.get $0 + i32.store offset=12 + local.get $2 + ) + (func $~lib/rt/stub/__retain (; 3 ;) (param $0 i32) (result i32) + local.get $0 + ) + (func $instanceof/A#constructor (; 4 ;) (param $0 i32) (result i32) + local.get $0 + i32.eqz + if + i32.const 0 + i32.const 3 + call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__retain + local.set $0 + end + local.get $0 + ) + (func $instanceof/B#constructor (; 5 ;) (param $0 i32) (result i32) + local.get $0 + i32.eqz + if + i32.const 0 + i32.const 4 + call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__retain + local.set $0 + end + local.get $0 + call $instanceof/A#constructor + local.set $0 + local.get $0 + ) + (func $instanceof/isI32 (; 6 ;) (param $0 i32) (result i32) i32.const 1 return ) - (func $instanceof/isI32 (; 2 ;) (param $0 f64) (result i32) + (func $instanceof/isI32 (; 7 ;) (param $0 f64) (result i32) i32.const 0 return ) - (func $instanceof/isI32 (; 3 ;) (param $0 i32) (result i32) + (func $instanceof/isI32 (; 8 ;) (param $0 i32) (result i32) i32.const 0 return ) - (func $instanceof/isI32 (; 4 ;) (param $0 i32) (result i32) + (func $instanceof/isI32 (; 9 ;) (param $0 i32) (result i32) i32.const 0 return ) - (func $~lib/rt/stub/__retain (; 5 ;) (param $0 i32) (result i32) - local.get $0 - ) - (func $~lib/rt/stub/__release (; 6 ;) (param $0 i32) + (func $~lib/rt/stub/__release (; 10 ;) (param $0 i32) nop ) - (func $start:instanceof (; 7 ;) + (func $start:instanceof (; 11 ;) (local $0 i32) (local $1 i32) + global.get $~lib/heap/__heap_base + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + global.set $~lib/rt/stub/startOffset + global.get $~lib/rt/stub/startOffset + global.set $~lib/rt/stub/offset + i32.const 0 + call $instanceof/A#constructor + global.set $instanceof/a + i32.const 0 + call $instanceof/B#constructor + global.set $instanceof/b i32.const 0 call $instanceof/isI32 i32.eqz @@ -129,7 +283,7 @@ unreachable end ) - (func $~start (; 8 ;) + (func $~start (; 12 ;) call $start:instanceof ) ) diff --git a/tests/compiler/new.ts b/tests/compiler/new.ts index 87827c0da5..56c1c460f6 100644 --- a/tests/compiler/new.ts +++ b/tests/compiler/new.ts @@ -2,7 +2,7 @@ class Ref { get ref(): Ref { return this; } } -var ref: Ref; +var ref: Ref | null; ref = new Ref(); ref = new Ref; ref = new Ref().ref; @@ -11,7 +11,7 @@ class Gen { get gen(): Gen { return this; } } -var gen: Gen; +var gen: Gen | null; gen = new Gen(); gen = new Gen().gen; @@ -21,7 +21,7 @@ namespace ns { } } -var ref2: ns.Ref; +var ref2: ns.Ref | null; ref2 = new ns.Ref(); ref2 = new ns.Ref; ref2 = new ns.Ref().ref; diff --git a/tests/compiler/number.optimized.wat b/tests/compiler/number.optimized.wat index cb865d3e91..6676e3edc7 100644 --- a/tests/compiler/number.optimized.wat +++ b/tests/compiler/number.optimized.wat @@ -317,7 +317,7 @@ end i32.const 0 ) - (func $~lib/string/String.__eq (; 7 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/string/String#_eq (; 7 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) local.get $0 call $~lib/string/String#get:length @@ -1449,25 +1449,14 @@ ) (func $start:number (; 17 ;) (local $0 i32) - (local $1 i32) i32.const 2544 global.set $~lib/rt/stub/startOffset i32.const 2544 global.set $~lib/rt/stub/offset global.get $number/a call $~lib/number/I32#toString - local.tee $1 - local.set $0 - local.get $1 - if (result i32) - local.get $0 - i32.const 1072 - call $~lib/string/String.__eq - else - local.get $0 - i32.const 1072 - i32.eq - end + i32.const 1072 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -1478,18 +1467,8 @@ unreachable end call $~lib/util/number/dtoa - local.tee $1 - local.set $0 - local.get $1 - if (result i32) - local.get $0 - i32.const 2336 - call $~lib/string/String.__eq - else - local.get $0 - i32.const 2336 - i32.eq - end + i32.const 2336 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -1501,18 +1480,8 @@ end i32.const 3 call $~lib/number/I32#toString - local.tee $1 - local.set $0 - local.get $1 - if (result i32) - local.get $0 - i32.const 2368 - call $~lib/string/String.__eq - else - local.get $0 - i32.const 2368 - i32.eq - end + i32.const 2368 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -1524,18 +1493,8 @@ end i32.const -5 call $~lib/number/I32#toString - local.tee $1 - local.set $0 - local.get $1 - if (result i32) - local.get $0 - i32.const 2400 - call $~lib/string/String.__eq - else - local.get $0 - i32.const 2400 - i32.eq - end + i32.const 2400 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -1547,18 +1506,8 @@ end i32.const 4 call $~lib/number/I32#toString - local.tee $1 - local.set $0 - local.get $1 - if (result i32) - local.get $0 - i32.const 2432 - call $~lib/string/String.__eq - else - local.get $0 - i32.const 2432 - i32.eq - end + i32.const 2432 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -1574,18 +1523,8 @@ global.set $number/a global.get $number/a call $~lib/number/I32#toString - local.tee $1 - local.set $0 - local.get $1 - if (result i32) - local.get $0 - i32.const 2464 - call $~lib/string/String.__eq - else - local.get $0 - i32.const 2464 - i32.eq - end + i32.const 2464 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -1601,18 +1540,8 @@ global.set $number/a global.get $number/a call $~lib/number/I32#toString - local.tee $1 - local.set $0 - local.get $1 - if (result i32) - local.get $0 - i32.const 1072 - call $~lib/string/String.__eq - else - local.get $0 - i32.const 1072 - i32.eq - end + i32.const 1072 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -1624,7 +1553,7 @@ end i32.const 2496 i32.const 2496 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -1636,7 +1565,7 @@ end i32.const 2528 i32.const 2528 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -1653,18 +1582,8 @@ global.set $number/a local.get $0 call $~lib/number/I32#toString - local.tee $1 - local.set $0 - local.get $1 - if (result i32) - local.get $0 - i32.const 1072 - call $~lib/string/String.__eq - else - local.get $0 - i32.const 1072 - i32.eq - end + i32.const 1072 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -1681,18 +1600,8 @@ global.set $number/a local.get $0 call $~lib/number/I32#toString - local.tee $1 - local.set $0 - local.get $1 - if (result i32) - local.get $0 - i32.const 2464 - call $~lib/string/String.__eq - else - local.get $0 - i32.const 2464 - i32.eq - end + i32.const 2464 + call $~lib/string/String#_eq i32.eqz if i32.const 0 diff --git a/tests/compiler/number.untouched.wat b/tests/compiler/number.untouched.wat index 177a6491db..928de74cc3 100644 --- a/tests/compiler/number.untouched.wat +++ b/tests/compiler/number.untouched.wat @@ -557,12 +557,9 @@ call $~lib/rt/stub/__release local.get $7 ) - (func $~lib/string/String.__eq (; 12 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/string/String#_eq (; 12 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) - local.get $0 - call $~lib/rt/stub/__retain - local.set $0 local.get $1 call $~lib/rt/stub/__retain local.set $1 @@ -576,8 +573,6 @@ if i32.const 0 local.set $3 - local.get $0 - call $~lib/rt/stub/__release local.get $1 call $~lib/rt/stub/__release local.get $3 @@ -591,8 +586,6 @@ call $~lib/util/string/compareImpl i32.eqz local.set $3 - local.get $0 - call $~lib/rt/stub/__release local.get $1 call $~lib/rt/stub/__release local.get $3 @@ -3387,11 +3380,8 @@ (local $8 i32) (local $9 i32) (local $10 i32) - (local $11 i32) - (local $12 i32) - (local $13 i32) - (local $14 f32) - (local $15 f64) + (local $11 f32) + (local $12 f64) global.get $~lib/heap/__heap_base i32.const 15 i32.add @@ -3405,33 +3395,8 @@ global.get $number/a call $~lib/number/I32#toString local.tee $0 - call $~lib/rt/stub/__retain - local.set $2 i32.const 480 - call $~lib/rt/stub/__retain - local.set $1 - local.get $2 - i32.eqz - local.get $1 - i32.eqz - i32.or - if (result i32) - local.get $2 - local.get $1 - i32.eq - else - local.get $2 - local.get $1 - call $~lib/string/String.__eq - end - local.set $3 - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - call $~lib/rt/stub/__release - local.get $3 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -3444,34 +3409,9 @@ f64.const 2 i32.const 0 call $~lib/number/F64#toString - local.tee $2 - call $~lib/rt/stub/__retain - local.set $1 + local.tee $1 i32.const 1744 - call $~lib/rt/stub/__retain - local.set $3 - local.get $1 - i32.eqz - local.get $3 - i32.eqz - i32.or - if (result i32) - local.get $1 - local.get $3 - i32.eq - else - local.get $1 - local.get $3 - call $~lib/string/String.__eq - end - local.set $4 - local.get $3 - call $~lib/rt/stub/__release - local.get $1 - call $~lib/rt/stub/__release - local.get $4 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -3483,34 +3423,9 @@ end i32.const 3 call $~lib/number/I32#toString - local.tee $1 - call $~lib/rt/stub/__retain - local.set $3 + local.tee $2 i32.const 1776 - call $~lib/rt/stub/__retain - local.set $4 - local.get $3 - i32.eqz - local.get $4 - i32.eqz - i32.or - if (result i32) - local.get $3 - local.get $4 - i32.eq - else - local.get $3 - local.get $4 - call $~lib/string/String.__eq - end - local.set $5 - local.get $4 - call $~lib/rt/stub/__release - local.get $3 - call $~lib/rt/stub/__release - local.get $5 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -3523,33 +3438,8 @@ i32.const -5 call $~lib/number/I32#toString local.tee $3 - call $~lib/rt/stub/__retain - local.set $4 i32.const 1808 - call $~lib/rt/stub/__retain - local.set $5 - local.get $4 - i32.eqz - local.get $5 - i32.eqz - i32.or - if (result i32) - local.get $4 - local.get $5 - i32.eq - else - local.get $4 - local.get $5 - call $~lib/string/String.__eq - end - local.set $6 - local.get $5 - call $~lib/rt/stub/__release - local.get $4 - call $~lib/rt/stub/__release - local.get $6 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -3562,33 +3452,8 @@ i32.const 4 call $~lib/number/I32#toString local.tee $4 - call $~lib/rt/stub/__retain - local.set $5 i32.const 1840 - call $~lib/rt/stub/__retain - local.set $6 - local.get $5 - i32.eqz - local.get $6 - i32.eqz - i32.or - if (result i32) - local.get $5 - local.get $6 - i32.eq - else - local.get $5 - local.get $6 - call $~lib/string/String.__eq - end - local.set $7 - local.get $6 - call $~lib/rt/stub/__release - local.get $5 - call $~lib/rt/stub/__release - local.get $7 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -3605,33 +3470,8 @@ global.get $number/a call $~lib/number/I32#toString local.tee $5 - call $~lib/rt/stub/__retain - local.set $6 i32.const 1872 - call $~lib/rt/stub/__retain - local.set $7 - local.get $6 - i32.eqz - local.get $7 - i32.eqz - i32.or - if (result i32) - local.get $6 - local.get $7 - i32.eq - else - local.get $6 - local.get $7 - call $~lib/string/String.__eq - end - local.set $8 - local.get $7 - call $~lib/rt/stub/__release - local.get $6 - call $~lib/rt/stub/__release - local.get $8 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -3648,33 +3488,8 @@ global.get $number/a call $~lib/number/I32#toString local.tee $6 - call $~lib/rt/stub/__retain - local.set $7 i32.const 480 - call $~lib/rt/stub/__retain - local.set $8 - local.get $7 - i32.eqz - local.get $8 - i32.eqz - i32.or - if (result i32) - local.get $7 - local.get $8 - i32.eq - else - local.get $7 - local.get $8 - call $~lib/string/String.__eq - end - local.set $9 - local.get $8 - call $~lib/rt/stub/__release - local.get $7 - call $~lib/rt/stub/__release - local.get $9 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -3687,33 +3502,8 @@ i32.const 1 call $~lib/number/Bool#toString local.tee $7 - call $~lib/rt/stub/__retain - local.set $8 i32.const 1904 - call $~lib/rt/stub/__retain - local.set $9 - local.get $8 - i32.eqz - local.get $9 - i32.eqz - i32.or - if (result i32) - local.get $8 - local.get $9 - i32.eq - else - local.get $8 - local.get $9 - call $~lib/string/String.__eq - end - local.set $10 - local.get $9 - call $~lib/rt/stub/__release - local.get $8 - call $~lib/rt/stub/__release - local.get $10 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -3726,33 +3516,8 @@ i32.const 0 call $~lib/number/Bool#toString local.tee $8 - call $~lib/rt/stub/__retain - local.set $9 i32.const 1936 - call $~lib/rt/stub/__retain - local.set $10 - local.get $9 - i32.eqz - local.get $10 - i32.eqz - i32.or - if (result i32) - local.get $9 - local.get $10 - i32.eq - else - local.get $9 - local.get $10 - call $~lib/string/String.__eq - end - local.set $11 - local.get $10 - call $~lib/rt/stub/__release - local.get $9 - call $~lib/rt/stub/__release - local.get $11 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -3770,33 +3535,8 @@ local.get $9 call $~lib/number/I32#toString local.tee $9 - call $~lib/rt/stub/__retain - local.set $10 i32.const 480 - call $~lib/rt/stub/__retain - local.set $11 - local.get $10 - i32.eqz - local.get $11 - i32.eqz - i32.or - if (result i32) - local.get $10 - local.get $11 - i32.eq - else - local.get $10 - local.get $11 - call $~lib/string/String.__eq - end - local.set $12 - local.get $11 - call $~lib/rt/stub/__release - local.get $10 - call $~lib/rt/stub/__release - local.get $12 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -3814,33 +3554,8 @@ local.get $10 call $~lib/number/I32#toString local.tee $10 - call $~lib/rt/stub/__retain - local.set $11 i32.const 1872 - call $~lib/rt/stub/__retain - local.set $12 - local.get $11 - i32.eqz - local.get $12 - i32.eqz - i32.or - if (result i32) - local.get $11 - local.get $12 - i32.eq - else - local.get $11 - local.get $12 - call $~lib/string/String.__eq - end - local.set $13 - local.get $12 - call $~lib/rt/stub/__release - local.get $11 - call $~lib/rt/stub/__release - local.get $13 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -3851,8 +3566,8 @@ unreachable end f32.const nan:0x400000 - local.tee $14 - local.get $14 + local.tee $11 + local.get $11 f32.ne i32.eqz if @@ -4124,8 +3839,8 @@ unreachable end f64.const nan:0x8000000000000 - local.tee $15 - local.get $15 + local.tee $12 + local.get $12 f64.ne i32.eqz if diff --git a/tests/compiler/resolve-binary.optimized.wat b/tests/compiler/resolve-binary.optimized.wat index 7f4ed55a78..ab629ed1b0 100644 --- a/tests/compiler/resolve-binary.optimized.wat +++ b/tests/compiler/resolve-binary.optimized.wat @@ -140,7 +140,7 @@ end i32.const 0 ) - (func $~lib/string/String.__eq (; 3 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/string/String#_eq (; 3 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) local.get $0 call $~lib/string/String#get:length @@ -1415,10 +1415,9 @@ end ) (func $start:resolve-binary (; 14 ;) - (local $0 i32) i32.const 1040 i32.const 1040 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -1430,7 +1429,7 @@ end i32.const 1072 i32.const 1072 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -1442,7 +1441,7 @@ end i32.const 1040 i32.const 1040 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -1454,7 +1453,7 @@ end i32.const 1072 i32.const 1072 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -1466,7 +1465,7 @@ end i32.const 1072 i32.const 1072 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -1478,7 +1477,7 @@ end i32.const 1040 i32.const 1040 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -1492,18 +1491,10 @@ i32.const 1072 i32.const 1168 i32.const 1168 - call $~lib/string/String.__eq + call $~lib/string/String#_eq select - local.tee $0 - if (result i32) - local.get $0 - i32.const 1040 - call $~lib/string/String.__eq - else - local.get $0 - i32.const 1040 - i32.eq - end + i32.const 1040 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -1517,18 +1508,10 @@ i32.const 1040 i32.const 1168 i32.const 1168 - call $~lib/string/String.__eq + call $~lib/string/String#_eq select - local.tee $0 - if (result i32) - local.get $0 - i32.const 1072 - call $~lib/string/String.__eq - else - local.get $0 - i32.const 1072 - i32.eq - end + i32.const 1072 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -1546,16 +1529,8 @@ global.set $resolve-binary/a i32.const 1 call $~lib/number/I32#toString - local.tee $0 - if (result i32) - local.get $0 - i32.const 1232 - call $~lib/string/String.__eq - else - local.get $0 - i32.const 1232 - i32.eq - end + i32.const 1232 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -1571,16 +1546,8 @@ global.set $resolve-binary/a global.get $resolve-binary/a call $~lib/number/I32#toString - local.tee $0 - if (result i32) - local.get $0 - i32.const 1264 - call $~lib/string/String.__eq - else - local.get $0 - i32.const 1264 - i32.eq - end + i32.const 1264 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -1596,16 +1563,8 @@ global.set $resolve-binary/a global.get $resolve-binary/a call $~lib/number/I32#toString - local.tee $0 - if (result i32) - local.get $0 - i32.const 1232 - call $~lib/string/String.__eq - else - local.get $0 - i32.const 1232 - i32.eq - end + i32.const 1232 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -1621,16 +1580,8 @@ global.set $resolve-binary/a global.get $resolve-binary/a call $~lib/number/I32#toString - local.tee $0 - if (result i32) - local.get $0 - i32.const 1264 - call $~lib/string/String.__eq - else - local.get $0 - i32.const 1264 - i32.eq - end + i32.const 1264 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -1645,16 +1596,8 @@ f64.const 4 global.set $resolve-binary/f call $~lib/util/number/dtoa - local.tee $0 - if (result i32) - local.get $0 - i32.const 2480 - call $~lib/string/String.__eq - else - local.get $0 - i32.const 2480 - i32.eq - end + i32.const 2480 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -1670,16 +1613,8 @@ global.set $resolve-binary/a i32.const 2 call $~lib/number/I32#toString - local.tee $0 - if (result i32) - local.get $0 - i32.const 1264 - call $~lib/string/String.__eq - else - local.get $0 - i32.const 1264 - i32.eq - end + i32.const 1264 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -1695,16 +1630,8 @@ global.set $resolve-binary/a global.get $resolve-binary/a call $~lib/number/I32#toString - local.tee $0 - if (result i32) - local.get $0 - i32.const 1264 - call $~lib/string/String.__eq - else - local.get $0 - i32.const 1264 - i32.eq - end + i32.const 1264 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -1720,16 +1647,8 @@ global.set $resolve-binary/a global.get $resolve-binary/a call $~lib/number/I32#toString - local.tee $0 - if (result i32) - local.get $0 - i32.const 2512 - call $~lib/string/String.__eq - else - local.get $0 - i32.const 2512 - i32.eq - end + i32.const 2512 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -1745,16 +1664,8 @@ global.set $resolve-binary/a global.get $resolve-binary/a call $~lib/number/I32#toString - local.tee $0 - if (result i32) - local.get $0 - i32.const 1264 - call $~lib/string/String.__eq - else - local.get $0 - i32.const 1264 - i32.eq - end + i32.const 1264 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -1770,16 +1681,8 @@ global.set $resolve-binary/a global.get $resolve-binary/a call $~lib/number/I32#toString - local.tee $0 - if (result i32) - local.get $0 - i32.const 1232 - call $~lib/string/String.__eq - else - local.get $0 - i32.const 1232 - i32.eq - end + i32.const 1232 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -1795,16 +1698,8 @@ global.set $resolve-binary/a global.get $resolve-binary/a call $~lib/number/I32#toString - local.tee $0 - if (result i32) - local.get $0 - i32.const 1232 - call $~lib/string/String.__eq - else - local.get $0 - i32.const 1232 - i32.eq - end + i32.const 1232 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -1820,16 +1715,8 @@ global.set $resolve-binary/a global.get $resolve-binary/a call $~lib/number/I32#toString - local.tee $0 - if (result i32) - local.get $0 - i32.const 2544 - call $~lib/string/String.__eq - else - local.get $0 - i32.const 2544 - i32.eq - end + i32.const 2544 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -1845,16 +1732,8 @@ global.set $resolve-binary/a global.get $resolve-binary/a call $~lib/number/I32#toString - local.tee $0 - if (result i32) - local.get $0 - i32.const 1232 - call $~lib/string/String.__eq - else - local.get $0 - i32.const 1232 - i32.eq - end + i32.const 1232 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -1866,16 +1745,8 @@ end i32.const 3 call $~lib/number/I32#toString - local.tee $0 - if (result i32) - local.get $0 - i32.const 2544 - call $~lib/string/String.__eq - else - local.get $0 - i32.const 2544 - i32.eq - end + i32.const 2544 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -1887,16 +1758,8 @@ end i32.const -1 call $~lib/number/I32#toString - local.tee $0 - if (result i32) - local.get $0 - i32.const 2576 - call $~lib/string/String.__eq - else - local.get $0 - i32.const 2576 - i32.eq - end + i32.const 2576 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -1908,16 +1771,8 @@ end i32.const 2 call $~lib/number/I32#toString - local.tee $0 - if (result i32) - local.get $0 - i32.const 1264 - call $~lib/string/String.__eq - else - local.get $0 - i32.const 1264 - i32.eq - end + i32.const 1264 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -1929,16 +1784,8 @@ end i32.const 2 call $~lib/number/I32#toString - local.tee $0 - if (result i32) - local.get $0 - i32.const 1264 - call $~lib/string/String.__eq - else - local.get $0 - i32.const 1264 - i32.eq - end + i32.const 1264 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -1950,16 +1797,8 @@ end i32.const 1 call $~lib/number/I32#toString - local.tee $0 - if (result i32) - local.get $0 - i32.const 1232 - call $~lib/string/String.__eq - else - local.get $0 - i32.const 1232 - i32.eq - end + i32.const 1232 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -1970,16 +1809,8 @@ unreachable end call $~lib/util/number/dtoa - local.tee $0 - if (result i32) - local.get $0 - i32.const 2480 - call $~lib/string/String.__eq - else - local.get $0 - i32.const 2480 - i32.eq - end + i32.const 2480 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -1991,16 +1822,8 @@ end i32.const 4 call $~lib/number/I32#toString - local.tee $0 - if (result i32) - local.get $0 - i32.const 2512 - call $~lib/string/String.__eq - else - local.get $0 - i32.const 2512 - i32.eq - end + i32.const 2512 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -2012,16 +1835,8 @@ end i32.const 1 call $~lib/number/I32#toString - local.tee $0 - if (result i32) - local.get $0 - i32.const 1232 - call $~lib/string/String.__eq - else - local.get $0 - i32.const 1232 - i32.eq - end + i32.const 1232 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -2033,16 +1848,8 @@ end i32.const 3 call $~lib/number/I32#toString - local.tee $0 - if (result i32) - local.get $0 - i32.const 2544 - call $~lib/string/String.__eq - else - local.get $0 - i32.const 2544 - i32.eq - end + i32.const 2544 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -2054,16 +1861,8 @@ end i32.const 1 call $~lib/number/I32#toString - local.tee $0 - if (result i32) - local.get $0 - i32.const 1232 - call $~lib/string/String.__eq - else - local.get $0 - i32.const 1232 - i32.eq - end + i32.const 1232 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -2075,16 +1874,8 @@ end i32.const 3 call $~lib/number/I32#toString - local.tee $0 - if (result i32) - local.get $0 - i32.const 2544 - call $~lib/string/String.__eq - else - local.get $0 - i32.const 2544 - i32.eq - end + i32.const 2544 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -2096,16 +1887,8 @@ end i32.const 2 call $~lib/number/I32#toString - local.tee $0 - if (result i32) - local.get $0 - i32.const 1264 - call $~lib/string/String.__eq - else - local.get $0 - i32.const 1264 - i32.eq - end + i32.const 1264 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -2117,16 +1900,8 @@ end i32.const 2 call $~lib/number/I32#toString - local.tee $0 - if (result i32) - local.get $0 - i32.const 1264 - call $~lib/string/String.__eq - else - local.get $0 - i32.const 1264 - i32.eq - end + i32.const 1264 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -2138,16 +1913,8 @@ end i32.const 0 call $~lib/number/I32#toString - local.tee $0 - if (result i32) - local.get $0 - i32.const 1200 - call $~lib/string/String.__eq - else - local.get $0 - i32.const 1200 - i32.eq - end + i32.const 1200 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -2159,16 +1926,8 @@ end i32.const 1 call $~lib/number/I32#toString - local.tee $0 - if (result i32) - local.get $0 - i32.const 1232 - call $~lib/string/String.__eq - else - local.get $0 - i32.const 1232 - i32.eq - end + i32.const 1232 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -2180,16 +1939,8 @@ end i32.const 2 call $~lib/number/I32#toString - local.tee $0 - if (result i32) - local.get $0 - i32.const 1264 - call $~lib/string/String.__eq - else - local.get $0 - i32.const 1264 - i32.eq - end + i32.const 1264 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -2205,7 +1956,7 @@ global.set $resolve-binary/foo i32.const 2608 i32.const 2608 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -2217,7 +1968,7 @@ end i32.const 2640 i32.const 2640 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -2229,7 +1980,7 @@ end i32.const 2672 i32.const 2672 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -2241,7 +1992,7 @@ end i32.const 2704 i32.const 2704 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -2253,7 +2004,7 @@ end i32.const 2736 i32.const 2736 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -2265,7 +2016,7 @@ end i32.const 2768 i32.const 2768 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -2277,7 +2028,7 @@ end i32.const 2800 i32.const 2800 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -2289,7 +2040,7 @@ end i32.const 2832 i32.const 2832 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -2301,7 +2052,7 @@ end i32.const 2864 i32.const 2864 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -2313,7 +2064,7 @@ end i32.const 2896 i32.const 2896 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -2325,7 +2076,7 @@ end i32.const 2928 i32.const 2928 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -2337,7 +2088,7 @@ end i32.const 2960 i32.const 2960 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 diff --git a/tests/compiler/resolve-binary.untouched.wat b/tests/compiler/resolve-binary.untouched.wat index ac27c33a21..edd0ca62b5 100644 --- a/tests/compiler/resolve-binary.untouched.wat +++ b/tests/compiler/resolve-binary.untouched.wat @@ -212,12 +212,9 @@ call $~lib/rt/stub/__release local.get $7 ) - (func $~lib/string/String.__eq (; 6 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/string/String#_eq (; 6 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) - local.get $0 - call $~lib/rt/stub/__retain - local.set $0 local.get $1 call $~lib/rt/stub/__retain local.set $1 @@ -231,8 +228,6 @@ if i32.const 0 local.set $3 - local.get $0 - call $~lib/rt/stub/__release local.get $1 call $~lib/rt/stub/__release local.get $3 @@ -246,13 +241,25 @@ call $~lib/util/string/compareImpl i32.eqz local.set $3 - local.get $0 - call $~lib/rt/stub/__release local.get $1 call $~lib/rt/stub/__release local.get $3 ) - (func $~lib/util/number/decimalCount32 (; 7 ;) (param $0 i32) (result i32) + (func $~lib/string/String#_ne (; 7 ;) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $1 + call $~lib/rt/stub/__retain + local.set $1 + local.get $0 + local.get $1 + call $~lib/string/String#_eq + i32.eqz + local.set $2 + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + ) + (func $~lib/util/number/decimalCount32 (; 8 ;) (param $0 i32) (result i32) local.get $0 i32.const 100000 i32.lt_u @@ -307,7 +314,7 @@ end unreachable ) - (func $~lib/rt/stub/maybeGrowMemory (; 8 ;) (param $0 i32) + (func $~lib/rt/stub/maybeGrowMemory (; 9 ;) (param $0 i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -361,7 +368,7 @@ local.get $0 global.set $~lib/rt/stub/offset ) - (func $~lib/rt/stub/__alloc (; 9 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/rt/stub/__alloc (; 10 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -414,7 +421,7 @@ i32.store offset=12 local.get $2 ) - (func $~lib/util/number/utoa32_lut (; 10 ;) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/util/number/utoa32_lut (; 11 ;) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -554,7 +561,7 @@ i32.store16 end ) - (func $~lib/util/number/itoa32 (; 11 ;) (param $0 i32) (result i32) + (func $~lib/util/number/itoa32 (; 12 ;) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -608,16 +615,16 @@ local.get $3 call $~lib/rt/stub/__retain ) - (func $~lib/util/number/itoa (; 12 ;) (param $0 i32) (result i32) + (func $~lib/util/number/itoa (; 13 ;) (param $0 i32) (result i32) local.get $0 call $~lib/util/number/itoa32 return ) - (func $~lib/number/I32#toString (; 13 ;) (param $0 i32) (result i32) + (func $~lib/number/I32#toString (; 14 ;) (param $0 i32) (result i32) local.get $0 call $~lib/util/number/itoa ) - (func $~lib/math/NativeMath.pow (; 14 ;) (param $0 f64) (param $1 f64) (result f64) + (func $~lib/math/NativeMath.pow (; 15 ;) (param $0 f64) (param $1 f64) (result f64) (local $2 f64) (local $3 f64) (local $4 i32) @@ -1577,7 +1584,7 @@ end return ) - (func $~lib/util/number/genDigits (; 15 ;) (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 (; 16 ;) (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) @@ -2080,7 +2087,7 @@ end unreachable ) - (func $~lib/util/memory/memcpy (; 16 ;) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/util/memory/memcpy (; 17 ;) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -3104,7 +3111,7 @@ i32.store8 end ) - (func $~lib/memory/memory.copy (; 17 ;) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/memory/memory.copy (; 18 ;) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -3324,7 +3331,7 @@ end end ) - (func $~lib/util/number/prettify (; 18 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/util/number/prettify (; 19 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -3641,7 +3648,7 @@ end unreachable ) - (func $~lib/util/number/dtoa_core (; 19 ;) (param $0 i32) (param $1 f64) (result i32) + (func $~lib/util/number/dtoa_core (; 20 ;) (param $0 i32) (param $1 f64) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -4067,7 +4074,7 @@ local.get $2 i32.add ) - (func $~lib/string/String#substring (; 20 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/string/String#substring (; 21 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -4174,7 +4181,7 @@ local.get $11 call $~lib/rt/stub/__retain ) - (func $~lib/rt/stub/__free (; 21 ;) (param $0 i32) + (func $~lib/rt/stub/__free (; 22 ;) (param $0 i32) (local $1 i32) local.get $0 i32.const 0 @@ -4224,7 +4231,7 @@ global.set $~lib/rt/stub/offset end ) - (func $~lib/util/number/dtoa (; 22 ;) (param $0 f64) (result i32) + (func $~lib/util/number/dtoa (; 23 ;) (param $0 f64) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -4285,11 +4292,11 @@ call $~lib/rt/stub/__free local.get $3 ) - (func $~lib/number/F64#toString (; 23 ;) (param $0 f64) (param $1 i32) (result i32) + (func $~lib/number/F64#toString (; 24 ;) (param $0 f64) (param $1 i32) (result i32) local.get $0 call $~lib/util/number/dtoa ) - (func $resolve-binary/Foo#constructor (; 24 ;) (param $0 i32) (result i32) + (func $resolve-binary/Foo#constructor (; 25 ;) (param $0 i32) (result i32) local.get $0 i32.eqz if @@ -4301,7 +4308,7 @@ end local.get $0 ) - (func $resolve-binary/Foo#lt (; 25 ;) (param $0 i32) (param $1 i32) (result i32) + (func $resolve-binary/Foo#lt (; 26 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) local.get $1 call $~lib/rt/stub/__retain @@ -4312,11 +4319,11 @@ call $~lib/rt/stub/__release local.get $2 ) - (func $~lib/string/String#toString (; 26 ;) (param $0 i32) (result i32) + (func $~lib/string/String#toString (; 27 ;) (param $0 i32) (result i32) local.get $0 call $~lib/rt/stub/__retain ) - (func $resolve-binary/Foo#gt (; 27 ;) (param $0 i32) (param $1 i32) (result i32) + (func $resolve-binary/Foo#gt (; 28 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) local.get $1 call $~lib/rt/stub/__retain @@ -4327,7 +4334,7 @@ call $~lib/rt/stub/__release local.get $2 ) - (func $resolve-binary/Foo#le (; 28 ;) (param $0 i32) (param $1 i32) (result i32) + (func $resolve-binary/Foo#le (; 29 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) local.get $1 call $~lib/rt/stub/__retain @@ -4338,7 +4345,7 @@ call $~lib/rt/stub/__release local.get $2 ) - (func $resolve-binary/Foo#ge (; 29 ;) (param $0 i32) (param $1 i32) (result i32) + (func $resolve-binary/Foo#ge (; 30 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) local.get $1 call $~lib/rt/stub/__retain @@ -4349,7 +4356,7 @@ call $~lib/rt/stub/__release local.get $2 ) - (func $resolve-binary/Foo#eq (; 30 ;) (param $0 i32) (param $1 i32) (result i32) + (func $resolve-binary/Foo#eq (; 31 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) local.get $1 call $~lib/rt/stub/__retain @@ -4360,7 +4367,7 @@ call $~lib/rt/stub/__release local.get $2 ) - (func $resolve-binary/Foo#ne (; 31 ;) (param $0 i32) (param $1 i32) (result i32) + (func $resolve-binary/Foo#ne (; 32 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) local.get $1 call $~lib/rt/stub/__retain @@ -4371,7 +4378,7 @@ call $~lib/rt/stub/__release local.get $2 ) - (func $resolve-binary/Foo#add (; 32 ;) (param $0 i32) (param $1 i32) (result i32) + (func $resolve-binary/Foo#add (; 33 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) local.get $1 call $~lib/rt/stub/__retain @@ -4382,7 +4389,7 @@ call $~lib/rt/stub/__release local.get $2 ) - (func $resolve-binary/Foo.sub (; 33 ;) (param $0 i32) (param $1 i32) (result i32) + (func $resolve-binary/Foo.sub (; 34 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) local.get $0 call $~lib/rt/stub/__retain @@ -4398,7 +4405,7 @@ call $~lib/rt/stub/__release local.get $2 ) - (func $resolve-binary/Foo#mul (; 34 ;) (param $0 i32) (param $1 i32) (result i32) + (func $resolve-binary/Foo#mul (; 35 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) local.get $1 call $~lib/rt/stub/__retain @@ -4409,7 +4416,7 @@ call $~lib/rt/stub/__release local.get $2 ) - (func $resolve-binary/Foo#div (; 35 ;) (param $0 i32) (param $1 i32) (result i32) + (func $resolve-binary/Foo#div (; 36 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) local.get $1 call $~lib/rt/stub/__retain @@ -4420,7 +4427,7 @@ call $~lib/rt/stub/__release local.get $2 ) - (func $resolve-binary/Foo#rem (; 36 ;) (param $0 i32) (param $1 i32) (result i32) + (func $resolve-binary/Foo#rem (; 37 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) local.get $1 call $~lib/rt/stub/__retain @@ -4431,7 +4438,7 @@ call $~lib/rt/stub/__release local.get $2 ) - (func $resolve-binary/Foo#pow (; 37 ;) (param $0 i32) (param $1 i32) (result i32) + (func $resolve-binary/Foo#pow (; 38 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) local.get $1 call $~lib/rt/stub/__retain @@ -4442,7 +4449,7 @@ call $~lib/rt/stub/__release local.get $2 ) - (func $resolve-binary/Bar#constructor (; 38 ;) (param $0 i32) (result i32) + (func $resolve-binary/Bar#constructor (; 39 ;) (param $0 i32) (result i32) local.get $0 i32.eqz if @@ -4454,17 +4461,17 @@ end local.get $0 ) - (func $resolve-binary/Bar#add (; 39 ;) (param $0 i32) (param $1 i32) (result i32) + (func $resolve-binary/Bar#add (; 40 ;) (param $0 i32) (param $1 i32) (result i32) local.get $1 call $~lib/rt/stub/__retain local.set $1 local.get $1 ) - (func $resolve-binary/Bar#self (; 40 ;) (param $0 i32) (result i32) + (func $resolve-binary/Bar#self (; 41 ;) (param $0 i32) (result i32) local.get $0 call $~lib/rt/stub/__retain ) - (func $start:resolve-binary (; 41 ;) + (func $start:resolve-binary (; 42 ;) (local $0 i32) (local $1 i32) (local $2 i32) @@ -4532,33 +4539,8 @@ i32.const 1 call $~lib/number/Bool#toString local.tee $0 - call $~lib/rt/stub/__retain - local.set $2 i32.const 32 - call $~lib/rt/stub/__retain - local.set $1 - local.get $2 - i32.eqz - local.get $1 - i32.eqz - i32.or - if (result i32) - local.get $2 - local.get $1 - i32.eq - else - local.get $2 - local.get $1 - call $~lib/string/String.__eq - end - local.set $3 - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - call $~lib/rt/stub/__release - local.get $3 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -4570,34 +4552,9 @@ end i32.const 0 call $~lib/number/Bool#toString - local.tee $2 - call $~lib/rt/stub/__retain - local.set $1 + local.tee $1 i32.const 64 - call $~lib/rt/stub/__retain - local.set $3 - local.get $1 - i32.eqz - local.get $3 - i32.eqz - i32.or - if (result i32) - local.get $1 - local.get $3 - i32.eq - else - local.get $1 - local.get $3 - call $~lib/string/String.__eq - end - local.set $4 - local.get $3 - call $~lib/rt/stub/__release - local.get $1 - call $~lib/rt/stub/__release - local.get $4 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -4609,34 +4566,9 @@ end i32.const 1 call $~lib/number/Bool#toString - local.tee $1 - call $~lib/rt/stub/__retain - local.set $3 + local.tee $2 i32.const 32 - call $~lib/rt/stub/__retain - local.set $4 - local.get $3 - i32.eqz - local.get $4 - i32.eqz - i32.or - if (result i32) - local.get $3 - local.get $4 - i32.eq - else - local.get $3 - local.get $4 - call $~lib/string/String.__eq - end - local.set $5 - local.get $4 - call $~lib/rt/stub/__release - local.get $3 - call $~lib/rt/stub/__release - local.get $5 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -4649,33 +4581,8 @@ i32.const 0 call $~lib/number/Bool#toString local.tee $3 - call $~lib/rt/stub/__retain - local.set $4 i32.const 64 - call $~lib/rt/stub/__retain - local.set $5 - local.get $4 - i32.eqz - local.get $5 - i32.eqz - i32.or - if (result i32) - local.get $4 - local.get $5 - i32.eq - else - local.get $4 - local.get $5 - call $~lib/string/String.__eq - end - local.set $6 - local.get $5 - call $~lib/rt/stub/__release - local.get $4 - call $~lib/rt/stub/__release - local.get $6 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -4688,33 +4595,8 @@ i32.const 0 call $~lib/number/Bool#toString local.tee $4 - call $~lib/rt/stub/__retain - local.set $5 i32.const 64 - call $~lib/rt/stub/__retain - local.set $6 - local.get $5 - i32.eqz - local.get $6 - i32.eqz - i32.or - if (result i32) - local.get $5 - local.get $6 - i32.eq - else - local.get $5 - local.get $6 - call $~lib/string/String.__eq - end - local.set $7 - local.get $6 - call $~lib/rt/stub/__release - local.get $5 - call $~lib/rt/stub/__release - local.get $7 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -4727,33 +4609,8 @@ i32.const 1 call $~lib/number/Bool#toString local.tee $5 - call $~lib/rt/stub/__retain - local.set $6 i32.const 32 - call $~lib/rt/stub/__retain - local.set $7 - local.get $6 - i32.eqz - local.get $7 - i32.eqz - i32.or - if (result i32) - local.get $6 - local.get $7 - i32.eq - else - local.get $6 - local.get $7 - call $~lib/string/String.__eq - end - local.set $8 - local.get $7 - call $~lib/rt/stub/__release - local.get $6 - call $~lib/rt/stub/__release - local.get $8 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -4764,60 +4621,12 @@ unreachable end i32.const 160 - call $~lib/rt/stub/__retain - local.set $7 i32.const 160 - call $~lib/rt/stub/__retain - local.set $8 - local.get $7 - i32.eqz - local.get $8 - i32.eqz - i32.or - if (result i32) - local.get $7 - local.get $8 - i32.eq - else - local.get $7 - local.get $8 - call $~lib/string/String.__eq - end - local.set $6 - local.get $8 - call $~lib/rt/stub/__release - local.get $7 - call $~lib/rt/stub/__release - local.get $6 + call $~lib/string/String#_eq call $~lib/number/Bool#toString - local.tee $7 - call $~lib/rt/stub/__retain - local.set $8 + local.tee $6 i32.const 32 - call $~lib/rt/stub/__retain - local.set $6 - local.get $8 - i32.eqz - local.get $6 - i32.eqz - i32.or - if (result i32) - local.get $8 - local.get $6 - i32.eq - else - local.get $8 - local.get $6 - call $~lib/string/String.__eq - end - local.set $9 - local.get $6 - call $~lib/rt/stub/__release - local.get $8 - call $~lib/rt/stub/__release - local.get $9 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -4828,81 +4637,20 @@ unreachable end i32.const 160 - call $~lib/rt/stub/__retain - local.set $6 i32.const 160 - call $~lib/rt/stub/__retain - local.set $9 - local.get $6 - call $~lib/rt/stub/__retain - local.set $10 - local.get $9 - call $~lib/rt/stub/__retain - local.set $8 - local.get $10 - i32.eqz - local.get $8 + call $~lib/string/String#_ne + call $~lib/number/Bool#toString + local.tee $7 + i32.const 64 + call $~lib/string/String#_eq i32.eqz - i32.or - if (result i32) - local.get $10 - local.get $8 - i32.eq - else - local.get $10 - local.get $8 - call $~lib/string/String.__eq - end - local.set $11 - local.get $8 - call $~lib/rt/stub/__release - local.get $10 - call $~lib/rt/stub/__release - local.get $11 - i32.eqz - local.set $10 - local.get $9 - call $~lib/rt/stub/__release - local.get $6 - call $~lib/rt/stub/__release - local.get $10 - call $~lib/number/Bool#toString - local.tee $6 - call $~lib/rt/stub/__retain - local.set $8 - i32.const 64 - call $~lib/rt/stub/__retain - local.set $11 - local.get $8 - i32.eqz - local.get $11 - i32.eqz - i32.or - if (result i32) - local.get $8 - local.get $11 - i32.eq - else - local.get $8 - local.get $11 - call $~lib/string/String.__eq - end - local.set $9 - local.get $11 - call $~lib/rt/stub/__release - local.get $8 - call $~lib/rt/stub/__release - local.get $9 - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 96 - i32.const 39 - i32.const 1 - call $~lib/builtins/abort - unreachable + if + i32.const 0 + i32.const 96 + i32.const 39 + i32.const 1 + call $~lib/builtins/abort + unreachable end global.get $~lib/heap/__heap_base i32.const 15 @@ -4919,33 +4667,8 @@ global.get $resolve-binary/a call $~lib/number/I32#toString local.tee $8 - call $~lib/rt/stub/__retain - local.set $9 i32.const 640 - call $~lib/rt/stub/__retain - local.set $10 - local.get $9 - i32.eqz - local.get $10 - i32.eqz - i32.or - if (result i32) - local.get $9 - local.get $10 - i32.eq - else - local.get $9 - local.get $10 - call $~lib/string/String.__eq - end - local.set $11 - local.get $10 - call $~lib/rt/stub/__release - local.get $9 - call $~lib/rt/stub/__release - local.get $11 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -4962,33 +4685,8 @@ global.get $resolve-binary/a call $~lib/number/I32#toString local.tee $9 - call $~lib/rt/stub/__retain - local.set $10 i32.const 672 - call $~lib/rt/stub/__retain - local.set $11 - local.get $10 - i32.eqz - local.get $11 - i32.eqz - i32.or - if (result i32) - local.get $10 - local.get $11 - i32.eq - else - local.get $10 - local.get $11 - call $~lib/string/String.__eq - end - local.set $12 - local.get $11 - call $~lib/rt/stub/__release - local.get $10 - call $~lib/rt/stub/__release - local.get $12 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -5005,33 +4703,8 @@ global.get $resolve-binary/a call $~lib/number/I32#toString local.tee $10 - call $~lib/rt/stub/__retain - local.set $11 i32.const 640 - call $~lib/rt/stub/__retain - local.set $12 - local.get $11 - i32.eqz - local.get $12 - i32.eqz - i32.or - if (result i32) - local.get $11 - local.get $12 - i32.eq - else - local.get $11 - local.get $12 - call $~lib/string/String.__eq - end - local.set $13 - local.get $12 - call $~lib/rt/stub/__release - local.get $11 - call $~lib/rt/stub/__release - local.get $13 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -5048,33 +4721,8 @@ global.get $resolve-binary/a call $~lib/number/I32#toString local.tee $11 - call $~lib/rt/stub/__retain - local.set $12 i32.const 672 - call $~lib/rt/stub/__retain - local.set $13 - local.get $12 - i32.eqz - local.get $13 - i32.eqz - i32.or - if (result i32) - local.get $12 - local.get $13 - i32.eq - else - local.get $12 - local.get $13 - call $~lib/string/String.__eq - end - local.set $14 - local.get $13 - call $~lib/rt/stub/__release - local.get $12 - call $~lib/rt/stub/__release - local.get $14 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -5094,33 +4742,8 @@ i32.const 0 call $~lib/number/F64#toString local.tee $12 - call $~lib/rt/stub/__retain - local.set $13 i32.const 8064 - call $~lib/rt/stub/__retain - local.set $14 - local.get $13 - i32.eqz - local.get $14 - i32.eqz - i32.or - if (result i32) - local.get $13 - local.get $14 - i32.eq - else - local.get $13 - local.get $14 - call $~lib/string/String.__eq - end - local.set $15 - local.get $14 - call $~lib/rt/stub/__release - local.get $13 - call $~lib/rt/stub/__release - local.get $15 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -5139,33 +4762,8 @@ global.get $resolve-binary/a call $~lib/number/I32#toString local.tee $13 - call $~lib/rt/stub/__retain - local.set $14 i32.const 672 - call $~lib/rt/stub/__retain - local.set $15 - local.get $14 - i32.eqz - local.get $15 - i32.eqz - i32.or - if (result i32) - local.get $14 - local.get $15 - i32.eq - else - local.get $14 - local.get $15 - call $~lib/string/String.__eq - end - local.set $16 - local.get $15 - call $~lib/rt/stub/__release - local.get $14 - call $~lib/rt/stub/__release - local.get $16 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -5182,33 +4780,8 @@ global.get $resolve-binary/a call $~lib/number/I32#toString local.tee $14 - call $~lib/rt/stub/__retain - local.set $15 i32.const 672 - call $~lib/rt/stub/__retain - local.set $16 - local.get $15 - i32.eqz - local.get $16 - i32.eqz - i32.or - if (result i32) - local.get $15 - local.get $16 - i32.eq - else - local.get $15 - local.get $16 - call $~lib/string/String.__eq - end - local.set $17 - local.get $16 - call $~lib/rt/stub/__release - local.get $15 - call $~lib/rt/stub/__release - local.get $17 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -5225,33 +4798,8 @@ global.get $resolve-binary/a call $~lib/number/I32#toString local.tee $15 - call $~lib/rt/stub/__retain - local.set $16 i32.const 8096 - call $~lib/rt/stub/__retain - local.set $17 - local.get $16 - i32.eqz - local.get $17 - i32.eqz - i32.or - if (result i32) - local.get $16 - local.get $17 - i32.eq - else - local.get $16 - local.get $17 - call $~lib/string/String.__eq - end - local.set $18 - local.get $17 - call $~lib/rt/stub/__release - local.get $16 - call $~lib/rt/stub/__release - local.get $18 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -5268,33 +4816,8 @@ global.get $resolve-binary/a call $~lib/number/I32#toString local.tee $16 - call $~lib/rt/stub/__retain - local.set $17 i32.const 672 - call $~lib/rt/stub/__retain - local.set $18 - local.get $17 - i32.eqz - local.get $18 - i32.eqz - i32.or - if (result i32) - local.get $17 - local.get $18 - i32.eq - else - local.get $17 - local.get $18 - call $~lib/string/String.__eq - end - local.set $19 - local.get $18 - call $~lib/rt/stub/__release - local.get $17 - call $~lib/rt/stub/__release - local.get $19 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -5311,33 +4834,8 @@ global.get $resolve-binary/a call $~lib/number/I32#toString local.tee $17 - call $~lib/rt/stub/__retain - local.set $18 i32.const 640 - call $~lib/rt/stub/__retain - local.set $19 - local.get $18 - i32.eqz - local.get $19 - i32.eqz - i32.or - if (result i32) - local.get $18 - local.get $19 - i32.eq - else - local.get $18 - local.get $19 - call $~lib/string/String.__eq - end - local.set $20 - local.get $19 - call $~lib/rt/stub/__release - local.get $18 - call $~lib/rt/stub/__release - local.get $20 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -5354,33 +4852,8 @@ global.get $resolve-binary/a call $~lib/number/I32#toString local.tee $18 - call $~lib/rt/stub/__retain - local.set $19 i32.const 640 - call $~lib/rt/stub/__retain - local.set $20 - local.get $19 - i32.eqz - local.get $20 - i32.eqz - i32.or - if (result i32) - local.get $19 - local.get $20 - i32.eq - else - local.get $19 - local.get $20 - call $~lib/string/String.__eq - end - local.set $21 - local.get $20 - call $~lib/rt/stub/__release - local.get $19 - call $~lib/rt/stub/__release - local.get $21 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -5397,33 +4870,8 @@ global.get $resolve-binary/a call $~lib/number/I32#toString local.tee $19 - call $~lib/rt/stub/__retain - local.set $20 i32.const 8128 - call $~lib/rt/stub/__retain - local.set $21 - local.get $20 - i32.eqz - local.get $21 - i32.eqz - i32.or - if (result i32) - local.get $20 - local.get $21 - i32.eq - else - local.get $20 - local.get $21 - call $~lib/string/String.__eq - end - local.set $22 - local.get $21 - call $~lib/rt/stub/__release - local.get $20 - call $~lib/rt/stub/__release - local.get $22 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -5440,33 +4888,8 @@ global.get $resolve-binary/a call $~lib/number/I32#toString local.tee $20 - call $~lib/rt/stub/__retain - local.set $21 i32.const 640 - call $~lib/rt/stub/__retain - local.set $22 - local.get $21 - i32.eqz - local.get $22 - i32.eqz - i32.or - if (result i32) - local.get $21 - local.get $22 - i32.eq - else - local.get $21 - local.get $22 - call $~lib/string/String.__eq - end - local.set $23 - local.get $22 - call $~lib/rt/stub/__release - local.get $21 - call $~lib/rt/stub/__release - local.get $23 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -5479,33 +4902,8 @@ i32.const 3 call $~lib/number/I32#toString local.tee $21 - call $~lib/rt/stub/__retain - local.set $22 i32.const 8128 - call $~lib/rt/stub/__retain - local.set $23 - local.get $22 - i32.eqz - local.get $23 - i32.eqz - i32.or - if (result i32) - local.get $22 - local.get $23 - i32.eq - else - local.get $22 - local.get $23 - call $~lib/string/String.__eq - end - local.set $24 - local.get $23 - call $~lib/rt/stub/__release - local.get $22 - call $~lib/rt/stub/__release - local.get $24 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -5518,33 +4916,8 @@ i32.const -1 call $~lib/number/I32#toString local.tee $22 - call $~lib/rt/stub/__retain - local.set $23 i32.const 8160 - call $~lib/rt/stub/__retain - local.set $24 - local.get $23 - i32.eqz - local.get $24 - i32.eqz - i32.or - if (result i32) - local.get $23 - local.get $24 - i32.eq - else - local.get $23 - local.get $24 - call $~lib/string/String.__eq - end - local.set $25 - local.get $24 - call $~lib/rt/stub/__release - local.get $23 - call $~lib/rt/stub/__release - local.get $25 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -5557,33 +4930,8 @@ i32.const 2 call $~lib/number/I32#toString local.tee $23 - call $~lib/rt/stub/__retain - local.set $24 i32.const 672 - call $~lib/rt/stub/__retain - local.set $25 - local.get $24 - i32.eqz - local.get $25 - i32.eqz - i32.or - if (result i32) - local.get $24 - local.get $25 - i32.eq - else - local.get $24 - local.get $25 - call $~lib/string/String.__eq - end - local.set $26 - local.get $25 - call $~lib/rt/stub/__release - local.get $24 - call $~lib/rt/stub/__release - local.get $26 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -5596,33 +4944,8 @@ i32.const 2 call $~lib/number/I32#toString local.tee $24 - call $~lib/rt/stub/__retain - local.set $25 i32.const 672 - call $~lib/rt/stub/__retain - local.set $26 - local.get $25 - i32.eqz - local.get $26 - i32.eqz - i32.or - if (result i32) - local.get $25 - local.get $26 - i32.eq - else - local.get $25 - local.get $26 - call $~lib/string/String.__eq - end - local.set $27 - local.get $26 - call $~lib/rt/stub/__release - local.get $25 - call $~lib/rt/stub/__release - local.get $27 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -5635,33 +4958,8 @@ i32.const 1 call $~lib/number/I32#toString local.tee $25 - call $~lib/rt/stub/__retain - local.set $26 i32.const 640 - call $~lib/rt/stub/__retain - local.set $27 - local.get $26 - i32.eqz - local.get $27 - i32.eqz - i32.or - if (result i32) - local.get $26 - local.get $27 - i32.eq - else - local.get $26 - local.get $27 - call $~lib/string/String.__eq - end - local.set $28 - local.get $27 - call $~lib/rt/stub/__release - local.get $26 - call $~lib/rt/stub/__release - local.get $28 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -5677,33 +4975,8 @@ i32.const 0 call $~lib/number/F64#toString local.tee $26 - call $~lib/rt/stub/__retain - local.set $27 i32.const 8064 - call $~lib/rt/stub/__retain - local.set $28 - local.get $27 - i32.eqz - local.get $28 - i32.eqz - i32.or - if (result i32) - local.get $27 - local.get $28 - i32.eq - else - local.get $27 - local.get $28 - call $~lib/string/String.__eq - end - local.set $29 - local.get $28 - call $~lib/rt/stub/__release - local.get $27 - call $~lib/rt/stub/__release - local.get $29 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -5716,33 +4989,8 @@ i32.const 4 call $~lib/number/I32#toString local.tee $27 - call $~lib/rt/stub/__retain - local.set $28 i32.const 8096 - call $~lib/rt/stub/__retain - local.set $29 - local.get $28 - i32.eqz - local.get $29 - i32.eqz - i32.or - if (result i32) - local.get $28 - local.get $29 - i32.eq - else - local.get $28 - local.get $29 - call $~lib/string/String.__eq - end - local.set $30 - local.get $29 - call $~lib/rt/stub/__release - local.get $28 - call $~lib/rt/stub/__release - local.get $30 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -5755,33 +5003,8 @@ i32.const 1 call $~lib/number/I32#toString local.tee $28 - call $~lib/rt/stub/__retain - local.set $29 i32.const 640 - call $~lib/rt/stub/__retain - local.set $30 - local.get $29 - i32.eqz - local.get $30 - i32.eqz - i32.or - if (result i32) - local.get $29 - local.get $30 - i32.eq - else - local.get $29 - local.get $30 - call $~lib/string/String.__eq - end - local.set $31 - local.get $30 - call $~lib/rt/stub/__release - local.get $29 - call $~lib/rt/stub/__release - local.get $31 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -5794,33 +5017,8 @@ i32.const 3 call $~lib/number/I32#toString local.tee $29 - call $~lib/rt/stub/__retain - local.set $30 i32.const 8128 - call $~lib/rt/stub/__retain - local.set $31 - local.get $30 - i32.eqz - local.get $31 - i32.eqz - i32.or - if (result i32) - local.get $30 - local.get $31 - i32.eq - else - local.get $30 - local.get $31 - call $~lib/string/String.__eq - end - local.set $32 - local.get $31 - call $~lib/rt/stub/__release - local.get $30 - call $~lib/rt/stub/__release - local.get $32 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -5833,33 +5031,8 @@ i32.const 1 call $~lib/number/I32#toString local.tee $30 - call $~lib/rt/stub/__retain - local.set $31 i32.const 640 - call $~lib/rt/stub/__retain - local.set $32 - local.get $31 - i32.eqz - local.get $32 - i32.eqz - i32.or - if (result i32) - local.get $31 - local.get $32 - i32.eq - else - local.get $31 - local.get $32 - call $~lib/string/String.__eq - end - local.set $33 - local.get $32 - call $~lib/rt/stub/__release - local.get $31 - call $~lib/rt/stub/__release - local.get $33 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -5872,33 +5045,8 @@ i32.const 3 call $~lib/number/I32#toString local.tee $31 - call $~lib/rt/stub/__retain - local.set $32 i32.const 8128 - call $~lib/rt/stub/__retain - local.set $33 - local.get $32 - i32.eqz - local.get $33 - i32.eqz - i32.or - if (result i32) - local.get $32 - local.get $33 - i32.eq - else - local.get $32 - local.get $33 - call $~lib/string/String.__eq - end - local.set $34 - local.get $33 - call $~lib/rt/stub/__release - local.get $32 - call $~lib/rt/stub/__release - local.get $34 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -5911,33 +5059,8 @@ i32.const 2 call $~lib/number/I32#toString local.tee $32 - call $~lib/rt/stub/__retain - local.set $33 i32.const 672 - call $~lib/rt/stub/__retain - local.set $34 - local.get $33 - i32.eqz - local.get $34 - i32.eqz - i32.or - if (result i32) - local.get $33 - local.get $34 - i32.eq - else - local.get $33 - local.get $34 - call $~lib/string/String.__eq - end - local.set $35 - local.get $34 - call $~lib/rt/stub/__release - local.get $33 - call $~lib/rt/stub/__release - local.get $35 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -5950,33 +5073,8 @@ i32.const 2 call $~lib/number/I32#toString local.tee $33 - call $~lib/rt/stub/__retain - local.set $34 i32.const 672 - call $~lib/rt/stub/__retain - local.set $35 - local.get $34 - i32.eqz - local.get $35 - i32.eqz - i32.or - if (result i32) - local.get $34 - local.get $35 - i32.eq - else - local.get $34 - local.get $35 - call $~lib/string/String.__eq - end - local.set $36 - local.get $35 - call $~lib/rt/stub/__release - local.get $34 - call $~lib/rt/stub/__release - local.get $36 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -5989,33 +5087,8 @@ i32.const 0 call $~lib/number/I32#toString local.tee $34 - call $~lib/rt/stub/__retain - local.set $35 i32.const 192 - call $~lib/rt/stub/__retain - local.set $36 - local.get $35 - i32.eqz - local.get $36 - i32.eqz - i32.or - if (result i32) - local.get $35 - local.get $36 - i32.eq - else - local.get $35 - local.get $36 - call $~lib/string/String.__eq - end - local.set $37 - local.get $36 - call $~lib/rt/stub/__release - local.get $35 - call $~lib/rt/stub/__release - local.get $37 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -6028,33 +5101,8 @@ i32.const 1 call $~lib/number/I32#toString local.tee $35 - call $~lib/rt/stub/__retain - local.set $36 i32.const 640 - call $~lib/rt/stub/__retain - local.set $37 - local.get $36 - i32.eqz - local.get $37 - i32.eqz - i32.or - if (result i32) - local.get $36 - local.get $37 - i32.eq - else - local.get $36 - local.get $37 - call $~lib/string/String.__eq - end - local.set $38 - local.get $37 - call $~lib/rt/stub/__release - local.get $36 - call $~lib/rt/stub/__release - local.get $38 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -6067,33 +5115,8 @@ i32.const 2 call $~lib/number/I32#toString local.tee $36 - call $~lib/rt/stub/__retain - local.set $37 i32.const 672 - call $~lib/rt/stub/__retain - local.set $38 - local.get $37 - i32.eqz - local.get $38 - i32.eqz - i32.or - if (result i32) - local.get $37 - local.get $38 - i32.eq - else - local.get $37 - local.get $38 - call $~lib/string/String.__eq - end - local.set $39 - local.get $38 - call $~lib/rt/stub/__release - local.get $37 - call $~lib/rt/stub/__release - local.get $39 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -6112,33 +5135,8 @@ local.tee $37 call $~lib/string/String#toString local.tee $38 - call $~lib/rt/stub/__retain - local.set $40 i32.const 8192 - call $~lib/rt/stub/__retain - local.set $39 - local.get $40 - i32.eqz - local.get $39 - i32.eqz - i32.or - if (result i32) - local.get $40 - local.get $39 - i32.eq - else - local.get $40 - local.get $39 - call $~lib/string/String.__eq - end - local.set $41 - local.get $39 - call $~lib/rt/stub/__release - local.get $40 - call $~lib/rt/stub/__release - local.get $41 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -6151,36 +5149,11 @@ global.get $resolve-binary/foo global.get $resolve-binary/foo call $resolve-binary/Foo#gt - local.tee $40 - call $~lib/string/String#toString local.tee $39 - call $~lib/rt/stub/__retain - local.set $42 + call $~lib/string/String#toString + local.tee $40 i32.const 8224 - call $~lib/rt/stub/__retain - local.set $41 - local.get $42 - i32.eqz - local.get $41 - i32.eqz - i32.or - if (result i32) - local.get $42 - local.get $41 - i32.eq - else - local.get $42 - local.get $41 - call $~lib/string/String.__eq - end - local.set $43 - local.get $41 - call $~lib/rt/stub/__release - local.get $42 - call $~lib/rt/stub/__release - local.get $43 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -6193,36 +5166,11 @@ global.get $resolve-binary/foo global.get $resolve-binary/foo call $resolve-binary/Foo#le - local.tee $42 - call $~lib/string/String#toString local.tee $41 - call $~lib/rt/stub/__retain - local.set $44 + call $~lib/string/String#toString + local.tee $42 i32.const 8256 - call $~lib/rt/stub/__retain - local.set $43 - local.get $44 - i32.eqz - local.get $43 - i32.eqz - i32.or - if (result i32) - local.get $44 - local.get $43 - i32.eq - else - local.get $44 - local.get $43 - call $~lib/string/String.__eq - end - local.set $45 - local.get $43 - call $~lib/rt/stub/__release - local.get $44 - call $~lib/rt/stub/__release - local.get $45 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -6235,36 +5183,11 @@ global.get $resolve-binary/foo global.get $resolve-binary/foo call $resolve-binary/Foo#ge - local.tee $44 - call $~lib/string/String#toString local.tee $43 - call $~lib/rt/stub/__retain - local.set $46 + call $~lib/string/String#toString + local.tee $44 i32.const 8288 - call $~lib/rt/stub/__retain - local.set $45 - local.get $46 - i32.eqz - local.get $45 - i32.eqz - i32.or - if (result i32) - local.get $46 - local.get $45 - i32.eq - else - local.get $46 - local.get $45 - call $~lib/string/String.__eq - end - local.set $47 - local.get $45 - call $~lib/rt/stub/__release - local.get $46 - call $~lib/rt/stub/__release - local.get $47 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -6277,36 +5200,11 @@ global.get $resolve-binary/foo global.get $resolve-binary/foo call $resolve-binary/Foo#eq - local.tee $46 - call $~lib/string/String#toString local.tee $45 - call $~lib/rt/stub/__retain - local.set $48 + call $~lib/string/String#toString + local.tee $46 i32.const 8320 - call $~lib/rt/stub/__retain - local.set $47 - local.get $48 - i32.eqz - local.get $47 - i32.eqz - i32.or - if (result i32) - local.get $48 - local.get $47 - i32.eq - else - local.get $48 - local.get $47 - call $~lib/string/String.__eq - end - local.set $49 - local.get $47 - call $~lib/rt/stub/__release - local.get $48 - call $~lib/rt/stub/__release - local.get $49 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -6319,36 +5217,11 @@ global.get $resolve-binary/foo global.get $resolve-binary/foo call $resolve-binary/Foo#ne - local.tee $48 - call $~lib/string/String#toString local.tee $47 - call $~lib/rt/stub/__retain - local.set $50 + call $~lib/string/String#toString + local.tee $48 i32.const 8352 - call $~lib/rt/stub/__retain - local.set $49 - local.get $50 - i32.eqz - local.get $49 - i32.eqz - i32.or - if (result i32) - local.get $50 - local.get $49 - i32.eq - else - local.get $50 - local.get $49 - call $~lib/string/String.__eq - end - local.set $51 - local.get $49 - call $~lib/rt/stub/__release - local.get $50 - call $~lib/rt/stub/__release - local.get $51 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -6361,36 +5234,11 @@ global.get $resolve-binary/foo global.get $resolve-binary/foo call $resolve-binary/Foo#add - local.tee $50 - call $~lib/string/String#toString local.tee $49 - call $~lib/rt/stub/__retain - local.set $52 + call $~lib/string/String#toString + local.tee $50 i32.const 8384 - call $~lib/rt/stub/__retain - local.set $51 - local.get $52 - i32.eqz - local.get $51 - i32.eqz - i32.or - if (result i32) - local.get $52 - local.get $51 - i32.eq - else - local.get $52 - local.get $51 - call $~lib/string/String.__eq - end - local.set $53 - local.get $51 - call $~lib/rt/stub/__release - local.get $52 - call $~lib/rt/stub/__release - local.get $53 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -6403,36 +5251,11 @@ global.get $resolve-binary/foo global.get $resolve-binary/foo call $resolve-binary/Foo.sub - local.tee $52 - call $~lib/string/String#toString local.tee $51 - call $~lib/rt/stub/__retain - local.set $54 + call $~lib/string/String#toString + local.tee $52 i32.const 8416 - call $~lib/rt/stub/__retain - local.set $53 - local.get $54 - i32.eqz - local.get $53 - i32.eqz - i32.or - if (result i32) - local.get $54 - local.get $53 - i32.eq - else - local.get $54 - local.get $53 - call $~lib/string/String.__eq - end - local.set $55 - local.get $53 - call $~lib/rt/stub/__release - local.get $54 - call $~lib/rt/stub/__release - local.get $55 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -6445,36 +5268,11 @@ global.get $resolve-binary/foo global.get $resolve-binary/foo call $resolve-binary/Foo#mul - local.tee $54 - call $~lib/string/String#toString local.tee $53 - call $~lib/rt/stub/__retain - local.set $56 + call $~lib/string/String#toString + local.tee $54 i32.const 8448 - call $~lib/rt/stub/__retain - local.set $55 - local.get $56 - i32.eqz - local.get $55 - i32.eqz - i32.or - if (result i32) - local.get $56 - local.get $55 - i32.eq - else - local.get $56 - local.get $55 - call $~lib/string/String.__eq - end - local.set $57 - local.get $55 - call $~lib/rt/stub/__release - local.get $56 - call $~lib/rt/stub/__release - local.get $57 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -6487,36 +5285,11 @@ global.get $resolve-binary/foo global.get $resolve-binary/foo call $resolve-binary/Foo#div - local.tee $56 - call $~lib/string/String#toString local.tee $55 - call $~lib/rt/stub/__retain - local.set $58 + call $~lib/string/String#toString + local.tee $56 i32.const 8480 - call $~lib/rt/stub/__retain - local.set $57 - local.get $58 - i32.eqz - local.get $57 - i32.eqz - i32.or - if (result i32) - local.get $58 - local.get $57 - i32.eq - else - local.get $58 - local.get $57 - call $~lib/string/String.__eq - end - local.set $59 - local.get $57 - call $~lib/rt/stub/__release - local.get $58 - call $~lib/rt/stub/__release - local.get $59 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -6529,36 +5302,11 @@ global.get $resolve-binary/foo global.get $resolve-binary/foo call $resolve-binary/Foo#rem - local.tee $58 - call $~lib/string/String#toString local.tee $57 - call $~lib/rt/stub/__retain - local.set $60 + call $~lib/string/String#toString + local.tee $58 i32.const 8512 - call $~lib/rt/stub/__retain - local.set $59 - local.get $60 - i32.eqz - local.get $59 - i32.eqz - i32.or - if (result i32) - local.get $60 - local.get $59 - i32.eq - else - local.get $60 - local.get $59 - call $~lib/string/String.__eq - end - local.set $61 - local.get $59 - call $~lib/rt/stub/__release - local.get $60 - call $~lib/rt/stub/__release - local.get $61 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -6571,36 +5319,11 @@ global.get $resolve-binary/foo global.get $resolve-binary/foo call $resolve-binary/Foo#pow - local.tee $60 - call $~lib/string/String#toString local.tee $59 - call $~lib/rt/stub/__retain - local.set $62 + call $~lib/string/String#toString + local.tee $60 i32.const 8544 - call $~lib/rt/stub/__retain - local.set $61 - local.get $62 - i32.eqz - local.get $61 - i32.eqz - i32.or - if (result i32) - local.get $62 - local.get $61 - i32.eq - else - local.get $62 - local.get $61 - call $~lib/string/String.__eq - end - local.set $63 - local.get $61 - call $~lib/rt/stub/__release - local.get $62 - call $~lib/rt/stub/__release - local.get $63 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -6619,23 +5342,23 @@ global.get $resolve-binary/bar global.get $resolve-binary/bar2 call $resolve-binary/Bar#add + local.tee $61 local.tee $62 - local.tee $63 global.get $resolve-binary/bar - local.tee $61 + local.tee $63 i32.ne if - local.get $63 + local.get $62 call $~lib/rt/stub/__retain - local.set $63 - local.get $61 + local.set $62 + local.get $63 call $~lib/rt/stub/__release end - local.get $63 + local.get $62 global.set $resolve-binary/bar global.get $resolve-binary/bar call $resolve-binary/Bar#self - local.tee $63 + local.tee $62 global.get $resolve-binary/bar2 i32.eq i32.eqz @@ -6781,12 +5504,12 @@ call $~lib/rt/stub/__release local.get $60 call $~lib/rt/stub/__release - local.get $62 + local.get $61 call $~lib/rt/stub/__release - local.get $63 + local.get $62 call $~lib/rt/stub/__release ) - (func $~start (; 42 ;) + (func $~start (; 43 ;) call $start:resolve-binary ) ) diff --git a/tests/compiler/resolve-elementaccess.optimized.wat b/tests/compiler/resolve-elementaccess.optimized.wat index aa0180b5df..cc1c80f921 100644 --- a/tests/compiler/resolve-elementaccess.optimized.wat +++ b/tests/compiler/resolve-elementaccess.optimized.wat @@ -1806,7 +1806,7 @@ end i32.const 0 ) - (func $~lib/string/String.__eq (; 16 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/string/String#_eq (; 16 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) local.get $0 call $~lib/string/String#get:length @@ -1916,16 +1916,8 @@ call $~lib/typedarray/Float32Array#__get f64.promote_f32 call $~lib/util/number/dtoa - local.tee $0 - if (result i32) - local.get $0 - i32.const 2464 - call $~lib/string/String.__eq - else - local.get $0 - i32.const 2464 - i32.eq - end + i32.const 2464 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -1940,16 +1932,8 @@ call $~lib/typedarray/Float32Array#__get f64.promote_f32 call $~lib/util/number/dtoa - local.tee $0 - if (result i32) - local.get $0 - i32.const 2560 - call $~lib/string/String.__eq - else - local.get $0 - i32.const 2560 - i32.eq - end + i32.const 2560 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -1973,16 +1957,8 @@ call $~lib/typedarray/Float32Array#__get f64.promote_f32 call $~lib/util/number/dtoa - local.tee $0 - if (result i32) - local.get $0 - i32.const 2592 - call $~lib/string/String.__eq - else - local.get $0 - i32.const 2592 - i32.eq - end + i32.const 2592 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -2040,16 +2016,8 @@ i32.const 0 call $~lib/typedarray/Uint8Array#__get call $~lib/number/U8#toString - local.tee $0 - if (result i32) - local.get $0 - i32.const 2656 - call $~lib/string/String.__eq - else - local.get $0 - i32.const 2656 - i32.eq - end + i32.const 2656 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -2063,16 +2031,8 @@ i32.const 1 call $~lib/typedarray/Uint8Array#__get call $~lib/number/U8#toString - local.tee $0 - if (result i32) - local.get $0 - i32.const 2688 - call $~lib/string/String.__eq - else - local.get $0 - i32.const 2688 - i32.eq - end + i32.const 2688 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -2095,16 +2055,8 @@ i32.const 0 call $~lib/typedarray/Uint8Array#__get call $~lib/number/U8#toString - local.tee $0 - if (result i32) - local.get $0 - i32.const 2720 - call $~lib/string/String.__eq - else - local.get $0 - i32.const 2720 - i32.eq - end + i32.const 2720 + call $~lib/string/String#_eq i32.eqz if i32.const 0 diff --git a/tests/compiler/resolve-elementaccess.untouched.wat b/tests/compiler/resolve-elementaccess.untouched.wat index 4f7a11a30a..3d2d0cb690 100644 --- a/tests/compiler/resolve-elementaccess.untouched.wat +++ b/tests/compiler/resolve-elementaccess.untouched.wat @@ -3547,12 +3547,9 @@ call $~lib/rt/stub/__release local.get $7 ) - (func $~lib/string/String.__eq (; 23 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/string/String#_eq (; 23 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) - local.get $0 - call $~lib/rt/stub/__retain - local.set $0 local.get $1 call $~lib/rt/stub/__retain local.set $1 @@ -3566,8 +3563,6 @@ if i32.const 0 local.set $3 - local.get $0 - call $~lib/rt/stub/__release local.get $1 call $~lib/rt/stub/__release local.get $3 @@ -3581,8 +3576,6 @@ call $~lib/util/string/compareImpl i32.eqz local.set $3 - local.get $0 - call $~lib/rt/stub/__release local.get $1 call $~lib/rt/stub/__release local.get $3 @@ -3710,7 +3703,6 @@ (local $3 i32) (local $4 i32) (local $5 i32) - (local $6 i32) global.get $~lib/heap/__heap_base i32.const 15 i32.add @@ -3738,33 +3730,8 @@ call $~lib/typedarray/Float32Array#__get call $~lib/number/F32#toString local.tee $0 - call $~lib/rt/stub/__retain - local.set $2 i32.const 1872 - call $~lib/rt/stub/__retain - local.set $1 - local.get $2 - i32.eqz - local.get $1 - i32.eqz - i32.or - if (result i32) - local.get $2 - local.get $1 - i32.eq - else - local.get $2 - local.get $1 - call $~lib/string/String.__eq - end - local.set $3 - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - call $~lib/rt/stub/__release - local.get $3 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -3778,34 +3745,9 @@ i32.const 1 call $~lib/typedarray/Float32Array#__get call $~lib/number/F32#toString - local.tee $2 - call $~lib/rt/stub/__retain - local.set $1 + local.tee $1 i32.const 1968 - call $~lib/rt/stub/__retain - local.set $3 - local.get $1 - i32.eqz - local.get $3 - i32.eqz - i32.or - if (result i32) - local.get $1 - local.get $3 - i32.eq - else - local.get $1 - local.get $3 - call $~lib/string/String.__eq - end - local.set $4 - local.get $3 - call $~lib/rt/stub/__release - local.get $1 - call $~lib/rt/stub/__release - local.get $4 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -3816,7 +3758,7 @@ unreachable end global.get $resolve-elementaccess/arr - local.tee $1 + local.tee $2 i32.const 0 local.tee $3 global.get $resolve-elementaccess/arr @@ -3825,38 +3767,13 @@ f32.const 10 f32.add call $~lib/typedarray/Float32Array#__set - local.get $1 + local.get $2 local.get $3 call $~lib/typedarray/Float32Array#__get call $~lib/number/F32#toString - local.tee $1 - call $~lib/rt/stub/__retain - local.set $1 + local.tee $2 i32.const 2000 - call $~lib/rt/stub/__retain - local.set $4 - local.get $1 - i32.eqz - local.get $4 - i32.eqz - i32.or - if (result i32) - local.get $1 - local.get $4 - i32.eq - else - local.get $1 - local.get $4 - call $~lib/string/String.__eq - end - local.set $3 - local.get $4 - call $~lib/rt/stub/__release - local.get $1 - call $~lib/rt/stub/__release - local.get $3 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -3904,34 +3821,9 @@ i32.const 0 call $~lib/typedarray/Uint8Array#__get call $~lib/number/U8#toString - local.tee $1 - call $~lib/rt/stub/__retain - local.set $4 + local.tee $3 i32.const 2064 - call $~lib/rt/stub/__retain - local.set $3 - local.get $4 - i32.eqz - local.get $3 - i32.eqz - i32.or - if (result i32) - local.get $4 - local.get $3 - i32.eq - else - local.get $4 - local.get $3 - call $~lib/string/String.__eq - end - local.set $5 - local.get $3 - call $~lib/rt/stub/__release - local.get $4 - call $~lib/rt/stub/__release - local.get $5 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -3945,34 +3837,9 @@ i32.const 1 call $~lib/typedarray/Uint8Array#__get call $~lib/number/U8#toString - local.tee $4 - call $~lib/rt/stub/__retain - local.set $3 + local.tee $2 i32.const 2096 - call $~lib/rt/stub/__retain - local.set $5 - local.get $3 - i32.eqz - local.get $5 - i32.eqz - i32.or - if (result i32) - local.get $3 - local.get $5 - i32.eq - else - local.get $3 - local.get $5 - call $~lib/string/String.__eq - end - local.set $6 - local.get $5 - call $~lib/rt/stub/__release - local.get $3 - call $~lib/rt/stub/__release - local.get $6 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -3983,7 +3850,7 @@ unreachable end global.get $resolve-elementaccess/buf - local.tee $3 + local.tee $4 i32.const 0 local.tee $5 global.get $resolve-elementaccess/buf @@ -3992,38 +3859,13 @@ i32.const 10 i32.add call $~lib/typedarray/Uint8Array#__set - local.get $3 + local.get $4 local.get $5 call $~lib/typedarray/Uint8Array#__get call $~lib/number/U8#toString - local.tee $3 - call $~lib/rt/stub/__retain - local.set $3 + local.tee $4 i32.const 2128 - call $~lib/rt/stub/__retain - local.set $6 - local.get $3 - i32.eqz - local.get $6 - i32.eqz - i32.or - if (result i32) - local.get $3 - local.get $6 - i32.eq - else - local.get $3 - local.get $6 - call $~lib/string/String.__eq - end - local.set $5 - local.get $6 - call $~lib/rt/stub/__release - local.get $3 - call $~lib/rt/stub/__release - local.get $5 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 diff --git a/tests/compiler/resolve-function-expression.optimized.wat b/tests/compiler/resolve-function-expression.optimized.wat index 81d078d219..ed3bd531c0 100644 --- a/tests/compiler/resolve-function-expression.optimized.wat +++ b/tests/compiler/resolve-function-expression.optimized.wat @@ -214,28 +214,21 @@ global.set $~lib/rt/stub/offset i32.const 1 global.set $~argumentsLength - call $~lib/util/number/itoa32 - local.tee $0 - if (result i32) - block $__inlined_func$~lib/string/String.__eq (result i32) - i32.const 0 - local.get $0 - call $~lib/string/String#get:length - local.tee $1 - i32.const 1152 - call $~lib/string/String#get:length - i32.ne - br_if $__inlined_func$~lib/string/String.__eq - drop - local.get $0 - local.get $1 - call $~lib/util/string/compareImpl - i32.eqz - end - else - local.get $0 + block $__inlined_func$~lib/string/String#_eq (result i32) + i32.const 0 + call $~lib/util/number/itoa32 + local.tee $0 + call $~lib/string/String#get:length + local.tee $1 i32.const 1152 - i32.eq + call $~lib/string/String#get:length + i32.ne + br_if $__inlined_func$~lib/string/String#_eq + drop + local.get $0 + local.get $1 + call $~lib/util/string/compareImpl + i32.eqz end i32.eqz if diff --git a/tests/compiler/resolve-function-expression.untouched.wat b/tests/compiler/resolve-function-expression.untouched.wat index c2febc82de..447bd4e834 100644 --- a/tests/compiler/resolve-function-expression.untouched.wat +++ b/tests/compiler/resolve-function-expression.untouched.wat @@ -542,12 +542,9 @@ call $~lib/rt/stub/__release local.get $7 ) - (func $~lib/string/String.__eq (; 16 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/string/String#_eq (; 16 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) - local.get $0 - call $~lib/rt/stub/__retain - local.set $0 local.get $1 call $~lib/rt/stub/__retain local.set $1 @@ -561,8 +558,6 @@ if i32.const 0 local.set $3 - local.get $0 - call $~lib/rt/stub/__release local.get $1 call $~lib/rt/stub/__release local.get $3 @@ -576,17 +571,12 @@ call $~lib/util/string/compareImpl i32.eqz local.set $3 - local.get $0 - call $~lib/rt/stub/__release local.get $1 call $~lib/rt/stub/__release local.get $3 ) (func $start:resolve-function-expression (; 17 ;) (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) i32.const 1 global.set $~argumentsLength i32.const 2 @@ -636,33 +626,8 @@ call_indirect (type $i32_=>_i32) call $~lib/number/I32#toString local.tee $0 - call $~lib/rt/stub/__retain - local.set $2 i32.const 560 - call $~lib/rt/stub/__retain - local.set $1 - local.get $2 - i32.eqz - local.get $1 - i32.eqz - i32.or - if (result i32) - local.get $2 - local.get $1 - i32.eq - else - local.get $2 - local.get $1 - call $~lib/string/String.__eq - end - local.set $3 - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - call $~lib/rt/stub/__release - local.get $3 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 diff --git a/tests/compiler/resolve-nested.ts b/tests/compiler/resolve-nested.ts index a2fa919378..fbf3befa42 100644 --- a/tests/compiler/resolve-nested.ts +++ b/tests/compiler/resolve-nested.ts @@ -3,12 +3,12 @@ export namespace Outer { export class InnerClass {} export namespace Inner { export class EvenInnerClass {} - var a: OuterClass; - var b: InnerClass; - var c: EvenInnerClass; - var d: Outer.InnerClass; - var e: Outer.Inner.EvenInnerClass; - var f: Inner.EvenInnerClass; + var a: OuterClass | null; + var b: InnerClass | null; + var c: EvenInnerClass | null; + var d: Outer.InnerClass | null; + var e: Outer.Inner.EvenInnerClass | null; + var f: Inner.EvenInnerClass | null; export function evenInner( a: OuterClass, b: InnerClass, @@ -18,11 +18,11 @@ export namespace Outer { f: Inner.EvenInnerClass ): void {} } - var a: OuterClass; - var b: InnerClass; - var c: Inner.EvenInnerClass; - var d: Outer.InnerClass; - var e: Outer.Inner.EvenInnerClass; + var a: OuterClass | null; + var b: InnerClass | null; + var c: Inner.EvenInnerClass | null; + var d: Outer.InnerClass | null; + var e: Outer.Inner.EvenInnerClass | null; export function inner( a: OuterClass, b: InnerClass, @@ -31,9 +31,9 @@ export namespace Outer { e: Outer.Inner.EvenInnerClass ): void {} } -var a: OuterClass; -var b: Outer.InnerClass; -var c: Outer.Inner.EvenInnerClass; +var a: OuterClass | null; +var b: Outer.InnerClass | null; +var c: Outer.Inner.EvenInnerClass | null; export function outer( a: OuterClass, b: Outer.InnerClass, diff --git a/tests/compiler/resolve-propertyaccess.optimized.wat b/tests/compiler/resolve-propertyaccess.optimized.wat index 36f9b8ca10..daa087ab23 100644 --- a/tests/compiler/resolve-propertyaccess.optimized.wat +++ b/tests/compiler/resolve-propertyaccess.optimized.wat @@ -293,7 +293,7 @@ end i32.const 0 ) - (func $~lib/string/String.__eq (; 5 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/string/String#_eq (; 5 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) local.get $0 call $~lib/string/String#get:length @@ -319,16 +319,8 @@ global.set $~lib/rt/stub/offset i32.const 1 call $~lib/util/number/itoa32 - local.tee $0 - if (result i32) - local.get $0 - i32.const 1072 - call $~lib/string/String.__eq - else - local.get $0 - i32.const 1072 - i32.eq - end + i32.const 1072 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -340,16 +332,8 @@ end i32.const 11 call $~lib/util/number/itoa32 - local.tee $0 - if (result i32) - local.get $0 - i32.const 1184 - call $~lib/string/String.__eq - else - local.get $0 - i32.const 1184 - i32.eq - end + i32.const 1184 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -361,16 +345,8 @@ end i32.const 2 call $~lib/util/number/itoa32 - local.tee $0 - if (result i32) - local.get $0 - i32.const 1216 - call $~lib/string/String.__eq - else - local.get $0 - i32.const 1216 - i32.eq - end + i32.const 1216 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -382,16 +358,8 @@ end i32.const 22 call $~lib/util/number/itoa32 - local.tee $0 - if (result i32) - local.get $0 - i32.const 1248 - call $~lib/string/String.__eq - else - local.get $0 - i32.const 1248 - i32.eq - end + i32.const 1248 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -403,16 +371,8 @@ end i32.const 3 call $~lib/util/number/itoa32 - local.tee $0 - if (result i32) - local.get $0 - i32.const 1280 - call $~lib/string/String.__eq - else - local.get $0 - i32.const 1280 - i32.eq - end + i32.const 1280 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -424,16 +384,8 @@ end i32.const 33 call $~lib/util/number/itoa32 - local.tee $0 - if (result i32) - local.get $0 - i32.const 1312 - call $~lib/string/String.__eq - else - local.get $0 - i32.const 1312 - i32.eq - end + i32.const 1312 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -445,16 +397,8 @@ end i32.const 4 call $~lib/util/number/itoa32 - local.tee $0 - if (result i32) - local.get $0 - i32.const 1344 - call $~lib/string/String.__eq - else - local.get $0 - i32.const 1344 - i32.eq - end + i32.const 1344 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -466,16 +410,8 @@ end i32.const 5 call $~lib/util/number/itoa32 - local.tee $0 - if (result i32) - local.get $0 - i32.const 1376 - call $~lib/string/String.__eq - else - local.get $0 - i32.const 1376 - i32.eq - end + i32.const 1376 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -487,16 +423,8 @@ end i32.const 55 call $~lib/util/number/itoa32 - local.tee $0 - if (result i32) - local.get $0 - i32.const 1408 - call $~lib/string/String.__eq - else - local.get $0 - i32.const 1408 - i32.eq - end + i32.const 1408 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -515,16 +443,8 @@ local.get $0 i32.load call $~lib/util/number/itoa32 - local.tee $0 - if (result i32) - local.get $0 - i32.const 1440 - call $~lib/string/String.__eq - else - local.get $0 - i32.const 1440 - i32.eq - end + i32.const 1440 + call $~lib/string/String#_eq i32.eqz if i32.const 0 diff --git a/tests/compiler/resolve-propertyaccess.untouched.wat b/tests/compiler/resolve-propertyaccess.untouched.wat index 1edc8e11aa..112c18174e 100644 --- a/tests/compiler/resolve-propertyaccess.untouched.wat +++ b/tests/compiler/resolve-propertyaccess.untouched.wat @@ -538,12 +538,9 @@ call $~lib/rt/stub/__release local.get $7 ) - (func $~lib/string/String.__eq (; 12 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/string/String#_eq (; 12 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) - local.get $0 - call $~lib/rt/stub/__retain - local.set $0 local.get $1 call $~lib/rt/stub/__retain local.set $1 @@ -557,8 +554,6 @@ if i32.const 0 local.set $3 - local.get $0 - call $~lib/rt/stub/__release local.get $1 call $~lib/rt/stub/__release local.get $3 @@ -572,8 +567,6 @@ call $~lib/util/string/compareImpl i32.eqz local.set $3 - local.get $0 - call $~lib/rt/stub/__release local.get $1 call $~lib/rt/stub/__release local.get $3 @@ -605,9 +598,6 @@ (local $8 i32) (local $9 i32) (local $10 i32) - (local $11 i32) - (local $12 i32) - (local $13 i32) global.get $~lib/heap/__heap_base i32.const 15 i32.add @@ -621,33 +611,8 @@ i32.const 1 call $~lib/number/I32#toString local.tee $0 - call $~lib/rt/stub/__retain - local.set $2 i32.const 480 - call $~lib/rt/stub/__retain - local.set $1 - local.get $2 - i32.eqz - local.get $1 - i32.eqz - i32.or - if (result i32) - local.get $2 - local.get $1 - i32.eq - else - local.get $2 - local.get $1 - call $~lib/string/String.__eq - end - local.set $3 - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - call $~lib/rt/stub/__release - local.get $3 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -659,34 +624,9 @@ end i32.const 11 call $~lib/number/I32#toString - local.tee $2 - call $~lib/rt/stub/__retain - local.set $1 + local.tee $1 i32.const 592 - call $~lib/rt/stub/__retain - local.set $3 - local.get $1 - i32.eqz - local.get $3 - i32.eqz - i32.or - if (result i32) - local.get $1 - local.get $3 - i32.eq - else - local.get $1 - local.get $3 - call $~lib/string/String.__eq - end - local.set $4 - local.get $3 - call $~lib/rt/stub/__release - local.get $1 - call $~lib/rt/stub/__release - local.get $4 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -698,34 +638,9 @@ end i32.const 2 call $~lib/number/I32#toString - local.tee $1 - call $~lib/rt/stub/__retain - local.set $3 + local.tee $2 i32.const 624 - call $~lib/rt/stub/__retain - local.set $4 - local.get $3 - i32.eqz - local.get $4 - i32.eqz - i32.or - if (result i32) - local.get $3 - local.get $4 - i32.eq - else - local.get $3 - local.get $4 - call $~lib/string/String.__eq - end - local.set $5 - local.get $4 - call $~lib/rt/stub/__release - local.get $3 - call $~lib/rt/stub/__release - local.get $5 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -738,33 +653,8 @@ i32.const 22 call $~lib/number/I32#toString local.tee $3 - call $~lib/rt/stub/__retain - local.set $4 i32.const 656 - call $~lib/rt/stub/__retain - local.set $5 - local.get $4 - i32.eqz - local.get $5 - i32.eqz - i32.or - if (result i32) - local.get $4 - local.get $5 - i32.eq - else - local.get $4 - local.get $5 - call $~lib/string/String.__eq - end - local.set $6 - local.get $5 - call $~lib/rt/stub/__release - local.get $4 - call $~lib/rt/stub/__release - local.get $6 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -777,33 +667,8 @@ i32.const 3 call $~lib/number/I32#toString local.tee $4 - call $~lib/rt/stub/__retain - local.set $5 i32.const 688 - call $~lib/rt/stub/__retain - local.set $6 - local.get $5 - i32.eqz - local.get $6 - i32.eqz - i32.or - if (result i32) - local.get $5 - local.get $6 - i32.eq - else - local.get $5 - local.get $6 - call $~lib/string/String.__eq - end - local.set $7 - local.get $6 - call $~lib/rt/stub/__release - local.get $5 - call $~lib/rt/stub/__release - local.get $7 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -816,33 +681,8 @@ i32.const 33 call $~lib/number/I32#toString local.tee $5 - call $~lib/rt/stub/__retain - local.set $6 i32.const 720 - call $~lib/rt/stub/__retain - local.set $7 - local.get $6 - i32.eqz - local.get $7 - i32.eqz - i32.or - if (result i32) - local.get $6 - local.get $7 - i32.eq - else - local.get $6 - local.get $7 - call $~lib/string/String.__eq - end - local.set $8 - local.get $7 - call $~lib/rt/stub/__release - local.get $6 - call $~lib/rt/stub/__release - local.get $8 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -855,33 +695,8 @@ i32.const 4 call $~lib/number/I32#toString local.tee $6 - call $~lib/rt/stub/__retain - local.set $7 i32.const 752 - call $~lib/rt/stub/__retain - local.set $8 - local.get $7 - i32.eqz - local.get $8 - i32.eqz - i32.or - if (result i32) - local.get $7 - local.get $8 - i32.eq - else - local.get $7 - local.get $8 - call $~lib/string/String.__eq - end - local.set $9 - local.get $8 - call $~lib/rt/stub/__release - local.get $7 - call $~lib/rt/stub/__release - local.get $9 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -894,33 +709,8 @@ global.get $resolve-propertyaccess/Class.staticField call $~lib/number/I32#toString local.tee $7 - call $~lib/rt/stub/__retain - local.set $8 i32.const 784 - call $~lib/rt/stub/__retain - local.set $9 - local.get $8 - i32.eqz - local.get $9 - i32.eqz - i32.or - if (result i32) - local.get $8 - local.get $9 - i32.eq - else - local.get $8 - local.get $9 - call $~lib/string/String.__eq - end - local.set $10 - local.get $9 - call $~lib/rt/stub/__release - local.get $8 - call $~lib/rt/stub/__release - local.get $10 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -933,33 +723,8 @@ global.get $resolve-propertyaccess/Class.lazyStaticField call $~lib/number/I32#toString local.tee $8 - call $~lib/rt/stub/__retain - local.set $9 i32.const 816 - call $~lib/rt/stub/__retain - local.set $10 - local.get $9 - i32.eqz - local.get $10 - i32.eqz - i32.or - if (result i32) - local.get $9 - local.get $10 - i32.eq - else - local.get $9 - local.get $10 - call $~lib/string/String.__eq - end - local.set $11 - local.get $10 - call $~lib/rt/stub/__release - local.get $9 - call $~lib/rt/stub/__release - local.get $11 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -976,33 +741,8 @@ i32.load call $~lib/number/I32#toString local.tee $10 - call $~lib/rt/stub/__retain - local.set $12 i32.const 848 - call $~lib/rt/stub/__retain - local.set $11 - local.get $12 - i32.eqz - local.get $11 - i32.eqz - i32.or - if (result i32) - local.get $12 - local.get $11 - i32.eq - else - local.get $12 - local.get $11 - call $~lib/string/String.__eq - end - local.set $13 - local.get $11 - call $~lib/rt/stub/__release - local.get $12 - call $~lib/rt/stub/__release - local.get $13 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 diff --git a/tests/compiler/resolve-ternary.optimized.wat b/tests/compiler/resolve-ternary.optimized.wat index 0b118449dc..648059d6cd 100644 --- a/tests/compiler/resolve-ternary.optimized.wat +++ b/tests/compiler/resolve-ternary.optimized.wat @@ -1270,7 +1270,7 @@ end i32.const 0 ) - (func $~lib/string/String.__eq (; 15 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/string/String#_eq (; 15 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) local.get $0 call $~lib/string/String#get:length @@ -2327,17 +2327,8 @@ local.get $1 call $~lib/rt/pure/__retain local.tee $3 - local.set $0 - local.get $3 - if (result i32) - local.get $0 - i32.const 1232 - call $~lib/string/String.__eq - else - local.get $0 - i32.const 1232 - i32.eq - end + i32.const 1232 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -2351,32 +2342,32 @@ i32.const 56 i32.const 1 call $~lib/rt/tlsf/__alloc - local.tee $1 - call $~lib/util/number/dtoa_core local.tee $0 + call $~lib/util/number/dtoa_core + local.tee $1 i32.const 28 i32.eq if - local.get $1 + local.get $0 call $~lib/rt/pure/__retain - local.set $0 + local.set $1 br $__inlined_func$~lib/util/number/dtoa end - local.get $1 local.get $0 + local.get $1 call $~lib/string/String#substring - local.set $0 + local.set $1 call $~lib/rt/tlsf/maybeInitialize - local.get $1 + local.get $0 i32.const 16 i32.sub local.set $2 - local.get $1 + local.get $0 i32.const 15 i32.and i32.eqz i32.const 0 - local.get $1 + local.get $0 select if (result i32) local.get $2 @@ -2408,16 +2399,9 @@ local.get $2 call $~lib/rt/tlsf/freeBlock end - local.get $0 - if (result i32) - local.get $0 - i32.const 2464 - call $~lib/string/String.__eq - else - local.get $0 - i32.const 2464 - i32.eq - end + local.get $1 + i32.const 2464 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -2435,7 +2419,7 @@ global.set $~argumentsLength local.get $3 call $~lib/rt/pure/__release - local.get $0 + local.get $1 call $~lib/rt/pure/__release ) (func $~start (; 24 ;) diff --git a/tests/compiler/resolve-ternary.untouched.wat b/tests/compiler/resolve-ternary.untouched.wat index d777ad7eca..f31471c6fc 100644 --- a/tests/compiler/resolve-ternary.untouched.wat +++ b/tests/compiler/resolve-ternary.untouched.wat @@ -1883,12 +1883,9 @@ call $~lib/rt/pure/__release local.get $7 ) - (func $~lib/string/String.__eq (; 21 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/string/String#_eq (; 21 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) - local.get $0 - call $~lib/rt/pure/__retain - local.set $0 local.get $1 call $~lib/rt/pure/__retain local.set $1 @@ -1902,8 +1899,6 @@ if i32.const 0 local.set $3 - local.get $0 - call $~lib/rt/pure/__release local.get $1 call $~lib/rt/pure/__release local.get $3 @@ -1917,8 +1912,6 @@ call $~lib/util/string/compareImpl i32.eqz local.set $3 - local.get $0 - call $~lib/rt/pure/__release local.get $1 call $~lib/rt/pure/__release local.get $3 @@ -4678,9 +4671,6 @@ (func $start:resolve-ternary (; 38 ;) (local $0 i32) (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) global.get $resolve-ternary/b if (result i32) i32.const 1 @@ -4689,33 +4679,8 @@ end call $~lib/number/I32#toString local.tee $0 - call $~lib/rt/pure/__retain - local.set $2 i32.const 640 - call $~lib/rt/pure/__retain - local.set $1 - local.get $2 - i32.eqz - local.get $1 - i32.eqz - i32.or - if (result i32) - local.get $2 - local.get $1 - i32.eq - else - local.get $2 - local.get $1 - call $~lib/string/String.__eq - end - local.set $3 - local.get $1 - call $~lib/rt/pure/__release - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -4733,34 +4698,9 @@ end i32.const 0 call $~lib/number/F64#toString - local.tee $2 - call $~lib/rt/pure/__retain - local.set $1 + local.tee $1 i32.const 1872 - call $~lib/rt/pure/__retain - local.set $3 - local.get $1 - i32.eqz - local.get $3 - i32.eqz - i32.or - if (result i32) - local.get $1 - local.get $3 - i32.eq - else - local.get $1 - local.get $3 - call $~lib/string/String.__eq - end - local.set $4 - local.get $3 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $4 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -4835,7 +4775,7 @@ end local.get $0 call $~lib/rt/pure/__release - local.get $2 + local.get $1 call $~lib/rt/pure/__release ) (func $~start (; 39 ;) diff --git a/tests/compiler/resolve-unary.optimized.wat b/tests/compiler/resolve-unary.optimized.wat index a6f2fee97f..f1c7bec8ed 100644 --- a/tests/compiler/resolve-unary.optimized.wat +++ b/tests/compiler/resolve-unary.optimized.wat @@ -301,7 +301,7 @@ end i32.const 0 ) - (func $~lib/string/String.__eq (; 5 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/string/String#_eq (; 5 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) local.get $0 call $~lib/string/String#get:length @@ -327,16 +327,8 @@ global.set $~lib/rt/stub/offset i32.const -1 call $~lib/util/number/itoa32 - local.tee $0 - if (result i32) - local.get $0 - i32.const 1072 - call $~lib/string/String.__eq - else - local.get $0 - i32.const 1072 - i32.eq - end + i32.const 1072 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -348,16 +340,8 @@ end i32.const 1 call $~lib/util/number/itoa32 - local.tee $0 - if (result i32) - local.get $0 - i32.const 1152 - call $~lib/string/String.__eq - else - local.get $0 - i32.const 1152 - i32.eq - end + i32.const 1152 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -373,16 +357,8 @@ global.set $resolve-unary/a global.get $resolve-unary/a call $~lib/util/number/itoa32 - local.tee $0 - if (result i32) - local.get $0 - i32.const 1184 - call $~lib/string/String.__eq - else - local.get $0 - i32.const 1184 - i32.eq - end + i32.const 1184 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -398,16 +374,8 @@ global.set $resolve-unary/a global.get $resolve-unary/a call $~lib/util/number/itoa32 - local.tee $0 - if (result i32) - local.get $0 - i32.const 1152 - call $~lib/string/String.__eq - else - local.get $0 - i32.const 1152 - i32.eq - end + i32.const 1152 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -421,16 +389,8 @@ i32.const 1216 global.get $resolve-unary/a select - local.tee $0 - if (result i32) - local.get $0 - i32.const 1248 - call $~lib/string/String.__eq - else - local.get $0 - i32.const 1248 - i32.eq - end + i32.const 1248 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -444,16 +404,8 @@ i32.const 1248 global.get $resolve-unary/a select - local.tee $0 - if (result i32) - local.get $0 - i32.const 1216 - call $~lib/string/String.__eq - else - local.get $0 - i32.const 1216 - i32.eq - end + i32.const 1216 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -467,16 +419,8 @@ i32.const -1 i32.xor call $~lib/util/number/itoa32 - local.tee $0 - if (result i32) - local.get $0 - i32.const 1280 - call $~lib/string/String.__eq - else - local.get $0 - i32.const 1280 - i32.eq - end + i32.const 1280 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -493,16 +437,8 @@ global.set $resolve-unary/b local.get $0 call $~lib/util/number/itoa32 - local.tee $0 - if (result i32) - local.get $0 - i32.const 1152 - call $~lib/string/String.__eq - else - local.get $0 - i32.const 1152 - i32.eq - end + i32.const 1152 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -519,16 +455,8 @@ global.set $resolve-unary/b local.get $0 call $~lib/util/number/itoa32 - local.tee $0 - if (result i32) - local.get $0 - i32.const 1184 - call $~lib/string/String.__eq - else - local.get $0 - i32.const 1184 - i32.eq - end + i32.const 1184 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -544,7 +472,7 @@ global.set $resolve-unary/foo i32.const 1312 i32.const 1312 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -556,7 +484,7 @@ end i32.const 1344 i32.const 1344 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -568,7 +496,7 @@ end i32.const 1376 i32.const 1376 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -580,7 +508,7 @@ end i32.const 1408 i32.const 1408 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -624,7 +552,7 @@ global.set $resolve-unary/bar i32.const 1440 i32.const 1440 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -636,7 +564,7 @@ end i32.const 1472 i32.const 1472 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -648,7 +576,7 @@ end i32.const 1504 i32.const 1504 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -660,7 +588,7 @@ end i32.const 1536 i32.const 1536 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 diff --git a/tests/compiler/resolve-unary.untouched.wat b/tests/compiler/resolve-unary.untouched.wat index a530577dd3..407b901cdb 100644 --- a/tests/compiler/resolve-unary.untouched.wat +++ b/tests/compiler/resolve-unary.untouched.wat @@ -537,12 +537,9 @@ call $~lib/rt/stub/__release local.get $7 ) - (func $~lib/string/String.__eq (; 12 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/string/String#_eq (; 12 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) - local.get $0 - call $~lib/rt/stub/__retain - local.set $0 local.get $1 call $~lib/rt/stub/__retain local.set $1 @@ -556,8 +553,6 @@ if i32.const 0 local.set $3 - local.get $0 - call $~lib/rt/stub/__release local.get $1 call $~lib/rt/stub/__release local.get $3 @@ -571,8 +566,6 @@ call $~lib/util/string/compareImpl i32.eqz local.set $3 - local.get $0 - call $~lib/rt/stub/__release local.get $1 call $~lib/rt/stub/__release local.get $3 @@ -723,9 +716,6 @@ (local $30 i32) (local $31 i32) (local $32 i32) - (local $33 i32) - (local $34 i32) - (local $35 i32) global.get $~lib/heap/__heap_base i32.const 15 i32.add @@ -739,33 +729,8 @@ i32.const -1 call $~lib/number/I32#toString local.tee $0 - call $~lib/rt/stub/__retain - local.set $2 i32.const 480 - call $~lib/rt/stub/__retain - local.set $1 - local.get $2 - i32.eqz - local.get $1 - i32.eqz - i32.or - if (result i32) - local.get $2 - local.get $1 - i32.eq - else - local.get $2 - local.get $1 - call $~lib/string/String.__eq - end - local.set $3 - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - call $~lib/rt/stub/__release - local.get $3 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -777,34 +742,9 @@ end i32.const 1 call $~lib/number/I32#toString - local.tee $2 - call $~lib/rt/stub/__retain - local.set $1 + local.tee $1 i32.const 560 - call $~lib/rt/stub/__retain - local.set $3 - local.get $1 - i32.eqz - local.get $3 - i32.eqz - i32.or - if (result i32) - local.get $1 - local.get $3 - i32.eq - else - local.get $1 - local.get $3 - call $~lib/string/String.__eq - end - local.set $4 - local.get $3 - call $~lib/rt/stub/__release - local.get $1 - call $~lib/rt/stub/__release - local.get $4 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -820,34 +760,9 @@ global.set $resolve-unary/a global.get $resolve-unary/a call $~lib/number/I32#toString - local.tee $1 - call $~lib/rt/stub/__retain - local.set $3 + local.tee $2 i32.const 592 - call $~lib/rt/stub/__retain - local.set $4 - local.get $3 - i32.eqz - local.get $4 - i32.eqz - i32.or - if (result i32) - local.get $3 - local.get $4 - i32.eq - else - local.get $3 - local.get $4 - call $~lib/string/String.__eq - end - local.set $5 - local.get $4 - call $~lib/rt/stub/__release - local.get $3 - call $~lib/rt/stub/__release - local.get $5 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -864,33 +779,8 @@ global.get $resolve-unary/a call $~lib/number/I32#toString local.tee $3 - call $~lib/rt/stub/__retain - local.set $4 i32.const 560 - call $~lib/rt/stub/__retain - local.set $5 - local.get $4 - i32.eqz - local.get $5 - i32.eqz - i32.or - if (result i32) - local.get $4 - local.get $5 - i32.eq - else - local.get $4 - local.get $5 - call $~lib/string/String.__eq - end - local.set $6 - local.get $5 - call $~lib/rt/stub/__release - local.get $4 - call $~lib/rt/stub/__release - local.get $6 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -904,33 +794,8 @@ i32.eqz call $~lib/number/Bool#toString local.tee $4 - call $~lib/rt/stub/__retain - local.set $5 i32.const 656 - call $~lib/rt/stub/__retain - local.set $6 - local.get $5 - i32.eqz - local.get $6 - i32.eqz - i32.or - if (result i32) - local.get $5 - local.get $6 - i32.eq - else - local.get $5 - local.get $6 - call $~lib/string/String.__eq - end - local.set $7 - local.get $6 - call $~lib/rt/stub/__release - local.get $5 - call $~lib/rt/stub/__release - local.get $7 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -945,33 +810,8 @@ i32.eqz call $~lib/number/Bool#toString local.tee $5 - call $~lib/rt/stub/__retain - local.set $6 i32.const 624 - call $~lib/rt/stub/__retain - local.set $7 - local.get $6 - i32.eqz - local.get $7 - i32.eqz - i32.or - if (result i32) - local.get $6 - local.get $7 - i32.eq - else - local.get $6 - local.get $7 - call $~lib/string/String.__eq - end - local.set $8 - local.get $7 - call $~lib/rt/stub/__release - local.get $6 - call $~lib/rt/stub/__release - local.get $8 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -986,33 +826,8 @@ i32.xor call $~lib/number/I32#toString local.tee $6 - call $~lib/rt/stub/__retain - local.set $7 i32.const 688 - call $~lib/rt/stub/__retain - local.set $8 - local.get $7 - i32.eqz - local.get $8 - i32.eqz - i32.or - if (result i32) - local.get $7 - local.get $8 - i32.eq - else - local.get $7 - local.get $8 - call $~lib/string/String.__eq - end - local.set $9 - local.get $8 - call $~lib/rt/stub/__release - local.get $7 - call $~lib/rt/stub/__release - local.get $9 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -1030,33 +845,8 @@ local.get $7 call $~lib/number/I32#toString local.tee $7 - call $~lib/rt/stub/__retain - local.set $8 i32.const 560 - call $~lib/rt/stub/__retain - local.set $9 - local.get $8 - i32.eqz - local.get $9 - i32.eqz - i32.or - if (result i32) - local.get $8 - local.get $9 - i32.eq - else - local.get $8 - local.get $9 - call $~lib/string/String.__eq - end - local.set $10 - local.get $9 - call $~lib/rt/stub/__release - local.get $8 - call $~lib/rt/stub/__release - local.get $10 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -1074,33 +864,8 @@ local.get $8 call $~lib/number/I32#toString local.tee $8 - call $~lib/rt/stub/__retain - local.set $9 i32.const 592 - call $~lib/rt/stub/__retain - local.set $10 - local.get $9 - i32.eqz - local.get $10 - i32.eqz - i32.or - if (result i32) - local.get $9 - local.get $10 - i32.eq - else - local.get $9 - local.get $10 - call $~lib/string/String.__eq - end - local.set $11 - local.get $10 - call $~lib/rt/stub/__release - local.get $9 - call $~lib/rt/stub/__release - local.get $11 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -1118,33 +883,8 @@ local.tee $9 call $~lib/string/String#toString local.tee $10 - call $~lib/rt/stub/__retain - local.set $12 i32.const 720 - call $~lib/rt/stub/__retain - local.set $11 - local.get $12 - i32.eqz - local.get $11 - i32.eqz - i32.or - if (result i32) - local.get $12 - local.get $11 - i32.eq - else - local.get $12 - local.get $11 - call $~lib/string/String.__eq - end - local.set $13 - local.get $11 - call $~lib/rt/stub/__release - local.get $12 - call $~lib/rt/stub/__release - local.get $13 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -1156,36 +896,11 @@ end global.get $resolve-unary/foo call $resolve-unary/Foo#minus - local.tee $12 - call $~lib/string/String#toString local.tee $11 - call $~lib/rt/stub/__retain - local.set $14 + call $~lib/string/String#toString + local.tee $12 i32.const 752 - call $~lib/rt/stub/__retain - local.set $13 - local.get $14 - i32.eqz - local.get $13 - i32.eqz - i32.or - if (result i32) - local.get $14 - local.get $13 - i32.eq - else - local.get $14 - local.get $13 - call $~lib/string/String.__eq - end - local.set $15 - local.get $13 - call $~lib/rt/stub/__release - local.get $14 - call $~lib/rt/stub/__release - local.get $15 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -1197,23 +912,23 @@ end global.get $resolve-unary/foo call $resolve-unary/Foo#prefix_inc + local.tee $13 local.tee $14 - local.tee $15 global.get $resolve-unary/foo - local.tee $13 + local.tee $15 i32.ne if - local.get $15 + local.get $14 call $~lib/rt/stub/__retain - local.set $15 - local.get $13 + local.set $14 + local.get $15 call $~lib/rt/stub/__release end - local.get $15 + local.get $14 global.set $resolve-unary/foo global.get $resolve-unary/foo call $resolve-unary/Foo#self - local.tee $15 + local.tee $14 global.get $resolve-unary/foo i32.eq i32.eqz @@ -1227,7 +942,7 @@ end global.get $resolve-unary/foo call $resolve-unary/Foo#prefix_dec - local.tee $13 + local.tee $15 local.tee $16 global.get $resolve-unary/foo local.tee $17 @@ -1260,33 +975,8 @@ local.tee $17 call $~lib/string/String#toString local.tee $18 - call $~lib/rt/stub/__retain - local.set $20 i32.const 784 - call $~lib/rt/stub/__retain - local.set $19 - local.get $20 - i32.eqz - local.get $19 - i32.eqz - i32.or - if (result i32) - local.get $20 - local.get $19 - i32.eq - else - local.get $20 - local.get $19 - call $~lib/string/String.__eq - end - local.set $21 - local.get $19 - call $~lib/rt/stub/__release - local.get $20 - call $~lib/rt/stub/__release - local.get $21 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -1298,36 +988,11 @@ end global.get $resolve-unary/foo call $resolve-unary/Foo#bitwise_not - local.tee $20 - call $~lib/string/String#toString local.tee $19 - call $~lib/rt/stub/__retain - local.set $22 + call $~lib/string/String#toString + local.tee $20 i32.const 816 - call $~lib/rt/stub/__retain - local.set $21 - local.get $22 - i32.eqz - local.get $21 - i32.eqz - i32.or - if (result i32) - local.get $22 - local.get $21 - i32.eq - else - local.get $22 - local.get $21 - call $~lib/string/String.__eq - end - local.set $23 - local.get $21 - call $~lib/rt/stub/__release - local.get $22 - call $~lib/rt/stub/__release - local.get $23 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -1338,9 +1003,9 @@ unreachable end global.get $resolve-unary/foo - local.tee $22 - call $resolve-unary/Foo#postfix_inc local.tee $21 + call $resolve-unary/Foo#postfix_inc + local.tee $22 local.tee $23 global.get $resolve-unary/foo local.tee $24 @@ -1354,9 +1019,9 @@ end local.get $23 global.set $resolve-unary/foo - local.get $22 + local.get $21 call $resolve-unary/Foo#self - local.tee $22 + local.tee $21 global.get $resolve-unary/foo i32.eq i32.eqz @@ -1407,33 +1072,8 @@ local.tee $25 call $~lib/string/String#toString local.tee $26 - call $~lib/rt/stub/__retain - local.set $28 i32.const 848 - call $~lib/rt/stub/__retain - local.set $27 - local.get $28 - i32.eqz - local.get $27 - i32.eqz - i32.or - if (result i32) - local.get $28 - local.get $27 - i32.eq - else - local.get $28 - local.get $27 - call $~lib/string/String.__eq - end - local.set $29 - local.get $27 - call $~lib/rt/stub/__release - local.get $28 - call $~lib/rt/stub/__release - local.get $29 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -1445,36 +1085,11 @@ end global.get $resolve-unary/bar call $resolve-unary/Bar.prefix_dec - local.tee $28 - call $~lib/string/String#toString local.tee $27 - call $~lib/rt/stub/__retain - local.set $30 + call $~lib/string/String#toString + local.tee $28 i32.const 880 - call $~lib/rt/stub/__retain - local.set $29 - local.get $30 - i32.eqz - local.get $29 - i32.eqz - i32.or - if (result i32) - local.get $30 - local.get $29 - i32.eq - else - local.get $30 - local.get $29 - call $~lib/string/String.__eq - end - local.set $31 - local.get $29 - call $~lib/rt/stub/__release - local.get $30 - call $~lib/rt/stub/__release - local.get $31 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -1486,36 +1101,11 @@ end global.get $resolve-unary/bar call $resolve-unary/Bar.postfix_inc - local.tee $30 - call $~lib/string/String#toString local.tee $29 - call $~lib/rt/stub/__retain - local.set $32 + call $~lib/string/String#toString + local.tee $30 i32.const 912 - call $~lib/rt/stub/__retain - local.set $31 - local.get $32 - i32.eqz - local.get $31 - i32.eqz - i32.or - if (result i32) - local.get $32 - local.get $31 - i32.eq - else - local.get $32 - local.get $31 - call $~lib/string/String.__eq - end - local.set $33 - local.get $31 - call $~lib/rt/stub/__release - local.get $32 - call $~lib/rt/stub/__release - local.get $33 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -1527,36 +1117,11 @@ end global.get $resolve-unary/bar call $resolve-unary/Bar.postfix_dec - local.tee $32 - call $~lib/string/String#toString local.tee $31 - call $~lib/rt/stub/__retain - local.set $34 + call $~lib/string/String#toString + local.tee $32 i32.const 944 - call $~lib/rt/stub/__retain - local.set $33 - local.get $34 - i32.eqz - local.get $33 - i32.eqz - i32.or - if (result i32) - local.get $34 - local.get $33 - i32.eq - else - local.get $34 - local.get $33 - call $~lib/string/String.__eq - end - local.set $35 - local.get $33 - call $~lib/rt/stub/__release - local.get $34 - call $~lib/rt/stub/__release - local.get $35 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 diff --git a/tests/compiler/retain-release-sanity.optimized.wat b/tests/compiler/retain-release-sanity.optimized.wat index 363f58fb64..a34f07ad89 100644 --- a/tests/compiler/retain-release-sanity.optimized.wat +++ b/tests/compiler/retain-release-sanity.optimized.wat @@ -1696,7 +1696,7 @@ i32.const 1 i32.shr_u ) - (func $~lib/string/String.__concat (; 25 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/string/String._add (; 25 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -1973,10 +1973,10 @@ call $~lib/rt/pure/__release i32.const 1360 i32.const 1392 - call $~lib/string/String.__concat + call $~lib/string/String._add local.tee $3 i32.const 1456 - call $~lib/string/String.__concat + call $~lib/string/String._add local.get $3 call $~lib/rt/pure/__release call $~lib/rt/pure/__release diff --git a/tests/compiler/retain-release-sanity.untouched.wat b/tests/compiler/retain-release-sanity.untouched.wat index b24c73eefd..f6be0eff63 100644 --- a/tests/compiler/retain-release-sanity.untouched.wat +++ b/tests/compiler/retain-release-sanity.untouched.wat @@ -3581,7 +3581,7 @@ call $~lib/rt/pure/__release local.get $5 ) - (func $~lib/string/String.__concat (; 35 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/string/String._add (; 35 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) local.get $0 call $~lib/rt/pure/__retain @@ -3710,13 +3710,13 @@ local.set $0 local.get $0 i32.const 384 - call $~lib/string/String.__concat + call $~lib/string/String._add local.tee $1 call $~lib/rt/pure/__retain local.set $2 local.get $2 i32.const 448 - call $~lib/string/String.__concat + call $~lib/string/String._add local.tee $3 drop local.get $0 diff --git a/tests/compiler/retain-release.ts b/tests/compiler/retain-release.ts index bc4177571c..14d3e28117 100644 --- a/tests/compiler/retain-release.ts +++ b/tests/compiler/retain-release.ts @@ -105,7 +105,7 @@ export function newRef(): void { // __release(TEMP) } -var glo: Ref; +var glo: Ref | null; export function assignGlobal(): void { diff --git a/tests/compiler/std/array.optimized.wat b/tests/compiler/std/array.optimized.wat index 1e9423f53d..fdd1098e9e 100644 --- a/tests/compiler/std/array.optimized.wat +++ b/tests/compiler/std/array.optimized.wat @@ -5826,7 +5826,7 @@ local.get $5 call $~lib/rt/pure/__release ) - (func $~lib/string/String.__eq (; 124 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/string/String#_eq (; 124 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) local.get $0 call $~lib/string/String#get:length @@ -5844,7 +5844,7 @@ call $~lib/util/string/compareImpl i32.eqz ) - (func $~lib/string/String.__concat (; 125 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/string/String._add (; 125 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -5996,7 +5996,7 @@ call $~lib/rt/pure/__retain end local.tee $6 - call $~lib/string/String.__concat + call $~lib/string/String._add local.tee $3 local.tee $1 local.get $0 @@ -8110,7 +8110,7 @@ local.get $1 local.get $1 i32.const 8048 - call $~lib/string/String.__concat + call $~lib/string/String._add local.tee $6 local.tee $2 i32.ne @@ -8131,7 +8131,7 @@ local.get $1 local.tee $2 i32.const 6304 - call $~lib/string/String.__concat + call $~lib/string/String._add local.tee $6 local.tee $1 local.get $2 @@ -8175,7 +8175,7 @@ local.get $1 local.get $1 i32.const 8048 - call $~lib/string/String.__concat + call $~lib/string/String._add local.tee $3 local.tee $2 i32.ne @@ -9078,7 +9078,7 @@ local.get $1 local.get $1 local.get $2 - call $~lib/string/String.__concat + call $~lib/string/String._add local.tee $8 local.tee $2 i32.ne @@ -9100,7 +9100,7 @@ local.get $1 local.tee $2 i32.const 6304 - call $~lib/string/String.__concat + call $~lib/string/String._add local.tee $6 local.tee $1 local.get $2 @@ -9148,7 +9148,7 @@ local.get $1 local.get $1 local.get $2 - call $~lib/string/String.__concat + call $~lib/string/String._add local.tee $4 local.tee $2 i32.ne @@ -9386,7 +9386,7 @@ local.get $3 call $~lib/array/Array#toString local.tee $6 - call $~lib/string/String.__concat + call $~lib/string/String._add local.tee $8 local.tee $2 i32.ne @@ -9409,7 +9409,7 @@ local.get $1 local.tee $2 i32.const 6304 - call $~lib/string/String.__concat + call $~lib/string/String._add local.tee $6 local.tee $1 local.get $2 @@ -9455,7 +9455,7 @@ local.get $0 call $~lib/array/Array#toString local.tee $3 - call $~lib/string/String.__concat + call $~lib/string/String._add local.tee $4 local.tee $2 i32.ne @@ -9554,7 +9554,7 @@ local.get $1 local.get $1 local.get $2 - call $~lib/string/String.__concat + call $~lib/string/String._add local.tee $8 local.tee $2 i32.ne @@ -9576,7 +9576,7 @@ local.get $1 local.tee $2 i32.const 6304 - call $~lib/string/String.__concat + call $~lib/string/String._add local.tee $6 local.tee $1 local.get $2 @@ -9624,7 +9624,7 @@ local.get $1 local.get $1 local.get $2 - call $~lib/string/String.__concat + call $~lib/string/String._add local.tee $4 local.tee $2 i32.ne @@ -9726,7 +9726,7 @@ local.get $3 call $~lib/array/Array<~lib/array/Array>#toString local.tee $6 - call $~lib/string/String.__concat + call $~lib/string/String._add local.tee $8 local.tee $2 i32.ne @@ -9749,7 +9749,7 @@ local.get $1 local.tee $2 i32.const 6304 - call $~lib/string/String.__concat + call $~lib/string/String._add local.tee $6 local.tee $1 local.get $2 @@ -9795,7 +9795,7 @@ local.get $0 call $~lib/array/Array<~lib/array/Array>#toString local.tee $3 - call $~lib/string/String.__concat + call $~lib/string/String._add local.tee $4 local.tee $2 i32.ne @@ -9852,14 +9852,14 @@ (local $31 i32) (local $32 i32) (local $33 i32) - (local $34 f64) + (local $34 i32) (local $35 i32) - (local $36 i32) - (local $37 f32) + (local $36 f64) + (local $37 i32) (local $38 i32) (local $39 i32) (local $40 i32) - (local $41 i32) + (local $41 f32) (local $42 i32) (local $43 i32) (local $44 i32) @@ -10903,7 +10903,7 @@ i32.const 2 i32.const 2147483647 call $~lib/array/Array#copyWithin - local.tee $41 + local.tee $42 i32.const 5 i32.const 2 i32.const 3 @@ -11006,7 +11006,7 @@ i32.const 2592 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $47 + local.tee $46 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -11031,14 +11031,14 @@ i32.const 2 i32.const 4 call $~lib/array/Array#copyWithin - local.tee $46 + local.tee $45 i32.const 5 i32.const 2 i32.const 3 i32.const 2688 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $45 + local.tee $44 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -11070,7 +11070,7 @@ i32.const 2784 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $44 + local.tee $43 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -11095,14 +11095,14 @@ i32.const -2 i32.const -1 call $~lib/array/Array#copyWithin - local.tee $43 + local.tee $47 i32.const 5 i32.const 2 i32.const 3 i32.const 2880 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $42 + local.tee $40 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -11127,14 +11127,14 @@ i32.const -3 i32.const -2 call $~lib/array/Array#copyWithin - local.tee $40 + local.tee $39 i32.const 5 i32.const 2 i32.const 3 i32.const 2976 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $39 + local.tee $38 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -11160,14 +11160,14 @@ i32.const -3 i32.const -1 call $~lib/array/Array#copyWithin - local.tee $38 + local.tee $37 i32.const 5 i32.const 2 i32.const 3 i32.const 3072 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $36 + local.tee $35 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -11200,7 +11200,7 @@ i32.const 3168 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $35 + local.tee $34 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -11222,7 +11222,7 @@ call $~lib/rt/pure/__release local.get $56 call $~lib/rt/pure/__release - local.get $41 + local.get $42 call $~lib/rt/pure/__release local.get $53 call $~lib/rt/pure/__release @@ -11236,19 +11236,17 @@ call $~lib/rt/pure/__release local.get $48 call $~lib/rt/pure/__release - local.get $47 - call $~lib/rt/pure/__release local.get $46 call $~lib/rt/pure/__release local.get $45 call $~lib/rt/pure/__release - local.get $31 - call $~lib/rt/pure/__release local.get $44 call $~lib/rt/pure/__release + local.get $31 + call $~lib/rt/pure/__release local.get $43 call $~lib/rt/pure/__release - local.get $42 + local.get $47 call $~lib/rt/pure/__release local.get $40 call $~lib/rt/pure/__release @@ -11256,11 +11254,13 @@ call $~lib/rt/pure/__release local.get $38 call $~lib/rt/pure/__release - local.get $36 + local.get $37 + call $~lib/rt/pure/__release + local.get $35 call $~lib/rt/pure/__release local.get $1 call $~lib/rt/pure/__release - local.get $35 + local.get $34 call $~lib/rt/pure/__release global.get $std/array/arr i32.const 42 @@ -12212,14 +12212,14 @@ i32.shl i32.add f32.load - local.tee $37 + local.tee $41 f32.const nan:0x400000 f32.eq if (result i32) i32.const 1 else - local.get $37 - local.get $37 + local.get $41 + local.get $41 f32.ne end br_if $__inlined_func$~lib/array/Array#includes @@ -12266,27 +12266,27 @@ drop local.get $57 i32.load offset=4 - local.set $41 + local.set $42 loop $while-continue|024 local.get $58 local.get $55 i32.lt_s if i32.const 1 - local.get $41 + local.get $42 local.get $58 i32.const 3 i32.shl i32.add f64.load - local.tee $34 + local.tee $36 f64.const nan:0x8000000000000 f64.eq if (result i32) i32.const 1 else - local.get $34 - local.get $34 + local.get $36 + local.get $36 f64.ne end br_if $__inlined_func$~lib/array/Array#includes @@ -12487,7 +12487,7 @@ i32.const 3616 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $47 + local.tee $46 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -12506,7 +12506,7 @@ i32.const 3648 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $46 + local.tee $45 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -12531,14 +12531,14 @@ i32.const 2 i32.const 2 call $~lib/array/Array#splice - local.tee $45 + local.tee $44 i32.const 2 i32.const 2 i32.const 3 i32.const 3728 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $44 + local.tee $43 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -12557,7 +12557,7 @@ i32.const 3760 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $43 + local.tee $47 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -12581,14 +12581,14 @@ i32.const 0 i32.const 1 call $~lib/array/Array#splice - local.tee $42 + local.tee $40 i32.const 1 i32.const 2 i32.const 3 i32.const 3840 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $40 + local.tee $39 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -12607,7 +12607,7 @@ i32.const 3872 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $39 + local.tee $38 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -12631,14 +12631,14 @@ i32.const -1 i32.const 2147483647 call $~lib/array/Array#splice - local.tee $38 + local.tee $37 i32.const 1 i32.const 2 i32.const 3 i32.const 3952 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $36 + local.tee $35 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -12657,7 +12657,7 @@ i32.const 3984 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $35 + local.tee $34 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -12688,7 +12688,7 @@ i32.const 4064 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $33 + local.tee $29 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -12707,7 +12707,7 @@ i32.const 4096 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $32 + local.tee $28 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -12731,14 +12731,14 @@ i32.const -2 i32.const 1 call $~lib/array/Array#splice - local.tee $29 + local.tee $33 i32.const 1 i32.const 2 i32.const 3 i32.const 4176 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $28 + local.tee $32 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -13133,10 +13133,10 @@ local.get $0 i32.const 2 call $~lib/array/Array#splice - local.set $41 + local.set $42 local.get $55 call $~lib/rt/pure/__release - local.get $41 + local.get $42 i32.load offset=12 i32.const 2 i32.ne @@ -13148,7 +13148,7 @@ call $~lib/builtins/abort unreachable end - local.get $41 + local.get $42 i32.const 0 call $~lib/array/Array#__get local.tee $8 @@ -13163,7 +13163,7 @@ call $~lib/builtins/abort unreachable end - local.get $41 + local.get $42 i32.const 1 call $~lib/array/Array#__get local.tee $7 @@ -13358,8 +13358,6 @@ call $~lib/rt/pure/__release local.get $48 call $~lib/rt/pure/__release - local.get $47 - call $~lib/rt/pure/__release local.get $46 call $~lib/rt/pure/__release local.get $45 @@ -13368,7 +13366,7 @@ call $~lib/rt/pure/__release local.get $43 call $~lib/rt/pure/__release - local.get $42 + local.get $47 call $~lib/rt/pure/__release local.get $40 call $~lib/rt/pure/__release @@ -13376,20 +13374,22 @@ call $~lib/rt/pure/__release local.get $38 call $~lib/rt/pure/__release - local.get $36 + local.get $37 call $~lib/rt/pure/__release local.get $35 call $~lib/rt/pure/__release - local.get $30 + local.get $34 call $~lib/rt/pure/__release - local.get $33 - call $~lib/rt/pure/__release - local.get $32 + local.get $30 call $~lib/rt/pure/__release local.get $29 call $~lib/rt/pure/__release local.get $28 call $~lib/rt/pure/__release + local.get $33 + call $~lib/rt/pure/__release + local.get $32 + call $~lib/rt/pure/__release local.get $27 call $~lib/rt/pure/__release local.get $26 @@ -13979,11 +13979,11 @@ i32.add i32.load f32.convert_i32_s - local.set $37 + local.set $41 local.get $53 local.get $54 i32.add - local.get $37 + local.get $41 f32.store local.get $58 i32.const 1 @@ -14577,15 +14577,15 @@ local.get $58 local.get $1 call $~lib/array/Array#__get - local.tee $37 - local.get $37 + local.tee $41 + local.get $41 f32.ne if (result i32) local.get $56 local.get $1 call $~lib/array/Array#__get - local.tee $37 - local.get $37 + local.tee $41 + local.get $41 f32.ne else i32.const 0 @@ -14666,15 +14666,15 @@ local.get $57 local.get $1 call $~lib/array/Array#__get - local.tee $34 - local.get $34 + local.tee $36 + local.get $36 f64.ne if (result i32) local.get $54 local.get $1 call $~lib/array/Array#__get - local.tee $34 - local.get $34 + local.tee $36 + local.get $36 f64.ne else i32.const 0 @@ -14730,7 +14730,7 @@ i32.const 5584 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $42 + local.tee $40 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -14762,7 +14762,7 @@ i32.const 5680 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $40 + local.tee $39 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -14780,7 +14780,7 @@ i32.const 5728 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.set $44 + local.set $43 i32.const 1 i32.const 2 i32.const 3 @@ -14814,17 +14814,17 @@ local.set $48 i32.const 128 call $std/array/createReverseOrderedArray - local.set $47 + local.set $46 i32.const 1024 call $std/array/createReverseOrderedArray - local.set $46 + local.set $45 i32.const 10000 call $std/array/createReverseOrderedArray - local.set $45 + local.set $44 i32.const 512 call $std/array/createRandomOrderedArray - local.set $43 - local.get $44 + local.set $47 + local.get $43 i32.const 48 call $std/array/assertSorted local.get $51 @@ -14837,7 +14837,7 @@ i32.const 5872 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $39 + local.tee $38 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -14859,7 +14859,7 @@ i32.const 5904 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $38 + local.tee $37 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -14903,10 +14903,10 @@ call $~lib/builtins/abort unreachable end - local.get $47 + local.get $46 i32.const 48 call $std/array/assertSorted - local.get $47 + local.get $46 local.get $1 i32.const 4 call $std/array/isArraysEqual @@ -14919,10 +14919,10 @@ call $~lib/builtins/abort unreachable end - local.get $46 + local.get $45 i32.const 48 call $std/array/assertSorted - local.get $46 + local.get $45 local.get $1 i32.const 4 call $std/array/isArraysEqual @@ -14935,10 +14935,10 @@ call $~lib/builtins/abort unreachable end - local.get $45 + local.get $44 i32.const 48 call $std/array/assertSorted - local.get $45 + local.get $44 local.get $1 i32.const 4 call $std/array/isArraysEqual @@ -14951,7 +14951,7 @@ call $~lib/builtins/abort unreachable end - local.get $43 + local.get $47 i32.const 48 call $std/array/assertSorted local.get $58 @@ -14964,13 +14964,13 @@ call $~lib/rt/pure/__release local.get $53 call $~lib/rt/pure/__release - local.get $42 + local.get $40 call $~lib/rt/pure/__release local.get $52 call $~lib/rt/pure/__release - local.get $40 + local.get $39 call $~lib/rt/pure/__release - local.get $44 + local.get $43 call $~lib/rt/pure/__release local.get $51 call $~lib/rt/pure/__release @@ -14982,18 +14982,18 @@ call $~lib/rt/pure/__release local.get $48 call $~lib/rt/pure/__release - local.get $47 - call $~lib/rt/pure/__release local.get $46 call $~lib/rt/pure/__release local.get $45 call $~lib/rt/pure/__release - local.get $43 + local.get $44 call $~lib/rt/pure/__release - local.get $39 + local.get $47 call $~lib/rt/pure/__release local.get $38 call $~lib/rt/pure/__release + local.get $37 + call $~lib/rt/pure/__release i32.const 64 call $std/array/createRandomOrderedArray local.set $1 @@ -15087,13 +15087,13 @@ if (result i32) local.get $52 local.get $53 - i32.eq + i32.ne else local.get $53 local.get $52 - call $~lib/string/String.__eq + call $~lib/string/String#_eq + i32.eqz end - i32.eqz if local.get $56 call $~lib/rt/pure/__release @@ -15149,17 +15149,9 @@ i32.load offset=12 call $~lib/util/string/joinBooleanArray local.tee $58 - local.set $57 local.get $58 - if (result i32) - local.get $57 - i32.const 6336 - call $~lib/string/String.__eq - else - local.get $57 - i32.const 6336 - i32.eq - end + i32.const 6336 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -15175,21 +15167,12 @@ i32.const 6384 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $45 + local.tee $53 i32.const 6064 call $~lib/array/Array#join - local.tee $57 - local.set $56 - local.get $57 - if (result i32) - local.get $56 - i32.const 6448 - call $~lib/string/String.__eq - else - local.get $56 - i32.const 6448 - i32.eq - end + local.tee $52 + i32.const 6448 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -15205,21 +15188,12 @@ i32.const 6480 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $44 + local.tee $51 i32.const 6512 call $~lib/array/Array#join - local.tee $56 - local.set $54 - local.get $56 - if (result i32) - local.get $54 - i32.const 6448 - call $~lib/string/String.__eq - else - local.get $54 - i32.const 6448 - i32.eq - end + local.tee $50 + i32.const 6448 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -15235,21 +15209,12 @@ i32.const 6544 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $43 + local.tee $49 i32.const 6576 call $~lib/array/Array#join - local.tee $54 - local.set $53 - local.get $54 - if (result i32) - local.get $53 - i32.const 6608 - call $~lib/string/String.__eq - else - local.get $53 - i32.const 6608 - i32.eq - end + local.tee $48 + i32.const 6608 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -15265,23 +15230,16 @@ i32.const 6672 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $53 + local.tee $58 i32.load offset=4 - local.get $53 + local.get $58 i32.load offset=12 call $~lib/util/string/joinFloatArray - local.tee $52 - local.set $51 - local.get $52 - if (result i32) - local.get $51 - i32.const 7888 - call $~lib/string/String.__eq - else - local.get $51 - i32.const 7888 - i32.eq - end + local.tee $57 + local.set $46 + local.get $57 + i32.const 7888 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -15297,21 +15255,12 @@ i32.const 8016 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $42 + local.tee $45 i32.const 6064 call $~lib/array/Array<~lib/string/String | null>#join - local.tee $51 - local.set $50 - local.get $51 - if (result i32) - local.get $50 - i32.const 7984 - call $~lib/string/String.__eq - else - local.get $50 - i32.const 7984 - i32.eq - end + local.tee $44 + i32.const 7984 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -15327,33 +15276,24 @@ i32.const 0 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $50 + local.tee $57 i32.load offset=4 - local.tee $49 + local.tee $56 i32.const 0 call $std/array/Ref#constructor i32.store - local.get $49 + local.get $56 i32.const 0 i32.store offset=4 - local.get $49 + local.get $56 i32.const 0 call $std/array/Ref#constructor i32.store offset=8 - local.get $50 + local.get $57 call $~lib/array/Array#join - local.tee $49 - local.set $48 - local.get $49 - if (result i32) - local.get $48 - i32.const 8096 - call $~lib/string/String.__eq - else - local.get $48 - i32.const 8096 - i32.eq - end + local.tee $43 + i32.const 8096 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -15369,7 +15309,7 @@ i32.const 0 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $48 + local.tee $56 i32.load offset=4 local.tee $47 i32.const 0 @@ -15379,20 +15319,11 @@ i32.const 0 call $std/array/Ref#constructor i32.store offset=4 - local.get $48 + local.get $56 call $~lib/array/Array#join local.tee $47 - local.set $46 - local.get $47 - if (result i32) - local.get $46 - i32.const 8176 - call $~lib/string/String.__eq - else - local.get $46 - i32.const 8176 - i32.eq - end + i32.const 8176 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -15404,33 +15335,32 @@ end local.get $1 call $~lib/rt/pure/__release - local.get $58 call $~lib/rt/pure/__release - local.get $45 + local.get $53 call $~lib/rt/pure/__release - local.get $57 + local.get $52 call $~lib/rt/pure/__release - local.get $44 + local.get $51 call $~lib/rt/pure/__release - local.get $56 + local.get $50 call $~lib/rt/pure/__release - local.get $43 + local.get $49 call $~lib/rt/pure/__release - local.get $54 + local.get $48 call $~lib/rt/pure/__release - local.get $53 + local.get $58 call $~lib/rt/pure/__release - local.get $52 + local.get $46 call $~lib/rt/pure/__release - local.get $42 + local.get $45 call $~lib/rt/pure/__release - local.get $51 + local.get $44 call $~lib/rt/pure/__release - local.get $50 + local.get $57 call $~lib/rt/pure/__release - local.get $49 + local.get $43 call $~lib/rt/pure/__release - local.get $48 + local.get $56 call $~lib/rt/pure/__release local.get $47 call $~lib/rt/pure/__release @@ -15465,18 +15395,10 @@ local.get $56 i32.const 6304 call $~lib/array/Array#join - local.tee $51 - local.set $1 - local.get $51 - if (result i32) - local.get $1 - i32.const 6064 - call $~lib/string/String.__eq - else - local.get $1 - i32.const 6064 - i32.eq - end + local.tee $1 + local.get $1 + i32.const 6064 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -15489,18 +15411,11 @@ local.get $54 i32.const 6304 call $~lib/array/Array#join - local.tee $50 - local.set $1 - local.get $50 - if (result i32) - local.get $1 - i32.const 7984 - call $~lib/string/String.__eq - else - local.get $1 - i32.const 7984 - i32.eq - end + local.tee $1 + local.set $45 + local.get $1 + i32.const 7984 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -15513,18 +15428,11 @@ local.get $53 i32.const 6304 call $~lib/array/Array#join - local.tee $49 - local.set $1 - local.get $49 - if (result i32) - local.get $1 - i32.const 8368 - call $~lib/string/String.__eq - else - local.get $1 - i32.const 8368 - i32.eq - end + local.tee $1 + local.set $44 + local.get $1 + i32.const 8368 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -15537,18 +15445,11 @@ local.get $52 i32.const 6304 call $~lib/array/Array#join - local.tee $48 - local.set $1 - local.get $48 - if (result i32) - local.get $1 - i32.const 8400 - call $~lib/string/String.__eq - else - local.get $1 - i32.const 8400 - i32.eq - end + local.tee $1 + local.set $43 + local.get $1 + i32.const 8400 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -15564,23 +15465,16 @@ i32.const 8432 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $47 + local.tee $51 i32.load offset=4 - local.get $47 + local.get $51 i32.load offset=12 call $~lib/util/string/joinIntegerArray - local.tee $46 - local.set $1 - local.get $46 - if (result i32) - local.get $1 - i32.const 8464 - call $~lib/string/String.__eq - else - local.get $1 - i32.const 8464 - i32.eq - end + local.tee $1 + local.set $47 + local.get $1 + i32.const 8464 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -15596,23 +15490,16 @@ i32.const 8496 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $45 + local.tee $50 i32.load offset=4 - local.get $45 + local.get $50 i32.load offset=12 call $~lib/util/string/joinIntegerArray - local.tee $44 - local.set $1 - local.get $44 - if (result i32) - local.get $1 - i32.const 8528 - call $~lib/string/String.__eq - else - local.get $1 - i32.const 8528 - i32.eq - end + local.tee $1 + local.set $40 + local.get $1 + i32.const 8528 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -15628,23 +15515,16 @@ i32.const 8576 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $43 + local.tee $49 i32.load offset=4 - local.get $43 + local.get $49 i32.load offset=12 call $~lib/util/string/joinIntegerArray - local.tee $42 - local.set $1 - local.get $42 - if (result i32) - local.get $1 - i32.const 8624 - call $~lib/string/String.__eq - else - local.get $1 - i32.const 8624 - i32.eq - end + local.tee $1 + local.set $39 + local.get $1 + i32.const 8624 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -15660,23 +15540,16 @@ i32.const 8688 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $40 + local.tee $48 i32.load offset=4 - local.get $40 + local.get $48 i32.load offset=12 call $~lib/util/string/joinIntegerArray - local.tee $39 - local.set $1 - local.get $39 - if (result i32) - local.get $1 - i32.const 8736 - call $~lib/string/String.__eq - else - local.get $1 - i32.const 8736 - i32.eq - end + local.tee $1 + local.set $38 + local.get $1 + i32.const 8736 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -15692,21 +15565,14 @@ i32.const 8848 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $29 + local.tee $37 i32.const 6304 call $~lib/array/Array<~lib/string/String | null>#join - local.tee $38 - local.set $1 - local.get $38 - if (result i32) - local.get $1 - i32.const 8896 - call $~lib/string/String.__eq - else - local.get $1 - i32.const 8896 - i32.eq - end + local.tee $1 + local.set $35 + local.get $1 + i32.const 8896 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -15722,21 +15588,14 @@ i32.const 9008 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $28 + local.tee $34 i32.const 6304 call $~lib/array/Array<~lib/string/String | null>#join - local.tee $36 - local.set $1 - local.get $36 - if (result i32) - local.get $1 - i32.const 9040 - call $~lib/string/String.__eq - else - local.get $1 - i32.const 9040 - i32.eq - end + local.tee $1 + local.set $30 + local.get $1 + i32.const 9040 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -15775,18 +15634,11 @@ local.get $1 i32.load offset=12 call $~lib/util/string/joinReferenceArray<~lib/array/Array> - local.tee $35 - local.set $58 - local.get $35 - if (result i32) - local.get $58 - i32.const 9136 - call $~lib/string/String.__eq - else - local.get $58 - i32.const 9136 - i32.eq - end + local.tee $58 + local.set $29 + local.get $58 + i32.const 9136 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -15825,18 +15677,11 @@ local.get $58 i32.load offset=12 call $~lib/util/string/joinReferenceArray<~lib/array/Array> - local.tee $30 - local.set $57 - local.get $30 - if (result i32) - local.get $57 - i32.const 9136 - call $~lib/string/String.__eq - else - local.get $57 - i32.const 9136 - i32.eq - end + local.tee $57 + local.set $28 + local.get $57 + i32.const 9136 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -15879,15 +15724,8 @@ local.tee $33 local.set $32 local.get $33 - if (result i32) - local.get $32 - i32.const 7984 - call $~lib/string/String.__eq - else - local.get $32 - i32.const 7984 - i32.eq - end + i32.const 7984 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -15905,17 +15743,6 @@ call $~lib/rt/pure/__release local.get $52 call $~lib/rt/pure/__release - local.get $51 - call $~lib/rt/pure/__release - local.get $50 - call $~lib/rt/pure/__release - local.get $49 - call $~lib/rt/pure/__release - local.get $48 - call $~lib/rt/pure/__release - local.get $47 - call $~lib/rt/pure/__release - local.get $46 call $~lib/rt/pure/__release local.get $45 call $~lib/rt/pure/__release @@ -15923,31 +15750,41 @@ call $~lib/rt/pure/__release local.get $43 call $~lib/rt/pure/__release - local.get $42 + local.get $51 + call $~lib/rt/pure/__release + local.get $47 + call $~lib/rt/pure/__release + local.get $50 call $~lib/rt/pure/__release local.get $40 call $~lib/rt/pure/__release + local.get $49 + call $~lib/rt/pure/__release local.get $39 call $~lib/rt/pure/__release - local.get $29 + local.get $48 call $~lib/rt/pure/__release local.get $38 call $~lib/rt/pure/__release - local.get $28 - call $~lib/rt/pure/__release - local.get $36 + local.get $37 call $~lib/rt/pure/__release local.get $35 call $~lib/rt/pure/__release + local.get $34 + call $~lib/rt/pure/__release local.get $30 call $~lib/rt/pure/__release - local.get $33 + local.get $29 + call $~lib/rt/pure/__release + local.get $28 + call $~lib/rt/pure/__release + local.get $32 call $~lib/rt/pure/__release global.get $std/array/arr call $~lib/rt/pure/__release local.get $0 call $~lib/rt/pure/__release - local.get $41 + local.get $42 call $~lib/rt/pure/__release local.get $55 call $~lib/rt/pure/__release diff --git a/tests/compiler/std/array.untouched.wat b/tests/compiler/std/array.untouched.wat index 4cd9ffcd91..f0176fc89b 100644 --- a/tests/compiler/std/array.untouched.wat +++ b/tests/compiler/std/array.untouched.wat @@ -11094,12 +11094,9 @@ local.get $1 call $std/array/assertSorted<~lib/string/String | null> ) - (func $~lib/string/String.__eq (; 216 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/string/String#_eq (; 216 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) - local.get $0 - call $~lib/rt/pure/__retain - local.set $0 local.get $1 call $~lib/rt/pure/__retain local.set $1 @@ -11113,8 +11110,6 @@ if i32.const 0 local.set $3 - local.get $0 - call $~lib/rt/pure/__release local.get $1 call $~lib/rt/pure/__release local.get $3 @@ -11128,22 +11123,31 @@ call $~lib/util/string/compareImpl i32.eqz local.set $3 - local.get $0 - call $~lib/rt/pure/__release local.get $1 call $~lib/rt/pure/__release local.get $3 ) - (func $std/array/isArraysEqual<~lib/string/String | null> (; 217 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/string/String#_ne (; 217 ;) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $1 + call $~lib/rt/pure/__retain + local.set $1 + local.get $0 + local.get $1 + call $~lib/string/String#_eq + i32.eqz + local.set $2 + local.get $1 + call $~lib/rt/pure/__release + local.get $2 + ) + (func $std/array/isArraysEqual<~lib/string/String | null> (; 218 ;) (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 $9 i32) - (local $10 i32) - (local $11 i32) local.get $0 call $~lib/rt/pure/__retain local.set $0 @@ -11197,50 +11201,27 @@ local.get $3 call $~lib/array/Array<~lib/string/String | null>#__get local.tee $5 - call $~lib/rt/pure/__retain - local.set $8 + local.tee $7 + i32.eqz local.get $1 local.get $3 call $~lib/array/Array<~lib/string/String | null>#__get local.tee $6 - call $~lib/rt/pure/__retain - local.set $7 - local.get $8 - call $~lib/rt/pure/__retain - local.set $10 - local.get $7 - call $~lib/rt/pure/__retain - local.set $9 - local.get $10 - i32.eqz - local.get $9 + local.tee $8 i32.eqz i32.or if (result i32) - local.get $10 - local.get $9 - i32.eq + local.get $7 + local.get $8 + i32.ne else - local.get $10 - local.get $9 - call $~lib/string/String.__eq + local.get $7 + local.get $8 + call $~lib/string/String#_ne end - local.set $11 - local.get $9 - call $~lib/rt/pure/__release - local.get $10 - call $~lib/rt/pure/__release - local.get $11 - i32.eqz - local.set $10 - local.get $7 - call $~lib/rt/pure/__release - local.get $8 - call $~lib/rt/pure/__release - local.get $10 if i32.const 0 - local.set $8 + local.set $7 local.get $0 call $~lib/rt/pure/__release local.get $1 @@ -11249,7 +11230,7 @@ call $~lib/rt/pure/__release local.get $6 call $~lib/rt/pure/__release - local.get $8 + local.get $7 return end local.get $5 @@ -11271,7 +11252,7 @@ call $~lib/rt/pure/__release local.get $3 ) - (func $~lib/array/Array<~lib/string/String>#constructor (; 218 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array<~lib/string/String>#constructor (; 219 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -11349,7 +11330,7 @@ i32.store offset=12 local.get $0 ) - (func $~lib/string/String#charAt (; 219 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/string/String#charAt (; 220 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) local.get $1 local.get $0 @@ -11375,7 +11356,7 @@ local.get $2 call $~lib/rt/pure/__retain ) - (func $~lib/string/String#concat (; 220 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/string/String#concat (; 221 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -11431,7 +11412,7 @@ call $~lib/rt/pure/__release local.get $5 ) - (func $~lib/string/String.__concat (; 221 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/string/String._add (; 222 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) local.get $0 call $~lib/rt/pure/__retain @@ -11454,7 +11435,7 @@ call $~lib/rt/pure/__release local.get $2 ) - (func $std/array/createRandomString (; 222 ;) (param $0 i32) (result i32) + (func $std/array/createRandomString (; 223 ;) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -11487,7 +11468,7 @@ i32.trunc_f64_s call $~lib/string/String#charAt local.tee $5 - call $~lib/string/String.__concat + call $~lib/string/String._add local.tee $6 local.tee $7 local.get $1 @@ -11515,7 +11496,7 @@ end local.get $1 ) - (func $~lib/array/Array<~lib/string/String>#__unchecked_set (; 223 ;) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/array/Array<~lib/string/String>#__unchecked_set (; 224 ;) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) local.get $2 @@ -11545,7 +11526,7 @@ local.get $2 call $~lib/rt/pure/__release ) - (func $~lib/array/Array<~lib/string/String>#__set (; 224 ;) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/array/Array<~lib/string/String>#__set (; 225 ;) (param $0 i32) (param $1 i32) (param $2 i32) local.get $2 call $~lib/rt/pure/__retain local.set $2 @@ -11586,7 +11567,7 @@ local.get $2 call $~lib/rt/pure/__release ) - (func $std/array/createRandomStringArray (; 225 ;) (param $0 i32) (result i32) + (func $std/array/createRandomStringArray (; 226 ;) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -11624,7 +11605,7 @@ end local.get $1 ) - (func $~lib/util/sort/insertionSort<~lib/string/String> (; 226 ;) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/util/sort/insertionSort<~lib/string/String> (; 227 ;) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -11722,7 +11703,7 @@ end end ) - (func $~lib/array/Array<~lib/string/String>#sort (; 227 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array<~lib/string/String>#sort (; 228 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -11793,11 +11774,11 @@ local.get $0 call $~lib/rt/pure/__retain ) - (func $~lib/array/Array<~lib/string/String>#get:length (; 228 ;) (param $0 i32) (result i32) + (func $~lib/array/Array<~lib/string/String>#get:length (; 229 ;) (param $0 i32) (result i32) local.get $0 i32.load offset=12 ) - (func $~lib/array/Array<~lib/string/String>#__unchecked_get (; 229 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array<~lib/string/String>#__unchecked_get (; 230 ;) (param $0 i32) (param $1 i32) (result i32) local.get $0 i32.load offset=4 local.get $1 @@ -11807,7 +11788,7 @@ i32.load call $~lib/rt/pure/__retain ) - (func $~lib/array/Array<~lib/string/String>#__get (; 230 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array<~lib/string/String>#__get (; 231 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) local.get $1 local.get $0 @@ -11839,7 +11820,7 @@ end local.get $2 ) - (func $std/array/isSorted<~lib/string/String> (; 231 ;) (param $0 i32) (param $1 i32) (result i32) + (func $std/array/isSorted<~lib/string/String> (; 232 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -11906,7 +11887,7 @@ call $~lib/rt/pure/__release local.get $3 ) - (func $std/array/assertSorted<~lib/string/String> (; 232 ;) (param $0 i32) (param $1 i32) + (func $std/array/assertSorted<~lib/string/String> (; 233 ;) (param $0 i32) (param $1 i32) (local $2 i32) local.get $0 call $~lib/rt/pure/__retain @@ -11931,7 +11912,7 @@ local.get $0 call $~lib/rt/pure/__release ) - (func $~lib/util/sort/COMPARATOR<~lib/string/String>~anonymous|0 (; 233 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/util/sort/COMPARATOR<~lib/string/String>~anonymous|0 (; 234 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -12035,7 +12016,7 @@ call $~lib/rt/pure/__release local.get $2 ) - (func $std/array/assertSorted<~lib/string/String>|trampoline (; 234 ;) (param $0 i32) (param $1 i32) + (func $std/array/assertSorted<~lib/string/String>|trampoline (; 235 ;) (param $0 i32) (param $1 i32) block $1of1 block $0of1 block $outOfRange @@ -12056,7 +12037,7 @@ local.get $1 call $std/array/assertSorted<~lib/string/String> ) - (func $~lib/string/String#substring (; 235 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/string/String#substring (; 236 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -12163,7 +12144,7 @@ local.get $11 call $~lib/rt/pure/__retain ) - (func $~lib/util/string/joinBooleanArray (; 236 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/util/string/joinBooleanArray (; 237 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -12338,7 +12319,7 @@ call $~lib/rt/pure/__release local.get $4 ) - (func $~lib/array/Array#join (; 237 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#join (; 238 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -12361,7 +12342,7 @@ local.get $4 return ) - (func $~lib/util/number/decimalCount32 (; 238 ;) (param $0 i32) (result i32) + (func $~lib/util/number/decimalCount32 (; 239 ;) (param $0 i32) (result i32) local.get $0 i32.const 100000 i32.lt_u @@ -12416,7 +12397,7 @@ end unreachable ) - (func $~lib/util/number/utoa32_lut (; 239 ;) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/util/number/utoa32_lut (; 240 ;) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -12556,7 +12537,7 @@ i32.store16 end ) - (func $~lib/util/number/itoa32 (; 240 ;) (param $0 i32) (result i32) + (func $~lib/util/number/itoa32 (; 241 ;) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -12610,12 +12591,12 @@ local.get $3 call $~lib/rt/pure/__retain ) - (func $~lib/util/number/itoa (; 241 ;) (param $0 i32) (result i32) + (func $~lib/util/number/itoa (; 242 ;) (param $0 i32) (result i32) local.get $0 call $~lib/util/number/itoa32 return ) - (func $~lib/util/number/itoa_stream (; 242 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/util/number/itoa_stream (; 243 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -12680,7 +12661,7 @@ call $~lib/util/number/utoa32_lut local.get $4 ) - (func $~lib/util/string/joinIntegerArray (; 243 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/util/string/joinIntegerArray (; 244 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -12823,7 +12804,7 @@ call $~lib/rt/pure/__release local.get $4 ) - (func $~lib/array/Array#join (; 244 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#join (; 245 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -12846,7 +12827,7 @@ local.get $4 return ) - (func $~lib/util/number/utoa32 (; 245 ;) (param $0 i32) (result i32) + (func $~lib/util/number/utoa32 (; 246 ;) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -12880,12 +12861,12 @@ local.get $2 call $~lib/rt/pure/__retain ) - (func $~lib/util/number/itoa (; 246 ;) (param $0 i32) (result i32) + (func $~lib/util/number/itoa (; 247 ;) (param $0 i32) (result i32) local.get $0 call $~lib/util/number/utoa32 return ) - (func $~lib/util/number/itoa_stream (; 247 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/util/number/itoa_stream (; 248 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -12930,7 +12911,7 @@ call $~lib/util/number/utoa32_lut local.get $4 ) - (func $~lib/util/string/joinIntegerArray (; 248 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/util/string/joinIntegerArray (; 249 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -13073,7 +13054,7 @@ call $~lib/rt/pure/__release local.get $4 ) - (func $~lib/array/Array#join (; 249 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#join (; 250 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -13096,7 +13077,7 @@ local.get $4 return ) - (func $~lib/util/number/genDigits (; 250 ;) (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 (; 251 ;) (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) @@ -13599,7 +13580,7 @@ end unreachable ) - (func $~lib/util/number/prettify (; 251 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/util/number/prettify (; 252 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -13916,7 +13897,7 @@ end unreachable ) - (func $~lib/util/number/dtoa_core (; 252 ;) (param $0 i32) (param $1 f64) (result i32) + (func $~lib/util/number/dtoa_core (; 253 ;) (param $0 i32) (param $1 f64) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -14342,7 +14323,7 @@ local.get $2 i32.add ) - (func $~lib/util/number/dtoa (; 253 ;) (param $0 f64) (result i32) + (func $~lib/util/number/dtoa (; 254 ;) (param $0 f64) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -14403,7 +14384,7 @@ call $~lib/rt/tlsf/__free local.get $3 ) - (func $~lib/util/number/dtoa_stream (; 254 ;) (param $0 i32) (param $1 i32) (param $2 f64) (result i32) + (func $~lib/util/number/dtoa_stream (; 255 ;) (param $0 i32) (param $1 i32) (param $2 f64) (result i32) (local $3 i32) local.get $0 local.get $1 @@ -14481,7 +14462,7 @@ local.get $2 call $~lib/util/number/dtoa_core ) - (func $~lib/util/string/joinFloatArray (; 255 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/util/string/joinFloatArray (; 256 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -14624,7 +14605,7 @@ call $~lib/rt/pure/__release local.get $4 ) - (func $~lib/array/Array#join (; 256 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#join (; 257 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -14647,7 +14628,7 @@ local.get $4 return ) - (func $~lib/util/string/joinStringArray (; 257 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/util/string/joinStringArray (; 258 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -14870,7 +14851,7 @@ call $~lib/rt/pure/__release local.get $8 ) - (func $~lib/array/Array<~lib/string/String | null>#join (; 258 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array<~lib/string/String | null>#join (; 259 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -14893,10 +14874,10 @@ local.get $4 return ) - (func $std/array/Ref#toString (; 259 ;) (param $0 i32) (result i32) + (func $std/array/Ref#toString (; 260 ;) (param $0 i32) (result i32) i32.const 7456 ) - (func $~lib/util/string/joinReferenceArray (; 260 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/util/string/joinReferenceArray (; 261 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -14999,7 +14980,7 @@ local.get $5 call $std/array/Ref#toString local.tee $9 - call $~lib/string/String.__concat + call $~lib/string/String._add local.tee $10 local.tee $11 local.get $7 @@ -15023,7 +15004,7 @@ if local.get $7 local.get $2 - call $~lib/string/String.__concat + call $~lib/string/String._add local.tee $10 local.tee $12 local.get $7 @@ -15073,7 +15054,7 @@ local.get $5 call $std/array/Ref#toString local.tee $11 - call $~lib/string/String.__concat + call $~lib/string/String._add local.tee $4 local.tee $9 local.get $7 @@ -15101,7 +15082,7 @@ call $~lib/rt/pure/__release local.get $4 ) - (func $~lib/array/Array#join (; 261 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#join (; 262 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -15124,7 +15105,7 @@ local.get $4 return ) - (func $~lib/util/string/joinReferenceArray (; 262 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/util/string/joinReferenceArray (; 263 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -15227,7 +15208,7 @@ local.get $5 call $std/array/Ref#toString local.tee $9 - call $~lib/string/String.__concat + call $~lib/string/String._add local.tee $10 local.tee $11 local.get $7 @@ -15251,7 +15232,7 @@ if local.get $7 local.get $2 - call $~lib/string/String.__concat + call $~lib/string/String._add local.tee $10 local.tee $12 local.get $7 @@ -15301,7 +15282,7 @@ local.get $5 call $std/array/Ref#toString local.tee $11 - call $~lib/string/String.__concat + call $~lib/string/String._add local.tee $4 local.tee $9 local.get $7 @@ -15329,7 +15310,7 @@ call $~lib/rt/pure/__release local.get $4 ) - (func $~lib/array/Array#join (; 263 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#join (; 264 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -15352,12 +15333,12 @@ local.get $4 return ) - (func $~lib/array/Array#toString (; 264 ;) (param $0 i32) (result i32) + (func $~lib/array/Array#toString (; 265 ;) (param $0 i32) (result i32) local.get $0 i32.const 5296 call $~lib/array/Array#join ) - (func $~lib/util/number/itoa (; 265 ;) (param $0 i32) (result i32) + (func $~lib/util/number/itoa (; 266 ;) (param $0 i32) (result i32) local.get $0 i32.const 24 i32.shl @@ -15366,7 +15347,7 @@ call $~lib/util/number/itoa32 return ) - (func $~lib/util/number/itoa_stream (; 266 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/util/number/itoa_stream (; 267 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -15451,7 +15432,7 @@ call $~lib/util/number/utoa32_lut local.get $4 ) - (func $~lib/util/string/joinIntegerArray (; 267 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/util/string/joinIntegerArray (; 268 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -15594,7 +15575,7 @@ call $~lib/rt/pure/__release local.get $4 ) - (func $~lib/array/Array#join (; 268 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#join (; 269 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -15617,19 +15598,19 @@ local.get $4 return ) - (func $~lib/array/Array#toString (; 269 ;) (param $0 i32) (result i32) + (func $~lib/array/Array#toString (; 270 ;) (param $0 i32) (result i32) local.get $0 i32.const 5296 call $~lib/array/Array#join ) - (func $~lib/util/number/itoa (; 270 ;) (param $0 i32) (result i32) + (func $~lib/util/number/itoa (; 271 ;) (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 (; 271 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/util/number/itoa_stream (; 272 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -15682,7 +15663,7 @@ call $~lib/util/number/utoa32_lut local.get $4 ) - (func $~lib/util/string/joinIntegerArray (; 272 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/util/string/joinIntegerArray (; 273 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -15825,7 +15806,7 @@ call $~lib/rt/pure/__release local.get $4 ) - (func $~lib/array/Array#join (; 273 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#join (; 274 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -15848,12 +15829,12 @@ local.get $4 return ) - (func $~lib/array/Array#toString (; 274 ;) (param $0 i32) (result i32) + (func $~lib/array/Array#toString (; 275 ;) (param $0 i32) (result i32) local.get $0 i32.const 5296 call $~lib/array/Array#join ) - (func $~lib/util/number/decimalCount64High (; 275 ;) (param $0 i64) (result i32) + (func $~lib/util/number/decimalCount64High (; 276 ;) (param $0 i64) (result i32) local.get $0 i64.const 1000000000000000 i64.lt_u @@ -15912,7 +15893,7 @@ end unreachable ) - (func $~lib/util/number/utoa64_lut (; 276 ;) (param $0 i32) (param $1 i64) (param $2 i32) + (func $~lib/util/number/utoa64_lut (; 277 ;) (param $0 i32) (param $1 i64) (param $2 i32) (local $3 i32) (local $4 i64) (local $5 i32) @@ -16035,7 +16016,7 @@ local.get $2 call $~lib/util/number/utoa32_lut ) - (func $~lib/util/number/utoa64 (; 277 ;) (param $0 i64) (result i32) + (func $~lib/util/number/utoa64 (; 278 ;) (param $0 i64) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -16101,12 +16082,12 @@ local.get $1 call $~lib/rt/pure/__retain ) - (func $~lib/util/number/itoa (; 278 ;) (param $0 i64) (result i32) + (func $~lib/util/number/itoa (; 279 ;) (param $0 i64) (result i32) local.get $0 call $~lib/util/number/utoa64 return ) - (func $~lib/util/number/itoa_stream (; 279 ;) (param $0 i32) (param $1 i32) (param $2 i64) (result i32) + (func $~lib/util/number/itoa_stream (; 280 ;) (param $0 i32) (param $1 i32) (param $2 i64) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -16177,7 +16158,7 @@ end local.get $4 ) - (func $~lib/util/string/joinIntegerArray (; 280 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/util/string/joinIntegerArray (; 281 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -16320,7 +16301,7 @@ call $~lib/rt/pure/__release local.get $4 ) - (func $~lib/array/Array#join (; 281 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#join (; 282 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -16343,12 +16324,12 @@ local.get $4 return ) - (func $~lib/array/Array#toString (; 282 ;) (param $0 i32) (result i32) + (func $~lib/array/Array#toString (; 283 ;) (param $0 i32) (result i32) local.get $0 i32.const 5296 call $~lib/array/Array#join ) - (func $~lib/util/number/itoa64 (; 283 ;) (param $0 i64) (result i32) + (func $~lib/util/number/itoa64 (; 284 ;) (param $0 i64) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -16437,12 +16418,12 @@ local.get $2 call $~lib/rt/pure/__retain ) - (func $~lib/util/number/itoa (; 284 ;) (param $0 i64) (result i32) + (func $~lib/util/number/itoa (; 285 ;) (param $0 i64) (result i32) local.get $0 call $~lib/util/number/itoa64 return ) - (func $~lib/util/number/itoa_stream (; 285 ;) (param $0 i32) (param $1 i32) (param $2 i64) (result i32) + (func $~lib/util/number/itoa_stream (; 286 ;) (param $0 i32) (param $1 i32) (param $2 i64) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -16533,7 +16514,7 @@ end local.get $4 ) - (func $~lib/util/string/joinIntegerArray (; 286 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/util/string/joinIntegerArray (; 287 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -16676,7 +16657,7 @@ call $~lib/rt/pure/__release local.get $4 ) - (func $~lib/array/Array#join (; 287 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#join (; 288 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -16699,17 +16680,17 @@ local.get $4 return ) - (func $~lib/array/Array#toString (; 288 ;) (param $0 i32) (result i32) + (func $~lib/array/Array#toString (; 289 ;) (param $0 i32) (result i32) local.get $0 i32.const 5296 call $~lib/array/Array#join ) - (func $~lib/array/Array<~lib/string/String | null>#toString (; 289 ;) (param $0 i32) (result i32) + (func $~lib/array/Array<~lib/string/String | null>#toString (; 290 ;) (param $0 i32) (result i32) local.get $0 i32.const 5296 call $~lib/array/Array<~lib/string/String | null>#join ) - (func $~lib/util/string/joinReferenceArray<~lib/array/Array> (; 290 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/util/string/joinReferenceArray<~lib/array/Array> (; 291 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -16812,7 +16793,7 @@ local.get $5 call $~lib/array/Array#toString local.tee $9 - call $~lib/string/String.__concat + call $~lib/string/String._add local.tee $10 local.tee $11 local.get $7 @@ -16836,7 +16817,7 @@ if local.get $7 local.get $2 - call $~lib/string/String.__concat + call $~lib/string/String._add local.tee $10 local.tee $12 local.get $7 @@ -16886,7 +16867,7 @@ local.get $5 call $~lib/array/Array#toString local.tee $11 - call $~lib/string/String.__concat + call $~lib/string/String._add local.tee $4 local.tee $9 local.get $7 @@ -16914,7 +16895,7 @@ call $~lib/rt/pure/__release local.get $4 ) - (func $~lib/array/Array<~lib/array/Array>#join (; 291 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array<~lib/array/Array>#join (; 292 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -16937,19 +16918,19 @@ local.get $4 return ) - (func $~lib/array/Array<~lib/array/Array>#toString (; 292 ;) (param $0 i32) (result i32) + (func $~lib/array/Array<~lib/array/Array>#toString (; 293 ;) (param $0 i32) (result i32) local.get $0 i32.const 5296 call $~lib/array/Array<~lib/array/Array>#join ) - (func $~lib/util/number/itoa (; 293 ;) (param $0 i32) (result i32) + (func $~lib/util/number/itoa (; 294 ;) (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 (; 294 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/util/number/itoa_stream (; 295 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -17002,7 +16983,7 @@ call $~lib/util/number/utoa32_lut local.get $4 ) - (func $~lib/util/string/joinIntegerArray (; 295 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/util/string/joinIntegerArray (; 296 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -17145,7 +17126,7 @@ call $~lib/rt/pure/__release local.get $4 ) - (func $~lib/array/Array#join (; 296 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#join (; 297 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -17168,12 +17149,12 @@ local.get $4 return ) - (func $~lib/array/Array#toString (; 297 ;) (param $0 i32) (result i32) + (func $~lib/array/Array#toString (; 298 ;) (param $0 i32) (result i32) local.get $0 i32.const 5296 call $~lib/array/Array#join ) - (func $~lib/util/string/joinReferenceArray<~lib/array/Array> (; 298 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/util/string/joinReferenceArray<~lib/array/Array> (; 299 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -17276,7 +17257,7 @@ local.get $5 call $~lib/array/Array#toString local.tee $9 - call $~lib/string/String.__concat + call $~lib/string/String._add local.tee $10 local.tee $11 local.get $7 @@ -17300,7 +17281,7 @@ if local.get $7 local.get $2 - call $~lib/string/String.__concat + call $~lib/string/String._add local.tee $10 local.tee $12 local.get $7 @@ -17350,7 +17331,7 @@ local.get $5 call $~lib/array/Array#toString local.tee $11 - call $~lib/string/String.__concat + call $~lib/string/String._add local.tee $4 local.tee $9 local.get $7 @@ -17378,7 +17359,7 @@ call $~lib/rt/pure/__release local.get $4 ) - (func $~lib/array/Array<~lib/array/Array>#join (; 299 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array<~lib/array/Array>#join (; 300 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -17401,17 +17382,17 @@ local.get $4 return ) - (func $~lib/array/Array<~lib/array/Array>#toString (; 300 ;) (param $0 i32) (result i32) + (func $~lib/array/Array<~lib/array/Array>#toString (; 301 ;) (param $0 i32) (result i32) local.get $0 i32.const 5296 call $~lib/array/Array<~lib/array/Array>#join ) - (func $~lib/array/Array#toString (; 301 ;) (param $0 i32) (result i32) + (func $~lib/array/Array#toString (; 302 ;) (param $0 i32) (result i32) local.get $0 i32.const 5296 call $~lib/array/Array#join ) - (func $~lib/util/string/joinReferenceArray<~lib/array/Array> (; 302 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/util/string/joinReferenceArray<~lib/array/Array> (; 303 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -17514,7 +17495,7 @@ local.get $5 call $~lib/array/Array#toString local.tee $9 - call $~lib/string/String.__concat + call $~lib/string/String._add local.tee $10 local.tee $11 local.get $7 @@ -17538,7 +17519,7 @@ if local.get $7 local.get $2 - call $~lib/string/String.__concat + call $~lib/string/String._add local.tee $10 local.tee $12 local.get $7 @@ -17588,7 +17569,7 @@ local.get $5 call $~lib/array/Array#toString local.tee $11 - call $~lib/string/String.__concat + call $~lib/string/String._add local.tee $4 local.tee $9 local.get $7 @@ -17616,7 +17597,7 @@ call $~lib/rt/pure/__release local.get $4 ) - (func $~lib/array/Array<~lib/array/Array>#join (; 303 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array<~lib/array/Array>#join (; 304 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -17639,12 +17620,12 @@ local.get $4 return ) - (func $~lib/array/Array<~lib/array/Array>#toString (; 304 ;) (param $0 i32) (result i32) + (func $~lib/array/Array<~lib/array/Array>#toString (; 305 ;) (param $0 i32) (result i32) local.get $0 i32.const 5296 call $~lib/array/Array<~lib/array/Array>#join ) - (func $~lib/util/string/joinReferenceArray<~lib/array/Array<~lib/array/Array>> (; 305 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/util/string/joinReferenceArray<~lib/array/Array<~lib/array/Array>> (; 306 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -17747,7 +17728,7 @@ local.get $5 call $~lib/array/Array<~lib/array/Array>#toString local.tee $9 - call $~lib/string/String.__concat + call $~lib/string/String._add local.tee $10 local.tee $11 local.get $7 @@ -17771,7 +17752,7 @@ if local.get $7 local.get $2 - call $~lib/string/String.__concat + call $~lib/string/String._add local.tee $10 local.tee $12 local.get $7 @@ -17821,7 +17802,7 @@ local.get $5 call $~lib/array/Array<~lib/array/Array>#toString local.tee $11 - call $~lib/string/String.__concat + call $~lib/string/String._add local.tee $4 local.tee $9 local.get $7 @@ -17849,7 +17830,7 @@ call $~lib/rt/pure/__release local.get $4 ) - (func $~lib/array/Array<~lib/array/Array<~lib/array/Array>>#join (; 306 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array<~lib/array/Array<~lib/array/Array>>#join (; 307 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -17872,12 +17853,12 @@ local.get $4 return ) - (func $~lib/array/Array<~lib/array/Array<~lib/array/Array>>#toString (; 307 ;) (param $0 i32) (result i32) + (func $~lib/array/Array<~lib/array/Array<~lib/array/Array>>#toString (; 308 ;) (param $0 i32) (result i32) local.get $0 i32.const 5296 call $~lib/array/Array<~lib/array/Array<~lib/array/Array>>#join ) - (func $start:std/array (; 308 ;) + (func $start:std/array (; 309 ;) (local $0 i32) (local $1 i32) (local $2 i32) @@ -23120,33 +23101,8 @@ i32.const 5296 call $~lib/array/Array#join local.tee $29 - call $~lib/rt/pure/__retain - local.set $25 i32.const 5328 - call $~lib/rt/pure/__retain - local.set $55 - local.get $25 - i32.eqz - local.get $55 - i32.eqz - i32.or - if (result i32) - local.get $25 - local.get $55 - i32.eq - else - local.get $25 - local.get $55 - call $~lib/string/String.__eq - end - local.set $31 - local.get $55 - call $~lib/rt/pure/__release - local.get $25 - call $~lib/rt/pure/__release - local.get $31 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -23162,37 +23118,12 @@ i32.const 5376 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $55 + local.tee $32 i32.const 5056 call $~lib/array/Array#join - local.tee $25 - call $~lib/rt/pure/__retain - local.set $22 + local.tee $31 i32.const 5856 - call $~lib/rt/pure/__retain - local.set $20 - local.get $22 - i32.eqz - local.get $20 - i32.eqz - i32.or - if (result i32) - local.get $22 - local.get $20 - i32.eq - else - local.get $22 - local.get $20 - call $~lib/string/String.__eq - end - local.set $31 - local.get $20 - call $~lib/rt/pure/__release - local.get $22 - call $~lib/rt/pure/__release - local.get $31 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -23208,37 +23139,12 @@ i32.const 5888 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $20 + local.tee $37 i32.const 5920 call $~lib/array/Array#join - local.tee $22 - call $~lib/rt/pure/__retain - local.set $24 + local.tee $36 i32.const 5856 - call $~lib/rt/pure/__retain - local.set $21 - local.get $24 - i32.eqz - local.get $21 - i32.eqz - i32.or - if (result i32) - local.get $24 - local.get $21 - i32.eq - else - local.get $24 - local.get $21 - call $~lib/string/String.__eq - end - local.set $31 - local.get $21 - call $~lib/rt/pure/__release - local.get $24 - call $~lib/rt/pure/__release - local.get $31 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -23254,37 +23160,12 @@ i32.const 5952 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $21 + local.tee $35 i32.const 5984 call $~lib/array/Array#join - local.tee $24 - call $~lib/rt/pure/__retain - local.set $19 + local.tee $54 i32.const 6016 - call $~lib/rt/pure/__retain - local.set $23 - local.get $19 - i32.eqz - local.get $23 - i32.eqz - i32.or - if (result i32) - local.get $19 - local.get $23 - i32.eq - else - local.get $19 - local.get $23 - call $~lib/string/String.__eq - end - local.set $31 - local.get $23 - call $~lib/rt/pure/__release - local.get $19 - call $~lib/rt/pure/__release - local.get $31 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -23300,37 +23181,12 @@ i32.const 6080 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $23 + local.tee $40 i32.const 6144 call $~lib/array/Array#join - local.tee $19 - call $~lib/rt/pure/__retain - local.set $18 + local.tee $39 i32.const 7296 - call $~lib/rt/pure/__retain - local.set $3 - local.get $18 - i32.eqz - local.get $3 - i32.eqz - i32.or - if (result i32) - local.get $18 - local.get $3 - i32.eq - else - local.get $18 - local.get $3 - call $~lib/string/String.__eq - end - local.set $31 - local.get $3 - call $~lib/rt/pure/__release - local.get $18 - call $~lib/rt/pure/__release - local.get $31 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -23346,37 +23202,12 @@ i32.const 7424 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $3 + local.tee $42 i32.const 5056 call $~lib/array/Array<~lib/string/String | null>#join - local.tee $18 - call $~lib/rt/pure/__retain - local.set $2 + local.tee $38 i32.const 7392 - call $~lib/rt/pure/__retain - local.set $17 - local.get $2 - i32.eqz - local.get $17 - i32.eqz - i32.or - if (result i32) - local.get $2 - local.get $17 - i32.eq - else - local.get $2 - local.get $17 - call $~lib/string/String.__eq - end - local.set $31 - local.get $17 - call $~lib/rt/pure/__release - local.get $2 - call $~lib/rt/pure/__release - local.get $31 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -23392,65 +23223,40 @@ i32.const 0 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.set $2 - local.get $2 + local.set $43 + local.get $43 i32.load offset=4 - local.set $17 - local.get $17 + local.set $41 + local.get $41 i32.const 0 i32.const 0 call $std/array/Ref#constructor i32.store - local.get $17 + local.get $41 i32.const 0 call $~lib/rt/pure/__retain i32.store offset=4 - local.get $17 + local.get $41 i32.const 0 i32.const 0 call $std/array/Ref#constructor i32.store offset=8 - local.get $2 - local.set $17 - local.get $17 + local.get $43 + local.set $41 + local.get $41 i32.const 5296 call $~lib/array/Array#join - local.tee $2 - call $~lib/rt/pure/__retain - local.set $15 + local.tee $43 i32.const 7504 - call $~lib/rt/pure/__retain - local.set $16 - local.get $15 - i32.eqz - local.get $16 + call $~lib/string/String#_eq i32.eqz - i32.or - if (result i32) - local.get $15 - local.get $16 - i32.eq - else - local.get $15 - local.get $16 - call $~lib/string/String.__eq - end - local.set $31 - local.get $16 - call $~lib/rt/pure/__release - local.get $15 - call $~lib/rt/pure/__release - local.get $31 - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 288 - i32.const 1001 - i32.const 3 - call $~lib/builtins/abort - unreachable + if + i32.const 0 + i32.const 288 + i32.const 1001 + i32.const 3 + call $~lib/builtins/abort + unreachable end i32.const 2 i32.const 2 @@ -23458,53 +23264,28 @@ i32.const 0 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.set $15 - local.get $15 + local.set $44 + local.get $44 i32.load offset=4 - local.set $16 - local.get $16 + local.set $47 + local.get $47 i32.const 0 i32.const 0 call $std/array/Ref#constructor i32.store - local.get $16 + local.get $47 i32.const 0 i32.const 0 call $std/array/Ref#constructor i32.store offset=4 - local.get $15 - local.set $16 - local.get $16 + local.get $44 + local.set $47 + local.get $47 i32.const 5296 call $~lib/array/Array#join - local.tee $15 - call $~lib/rt/pure/__retain - local.set $14 + local.tee $44 i32.const 7584 - call $~lib/rt/pure/__retain - local.set $0 - local.get $14 - i32.eqz - local.get $0 - i32.eqz - i32.or - if (result i32) - local.get $14 - local.get $0 - i32.eq - else - local.get $14 - local.get $0 - call $~lib/string/String.__eq - end - local.set $31 - local.get $0 - call $~lib/rt/pure/__release - local.get $14 - call $~lib/rt/pure/__release - local.get $31 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -23518,33 +23299,33 @@ call $~lib/rt/pure/__release local.get $29 call $~lib/rt/pure/__release - local.get $55 + local.get $32 call $~lib/rt/pure/__release - local.get $25 + local.get $31 call $~lib/rt/pure/__release - local.get $20 + local.get $37 call $~lib/rt/pure/__release - local.get $22 + local.get $36 call $~lib/rt/pure/__release - local.get $21 + local.get $35 call $~lib/rt/pure/__release - local.get $24 + local.get $54 call $~lib/rt/pure/__release - local.get $23 + local.get $40 call $~lib/rt/pure/__release - local.get $19 + local.get $39 call $~lib/rt/pure/__release - local.get $3 + local.get $42 call $~lib/rt/pure/__release - local.get $18 + local.get $38 call $~lib/rt/pure/__release - local.get $17 + local.get $41 call $~lib/rt/pure/__release - local.get $2 + local.get $43 call $~lib/rt/pure/__release - local.get $16 + local.get $47 call $~lib/rt/pure/__release - local.get $15 + local.get $44 call $~lib/rt/pure/__release i32.const 0 i32.const 2 @@ -23552,58 +23333,33 @@ i32.const 7664 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.set $16 + local.set $47 i32.const 1 i32.const 2 i32.const 3 i32.const 7680 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.set $2 + local.set $43 i32.const 2 i32.const 2 i32.const 3 i32.const 7712 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.set $17 + local.set $41 i32.const 4 i32.const 2 i32.const 3 i32.const 7744 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.set $18 - local.get $16 + local.set $38 + local.get $47 call $~lib/array/Array#toString - local.tee $15 - call $~lib/rt/pure/__retain - local.set $4 + local.tee $44 i32.const 5056 - call $~lib/rt/pure/__retain - local.set $13 - local.get $4 - i32.eqz - local.get $13 - i32.eqz - i32.or - if (result i32) - local.get $4 - local.get $13 - i32.eq - else - local.get $4 - local.get $13 - call $~lib/string/String.__eq - end - local.set $3 - local.get $13 - call $~lib/rt/pure/__release - local.get $4 - call $~lib/rt/pure/__release - local.get $3 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -23613,36 +23369,11 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $43 call $~lib/array/Array#toString - local.tee $4 - call $~lib/rt/pure/__retain - local.set $11 + local.tee $42 i32.const 7392 - call $~lib/rt/pure/__retain - local.set $12 - local.get $11 - i32.eqz - local.get $12 - i32.eqz - i32.or - if (result i32) - local.get $11 - local.get $12 - i32.eq - else - local.get $11 - local.get $12 - call $~lib/string/String.__eq - end - local.set $13 - local.get $12 - call $~lib/rt/pure/__release - local.get $11 - call $~lib/rt/pure/__release - local.get $13 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -23652,36 +23383,11 @@ call $~lib/builtins/abort unreachable end - local.get $17 + local.get $41 call $~lib/array/Array#toString - local.tee $11 - call $~lib/rt/pure/__retain - local.set $10 + local.tee $39 i32.const 7776 - call $~lib/rt/pure/__retain - local.set $1 - local.get $10 - i32.eqz - local.get $1 - i32.eqz - i32.or - if (result i32) - local.get $10 - local.get $1 - i32.eq - else - local.get $10 - local.get $1 - call $~lib/string/String.__eq - end - local.set $12 - local.get $1 - call $~lib/rt/pure/__release - local.get $10 - call $~lib/rt/pure/__release - local.get $12 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -23691,36 +23397,11 @@ call $~lib/builtins/abort unreachable end - local.get $18 + local.get $38 call $~lib/array/Array#toString - local.tee $10 - call $~lib/rt/pure/__retain - local.set $5 + local.tee $40 i32.const 7808 - call $~lib/rt/pure/__retain - local.set $9 - local.get $5 - i32.eqz - local.get $9 - i32.eqz - i32.or - if (result i32) - local.get $5 - local.get $9 - i32.eq - else - local.get $5 - local.get $9 - call $~lib/string/String.__eq - end - local.set $1 - local.get $9 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - local.get $1 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -23736,36 +23417,11 @@ i32.const 7840 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $9 + local.tee $35 call $~lib/array/Array#toString - local.tee $5 - call $~lib/rt/pure/__retain - local.set $7 + local.tee $54 i32.const 7872 - call $~lib/rt/pure/__retain - local.set $8 - local.get $7 - i32.eqz - local.get $8 - i32.eqz - i32.or - if (result i32) - local.get $7 - local.get $8 - i32.eq - else - local.get $7 - local.get $8 - call $~lib/string/String.__eq - end - local.set $1 - local.get $8 - call $~lib/rt/pure/__release - local.get $7 - call $~lib/rt/pure/__release - local.get $1 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -23780,37 +23436,12 @@ i32.const 22 i32.const 7904 call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $8 - call $~lib/array/Array#toString - local.tee $7 - call $~lib/rt/pure/__retain - local.set $27 - i32.const 7936 - call $~lib/rt/pure/__retain - local.set $6 - local.get $27 - i32.eqz - local.get $6 - i32.eqz - i32.or - if (result i32) - local.get $27 - local.get $6 - i32.eq - else - local.get $27 - local.get $6 - call $~lib/string/String.__eq - end - local.set $1 - local.get $6 - call $~lib/rt/pure/__release - local.get $27 - call $~lib/rt/pure/__release - local.get $1 - i32.const 0 - i32.ne + call $~lib/rt/pure/__retain + local.tee $37 + call $~lib/array/Array#toString + local.tee $36 + i32.const 7936 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -23826,36 +23457,11 @@ i32.const 7984 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $6 + local.tee $32 call $~lib/array/Array#toString - local.tee $27 - call $~lib/rt/pure/__retain - local.set $26 + local.tee $31 i32.const 8032 - call $~lib/rt/pure/__retain - local.set $28 - local.get $26 - i32.eqz - local.get $28 - i32.eqz - i32.or - if (result i32) - local.get $26 - local.get $28 - i32.eq - else - local.get $26 - local.get $28 - call $~lib/string/String.__eq - end - local.set $1 - local.get $28 - call $~lib/rt/pure/__release - local.get $26 - call $~lib/rt/pure/__release - local.get $1 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -23871,36 +23477,11 @@ i32.const 8096 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $28 + local.tee $34 call $~lib/array/Array#toString - local.tee $26 - call $~lib/rt/pure/__retain - local.set $33 + local.tee $29 i32.const 8144 - call $~lib/rt/pure/__retain - local.set $30 - local.get $33 - i32.eqz - local.get $30 - i32.eqz - i32.or - if (result i32) - local.get $33 - local.get $30 - i32.eq - else - local.get $33 - local.get $30 - call $~lib/string/String.__eq - end - local.set $1 - local.get $30 - call $~lib/rt/pure/__release - local.get $33 - call $~lib/rt/pure/__release - local.get $1 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -23916,37 +23497,12 @@ i32.const 8256 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.set $30 - local.get $30 + local.set $49 + local.get $49 call $~lib/array/Array<~lib/string/String | null>#toString - local.tee $33 - call $~lib/rt/pure/__retain - local.set $51 + local.tee $48 i32.const 8304 - call $~lib/rt/pure/__retain - local.set $50 - local.get $51 - i32.eqz - local.get $50 - i32.eqz - i32.or - if (result i32) - local.get $51 - local.get $50 - i32.eq - else - local.get $51 - local.get $50 - call $~lib/string/String.__eq - end - local.set $1 - local.get $50 - call $~lib/rt/pure/__release - local.get $51 - call $~lib/rt/pure/__release - local.get $1 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -23965,33 +23521,8 @@ local.tee $50 call $~lib/array/Array<~lib/string/String | null>#toString local.tee $51 - call $~lib/rt/pure/__retain - local.set $48 i32.const 8448 - call $~lib/rt/pure/__retain - local.set $49 - local.get $48 - i32.eqz - local.get $49 - i32.eqz - i32.or - if (result i32) - local.get $48 - local.get $49 - i32.eq - else - local.get $48 - local.get $49 - call $~lib/string/String.__eq - end - local.set $1 - local.get $49 - call $~lib/rt/pure/__release - local.get $48 - call $~lib/rt/pure/__release - local.get $1 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -24007,11 +23538,11 @@ i32.const 0 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.set $48 - local.get $48 + local.set $33 + local.get $33 i32.load offset=4 - local.set $49 - local.get $49 + local.set $30 + local.get $30 i32.const 2 i32.const 2 i32.const 3 @@ -24019,7 +23550,7 @@ call $~lib/rt/__allocArray call $~lib/rt/pure/__retain i32.store - local.get $49 + local.get $30 i32.const 2 i32.const 2 i32.const 3 @@ -24027,38 +23558,13 @@ call $~lib/rt/__allocArray call $~lib/rt/pure/__retain i32.store offset=4 - local.get $48 + local.get $33 local.set $56 local.get $56 call $~lib/array/Array<~lib/array/Array>#toString - local.tee $49 - call $~lib/rt/pure/__retain - local.set $44 + local.tee $30 i32.const 8544 - call $~lib/rt/pure/__retain - local.set $47 - local.get $44 - i32.eqz - local.get $47 - i32.eqz - i32.or - if (result i32) - local.get $44 - local.get $47 - i32.eq - else - local.get $44 - local.get $47 - call $~lib/string/String.__eq - end - local.set $48 - local.get $47 - call $~lib/rt/pure/__release - local.get $44 - call $~lib/rt/pure/__release - local.get $48 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -24074,11 +23580,11 @@ i32.const 0 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.set $44 - local.get $44 + local.set $33 + local.get $33 i32.load offset=4 - local.set $47 - local.get $47 + local.set $26 + local.get $26 i32.const 2 i32.const 0 i32.const 6 @@ -24086,7 +23592,7 @@ call $~lib/rt/__allocArray call $~lib/rt/pure/__retain i32.store - local.get $47 + local.get $26 i32.const 2 i32.const 0 i32.const 6 @@ -24094,38 +23600,13 @@ call $~lib/rt/__allocArray call $~lib/rt/pure/__retain i32.store offset=4 - local.get $44 + local.get $33 local.set $57 local.get $57 call $~lib/array/Array<~lib/array/Array>#toString - local.tee $47 - call $~lib/rt/pure/__retain - local.set $43 + local.tee $26 i32.const 8544 - call $~lib/rt/pure/__retain - local.set $41 - local.get $43 - i32.eqz - local.get $41 - i32.eqz - i32.or - if (result i32) - local.get $43 - local.get $41 - i32.eq - else - local.get $43 - local.get $41 - call $~lib/string/String.__eq - end - local.set $44 - local.get $41 - call $~lib/rt/pure/__release - local.get $43 - call $~lib/rt/pure/__release - local.get $44 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -24141,22 +23622,22 @@ i32.const 0 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.set $43 - local.get $43 + local.set $33 + local.get $33 i32.load offset=4 - local.set $41 - local.get $41 + local.set $28 + local.get $28 i32.const 1 i32.const 2 i32.const 26 i32.const 0 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.set $44 - local.get $44 + local.set $27 + local.get $27 i32.load offset=4 - local.set $48 - local.get $48 + local.set $6 + local.get $6 i32.const 1 i32.const 2 i32.const 7 @@ -24164,40 +23645,15 @@ call $~lib/rt/__allocArray call $~lib/rt/pure/__retain i32.store - local.get $44 + local.get $27 i32.store - local.get $43 + local.get $33 local.set $58 local.get $58 call $~lib/array/Array<~lib/array/Array<~lib/array/Array>>#toString - local.tee $41 - call $~lib/rt/pure/__retain - local.set $38 + local.tee $28 i32.const 7392 - call $~lib/rt/pure/__retain - local.set $42 - local.get $38 - i32.eqz - local.get $42 - i32.eqz - i32.or - if (result i32) - local.get $38 - local.get $42 - i32.eq - else - local.get $38 - local.get $42 - call $~lib/string/String.__eq - end - local.set $43 - local.get $42 - call $~lib/rt/pure/__release - local.get $38 - call $~lib/rt/pure/__release - local.get $43 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -24207,51 +23663,51 @@ call $~lib/builtins/abort unreachable end - local.get $16 + local.get $47 call $~lib/rt/pure/__release - local.get $2 + local.get $43 call $~lib/rt/pure/__release - local.get $17 + local.get $41 call $~lib/rt/pure/__release - local.get $18 + local.get $38 call $~lib/rt/pure/__release - local.get $15 + local.get $44 call $~lib/rt/pure/__release - local.get $4 + local.get $42 call $~lib/rt/pure/__release - local.get $11 + local.get $39 call $~lib/rt/pure/__release - local.get $10 + local.get $40 call $~lib/rt/pure/__release - local.get $9 + local.get $35 call $~lib/rt/pure/__release - local.get $5 + local.get $54 call $~lib/rt/pure/__release - local.get $8 + local.get $37 call $~lib/rt/pure/__release - local.get $7 + local.get $36 call $~lib/rt/pure/__release - local.get $6 + local.get $32 call $~lib/rt/pure/__release - local.get $27 + local.get $31 call $~lib/rt/pure/__release - local.get $28 + local.get $34 call $~lib/rt/pure/__release - local.get $26 + local.get $29 call $~lib/rt/pure/__release - local.get $30 + local.get $49 call $~lib/rt/pure/__release - local.get $33 + local.get $48 call $~lib/rt/pure/__release local.get $50 call $~lib/rt/pure/__release local.get $51 call $~lib/rt/pure/__release - local.get $49 + local.get $30 call $~lib/rt/pure/__release - local.get $47 + local.get $26 call $~lib/rt/pure/__release - local.get $41 + local.get $28 call $~lib/rt/pure/__release global.get $std/array/arr call $~lib/rt/pure/__release @@ -24270,7 +23726,7 @@ local.get $58 call $~lib/rt/pure/__release ) - (func $~start (; 309 ;) + (func $~start (; 310 ;) global.get $~started if return @@ -24280,10 +23736,10 @@ end call $start:std/array ) - (func $~lib/rt/pure/__collect (; 310 ;) + (func $~lib/rt/pure/__collect (; 311 ;) return ) - (func $~lib/rt/pure/decrement (; 311 ;) (param $0 i32) + (func $~lib/rt/pure/decrement (; 312 ;) (param $0 i32) (local $1 i32) (local $2 i32) local.get $0 @@ -24360,7 +23816,7 @@ i32.store offset=4 end ) - (func $~lib/rt/pure/__visit (; 312 ;) (param $0 i32) (param $1 i32) + (func $~lib/rt/pure/__visit (; 313 ;) (param $0 i32) (param $1 i32) local.get $0 global.get $~lib/heap/__heap_base i32.lt_u @@ -24384,25 +23840,25 @@ i32.sub call $~lib/rt/pure/decrement ) - (func $~lib/array/Array#__visit_impl (; 313 ;) (param $0 i32) (param $1 i32) + (func $~lib/array/Array#__visit_impl (; 314 ;) (param $0 i32) (param $1 i32) local.get $0 i32.load local.get $1 call $~lib/rt/pure/__visit ) - (func $~lib/array/Array#__visit_impl (; 314 ;) (param $0 i32) (param $1 i32) + (func $~lib/array/Array#__visit_impl (; 315 ;) (param $0 i32) (param $1 i32) local.get $0 i32.load local.get $1 call $~lib/rt/pure/__visit ) - (func $~lib/array/Array#__visit_impl (; 315 ;) (param $0 i32) (param $1 i32) + (func $~lib/array/Array#__visit_impl (; 316 ;) (param $0 i32) (param $1 i32) local.get $0 i32.load local.get $1 call $~lib/rt/pure/__visit ) - (func $~lib/array/Array#__visit_impl (; 316 ;) (param $0 i32) (param $1 i32) + (func $~lib/array/Array#__visit_impl (; 317 ;) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -24445,19 +23901,19 @@ local.get $1 call $~lib/rt/pure/__visit ) - (func $~lib/array/Array#__visit_impl (; 317 ;) (param $0 i32) (param $1 i32) + (func $~lib/array/Array#__visit_impl (; 318 ;) (param $0 i32) (param $1 i32) local.get $0 i32.load local.get $1 call $~lib/rt/pure/__visit ) - (func $~lib/array/Array#__visit_impl (; 318 ;) (param $0 i32) (param $1 i32) + (func $~lib/array/Array#__visit_impl (; 319 ;) (param $0 i32) (param $1 i32) local.get $0 i32.load local.get $1 call $~lib/rt/pure/__visit ) - (func $~lib/array/Array#__visit_impl (; 319 ;) (param $0 i32) (param $1 i32) + (func $~lib/array/Array#__visit_impl (; 320 ;) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -24500,7 +23956,7 @@ local.get $1 call $~lib/rt/pure/__visit ) - (func $~lib/array/Array<~lib/array/Array>#__visit_impl (; 320 ;) (param $0 i32) (param $1 i32) + (func $~lib/array/Array<~lib/array/Array>#__visit_impl (; 321 ;) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -24543,7 +23999,7 @@ local.get $1 call $~lib/rt/pure/__visit ) - (func $~lib/array/Array>#__visit_impl (; 321 ;) (param $0 i32) (param $1 i32) + (func $~lib/array/Array>#__visit_impl (; 322 ;) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -24586,7 +24042,7 @@ local.get $1 call $~lib/rt/pure/__visit ) - (func $~lib/array/Array<~lib/string/String | null>#__visit_impl (; 322 ;) (param $0 i32) (param $1 i32) + (func $~lib/array/Array<~lib/string/String | null>#__visit_impl (; 323 ;) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -24629,7 +24085,7 @@ local.get $1 call $~lib/rt/pure/__visit ) - (func $~lib/array/Array<~lib/string/String>#__visit_impl (; 323 ;) (param $0 i32) (param $1 i32) + (func $~lib/array/Array<~lib/string/String>#__visit_impl (; 324 ;) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -24672,46 +24128,46 @@ local.get $1 call $~lib/rt/pure/__visit ) - (func $~lib/array/Array#__visit_impl (; 324 ;) (param $0 i32) (param $1 i32) + (func $~lib/array/Array#__visit_impl (; 325 ;) (param $0 i32) (param $1 i32) local.get $0 i32.load local.get $1 call $~lib/rt/pure/__visit ) - (func $~lib/staticarray/StaticArray#__visit_impl (; 325 ;) (param $0 i32) (param $1 i32) + (func $~lib/staticarray/StaticArray#__visit_impl (; 326 ;) (param $0 i32) (param $1 i32) nop ) - (func $~lib/staticarray/StaticArray#__visit_impl (; 326 ;) (param $0 i32) (param $1 i32) + (func $~lib/staticarray/StaticArray#__visit_impl (; 327 ;) (param $0 i32) (param $1 i32) nop ) - (func $~lib/staticarray/StaticArray#__visit_impl (; 327 ;) (param $0 i32) (param $1 i32) + (func $~lib/staticarray/StaticArray#__visit_impl (; 328 ;) (param $0 i32) (param $1 i32) nop ) - (func $~lib/array/Array#__visit_impl (; 328 ;) (param $0 i32) (param $1 i32) + (func $~lib/array/Array#__visit_impl (; 329 ;) (param $0 i32) (param $1 i32) local.get $0 i32.load local.get $1 call $~lib/rt/pure/__visit ) - (func $~lib/array/Array#__visit_impl (; 329 ;) (param $0 i32) (param $1 i32) + (func $~lib/array/Array#__visit_impl (; 330 ;) (param $0 i32) (param $1 i32) local.get $0 i32.load local.get $1 call $~lib/rt/pure/__visit ) - (func $~lib/array/Array#__visit_impl (; 330 ;) (param $0 i32) (param $1 i32) + (func $~lib/array/Array#__visit_impl (; 331 ;) (param $0 i32) (param $1 i32) local.get $0 i32.load local.get $1 call $~lib/rt/pure/__visit ) - (func $~lib/array/Array#__visit_impl (; 331 ;) (param $0 i32) (param $1 i32) + (func $~lib/array/Array#__visit_impl (; 332 ;) (param $0 i32) (param $1 i32) local.get $0 i32.load local.get $1 call $~lib/rt/pure/__visit ) - (func $~lib/array/Array<~lib/array/Array>#__visit_impl (; 332 ;) (param $0 i32) (param $1 i32) + (func $~lib/array/Array<~lib/array/Array>#__visit_impl (; 333 ;) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -24754,7 +24210,7 @@ local.get $1 call $~lib/rt/pure/__visit ) - (func $~lib/array/Array<~lib/array/Array>#__visit_impl (; 333 ;) (param $0 i32) (param $1 i32) + (func $~lib/array/Array<~lib/array/Array>#__visit_impl (; 334 ;) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -24797,7 +24253,7 @@ local.get $1 call $~lib/rt/pure/__visit ) - (func $~lib/array/Array<~lib/array/Array<~lib/array/Array>>#__visit_impl (; 334 ;) (param $0 i32) (param $1 i32) + (func $~lib/array/Array<~lib/array/Array<~lib/array/Array>>#__visit_impl (; 335 ;) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -24840,7 +24296,7 @@ local.get $1 call $~lib/rt/pure/__visit ) - (func $~lib/rt/__visit_members (; 335 ;) (param $0 i32) (param $1 i32) + (func $~lib/rt/__visit_members (; 336 ;) (param $0 i32) (param $1 i32) (local $2 i32) block $switch$1$default block $switch$1$case$29 diff --git a/tests/compiler/std/object-literal.optimized.wat b/tests/compiler/std/object-literal.optimized.wat index 8b4a8c4ca8..3803f4177a 100644 --- a/tests/compiler/std/object-literal.optimized.wat +++ b/tests/compiler/std/object-literal.optimized.wat @@ -206,29 +206,22 @@ call $~lib/builtins/abort unreachable end - local.get $0 - i32.load offset=4 - local.tee $0 - if (result i32) - block $__inlined_func$~lib/string/String.__eq (result i32) - i32.const 0 - local.get $0 - call $~lib/string/String#get:length - local.tee $1 - i32.const 1040 - call $~lib/string/String#get:length - i32.ne - br_if $__inlined_func$~lib/string/String.__eq - drop - local.get $0 - local.get $1 - call $~lib/util/string/compareImpl - i32.eqz - end - else + block $__inlined_func$~lib/string/String#_eq (result i32) + i32.const 0 local.get $0 + i32.load offset=4 + local.tee $1 + call $~lib/string/String#get:length + local.tee $0 i32.const 1040 - i32.eq + call $~lib/string/String#get:length + i32.ne + br_if $__inlined_func$~lib/string/String#_eq + drop + local.get $1 + local.get $0 + call $~lib/util/string/compareImpl + i32.eqz end i32.eqz if diff --git a/tests/compiler/std/object-literal.untouched.wat b/tests/compiler/std/object-literal.untouched.wat index 12164bf35d..7974fe163a 100644 --- a/tests/compiler/std/object-literal.untouched.wat +++ b/tests/compiler/std/object-literal.untouched.wat @@ -259,12 +259,9 @@ call $~lib/rt/stub/__release local.get $7 ) - (func $~lib/string/String.__eq (; 7 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/string/String#_eq (; 7 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) - local.get $0 - call $~lib/rt/stub/__retain - local.set $0 local.get $1 call $~lib/rt/stub/__retain local.set $1 @@ -278,8 +275,6 @@ if i32.const 0 local.set $3 - local.get $0 - call $~lib/rt/stub/__release local.get $1 call $~lib/rt/stub/__release local.get $3 @@ -293,16 +288,11 @@ call $~lib/util/string/compareImpl i32.eqz local.set $3 - local.get $0 - call $~lib/rt/stub/__release local.get $1 call $~lib/rt/stub/__release local.get $3 ) (func $std/object-literal/bar (; 8 ;) (param $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) local.get $0 call $~lib/rt/stub/__retain local.set $0 @@ -321,33 +311,8 @@ end local.get $0 i32.load offset=4 - call $~lib/rt/stub/__retain - local.set $2 i32.const 32 - call $~lib/rt/stub/__retain - local.set $1 - local.get $2 - i32.eqz - local.get $1 - i32.eqz - i32.or - if (result i32) - local.get $2 - local.get $1 - i32.eq - else - local.get $2 - local.get $1 - call $~lib/string/String.__eq - end - local.set $3 - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - call $~lib/rt/stub/__release - local.get $3 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 diff --git a/tests/compiler/std/object.optimized.wat b/tests/compiler/std/object.optimized.wat index 180b4b7b2f..e082520f0e 100644 --- a/tests/compiler/std/object.optimized.wat +++ b/tests/compiler/std/object.optimized.wat @@ -1,6 +1,6 @@ (module - (type $none_=>_none (func)) (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) + (type $none_=>_none (func)) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (type $i32_=>_i32 (func (param i32) (result i32))) (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) @@ -148,8 +148,25 @@ end i32.const 0 ) - (func $~lib/object/Object.is<~lib/string/String> (; 6 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/string/String#_eq (; 6 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) + local.get $0 + call $~lib/string/String#get:length + local.tee $2 + local.get $1 + call $~lib/string/String#get:length + i32.ne + if + i32.const 0 + return + end + local.get $0 + local.get $1 + local.get $2 + call $~lib/util/string/compareImpl + i32.eqz + ) + (func $~lib/object/Object.is<~lib/string/String | null> (; 7 ;) (param $0 i32) (param $1 i32) (result i32) local.get $0 i32.eqz local.get $1 @@ -160,25 +177,12 @@ local.get $1 i32.eq else - block $__inlined_func$~lib/string/String.__eq (result i32) - i32.const 0 - local.get $0 - call $~lib/string/String#get:length - local.tee $2 - local.get $1 - call $~lib/string/String#get:length - i32.ne - br_if $__inlined_func$~lib/string/String.__eq - drop - local.get $0 - local.get $1 - local.get $2 - call $~lib/util/string/compareImpl - i32.eqz - end + local.get $0 + local.get $1 + call $~lib/string/String#_eq end ) - (func $start:std/object (; 7 ;) + (func $start:std/object (; 8 ;) f64.const 0 f64.const 0 call $~lib/object/Object.is @@ -559,9 +563,7 @@ end i32.const 1088 i32.const 1088 - call $~lib/object/Object.is<~lib/string/String> - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.const 1 i32.ne if @@ -574,7 +576,7 @@ end i32.const 1088 i32.const 1120 - call $~lib/object/Object.is<~lib/string/String> + call $~lib/string/String#_eq if i32.const 0 i32.const 1040 @@ -585,7 +587,7 @@ end i32.const 1088 i32.const 1152 - call $~lib/object/Object.is<~lib/string/String> + call $~lib/string/String#_eq if i32.const 0 i32.const 1040 @@ -596,9 +598,7 @@ end i32.const 0 i32.const 0 - call $~lib/object/Object.is<~lib/string/String> - i32.const 0 - i32.ne + call $~lib/object/Object.is<~lib/string/String | null> i32.const 1 i32.ne if @@ -611,7 +611,7 @@ end i32.const 1184 i32.const 0 - call $~lib/object/Object.is<~lib/string/String> + call $~lib/object/Object.is<~lib/string/String | null> if i32.const 0 i32.const 1040 @@ -622,7 +622,7 @@ end i32.const 0 i32.const 1184 - call $~lib/object/Object.is<~lib/string/String> + call $~lib/object/Object.is<~lib/string/String | null> if i32.const 0 i32.const 1040 @@ -632,7 +632,7 @@ unreachable end ) - (func $~start (; 8 ;) + (func $~start (; 9 ;) call $start:std/object ) ) diff --git a/tests/compiler/std/object.untouched.wat b/tests/compiler/std/object.untouched.wat index b81423f041..a02b0563eb 100644 --- a/tests/compiler/std/object.untouched.wat +++ b/tests/compiler/std/object.untouched.wat @@ -210,12 +210,9 @@ call $~lib/rt/stub/__release local.get $7 ) - (func $~lib/string/String.__eq (; 9 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/string/String#_eq (; 9 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) - local.get $0 - call $~lib/rt/stub/__retain - local.set $0 local.get $1 call $~lib/rt/stub/__retain local.set $1 @@ -229,8 +226,6 @@ if i32.const 0 local.set $3 - local.get $0 - call $~lib/rt/stub/__release local.get $1 call $~lib/rt/stub/__release local.get $3 @@ -244,16 +239,12 @@ call $~lib/util/string/compareImpl i32.eqz local.set $3 - local.get $0 - call $~lib/rt/stub/__release local.get $1 call $~lib/rt/stub/__release local.get $3 ) (func $~lib/object/Object.is<~lib/string/String> (; 10 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) - (local $3 i32) - (local $4 i32) local.get $0 call $~lib/rt/stub/__retain local.set $0 @@ -261,42 +252,18 @@ call $~lib/rt/stub/__retain local.set $1 local.get $0 - call $~lib/rt/stub/__retain - local.set $3 local.get $1 - call $~lib/rt/stub/__retain + call $~lib/string/String#_eq local.set $2 - local.get $3 - i32.eqz - local.get $2 - i32.eqz - i32.or - if (result i32) - local.get $3 - local.get $2 - i32.eq - else - local.get $3 - local.get $2 - call $~lib/string/String.__eq - end - local.set $4 - local.get $2 - call $~lib/rt/stub/__release - local.get $3 - call $~lib/rt/stub/__release - local.get $4 - local.set $3 local.get $0 call $~lib/rt/stub/__release local.get $1 call $~lib/rt/stub/__release - local.get $3 + local.get $2 ) (func $~lib/object/Object.is<~lib/string/String | null> (; 11 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) - (local $4 i32) local.get $0 call $~lib/rt/stub/__retain local.set $0 @@ -304,37 +271,27 @@ call $~lib/rt/stub/__retain local.set $1 local.get $0 - call $~lib/rt/stub/__retain - local.set $3 - local.get $1 - call $~lib/rt/stub/__retain - local.set $2 - local.get $3 + local.tee $2 i32.eqz - local.get $2 + local.get $1 + local.tee $3 i32.eqz i32.or if (result i32) - local.get $3 local.get $2 + local.get $3 i32.eq else - local.get $3 local.get $2 - call $~lib/string/String.__eq + local.get $3 + call $~lib/string/String#_eq end - local.set $4 - local.get $2 - call $~lib/rt/stub/__release - local.get $3 - call $~lib/rt/stub/__release - local.get $4 - local.set $3 + local.set $2 local.get $0 call $~lib/rt/stub/__release local.get $1 call $~lib/rt/stub/__release - local.get $3 + local.get $2 ) (func $start:std/object (; 12 ;) f64.const 0 @@ -816,8 +773,6 @@ i32.const 80 i32.const 80 call $~lib/object/Object.is<~lib/string/String> - i32.const 0 - i32.ne i32.const 1 i32.eq i32.eqz @@ -833,8 +788,6 @@ i32.const 112 call $~lib/object/Object.is<~lib/string/String> i32.const 0 - i32.ne - i32.const 0 i32.eq i32.eqz if @@ -849,8 +802,6 @@ i32.const 144 call $~lib/object/Object.is<~lib/string/String> i32.const 0 - i32.ne - i32.const 0 i32.eq i32.eqz if @@ -864,8 +815,6 @@ i32.const 0 i32.const 0 call $~lib/object/Object.is<~lib/string/String | null> - i32.const 0 - i32.ne i32.const 1 i32.eq i32.eqz @@ -881,8 +830,6 @@ i32.const 0 call $~lib/object/Object.is<~lib/string/String | null> i32.const 0 - i32.ne - i32.const 0 i32.eq i32.eqz if @@ -897,8 +844,6 @@ i32.const 176 call $~lib/object/Object.is<~lib/string/String | null> i32.const 0 - i32.ne - i32.const 0 i32.eq i32.eqz if diff --git a/tests/compiler/std/string-casemapping.optimized.wat b/tests/compiler/std/string-casemapping.optimized.wat index 1c0c553b09..b1b66e7496 100644 --- a/tests/compiler/std/string-casemapping.optimized.wat +++ b/tests/compiler/std/string-casemapping.optimized.wat @@ -2254,7 +2254,7 @@ end i32.const 0 ) - (func $~lib/string/String.__eq (; 28 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/string/String#_eq (; 28 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) local.get $0 call $~lib/string/String#get:length @@ -2885,12 +2885,12 @@ i32.add ) (func $start:std/string-casemapping (; 33 ;) - (local $0 i32) + (local $0 i64) (local $1 i64) (local $2 i64) - (local $3 i64) - (local $4 i32) - (local $5 i64) + (local $3 i32) + (local $4 i64) + (local $5 i32) (local $6 i32) (local $7 i64) (local $8 i32) @@ -2983,16 +2983,8 @@ i32.const 1040 call $~lib/string/String#toUpperCase local.tee $9 - local.tee $0 - if (result i32) - local.get $0 - i32.const 1040 - call $~lib/string/String.__eq - else - local.get $0 - i32.const 1040 - i32.eq - end + i32.const 1040 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -3005,16 +2997,8 @@ i32.const 1040 call $~lib/string/String#toLowerCase local.tee $10 - local.tee $0 - if (result i32) - local.get $0 - i32.const 1040 - call $~lib/string/String.__eq - else - local.get $0 - i32.const 1040 - i32.eq - end + i32.const 1040 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -3027,16 +3011,8 @@ i32.const 11344 call $~lib/string/String#toUpperCase local.tee $11 - local.tee $0 - if (result i32) - local.get $0 - i32.const 11392 - call $~lib/string/String.__eq - else - local.get $0 - i32.const 11392 - i32.eq - end + i32.const 11392 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -3049,16 +3025,8 @@ i32.const 11440 call $~lib/string/String#toLowerCase local.tee $12 - local.tee $0 - if (result i32) - local.get $0 - i32.const 11488 - call $~lib/string/String.__eq - else - local.get $0 - i32.const 11488 - i32.eq - end + i32.const 11488 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -3071,16 +3039,8 @@ i32.const 11536 call $~lib/string/String#toUpperCase local.tee $13 - local.tee $0 - if (result i32) - local.get $0 - i32.const 11632 - call $~lib/string/String.__eq - else - local.get $0 - i32.const 11632 - i32.eq - end + i32.const 11632 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -3093,16 +3053,8 @@ i32.const 11632 call $~lib/string/String#toLowerCase local.tee $14 - local.tee $0 - if (result i32) - local.get $0 - i32.const 11728 - call $~lib/string/String.__eq - else - local.get $0 - i32.const 11728 - i32.eq - end + i32.const 11728 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -3115,16 +3067,8 @@ i32.const 11824 call $~lib/string/String#toUpperCase local.tee $15 - local.tee $0 - if (result i32) - local.get $0 - i32.const 11888 - call $~lib/string/String.__eq - else - local.get $0 - i32.const 11888 - i32.eq - end + i32.const 11888 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -3137,16 +3081,8 @@ i32.const 11888 call $~lib/string/String#toLowerCase local.tee $16 - local.tee $0 - if (result i32) - local.get $0 - i32.const 11952 - call $~lib/string/String.__eq - else - local.get $0 - i32.const 11952 - i32.eq - end + i32.const 11952 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -3159,16 +3095,8 @@ i32.const 12016 call $~lib/string/String#toUpperCase local.tee $17 - local.tee $0 - if (result i32) - local.get $0 - i32.const 12112 - call $~lib/string/String.__eq - else - local.get $0 - i32.const 12112 - i32.eq - end + i32.const 12112 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -3181,16 +3109,8 @@ i32.const 12112 call $~lib/string/String#toLowerCase local.tee $18 - local.tee $0 - if (result i32) - local.get $0 - i32.const 12208 - call $~lib/string/String.__eq - else - local.get $0 - i32.const 12208 - i32.eq - end + i32.const 12208 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -3203,16 +3123,8 @@ i32.const 12304 call $~lib/string/String#toUpperCase local.tee $19 - local.tee $0 - if (result i32) - local.get $0 - i32.const 12400 - call $~lib/string/String.__eq - else - local.get $0 - i32.const 12400 - i32.eq - end + i32.const 12400 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -3225,16 +3137,8 @@ i32.const 12400 call $~lib/string/String#toLowerCase local.tee $20 - local.tee $0 - if (result i32) - local.get $0 - i32.const 12496 - call $~lib/string/String.__eq - else - local.get $0 - i32.const 12496 - i32.eq - end + i32.const 12496 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -3247,16 +3151,8 @@ i32.const 12592 call $~lib/string/String#toUpperCase local.tee $21 - local.tee $0 - if (result i32) - local.get $0 - i32.const 12656 - call $~lib/string/String.__eq - else - local.get $0 - i32.const 12656 - i32.eq - end + i32.const 12656 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -3269,16 +3165,8 @@ i32.const 12720 call $~lib/string/String#toUpperCase local.tee $22 - local.tee $0 - if (result i32) - local.get $0 - i32.const 12784 - call $~lib/string/String.__eq - else - local.get $0 - i32.const 12784 - i32.eq - end + i32.const 12784 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -3291,16 +3179,8 @@ i32.const 12864 call $~lib/string/String#toUpperCase local.tee $23 - local.tee $0 - if (result i32) - local.get $0 - i32.const 12928 - call $~lib/string/String.__eq - else - local.get $0 - i32.const 12928 - i32.eq - end + i32.const 12928 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -3313,16 +3193,8 @@ i32.const 12992 call $~lib/string/String#toUpperCase local.tee $24 - local.tee $0 - if (result i32) - local.get $0 - i32.const 13072 - call $~lib/string/String.__eq - else - local.get $0 - i32.const 13072 - i32.eq - end + i32.const 13072 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -3335,16 +3207,8 @@ i32.const 13152 call $~lib/string/String#toUpperCase local.tee $25 - local.tee $0 - if (result i32) - local.get $0 - i32.const 13216 - call $~lib/string/String.__eq - else - local.get $0 - i32.const 13216 - i32.eq - end + i32.const 13216 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -3357,16 +3221,8 @@ i32.const 13280 call $~lib/string/String#toUpperCase local.tee $26 - local.tee $0 - if (result i32) - local.get $0 - i32.const 13344 - call $~lib/string/String.__eq - else - local.get $0 - i32.const 13344 - i32.eq - end + i32.const 13344 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -3379,16 +3235,8 @@ i32.const 13408 call $~lib/string/String#toUpperCase local.tee $27 - local.tee $0 - if (result i32) - local.get $0 - i32.const 13488 - call $~lib/string/String.__eq - else - local.get $0 - i32.const 13488 - i32.eq - end + i32.const 13488 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -3401,16 +3249,8 @@ i32.const 13568 call $~lib/string/String#toUpperCase local.tee $28 - local.tee $0 - if (result i32) - local.get $0 - i32.const 13648 - call $~lib/string/String.__eq - else - local.get $0 - i32.const 13648 - i32.eq - end + i32.const 13648 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -3423,16 +3263,8 @@ i32.const 13728 call $~lib/string/String#toUpperCase local.tee $29 - local.tee $0 - if (result i32) - local.get $0 - i32.const 13872 - call $~lib/string/String.__eq - else - local.get $0 - i32.const 13872 - i32.eq - end + i32.const 13872 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -3445,16 +3277,8 @@ i32.const 13728 call $~lib/string/String#toLowerCase local.tee $30 - local.tee $0 - if (result i32) - local.get $0 - i32.const 14016 - call $~lib/string/String.__eq - else - local.get $0 - i32.const 14016 - i32.eq - end + i32.const 14016 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -3467,16 +3291,8 @@ i32.const 14160 call $~lib/string/String#toUpperCase local.tee $31 - local.tee $0 - if (result i32) - local.get $0 - i32.const 14192 - call $~lib/string/String.__eq - else - local.get $0 - i32.const 14192 - i32.eq - end + i32.const 14192 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -3489,16 +3305,8 @@ i32.const 14224 call $~lib/string/String#toLowerCase local.tee $32 - local.tee $0 - if (result i32) - local.get $0 - i32.const 14256 - call $~lib/string/String.__eq - else - local.get $0 - i32.const 14256 - i32.eq - end + i32.const 14256 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -3511,16 +3319,8 @@ i32.const 14288 call $~lib/string/String#toUpperCase local.tee $33 - local.tee $0 - if (result i32) - local.get $0 - i32.const 14480 - call $~lib/string/String.__eq - else - local.get $0 - i32.const 14480 - i32.eq - end + i32.const 14480 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -3535,16 +3335,8 @@ local.tee $34 call $~lib/string/String#toLowerCase local.tee $35 - local.tee $0 - if (result i32) - local.get $0 - i32.const 14688 - call $~lib/string/String.__eq - else - local.get $0 - i32.const 14688 - i32.eq - end + i32.const 14688 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -3559,16 +3351,8 @@ local.tee $36 call $~lib/string/String#toLowerCase local.tee $37 - local.tee $0 - if (result i32) - local.get $0 - i32.const 14752 - call $~lib/string/String.__eq - else - local.get $0 - i32.const 14752 - i32.eq - end + i32.const 14752 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -3583,16 +3367,8 @@ local.tee $38 call $~lib/string/String#toLowerCase local.tee $39 - local.tee $0 - if (result i32) - local.get $0 - i32.const 14784 - call $~lib/string/String.__eq - else - local.get $0 - i32.const 14784 - i32.eq - end + i32.const 14784 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -3607,16 +3383,8 @@ local.tee $40 call $~lib/string/String#toLowerCase local.tee $41 - local.tee $0 - if (result i32) - local.get $0 - i32.const 15040 - call $~lib/string/String.__eq - else - local.get $0 - i32.const 15040 - i32.eq - end + i32.const 15040 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -3631,16 +3399,8 @@ local.tee $42 call $~lib/string/String#toUpperCase local.tee $43 - local.tee $0 - if (result i32) - local.get $0 - i32.const 15040 - call $~lib/string/String.__eq - else - local.get $0 - i32.const 15040 - i32.eq - end + i32.const 15040 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -3653,16 +3413,8 @@ i32.const 15072 call $~lib/string/String#toLowerCase local.tee $44 - local.tee $0 - if (result i32) - local.get $0 - i32.const 15104 - call $~lib/string/String.__eq - else - local.get $0 - i32.const 15104 - i32.eq - end + i32.const 15104 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -3675,16 +3427,8 @@ i32.const 15136 call $~lib/string/String#toLowerCase local.tee $45 - local.tee $0 - if (result i32) - local.get $0 - i32.const 15168 - call $~lib/string/String.__eq - else - local.get $0 - i32.const 15168 - i32.eq - end + i32.const 15168 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -3697,16 +3441,8 @@ i32.const 15200 call $~lib/string/String#toLowerCase local.tee $46 - local.tee $0 - if (result i32) - local.get $0 - i32.const 15232 - call $~lib/string/String.__eq - else - local.get $0 - i32.const 15232 - i32.eq - end + i32.const 15232 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -3719,16 +3455,8 @@ i32.const 15264 call $~lib/string/String#toLowerCase local.tee $47 - local.tee $0 - if (result i32) - local.get $0 - i32.const 15296 - call $~lib/string/String.__eq - else - local.get $0 - i32.const 15296 - i32.eq - end + i32.const 15296 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -3741,16 +3469,8 @@ i32.const 15328 call $~lib/string/String#toLowerCase local.tee $48 - local.tee $0 - if (result i32) - local.get $0 - i32.const 15360 - call $~lib/string/String.__eq - else - local.get $0 - i32.const 15360 - i32.eq - end + i32.const 15360 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -3763,16 +3483,8 @@ i32.const 15392 call $~lib/string/String#toLowerCase local.tee $49 - local.tee $0 - if (result i32) - local.get $0 - i32.const 15424 - call $~lib/string/String.__eq - else - local.get $0 - i32.const 15424 - i32.eq - end + i32.const 15424 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -3785,16 +3497,8 @@ i32.const 15456 call $~lib/string/String#toLowerCase local.tee $50 - local.tee $0 - if (result i32) - local.get $0 - i32.const 15488 - call $~lib/string/String.__eq - else - local.get $0 - i32.const 15488 - i32.eq - end + i32.const 15488 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -3807,16 +3511,8 @@ i32.const 15520 call $~lib/string/String#toLowerCase local.tee $51 - local.tee $0 - if (result i32) - local.get $0 - i32.const 15552 - call $~lib/string/String.__eq - else - local.get $0 - i32.const 15552 - i32.eq - end + i32.const 15552 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -3829,16 +3525,8 @@ i32.const 15584 call $~lib/string/String#toLowerCase local.tee $52 - local.tee $0 - if (result i32) - local.get $0 - i32.const 15616 - call $~lib/string/String.__eq - else - local.get $0 - i32.const 15616 - i32.eq - end + i32.const 15616 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -3851,16 +3539,8 @@ i32.const 15648 call $~lib/string/String#toLowerCase local.tee $53 - local.tee $0 - if (result i32) - local.get $0 - i32.const 15680 - call $~lib/string/String.__eq - else - local.get $0 - i32.const 15680 - i32.eq - end + i32.const 15680 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -3873,16 +3553,8 @@ i32.const 15712 call $~lib/string/String#toLowerCase local.tee $54 - local.tee $0 - if (result i32) - local.get $0 - i32.const 15744 - call $~lib/string/String.__eq - else - local.get $0 - i32.const 15744 - i32.eq - end + i32.const 15744 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -3895,16 +3567,8 @@ i32.const 15776 call $~lib/string/String#toLowerCase local.tee $55 - local.tee $0 - if (result i32) - local.get $0 - i32.const 15808 - call $~lib/string/String.__eq - else - local.get $0 - i32.const 15808 - i32.eq - end + i32.const 15808 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -3917,16 +3581,8 @@ i32.const 15840 call $~lib/string/String#toLowerCase local.tee $56 - local.tee $0 - if (result i32) - local.get $0 - i32.const 15872 - call $~lib/string/String.__eq - else - local.get $0 - i32.const 15872 - i32.eq - end + i32.const 15872 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -3939,16 +3595,8 @@ i32.const 15904 call $~lib/string/String#toLowerCase local.tee $57 - local.tee $0 - if (result i32) - local.get $0 - i32.const 15936 - call $~lib/string/String.__eq - else - local.get $0 - i32.const 15936 - i32.eq - end + i32.const 15936 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -3961,16 +3609,8 @@ i32.const 15968 call $~lib/string/String#toLowerCase local.tee $58 - local.tee $0 - if (result i32) - local.get $0 - i32.const 16000 - call $~lib/string/String.__eq - else - local.get $0 - i32.const 16000 - i32.eq - end + i32.const 16000 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -3983,16 +3623,8 @@ i32.const 16032 call $~lib/string/String#toLowerCase local.tee $59 - local.tee $0 - if (result i32) - local.get $0 - i32.const 16064 - call $~lib/string/String.__eq - else - local.get $0 - i32.const 16064 - i32.eq - end + i32.const 16064 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -4005,16 +3637,8 @@ i32.const 16096 call $~lib/string/String#toLowerCase local.tee $60 - local.tee $0 - if (result i32) - local.get $0 - i32.const 16128 - call $~lib/string/String.__eq - else - local.get $0 - i32.const 16128 - i32.eq - end + i32.const 16128 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -4027,16 +3651,8 @@ i32.const 16160 call $~lib/string/String#toLowerCase local.tee $61 - local.tee $0 - if (result i32) - local.get $0 - i32.const 16192 - call $~lib/string/String.__eq - else - local.get $0 - i32.const 16192 - i32.eq - end + i32.const 16192 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -4049,16 +3665,8 @@ i32.const 16224 call $~lib/string/String#toLowerCase local.tee $62 - local.tee $0 - if (result i32) - local.get $0 - i32.const 16256 - call $~lib/string/String.__eq - else - local.get $0 - i32.const 16256 - i32.eq - end + i32.const 16256 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -4071,16 +3679,8 @@ i32.const 16288 call $~lib/string/String#toLowerCase local.tee $63 - local.tee $0 - if (result i32) - local.get $0 - i32.const 16320 - call $~lib/string/String.__eq - else - local.get $0 - i32.const 16320 - i32.eq - end + i32.const 16320 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -4093,16 +3693,8 @@ i32.const 16352 call $~lib/string/String#toLowerCase local.tee $64 - local.tee $0 - if (result i32) - local.get $0 - i32.const 16384 - call $~lib/string/String.__eq - else - local.get $0 - i32.const 16384 - i32.eq - end + i32.const 16384 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -4115,16 +3707,8 @@ i32.const 16416 call $~lib/string/String#toLowerCase local.tee $65 - local.tee $0 - if (result i32) - local.get $0 - i32.const 16448 - call $~lib/string/String.__eq - else - local.get $0 - i32.const 16448 - i32.eq - end + i32.const 16448 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -4137,16 +3721,8 @@ i32.const 16480 call $~lib/string/String#toLowerCase local.tee $66 - local.tee $0 - if (result i32) - local.get $0 - i32.const 16512 - call $~lib/string/String.__eq - else - local.get $0 - i32.const 16512 - i32.eq - end + i32.const 16512 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -4159,16 +3735,8 @@ i32.const 16544 call $~lib/string/String#toLowerCase local.tee $67 - local.tee $0 - if (result i32) - local.get $0 - i32.const 16576 - call $~lib/string/String.__eq - else - local.get $0 - i32.const 16576 - i32.eq - end + i32.const 16576 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -4181,16 +3749,8 @@ i32.const 16608 call $~lib/string/String#toLowerCase local.tee $68 - local.tee $0 - if (result i32) - local.get $0 - i32.const 16640 - call $~lib/string/String.__eq - else - local.get $0 - i32.const 16640 - i32.eq - end + i32.const 16640 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -4203,16 +3763,8 @@ i32.const 16672 call $~lib/string/String#toLowerCase local.tee $69 - local.tee $0 - if (result i32) - local.get $0 - i32.const 15744 - call $~lib/string/String.__eq - else - local.get $0 - i32.const 15744 - i32.eq - end + i32.const 15744 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -4225,16 +3777,8 @@ i32.const 16704 call $~lib/string/String#toLowerCase local.tee $70 - local.tee $0 - if (result i32) - local.get $0 - i32.const 16736 - call $~lib/string/String.__eq - else - local.get $0 - i32.const 16736 - i32.eq - end + i32.const 16736 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -4247,16 +3791,8 @@ i32.const 16768 call $~lib/string/String#toLowerCase local.tee $71 - local.tee $0 - if (result i32) - local.get $0 - i32.const 16800 - call $~lib/string/String.__eq - else - local.get $0 - i32.const 16800 - i32.eq - end + i32.const 16800 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -4269,16 +3805,8 @@ i32.const 16832 call $~lib/string/String#toLowerCase local.tee $72 - local.tee $0 - if (result i32) - local.get $0 - i32.const 16864 - call $~lib/string/String.__eq - else - local.get $0 - i32.const 16864 - i32.eq - end + i32.const 16864 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -4291,16 +3819,8 @@ i32.const 16896 call $~lib/string/String#toLowerCase local.tee $73 - local.tee $0 - if (result i32) - local.get $0 - i32.const 16928 - call $~lib/string/String.__eq - else - local.get $0 - i32.const 16928 - i32.eq - end + i32.const 16928 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -4313,16 +3833,8 @@ i32.const 16960 call $~lib/string/String#toLowerCase local.tee $74 - local.tee $0 - if (result i32) - local.get $0 - i32.const 16992 - call $~lib/string/String.__eq - else - local.get $0 - i32.const 16992 - i32.eq - end + i32.const 16992 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -4335,16 +3847,8 @@ i32.const 17024 call $~lib/string/String#toLowerCase local.tee $75 - local.tee $0 - if (result i32) - local.get $0 - i32.const 17056 - call $~lib/string/String.__eq - else - local.get $0 - i32.const 17056 - i32.eq - end + i32.const 17056 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -4357,16 +3861,8 @@ i32.const 17088 call $~lib/string/String#toLowerCase local.tee $76 - local.tee $0 - if (result i32) - local.get $0 - i32.const 17120 - call $~lib/string/String.__eq - else - local.get $0 - i32.const 17120 - i32.eq - end + i32.const 17120 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -4379,16 +3875,8 @@ i32.const 17152 call $~lib/string/String#toLowerCase local.tee $77 - local.tee $0 - if (result i32) - local.get $0 - i32.const 17184 - call $~lib/string/String.__eq - else - local.get $0 - i32.const 17184 - i32.eq - end + i32.const 17184 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -4401,16 +3889,8 @@ i32.const 17216 call $~lib/string/String#toLowerCase local.tee $78 - local.tee $0 - if (result i32) - local.get $0 - i32.const 17248 - call $~lib/string/String.__eq - else - local.get $0 - i32.const 17248 - i32.eq - end + i32.const 17248 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -4423,16 +3903,8 @@ i32.const 17280 call $~lib/string/String#toLowerCase local.tee $79 - local.tee $0 - if (result i32) - local.get $0 - i32.const 17312 - call $~lib/string/String.__eq - else - local.get $0 - i32.const 17312 - i32.eq - end + i32.const 17312 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -4445,16 +3917,8 @@ i32.const 17344 call $~lib/string/String#toLowerCase local.tee $80 - local.tee $0 - if (result i32) - local.get $0 - i32.const 17376 - call $~lib/string/String.__eq - else - local.get $0 - i32.const 17376 - i32.eq - end + i32.const 17376 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -4467,16 +3931,8 @@ i32.const 17408 call $~lib/string/String#toLowerCase local.tee $81 - local.tee $0 - if (result i32) - local.get $0 - i32.const 17440 - call $~lib/string/String.__eq - else - local.get $0 - i32.const 17440 - i32.eq - end + i32.const 17440 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -4489,16 +3945,8 @@ i32.const 17472 call $~lib/string/String#toUpperCase local.tee $82 - local.tee $0 - if (result i32) - local.get $0 - i32.const 17504 - call $~lib/string/String.__eq - else - local.get $0 - i32.const 17504 - i32.eq - end + i32.const 17504 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -4511,16 +3959,8 @@ i32.const 14720 call $~lib/string/String#toUpperCase local.tee $83 - local.tee $0 - if (result i32) - local.get $0 - i32.const 17536 - call $~lib/string/String.__eq - else - local.get $0 - i32.const 17536 - i32.eq - end + i32.const 17536 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -4533,16 +3973,8 @@ i32.const 17568 call $~lib/string/String#toUpperCase local.tee $84 - local.tee $0 - if (result i32) - local.get $0 - i32.const 17600 - call $~lib/string/String.__eq - else - local.get $0 - i32.const 17600 - i32.eq - end + i32.const 17600 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -4555,16 +3987,8 @@ i32.const 17632 call $~lib/string/String#toUpperCase local.tee $85 - local.tee $0 - if (result i32) - local.get $0 - i32.const 17664 - call $~lib/string/String.__eq - else - local.get $0 - i32.const 17664 - i32.eq - end + i32.const 17664 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -4577,16 +4001,8 @@ i32.const 17696 call $~lib/string/String#toUpperCase local.tee $86 - local.tee $0 - if (result i32) - local.get $0 - i32.const 17728 - call $~lib/string/String.__eq - else - local.get $0 - i32.const 17728 - i32.eq - end + i32.const 17728 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -4599,16 +4015,8 @@ i32.const 17760 call $~lib/string/String#toUpperCase local.tee $87 - local.tee $0 - if (result i32) - local.get $0 - i32.const 17792 - call $~lib/string/String.__eq - else - local.get $0 - i32.const 17792 - i32.eq - end + i32.const 17792 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -4621,16 +4029,8 @@ i32.const 17824 call $~lib/string/String#toUpperCase local.tee $88 - local.tee $0 - if (result i32) - local.get $0 - i32.const 17792 - call $~lib/string/String.__eq - else - local.get $0 - i32.const 17792 - i32.eq - end + i32.const 17792 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -4643,16 +4043,8 @@ i32.const 17856 call $~lib/string/String#toUpperCase local.tee $89 - local.tee $0 - if (result i32) - local.get $0 - i32.const 17888 - call $~lib/string/String.__eq - else - local.get $0 - i32.const 17888 - i32.eq - end + i32.const 17888 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -4665,16 +4057,8 @@ i32.const 17920 call $~lib/string/String#toUpperCase local.tee $90 - local.tee $0 - if (result i32) - local.get $0 - i32.const 17952 - call $~lib/string/String.__eq - else - local.get $0 - i32.const 17952 - i32.eq - end + i32.const 17952 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -4687,16 +4071,8 @@ i32.const 17984 call $~lib/string/String#toUpperCase local.tee $91 - local.tee $0 - if (result i32) - local.get $0 - i32.const 18016 - call $~lib/string/String.__eq - else - local.get $0 - i32.const 18016 - i32.eq - end + i32.const 18016 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -4709,16 +4085,8 @@ i32.const 18048 call $~lib/string/String#toUpperCase local.tee $92 - local.tee $0 - if (result i32) - local.get $0 - i32.const 18080 - call $~lib/string/String.__eq - else - local.get $0 - i32.const 18080 - i32.eq - end + i32.const 18080 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -4731,16 +4099,8 @@ i32.const 18112 call $~lib/string/String#toUpperCase local.tee $93 - local.tee $0 - if (result i32) - local.get $0 - i32.const 18144 - call $~lib/string/String.__eq - else - local.get $0 - i32.const 18144 - i32.eq - end + i32.const 18144 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -4753,16 +4113,8 @@ i32.const 18176 call $~lib/string/String#toUpperCase local.tee $94 - local.tee $0 - if (result i32) - local.get $0 - i32.const 18208 - call $~lib/string/String.__eq - else - local.get $0 - i32.const 18208 - i32.eq - end + i32.const 18208 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -4773,129 +4125,129 @@ unreachable end loop $for-loop|0 - local.get $4 + local.get $3 i32.const 1114111 i32.le_s if - local.get $4 + local.get $3 call $~lib/string/String.fromCodePoint local.tee $8 call $~lib/string/String#toLowerCase - local.set $0 + local.set $5 local.get $8 call $~lib/string/String#toUpperCase local.set $6 - local.get $0 + local.get $5 i32.const 0 call $~lib/string/String#codePointAt i64.extend_i32_s - local.set $5 - local.get $0 + local.set $4 + local.get $5 i32.const 1 call $~lib/string/String#codePointAt i64.extend_i32_s - local.tee $1 + local.tee $0 i64.const 0 i64.ge_u if - local.get $5 - local.get $1 + local.get $4 + local.get $0 i64.const 16 i64.shl i64.add - local.set $5 + local.set $4 end - local.get $0 + local.get $5 i32.const 2 call $~lib/string/String#codePointAt i64.extend_i32_s - local.tee $1 + local.tee $0 i64.const 0 i64.ge_u if - local.get $5 - local.get $1 + local.get $4 + local.get $0 i64.const 32 i64.shl i64.add - local.set $5 + local.set $4 end local.get $6 i32.const 0 call $~lib/string/String#codePointAt i64.extend_i32_s - local.set $1 + local.set $0 local.get $6 i32.const 1 call $~lib/string/String#codePointAt i64.extend_i32_s - local.tee $2 + local.tee $1 i64.const 0 i64.ge_u if + local.get $0 local.get $1 - local.get $2 i64.const 16 i64.shl i64.add - local.set $1 + local.set $0 end local.get $6 i32.const 2 call $~lib/string/String#codePointAt i64.extend_i32_s - local.tee $2 + local.tee $1 i64.const 0 i64.ge_u if + local.get $0 local.get $1 - local.get $2 i64.const 32 i64.shl i64.add - local.set $1 + local.set $0 end - local.get $4 + local.get $3 i32.const 0 call $std/string-casemapping/toLowerCaseFromIndex i64.extend_i32_s - local.set $2 - local.get $4 + local.set $1 + local.get $3 i32.const 1 call $std/string-casemapping/toLowerCaseFromIndex i64.extend_i32_s - local.tee $3 + local.tee $2 i64.const 0 i64.ge_u if + local.get $1 local.get $2 - local.get $3 i64.const 16 i64.shl i64.add - local.set $2 + local.set $1 end - local.get $4 + local.get $3 i32.const 2 call $std/string-casemapping/toLowerCaseFromIndex i64.extend_i32_s - local.tee $3 + local.tee $2 i64.const 0 i64.ge_u if + local.get $1 local.get $2 - local.get $3 i64.const 32 i64.shl i64.add - local.set $2 + local.set $1 end - local.get $4 + local.get $3 i32.const 0 call $std/string-casemapping/toUpperCaseFromIndex i64.extend_i32_s - local.set $3 - local.get $4 + local.set $2 + local.get $3 i32.const 1 call $std/string-casemapping/toUpperCaseFromIndex i64.extend_i32_s @@ -4903,14 +4255,14 @@ i64.const 0 i64.ge_u if - local.get $3 + local.get $2 local.get $7 i64.const 16 i64.shl i64.add - local.set $3 + local.set $2 end - local.get $4 + local.get $3 i32.const 2 call $std/string-casemapping/toUpperCaseFromIndex i64.extend_i32_s @@ -4918,47 +4270,47 @@ i64.const 0 i64.ge_u if - local.get $3 + local.get $2 local.get $7 i64.const 32 i64.shl i64.add - local.set $3 + local.set $2 end - local.get $2 - local.get $5 + local.get $1 + local.get $4 i64.ne if i32.const 18240 i32.const 3 - local.get $4 + local.get $3 f64.convert_i32_s - local.get $5 + local.get $4 f64.convert_i64_u - local.get $2 + local.get $1 f64.convert_i64_u f64.const 0 f64.const 0 call $~lib/builtins/trace end - local.get $1 - local.get $3 + local.get $0 + local.get $2 i64.ne if i32.const 18320 i32.const 3 - local.get $4 + local.get $3 f64.convert_i32_s - local.get $1 + local.get $0 f64.convert_i64_u - local.get $3 + local.get $2 f64.convert_i64_u f64.const 0 f64.const 0 call $~lib/builtins/trace end - local.get $2 - local.get $5 + local.get $1 + local.get $4 i64.ne if i32.const 0 @@ -4968,8 +4320,8 @@ call $~lib/builtins/abort unreachable end - local.get $1 - local.get $3 + local.get $0 + local.get $2 i64.ne if i32.const 0 @@ -4981,23 +4333,23 @@ end local.get $8 call $~lib/rt/pure/__release - local.get $0 + local.get $5 call $~lib/rt/pure/__release local.get $6 call $~lib/rt/pure/__release - local.get $4 + local.get $3 i32.const 1 i32.add - local.set $4 + local.set $3 br $for-loop|0 end end local.get $9 call $~lib/rt/pure/__release - local.get $11 - call $~lib/rt/pure/__release local.get $10 call $~lib/rt/pure/__release + local.get $11 + call $~lib/rt/pure/__release local.get $12 call $~lib/rt/pure/__release local.get $13 @@ -5046,26 +4398,26 @@ call $~lib/rt/pure/__release local.get $35 call $~lib/rt/pure/__release - local.get $37 - call $~lib/rt/pure/__release local.get $36 call $~lib/rt/pure/__release - local.get $39 + local.get $37 call $~lib/rt/pure/__release local.get $38 call $~lib/rt/pure/__release - local.get $41 + local.get $39 call $~lib/rt/pure/__release local.get $40 call $~lib/rt/pure/__release - local.get $43 + local.get $41 call $~lib/rt/pure/__release local.get $42 call $~lib/rt/pure/__release - local.get $45 + local.get $43 call $~lib/rt/pure/__release local.get $44 call $~lib/rt/pure/__release + local.get $45 + call $~lib/rt/pure/__release local.get $46 call $~lib/rt/pure/__release local.get $47 diff --git a/tests/compiler/std/string-casemapping.untouched.wat b/tests/compiler/std/string-casemapping.untouched.wat index 729d7c5b98..4b3bbf06ec 100644 --- a/tests/compiler/std/string-casemapping.untouched.wat +++ b/tests/compiler/std/string-casemapping.untouched.wat @@ -3748,12 +3748,9 @@ call $~lib/rt/pure/__release local.get $7 ) - (func $~lib/string/String.__eq (; 33 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/string/String#_eq (; 33 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) - local.get $0 - call $~lib/rt/pure/__retain - local.set $0 local.get $1 call $~lib/rt/pure/__retain local.set $1 @@ -3767,8 +3764,6 @@ if i32.const 0 local.set $3 - local.get $0 - call $~lib/rt/pure/__release local.get $1 call $~lib/rt/pure/__release local.get $3 @@ -3782,8 +3777,6 @@ call $~lib/util/string/compareImpl i32.eqz local.set $3 - local.get $0 - call $~lib/rt/pure/__release local.get $1 call $~lib/rt/pure/__release local.get $3 @@ -4590,33 +4583,8 @@ i32.const 32 call $~lib/string/String#toUpperCase local.tee $0 - call $~lib/rt/pure/__retain - local.set $2 i32.const 32 - call $~lib/rt/pure/__retain - local.set $1 - local.get $2 - i32.eqz - local.get $1 - i32.eqz - i32.or - if (result i32) - local.get $2 - local.get $1 - i32.eq - else - local.get $2 - local.get $1 - call $~lib/string/String.__eq - end - local.set $3 - local.get $1 - call $~lib/rt/pure/__release - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -4628,34 +4596,9 @@ end i32.const 32 call $~lib/string/String#toLowerCase - local.tee $2 - call $~lib/rt/pure/__retain - local.set $1 + local.tee $1 i32.const 32 - call $~lib/rt/pure/__retain - local.set $3 - local.get $1 - i32.eqz - local.get $3 - i32.eqz - i32.or - if (result i32) - local.get $1 - local.get $3 - i32.eq - else - local.get $1 - local.get $3 - call $~lib/string/String.__eq - end - local.set $4 - local.get $3 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $4 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -4667,34 +4610,9 @@ end i32.const 10624 call $~lib/string/String#toUpperCase - local.tee $1 - call $~lib/rt/pure/__retain - local.set $3 + local.tee $2 i32.const 10672 - call $~lib/rt/pure/__retain - local.set $4 - local.get $3 - i32.eqz - local.get $4 - i32.eqz - i32.or - if (result i32) - local.get $3 - local.get $4 - i32.eq - else - local.get $3 - local.get $4 - call $~lib/string/String.__eq - end - local.set $5 - local.get $4 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $5 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -4707,33 +4625,8 @@ i32.const 10720 call $~lib/string/String#toLowerCase local.tee $3 - call $~lib/rt/pure/__retain - local.set $4 i32.const 10768 - call $~lib/rt/pure/__retain - local.set $5 - local.get $4 - i32.eqz - local.get $5 - i32.eqz - i32.or - if (result i32) - local.get $4 - local.get $5 - i32.eq - else - local.get $4 - local.get $5 - call $~lib/string/String.__eq - end - local.set $6 - local.get $5 - call $~lib/rt/pure/__release - local.get $4 - call $~lib/rt/pure/__release - local.get $6 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -4746,33 +4639,8 @@ i32.const 10816 call $~lib/string/String#toUpperCase local.tee $4 - call $~lib/rt/pure/__retain - local.set $5 i32.const 10912 - call $~lib/rt/pure/__retain - local.set $6 - local.get $5 - i32.eqz - local.get $6 - i32.eqz - i32.or - if (result i32) - local.get $5 - local.get $6 - i32.eq - else - local.get $5 - local.get $6 - call $~lib/string/String.__eq - end - local.set $7 - local.get $6 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - local.get $7 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -4785,33 +4653,8 @@ i32.const 10912 call $~lib/string/String#toLowerCase local.tee $5 - call $~lib/rt/pure/__retain - local.set $6 i32.const 11008 - call $~lib/rt/pure/__retain - local.set $7 - local.get $6 - i32.eqz - local.get $7 - i32.eqz - i32.or - if (result i32) - local.get $6 - local.get $7 - i32.eq - else - local.get $6 - local.get $7 - call $~lib/string/String.__eq - end - local.set $8 - local.get $7 - call $~lib/rt/pure/__release - local.get $6 - call $~lib/rt/pure/__release - local.get $8 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -4824,33 +4667,8 @@ i32.const 11104 call $~lib/string/String#toUpperCase local.tee $6 - call $~lib/rt/pure/__retain - local.set $7 i32.const 11168 - call $~lib/rt/pure/__retain - local.set $8 - local.get $7 - i32.eqz - local.get $8 - i32.eqz - i32.or - if (result i32) - local.get $7 - local.get $8 - i32.eq - else - local.get $7 - local.get $8 - call $~lib/string/String.__eq - end - local.set $9 - local.get $8 - call $~lib/rt/pure/__release - local.get $7 - call $~lib/rt/pure/__release - local.get $9 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -4863,33 +4681,8 @@ i32.const 11168 call $~lib/string/String#toLowerCase local.tee $7 - call $~lib/rt/pure/__retain - local.set $8 i32.const 11232 - call $~lib/rt/pure/__retain - local.set $9 - local.get $8 - i32.eqz - local.get $9 - i32.eqz - i32.or - if (result i32) - local.get $8 - local.get $9 - i32.eq - else - local.get $8 - local.get $9 - call $~lib/string/String.__eq - end - local.set $10 - local.get $9 - call $~lib/rt/pure/__release - local.get $8 - call $~lib/rt/pure/__release - local.get $10 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -4902,33 +4695,8 @@ i32.const 11296 call $~lib/string/String#toUpperCase local.tee $8 - call $~lib/rt/pure/__retain - local.set $9 i32.const 11392 - call $~lib/rt/pure/__retain - local.set $10 - local.get $9 - i32.eqz - local.get $10 - i32.eqz - i32.or - if (result i32) - local.get $9 - local.get $10 - i32.eq - else - local.get $9 - local.get $10 - call $~lib/string/String.__eq - end - local.set $11 - local.get $10 - call $~lib/rt/pure/__release - local.get $9 - call $~lib/rt/pure/__release - local.get $11 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -4941,72 +4709,22 @@ i32.const 11392 call $~lib/string/String#toLowerCase local.tee $9 - call $~lib/rt/pure/__retain - local.set $10 i32.const 11488 - call $~lib/rt/pure/__retain - local.set $11 - local.get $10 + call $~lib/string/String#_eq i32.eqz - local.get $11 - i32.eqz - i32.or - if (result i32) - local.get $10 - local.get $11 - i32.eq - else - local.get $10 - local.get $11 - call $~lib/string/String.__eq - end - local.set $12 - local.get $11 - call $~lib/rt/pure/__release - local.get $10 - call $~lib/rt/pure/__release - local.get $12 - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 5824 - i32.const 17 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 11584 - call $~lib/string/String#toUpperCase - local.tee $10 - call $~lib/rt/pure/__retain - local.set $11 - i32.const 11680 - call $~lib/rt/pure/__retain - local.set $12 - local.get $11 - i32.eqz - local.get $12 - i32.eqz - i32.or - if (result i32) - local.get $11 - local.get $12 - i32.eq - else - local.get $11 - local.get $12 - call $~lib/string/String.__eq - end - local.set $13 - local.get $12 - call $~lib/rt/pure/__release - local.get $11 - call $~lib/rt/pure/__release - local.get $13 - i32.const 0 - i32.ne + if + i32.const 0 + i32.const 5824 + i32.const 17 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 11584 + call $~lib/string/String#toUpperCase + local.tee $10 + i32.const 11680 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -5019,33 +4737,8 @@ i32.const 11680 call $~lib/string/String#toLowerCase local.tee $11 - call $~lib/rt/pure/__retain - local.set $12 i32.const 11776 - call $~lib/rt/pure/__retain - local.set $13 - local.get $12 - i32.eqz - local.get $13 - i32.eqz - i32.or - if (result i32) - local.get $12 - local.get $13 - i32.eq - else - local.get $12 - local.get $13 - call $~lib/string/String.__eq - end - local.set $14 - local.get $13 - call $~lib/rt/pure/__release - local.get $12 - call $~lib/rt/pure/__release - local.get $14 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -5058,33 +4751,8 @@ i32.const 11872 call $~lib/string/String#toUpperCase local.tee $12 - call $~lib/rt/pure/__retain - local.set $13 i32.const 11936 - call $~lib/rt/pure/__retain - local.set $14 - local.get $13 - i32.eqz - local.get $14 - i32.eqz - i32.or - if (result i32) - local.get $13 - local.get $14 - i32.eq - else - local.get $13 - local.get $14 - call $~lib/string/String.__eq - end - local.set $15 - local.get $14 - call $~lib/rt/pure/__release - local.get $13 - call $~lib/rt/pure/__release - local.get $15 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -5097,33 +4765,8 @@ i32.const 12000 call $~lib/string/String#toUpperCase local.tee $13 - call $~lib/rt/pure/__retain - local.set $14 i32.const 12064 - call $~lib/rt/pure/__retain - local.set $15 - local.get $14 - i32.eqz - local.get $15 - i32.eqz - i32.or - if (result i32) - local.get $14 - local.get $15 - i32.eq - else - local.get $14 - local.get $15 - call $~lib/string/String.__eq - end - local.set $16 - local.get $15 - call $~lib/rt/pure/__release - local.get $14 - call $~lib/rt/pure/__release - local.get $16 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -5136,33 +4779,8 @@ i32.const 12144 call $~lib/string/String#toUpperCase local.tee $14 - call $~lib/rt/pure/__retain - local.set $15 i32.const 12208 - call $~lib/rt/pure/__retain - local.set $16 - local.get $15 - i32.eqz - local.get $16 - i32.eqz - i32.or - if (result i32) - local.get $15 - local.get $16 - i32.eq - else - local.get $15 - local.get $16 - call $~lib/string/String.__eq - end - local.set $17 - local.get $16 - call $~lib/rt/pure/__release - local.get $15 - call $~lib/rt/pure/__release - local.get $17 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -5175,33 +4793,8 @@ i32.const 12272 call $~lib/string/String#toUpperCase local.tee $15 - call $~lib/rt/pure/__retain - local.set $16 i32.const 12352 - call $~lib/rt/pure/__retain - local.set $17 - local.get $16 - i32.eqz - local.get $17 - i32.eqz - i32.or - if (result i32) - local.get $16 - local.get $17 - i32.eq - else - local.get $16 - local.get $17 - call $~lib/string/String.__eq - end - local.set $18 - local.get $17 - call $~lib/rt/pure/__release - local.get $16 - call $~lib/rt/pure/__release - local.get $18 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -5214,33 +4807,8 @@ i32.const 12432 call $~lib/string/String#toUpperCase local.tee $16 - call $~lib/rt/pure/__retain - local.set $17 i32.const 12496 - call $~lib/rt/pure/__retain - local.set $18 - local.get $17 - i32.eqz - local.get $18 - i32.eqz - i32.or - if (result i32) - local.get $17 - local.get $18 - i32.eq - else - local.get $17 - local.get $18 - call $~lib/string/String.__eq - end - local.set $19 - local.get $18 - call $~lib/rt/pure/__release - local.get $17 - call $~lib/rt/pure/__release - local.get $19 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -5253,33 +4821,8 @@ i32.const 12560 call $~lib/string/String#toUpperCase local.tee $17 - call $~lib/rt/pure/__retain - local.set $18 i32.const 12624 - call $~lib/rt/pure/__retain - local.set $19 - local.get $18 - i32.eqz - local.get $19 - i32.eqz - i32.or - if (result i32) - local.get $18 - local.get $19 - i32.eq - else - local.get $18 - local.get $19 - call $~lib/string/String.__eq - end - local.set $20 - local.get $19 - call $~lib/rt/pure/__release - local.get $18 - call $~lib/rt/pure/__release - local.get $20 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -5292,33 +4835,8 @@ i32.const 12688 call $~lib/string/String#toUpperCase local.tee $18 - call $~lib/rt/pure/__retain - local.set $19 i32.const 12768 - call $~lib/rt/pure/__retain - local.set $20 - local.get $19 - i32.eqz - local.get $20 - i32.eqz - i32.or - if (result i32) - local.get $19 - local.get $20 - i32.eq - else - local.get $19 - local.get $20 - call $~lib/string/String.__eq - end - local.set $21 - local.get $20 - call $~lib/rt/pure/__release - local.get $19 - call $~lib/rt/pure/__release - local.get $21 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -5331,33 +4849,8 @@ i32.const 12848 call $~lib/string/String#toUpperCase local.tee $19 - call $~lib/rt/pure/__retain - local.set $20 i32.const 12928 - call $~lib/rt/pure/__retain - local.set $21 - local.get $20 - i32.eqz - local.get $21 - i32.eqz - i32.or - if (result i32) - local.get $20 - local.get $21 - i32.eq - else - local.get $20 - local.get $21 - call $~lib/string/String.__eq - end - local.set $22 - local.get $21 - call $~lib/rt/pure/__release - local.get $20 - call $~lib/rt/pure/__release - local.get $22 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -5370,33 +4863,8 @@ i32.const 13008 call $~lib/string/String#toUpperCase local.tee $20 - call $~lib/rt/pure/__retain - local.set $21 i32.const 13152 - call $~lib/rt/pure/__retain - local.set $22 - local.get $21 - i32.eqz - local.get $22 - i32.eqz - i32.or - if (result i32) - local.get $21 - local.get $22 - i32.eq - else - local.get $21 - local.get $22 - call $~lib/string/String.__eq - end - local.set $23 - local.get $22 - call $~lib/rt/pure/__release - local.get $21 - call $~lib/rt/pure/__release - local.get $23 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -5409,33 +4877,8 @@ i32.const 13008 call $~lib/string/String#toLowerCase local.tee $21 - call $~lib/rt/pure/__retain - local.set $22 i32.const 13296 - call $~lib/rt/pure/__retain - local.set $23 - local.get $22 - i32.eqz - local.get $23 - i32.eqz - i32.or - if (result i32) - local.get $22 - local.get $23 - i32.eq - else - local.get $22 - local.get $23 - call $~lib/string/String.__eq - end - local.set $24 - local.get $23 - call $~lib/rt/pure/__release - local.get $22 - call $~lib/rt/pure/__release - local.get $24 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -5448,33 +4891,8 @@ i32.const 13440 call $~lib/string/String#toUpperCase local.tee $22 - call $~lib/rt/pure/__retain - local.set $23 i32.const 13472 - call $~lib/rt/pure/__retain - local.set $24 - local.get $23 - i32.eqz - local.get $24 - i32.eqz - i32.or - if (result i32) - local.get $23 - local.get $24 - i32.eq - else - local.get $23 - local.get $24 - call $~lib/string/String.__eq - end - local.set $25 - local.get $24 - call $~lib/rt/pure/__release - local.get $23 - call $~lib/rt/pure/__release - local.get $25 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -5487,33 +4905,8 @@ i32.const 13504 call $~lib/string/String#toLowerCase local.tee $23 - call $~lib/rt/pure/__retain - local.set $24 i32.const 13536 - call $~lib/rt/pure/__retain - local.set $25 - local.get $24 - i32.eqz - local.get $25 - i32.eqz - i32.or - if (result i32) - local.get $24 - local.get $25 - i32.eq - else - local.get $24 - local.get $25 - call $~lib/string/String.__eq - end - local.set $26 - local.get $25 - call $~lib/rt/pure/__release - local.get $24 - call $~lib/rt/pure/__release - local.get $26 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -5526,33 +4919,8 @@ i32.const 13568 call $~lib/string/String#toUpperCase local.tee $24 - call $~lib/rt/pure/__retain - local.set $25 i32.const 13760 - call $~lib/rt/pure/__retain - local.set $26 - local.get $25 - i32.eqz - local.get $26 - i32.eqz - i32.or - if (result i32) - local.get $25 - local.get $26 - i32.eq - else - local.get $25 - local.get $26 - call $~lib/string/String.__eq - end - local.set $27 - local.get $26 - call $~lib/rt/pure/__release - local.get $25 - call $~lib/rt/pure/__release - local.get $27 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -5567,33 +4935,8 @@ local.tee $25 call $~lib/string/String#toLowerCase local.tee $26 - call $~lib/rt/pure/__retain - local.set $28 i32.const 13968 - call $~lib/rt/pure/__retain - local.set $27 - local.get $28 - i32.eqz - local.get $27 - i32.eqz - i32.or - if (result i32) - local.get $28 - local.get $27 - i32.eq - else - local.get $28 - local.get $27 - call $~lib/string/String.__eq - end - local.set $29 - local.get $27 - call $~lib/rt/pure/__release - local.get $28 - call $~lib/rt/pure/__release - local.get $29 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -5605,36 +4948,11 @@ end i32.const 14000 call $~lib/string/String#toUpperCase - local.tee $28 - call $~lib/string/String#toLowerCase local.tee $27 - call $~lib/rt/pure/__retain - local.set $30 + call $~lib/string/String#toLowerCase + local.tee $28 i32.const 14032 - call $~lib/rt/pure/__retain - local.set $29 - local.get $30 - i32.eqz - local.get $29 - i32.eqz - i32.or - if (result i32) - local.get $30 - local.get $29 - i32.eq - else - local.get $30 - local.get $29 - call $~lib/string/String.__eq - end - local.set $31 - local.get $29 - call $~lib/rt/pure/__release - local.get $30 - call $~lib/rt/pure/__release - local.get $31 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -5646,36 +4964,11 @@ end i32.const 14064 call $~lib/string/String#toUpperCase - local.tee $30 - call $~lib/string/String#toLowerCase local.tee $29 - call $~lib/rt/pure/__retain - local.set $32 + call $~lib/string/String#toLowerCase + local.tee $30 i32.const 14064 - call $~lib/rt/pure/__retain - local.set $31 - local.get $32 - i32.eqz - local.get $31 - i32.eqz - i32.or - if (result i32) - local.get $32 - local.get $31 - i32.eq - else - local.get $32 - local.get $31 - call $~lib/string/String.__eq - end - local.set $33 - local.get $31 - call $~lib/rt/pure/__release - local.get $32 - call $~lib/rt/pure/__release - local.get $33 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -5687,36 +4980,11 @@ end i32.const 65536 call $~lib/string/String.fromCodePoint - local.tee $32 - call $~lib/string/String#toLowerCase local.tee $31 - call $~lib/rt/pure/__retain - local.set $34 + call $~lib/string/String#toLowerCase + local.tee $32 i32.const 14320 - call $~lib/rt/pure/__retain - local.set $33 - local.get $34 - i32.eqz - local.get $33 - i32.eqz - i32.or - if (result i32) - local.get $34 - local.get $33 - i32.eq - else - local.get $34 - local.get $33 - call $~lib/string/String.__eq - end - local.set $35 - local.get $33 - call $~lib/rt/pure/__release - local.get $34 - call $~lib/rt/pure/__release - local.get $35 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -5728,36 +4996,11 @@ end i32.const 65536 call $~lib/string/String.fromCodePoint - local.tee $34 - call $~lib/string/String#toUpperCase local.tee $33 - call $~lib/rt/pure/__retain - local.set $36 + call $~lib/string/String#toUpperCase + local.tee $34 i32.const 14320 - call $~lib/rt/pure/__retain - local.set $35 - local.get $36 - i32.eqz - local.get $35 - i32.eqz - i32.or - if (result i32) - local.get $36 - local.get $35 - i32.eq - else - local.get $36 - local.get $35 - call $~lib/string/String.__eq - end - local.set $37 - local.get $35 - call $~lib/rt/pure/__release - local.get $36 - call $~lib/rt/pure/__release - local.get $37 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -5769,34 +5012,9 @@ end i32.const 14352 call $~lib/string/String#toLowerCase - local.tee $36 - call $~lib/rt/pure/__retain - local.set $35 + local.tee $35 i32.const 14384 - call $~lib/rt/pure/__retain - local.set $37 - local.get $35 - i32.eqz - local.get $37 - i32.eqz - i32.or - if (result i32) - local.get $35 - local.get $37 - i32.eq - else - local.get $35 - local.get $37 - call $~lib/string/String.__eq - end - local.set $38 - local.get $37 - call $~lib/rt/pure/__release - local.get $35 - call $~lib/rt/pure/__release - local.get $38 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -5808,34 +5026,9 @@ end i32.const 14416 call $~lib/string/String#toLowerCase - local.tee $35 - call $~lib/rt/pure/__retain - local.set $37 + local.tee $36 i32.const 14448 - call $~lib/rt/pure/__retain - local.set $38 - local.get $37 - i32.eqz - local.get $38 - i32.eqz - i32.or - if (result i32) - local.get $37 - local.get $38 - i32.eq - else - local.get $37 - local.get $38 - call $~lib/string/String.__eq - end - local.set $39 - local.get $38 - call $~lib/rt/pure/__release - local.get $37 - call $~lib/rt/pure/__release - local.get $39 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -5848,33 +5041,8 @@ i32.const 14480 call $~lib/string/String#toLowerCase local.tee $37 - call $~lib/rt/pure/__retain - local.set $38 i32.const 14512 - call $~lib/rt/pure/__retain - local.set $39 - local.get $38 - i32.eqz - local.get $39 - i32.eqz - i32.or - if (result i32) - local.get $38 - local.get $39 - i32.eq - else - local.get $38 - local.get $39 - call $~lib/string/String.__eq - end - local.set $40 - local.get $39 - call $~lib/rt/pure/__release - local.get $38 - call $~lib/rt/pure/__release - local.get $40 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -5887,33 +5055,8 @@ i32.const 14544 call $~lib/string/String#toLowerCase local.tee $38 - call $~lib/rt/pure/__retain - local.set $39 i32.const 14576 - call $~lib/rt/pure/__retain - local.set $40 - local.get $39 - i32.eqz - local.get $40 - i32.eqz - i32.or - if (result i32) - local.get $39 - local.get $40 - i32.eq - else - local.get $39 - local.get $40 - call $~lib/string/String.__eq - end - local.set $41 - local.get $40 - call $~lib/rt/pure/__release - local.get $39 - call $~lib/rt/pure/__release - local.get $41 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -5926,33 +5069,8 @@ i32.const 14608 call $~lib/string/String#toLowerCase local.tee $39 - call $~lib/rt/pure/__retain - local.set $40 i32.const 14640 - call $~lib/rt/pure/__retain - local.set $41 - local.get $40 - i32.eqz - local.get $41 - i32.eqz - i32.or - if (result i32) - local.get $40 - local.get $41 - i32.eq - else - local.get $40 - local.get $41 - call $~lib/string/String.__eq - end - local.set $42 - local.get $41 - call $~lib/rt/pure/__release - local.get $40 - call $~lib/rt/pure/__release - local.get $42 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -5965,33 +5083,8 @@ i32.const 14672 call $~lib/string/String#toLowerCase local.tee $40 - call $~lib/rt/pure/__retain - local.set $41 i32.const 14704 - call $~lib/rt/pure/__retain - local.set $42 - local.get $41 - i32.eqz - local.get $42 - i32.eqz - i32.or - if (result i32) - local.get $41 - local.get $42 - i32.eq - else - local.get $41 - local.get $42 - call $~lib/string/String.__eq - end - local.set $43 - local.get $42 - call $~lib/rt/pure/__release - local.get $41 - call $~lib/rt/pure/__release - local.get $43 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -6004,33 +5097,8 @@ i32.const 14736 call $~lib/string/String#toLowerCase local.tee $41 - call $~lib/rt/pure/__retain - local.set $42 i32.const 14768 - call $~lib/rt/pure/__retain - local.set $43 - local.get $42 - i32.eqz - local.get $43 - i32.eqz - i32.or - if (result i32) - local.get $42 - local.get $43 - i32.eq - else - local.get $42 - local.get $43 - call $~lib/string/String.__eq - end - local.set $44 - local.get $43 - call $~lib/rt/pure/__release - local.get $42 - call $~lib/rt/pure/__release - local.get $44 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -6043,33 +5111,8 @@ i32.const 14800 call $~lib/string/String#toLowerCase local.tee $42 - call $~lib/rt/pure/__retain - local.set $43 i32.const 14832 - call $~lib/rt/pure/__retain - local.set $44 - local.get $43 - i32.eqz - local.get $44 - i32.eqz - i32.or - if (result i32) - local.get $43 - local.get $44 - i32.eq - else - local.get $43 - local.get $44 - call $~lib/string/String.__eq - end - local.set $45 - local.get $44 - call $~lib/rt/pure/__release - local.get $43 - call $~lib/rt/pure/__release - local.get $45 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -6079,36 +5122,11 @@ call $~lib/builtins/abort unreachable end - i32.const 14864 - call $~lib/string/String#toLowerCase - local.tee $43 - call $~lib/rt/pure/__retain - local.set $44 - i32.const 14896 - call $~lib/rt/pure/__retain - local.set $45 - local.get $44 - i32.eqz - local.get $45 - i32.eqz - i32.or - if (result i32) - local.get $44 - local.get $45 - i32.eq - else - local.get $44 - local.get $45 - call $~lib/string/String.__eq - end - local.set $46 - local.get $45 - call $~lib/rt/pure/__release - local.get $44 - call $~lib/rt/pure/__release - local.get $46 - i32.const 0 - i32.ne + i32.const 14864 + call $~lib/string/String#toLowerCase + local.tee $43 + i32.const 14896 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -6121,33 +5139,8 @@ i32.const 14928 call $~lib/string/String#toLowerCase local.tee $44 - call $~lib/rt/pure/__retain - local.set $45 i32.const 14960 - call $~lib/rt/pure/__retain - local.set $46 - local.get $45 - i32.eqz - local.get $46 - i32.eqz - i32.or - if (result i32) - local.get $45 - local.get $46 - i32.eq - else - local.get $45 - local.get $46 - call $~lib/string/String.__eq - end - local.set $47 - local.get $46 - call $~lib/rt/pure/__release - local.get $45 - call $~lib/rt/pure/__release - local.get $47 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -6160,33 +5153,8 @@ i32.const 14992 call $~lib/string/String#toLowerCase local.tee $45 - call $~lib/rt/pure/__retain - local.set $46 i32.const 15024 - call $~lib/rt/pure/__retain - local.set $47 - local.get $46 - i32.eqz - local.get $47 - i32.eqz - i32.or - if (result i32) - local.get $46 - local.get $47 - i32.eq - else - local.get $46 - local.get $47 - call $~lib/string/String.__eq - end - local.set $48 - local.get $47 - call $~lib/rt/pure/__release - local.get $46 - call $~lib/rt/pure/__release - local.get $48 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -6199,33 +5167,8 @@ i32.const 15056 call $~lib/string/String#toLowerCase local.tee $46 - call $~lib/rt/pure/__retain - local.set $47 i32.const 15088 - call $~lib/rt/pure/__retain - local.set $48 - local.get $47 - i32.eqz - local.get $48 - i32.eqz - i32.or - if (result i32) - local.get $47 - local.get $48 - i32.eq - else - local.get $47 - local.get $48 - call $~lib/string/String.__eq - end - local.set $49 - local.get $48 - call $~lib/rt/pure/__release - local.get $47 - call $~lib/rt/pure/__release - local.get $49 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -6238,33 +5181,8 @@ i32.const 15120 call $~lib/string/String#toLowerCase local.tee $47 - call $~lib/rt/pure/__retain - local.set $48 i32.const 15152 - call $~lib/rt/pure/__retain - local.set $49 - local.get $48 - i32.eqz - local.get $49 - i32.eqz - i32.or - if (result i32) - local.get $48 - local.get $49 - i32.eq - else - local.get $48 - local.get $49 - call $~lib/string/String.__eq - end - local.set $50 - local.get $49 - call $~lib/rt/pure/__release - local.get $48 - call $~lib/rt/pure/__release - local.get $50 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -6277,33 +5195,8 @@ i32.const 15184 call $~lib/string/String#toLowerCase local.tee $48 - call $~lib/rt/pure/__retain - local.set $49 i32.const 15216 - call $~lib/rt/pure/__retain - local.set $50 - local.get $49 - i32.eqz - local.get $50 - i32.eqz - i32.or - if (result i32) - local.get $49 - local.get $50 - i32.eq - else - local.get $49 - local.get $50 - call $~lib/string/String.__eq - end - local.set $51 - local.get $50 - call $~lib/rt/pure/__release - local.get $49 - call $~lib/rt/pure/__release - local.get $51 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -6316,33 +5209,8 @@ i32.const 15248 call $~lib/string/String#toLowerCase local.tee $49 - call $~lib/rt/pure/__retain - local.set $50 i32.const 15280 - call $~lib/rt/pure/__retain - local.set $51 - local.get $50 - i32.eqz - local.get $51 - i32.eqz - i32.or - if (result i32) - local.get $50 - local.get $51 - i32.eq - else - local.get $50 - local.get $51 - call $~lib/string/String.__eq - end - local.set $52 - local.get $51 - call $~lib/rt/pure/__release - local.get $50 - call $~lib/rt/pure/__release - local.get $52 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -6355,33 +5223,8 @@ i32.const 15312 call $~lib/string/String#toLowerCase local.tee $50 - call $~lib/rt/pure/__retain - local.set $51 i32.const 15344 - call $~lib/rt/pure/__retain - local.set $52 - local.get $51 - i32.eqz - local.get $52 - i32.eqz - i32.or - if (result i32) - local.get $51 - local.get $52 - i32.eq - else - local.get $51 - local.get $52 - call $~lib/string/String.__eq - end - local.set $53 - local.get $52 - call $~lib/rt/pure/__release - local.get $51 - call $~lib/rt/pure/__release - local.get $53 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -6394,33 +5237,8 @@ i32.const 15376 call $~lib/string/String#toLowerCase local.tee $51 - call $~lib/rt/pure/__retain - local.set $52 i32.const 15408 - call $~lib/rt/pure/__retain - local.set $53 - local.get $52 - i32.eqz - local.get $53 - i32.eqz - i32.or - if (result i32) - local.get $52 - local.get $53 - i32.eq - else - local.get $52 - local.get $53 - call $~lib/string/String.__eq - end - local.set $54 - local.get $53 - call $~lib/rt/pure/__release - local.get $52 - call $~lib/rt/pure/__release - local.get $54 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -6433,33 +5251,8 @@ i32.const 15440 call $~lib/string/String#toLowerCase local.tee $52 - call $~lib/rt/pure/__retain - local.set $53 i32.const 15472 - call $~lib/rt/pure/__retain - local.set $54 - local.get $53 - i32.eqz - local.get $54 - i32.eqz - i32.or - if (result i32) - local.get $53 - local.get $54 - i32.eq - else - local.get $53 - local.get $54 - call $~lib/string/String.__eq - end - local.set $55 - local.get $54 - call $~lib/rt/pure/__release - local.get $53 - call $~lib/rt/pure/__release - local.get $55 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -6472,33 +5265,8 @@ i32.const 15504 call $~lib/string/String#toLowerCase local.tee $53 - call $~lib/rt/pure/__retain - local.set $54 i32.const 15536 - call $~lib/rt/pure/__retain - local.set $55 - local.get $54 - i32.eqz - local.get $55 - i32.eqz - i32.or - if (result i32) - local.get $54 - local.get $55 - i32.eq - else - local.get $54 - local.get $55 - call $~lib/string/String.__eq - end - local.set $56 - local.get $55 - call $~lib/rt/pure/__release - local.get $54 - call $~lib/rt/pure/__release - local.get $56 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -6511,33 +5279,8 @@ i32.const 15568 call $~lib/string/String#toLowerCase local.tee $54 - call $~lib/rt/pure/__retain - local.set $55 i32.const 15600 - call $~lib/rt/pure/__retain - local.set $56 - local.get $55 - i32.eqz - local.get $56 - i32.eqz - i32.or - if (result i32) - local.get $55 - local.get $56 - i32.eq - else - local.get $55 - local.get $56 - call $~lib/string/String.__eq - end - local.set $57 - local.get $56 - call $~lib/rt/pure/__release - local.get $55 - call $~lib/rt/pure/__release - local.get $57 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -6550,33 +5293,8 @@ i32.const 15632 call $~lib/string/String#toLowerCase local.tee $55 - call $~lib/rt/pure/__retain - local.set $56 i32.const 15664 - call $~lib/rt/pure/__retain - local.set $57 - local.get $56 - i32.eqz - local.get $57 - i32.eqz - i32.or - if (result i32) - local.get $56 - local.get $57 - i32.eq - else - local.get $56 - local.get $57 - call $~lib/string/String.__eq - end - local.set $58 - local.get $57 - call $~lib/rt/pure/__release - local.get $56 - call $~lib/rt/pure/__release - local.get $58 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -6589,33 +5307,8 @@ i32.const 15696 call $~lib/string/String#toLowerCase local.tee $56 - call $~lib/rt/pure/__retain - local.set $57 i32.const 15728 - call $~lib/rt/pure/__retain - local.set $58 - local.get $57 - i32.eqz - local.get $58 - i32.eqz - i32.or - if (result i32) - local.get $57 - local.get $58 - i32.eq - else - local.get $57 - local.get $58 - call $~lib/string/String.__eq - end - local.set $59 - local.get $58 - call $~lib/rt/pure/__release - local.get $57 - call $~lib/rt/pure/__release - local.get $59 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -6628,33 +5321,8 @@ i32.const 15760 call $~lib/string/String#toLowerCase local.tee $57 - call $~lib/rt/pure/__retain - local.set $58 i32.const 15792 - call $~lib/rt/pure/__retain - local.set $59 - local.get $58 - i32.eqz - local.get $59 - i32.eqz - i32.or - if (result i32) - local.get $58 - local.get $59 - i32.eq - else - local.get $58 - local.get $59 - call $~lib/string/String.__eq - end - local.set $60 - local.get $59 - call $~lib/rt/pure/__release - local.get $58 - call $~lib/rt/pure/__release - local.get $60 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -6667,33 +5335,8 @@ i32.const 15824 call $~lib/string/String#toLowerCase local.tee $58 - call $~lib/rt/pure/__retain - local.set $59 i32.const 15856 - call $~lib/rt/pure/__retain - local.set $60 - local.get $59 - i32.eqz - local.get $60 - i32.eqz - i32.or - if (result i32) - local.get $59 - local.get $60 - i32.eq - else - local.get $59 - local.get $60 - call $~lib/string/String.__eq - end - local.set $61 - local.get $60 - call $~lib/rt/pure/__release - local.get $59 - call $~lib/rt/pure/__release - local.get $61 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -6706,33 +5349,8 @@ i32.const 15888 call $~lib/string/String#toLowerCase local.tee $59 - call $~lib/rt/pure/__retain - local.set $60 i32.const 15920 - call $~lib/rt/pure/__retain - local.set $61 - local.get $60 - i32.eqz - local.get $61 - i32.eqz - i32.or - if (result i32) - local.get $60 - local.get $61 - i32.eq - else - local.get $60 - local.get $61 - call $~lib/string/String.__eq - end - local.set $62 - local.get $61 - call $~lib/rt/pure/__release - local.get $60 - call $~lib/rt/pure/__release - local.get $62 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -6745,33 +5363,8 @@ i32.const 15952 call $~lib/string/String#toLowerCase local.tee $60 - call $~lib/rt/pure/__retain - local.set $61 i32.const 15024 - call $~lib/rt/pure/__retain - local.set $62 - local.get $61 - i32.eqz - local.get $62 - i32.eqz - i32.or - if (result i32) - local.get $61 - local.get $62 - i32.eq - else - local.get $61 - local.get $62 - call $~lib/string/String.__eq - end - local.set $63 - local.get $62 - call $~lib/rt/pure/__release - local.get $61 - call $~lib/rt/pure/__release - local.get $63 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -6784,33 +5377,8 @@ i32.const 15984 call $~lib/string/String#toLowerCase local.tee $61 - call $~lib/rt/pure/__retain - local.set $62 i32.const 16016 - call $~lib/rt/pure/__retain - local.set $63 - local.get $62 - i32.eqz - local.get $63 - i32.eqz - i32.or - if (result i32) - local.get $62 - local.get $63 - i32.eq - else - local.get $62 - local.get $63 - call $~lib/string/String.__eq - end - local.set $64 - local.get $63 - call $~lib/rt/pure/__release - local.get $62 - call $~lib/rt/pure/__release - local.get $64 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -6823,33 +5391,8 @@ i32.const 16048 call $~lib/string/String#toLowerCase local.tee $62 - call $~lib/rt/pure/__retain - local.set $63 i32.const 16080 - call $~lib/rt/pure/__retain - local.set $64 - local.get $63 - i32.eqz - local.get $64 - i32.eqz - i32.or - if (result i32) - local.get $63 - local.get $64 - i32.eq - else - local.get $63 - local.get $64 - call $~lib/string/String.__eq - end - local.set $65 - local.get $64 - call $~lib/rt/pure/__release - local.get $63 - call $~lib/rt/pure/__release - local.get $65 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -6862,33 +5405,8 @@ i32.const 16112 call $~lib/string/String#toLowerCase local.tee $63 - call $~lib/rt/pure/__retain - local.set $64 i32.const 16144 - call $~lib/rt/pure/__retain - local.set $65 - local.get $64 - i32.eqz - local.get $65 - i32.eqz - i32.or - if (result i32) - local.get $64 - local.get $65 - i32.eq - else - local.get $64 - local.get $65 - call $~lib/string/String.__eq - end - local.set $66 - local.get $65 - call $~lib/rt/pure/__release - local.get $64 - call $~lib/rt/pure/__release - local.get $66 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -6901,33 +5419,8 @@ i32.const 16176 call $~lib/string/String#toLowerCase local.tee $64 - call $~lib/rt/pure/__retain - local.set $65 i32.const 16208 - call $~lib/rt/pure/__retain - local.set $66 - local.get $65 - i32.eqz - local.get $66 - i32.eqz - i32.or - if (result i32) - local.get $65 - local.get $66 - i32.eq - else - local.get $65 - local.get $66 - call $~lib/string/String.__eq - end - local.set $67 - local.get $66 - call $~lib/rt/pure/__release - local.get $65 - call $~lib/rt/pure/__release - local.get $67 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -6940,33 +5433,8 @@ i32.const 16240 call $~lib/string/String#toLowerCase local.tee $65 - call $~lib/rt/pure/__retain - local.set $66 i32.const 16272 - call $~lib/rt/pure/__retain - local.set $67 - local.get $66 - i32.eqz - local.get $67 - i32.eqz - i32.or - if (result i32) - local.get $66 - local.get $67 - i32.eq - else - local.get $66 - local.get $67 - call $~lib/string/String.__eq - end - local.set $68 - local.get $67 - call $~lib/rt/pure/__release - local.get $66 - call $~lib/rt/pure/__release - local.get $68 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -6979,33 +5447,8 @@ i32.const 16304 call $~lib/string/String#toLowerCase local.tee $66 - call $~lib/rt/pure/__retain - local.set $67 i32.const 16336 - call $~lib/rt/pure/__retain - local.set $68 - local.get $67 - i32.eqz - local.get $68 - i32.eqz - i32.or - if (result i32) - local.get $67 - local.get $68 - i32.eq - else - local.get $67 - local.get $68 - call $~lib/string/String.__eq - end - local.set $69 - local.get $68 - call $~lib/rt/pure/__release - local.get $67 - call $~lib/rt/pure/__release - local.get $69 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -7018,33 +5461,8 @@ i32.const 16368 call $~lib/string/String#toLowerCase local.tee $67 - call $~lib/rt/pure/__retain - local.set $68 i32.const 16400 - call $~lib/rt/pure/__retain - local.set $69 - local.get $68 - i32.eqz - local.get $69 - i32.eqz - i32.or - if (result i32) - local.get $68 - local.get $69 - i32.eq - else - local.get $68 - local.get $69 - call $~lib/string/String.__eq - end - local.set $70 - local.get $69 - call $~lib/rt/pure/__release - local.get $68 - call $~lib/rt/pure/__release - local.get $70 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -7057,33 +5475,8 @@ i32.const 16432 call $~lib/string/String#toLowerCase local.tee $68 - call $~lib/rt/pure/__retain - local.set $69 i32.const 16464 - call $~lib/rt/pure/__retain - local.set $70 - local.get $69 - i32.eqz - local.get $70 - i32.eqz - i32.or - if (result i32) - local.get $69 - local.get $70 - i32.eq - else - local.get $69 - local.get $70 - call $~lib/string/String.__eq - end - local.set $71 - local.get $70 - call $~lib/rt/pure/__release - local.get $69 - call $~lib/rt/pure/__release - local.get $71 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -7096,33 +5489,8 @@ i32.const 16496 call $~lib/string/String#toLowerCase local.tee $69 - call $~lib/rt/pure/__retain - local.set $70 i32.const 16528 - call $~lib/rt/pure/__retain - local.set $71 - local.get $70 - i32.eqz - local.get $71 - i32.eqz - i32.or - if (result i32) - local.get $70 - local.get $71 - i32.eq - else - local.get $70 - local.get $71 - call $~lib/string/String.__eq - end - local.set $72 - local.get $71 - call $~lib/rt/pure/__release - local.get $70 - call $~lib/rt/pure/__release - local.get $72 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -7135,33 +5503,8 @@ i32.const 16560 call $~lib/string/String#toLowerCase local.tee $70 - call $~lib/rt/pure/__retain - local.set $71 i32.const 16592 - call $~lib/rt/pure/__retain - local.set $72 - local.get $71 - i32.eqz - local.get $72 - i32.eqz - i32.or - if (result i32) - local.get $71 - local.get $72 - i32.eq - else - local.get $71 - local.get $72 - call $~lib/string/String.__eq - end - local.set $73 - local.get $72 - call $~lib/rt/pure/__release - local.get $71 - call $~lib/rt/pure/__release - local.get $73 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -7171,36 +5514,11 @@ call $~lib/builtins/abort unreachable end - i32.const 16624 - call $~lib/string/String#toLowerCase - local.tee $71 - call $~lib/rt/pure/__retain - local.set $72 - i32.const 16656 - call $~lib/rt/pure/__retain - local.set $73 - local.get $72 - i32.eqz - local.get $73 - i32.eqz - i32.or - if (result i32) - local.get $72 - local.get $73 - i32.eq - else - local.get $72 - local.get $73 - call $~lib/string/String.__eq - end - local.set $74 - local.get $73 - call $~lib/rt/pure/__release - local.get $72 - call $~lib/rt/pure/__release - local.get $74 - i32.const 0 - i32.ne + i32.const 16624 + call $~lib/string/String#toLowerCase + local.tee $71 + i32.const 16656 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -7213,33 +5531,8 @@ i32.const 16688 call $~lib/string/String#toLowerCase local.tee $72 - call $~lib/rt/pure/__retain - local.set $73 i32.const 16720 - call $~lib/rt/pure/__retain - local.set $74 - local.get $73 - i32.eqz - local.get $74 - i32.eqz - i32.or - if (result i32) - local.get $73 - local.get $74 - i32.eq - else - local.get $73 - local.get $74 - call $~lib/string/String.__eq - end - local.set $75 - local.get $74 - call $~lib/rt/pure/__release - local.get $73 - call $~lib/rt/pure/__release - local.get $75 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -7252,33 +5545,8 @@ i32.const 16752 call $~lib/string/String#toUpperCase local.tee $73 - call $~lib/rt/pure/__retain - local.set $74 i32.const 16784 - call $~lib/rt/pure/__retain - local.set $75 - local.get $74 - i32.eqz - local.get $75 - i32.eqz - i32.or - if (result i32) - local.get $74 - local.get $75 - i32.eq - else - local.get $74 - local.get $75 - call $~lib/string/String.__eq - end - local.set $76 - local.get $75 - call $~lib/rt/pure/__release - local.get $74 - call $~lib/rt/pure/__release - local.get $76 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -7291,33 +5559,8 @@ i32.const 14000 call $~lib/string/String#toUpperCase local.tee $74 - call $~lib/rt/pure/__retain - local.set $75 i32.const 16816 - call $~lib/rt/pure/__retain - local.set $76 - local.get $75 - i32.eqz - local.get $76 - i32.eqz - i32.or - if (result i32) - local.get $75 - local.get $76 - i32.eq - else - local.get $75 - local.get $76 - call $~lib/string/String.__eq - end - local.set $77 - local.get $76 - call $~lib/rt/pure/__release - local.get $75 - call $~lib/rt/pure/__release - local.get $77 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -7330,33 +5573,8 @@ i32.const 16848 call $~lib/string/String#toUpperCase local.tee $75 - call $~lib/rt/pure/__retain - local.set $76 i32.const 16880 - call $~lib/rt/pure/__retain - local.set $77 - local.get $76 - i32.eqz - local.get $77 - i32.eqz - i32.or - if (result i32) - local.get $76 - local.get $77 - i32.eq - else - local.get $76 - local.get $77 - call $~lib/string/String.__eq - end - local.set $78 - local.get $77 - call $~lib/rt/pure/__release - local.get $76 - call $~lib/rt/pure/__release - local.get $78 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -7369,33 +5587,8 @@ i32.const 16912 call $~lib/string/String#toUpperCase local.tee $76 - call $~lib/rt/pure/__retain - local.set $77 i32.const 16944 - call $~lib/rt/pure/__retain - local.set $78 - local.get $77 - i32.eqz - local.get $78 - i32.eqz - i32.or - if (result i32) - local.get $77 - local.get $78 - i32.eq - else - local.get $77 - local.get $78 - call $~lib/string/String.__eq - end - local.set $79 - local.get $78 - call $~lib/rt/pure/__release - local.get $77 - call $~lib/rt/pure/__release - local.get $79 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -7408,33 +5601,8 @@ i32.const 16976 call $~lib/string/String#toUpperCase local.tee $77 - call $~lib/rt/pure/__retain - local.set $78 i32.const 17008 - call $~lib/rt/pure/__retain - local.set $79 - local.get $78 - i32.eqz - local.get $79 - i32.eqz - i32.or - if (result i32) - local.get $78 - local.get $79 - i32.eq - else - local.get $78 - local.get $79 - call $~lib/string/String.__eq - end - local.set $80 - local.get $79 - call $~lib/rt/pure/__release - local.get $78 - call $~lib/rt/pure/__release - local.get $80 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -7447,33 +5615,8 @@ i32.const 17040 call $~lib/string/String#toUpperCase local.tee $78 - call $~lib/rt/pure/__retain - local.set $79 i32.const 17072 - call $~lib/rt/pure/__retain - local.set $80 - local.get $79 - i32.eqz - local.get $80 - i32.eqz - i32.or - if (result i32) - local.get $79 - local.get $80 - i32.eq - else - local.get $79 - local.get $80 - call $~lib/string/String.__eq - end - local.set $81 - local.get $80 - call $~lib/rt/pure/__release - local.get $79 - call $~lib/rt/pure/__release - local.get $81 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -7486,33 +5629,8 @@ i32.const 17104 call $~lib/string/String#toUpperCase local.tee $79 - call $~lib/rt/pure/__retain - local.set $80 i32.const 17072 - call $~lib/rt/pure/__retain - local.set $81 - local.get $80 - i32.eqz - local.get $81 - i32.eqz - i32.or - if (result i32) - local.get $80 - local.get $81 - i32.eq - else - local.get $80 - local.get $81 - call $~lib/string/String.__eq - end - local.set $82 - local.get $81 - call $~lib/rt/pure/__release - local.get $80 - call $~lib/rt/pure/__release - local.get $82 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -7525,33 +5643,8 @@ i32.const 17136 call $~lib/string/String#toUpperCase local.tee $80 - call $~lib/rt/pure/__retain - local.set $81 i32.const 17168 - call $~lib/rt/pure/__retain - local.set $82 - local.get $81 - i32.eqz - local.get $82 - i32.eqz - i32.or - if (result i32) - local.get $81 - local.get $82 - i32.eq - else - local.get $81 - local.get $82 - call $~lib/string/String.__eq - end - local.set $83 - local.get $82 - call $~lib/rt/pure/__release - local.get $81 - call $~lib/rt/pure/__release - local.get $83 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -7564,33 +5657,8 @@ i32.const 17200 call $~lib/string/String#toUpperCase local.tee $81 - call $~lib/rt/pure/__retain - local.set $82 i32.const 17232 - call $~lib/rt/pure/__retain - local.set $83 - local.get $82 - i32.eqz - local.get $83 - i32.eqz - i32.or - if (result i32) - local.get $82 - local.get $83 - i32.eq - else - local.get $82 - local.get $83 - call $~lib/string/String.__eq - end - local.set $84 - local.get $83 - call $~lib/rt/pure/__release - local.get $82 - call $~lib/rt/pure/__release - local.get $84 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -7603,33 +5671,8 @@ i32.const 17264 call $~lib/string/String#toUpperCase local.tee $82 - call $~lib/rt/pure/__retain - local.set $83 i32.const 17296 - call $~lib/rt/pure/__retain - local.set $84 - local.get $83 - i32.eqz - local.get $84 - i32.eqz - i32.or - if (result i32) - local.get $83 - local.get $84 - i32.eq - else - local.get $83 - local.get $84 - call $~lib/string/String.__eq - end - local.set $85 - local.get $84 - call $~lib/rt/pure/__release - local.get $83 - call $~lib/rt/pure/__release - local.get $85 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -7642,33 +5685,8 @@ i32.const 17328 call $~lib/string/String#toUpperCase local.tee $83 - call $~lib/rt/pure/__retain - local.set $84 i32.const 17360 - call $~lib/rt/pure/__retain - local.set $85 - local.get $84 - i32.eqz - local.get $85 - i32.eqz - i32.or - if (result i32) - local.get $84 - local.get $85 - i32.eq - else - local.get $84 - local.get $85 - call $~lib/string/String.__eq - end - local.set $86 - local.get $85 - call $~lib/rt/pure/__release - local.get $84 - call $~lib/rt/pure/__release - local.get $86 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -7681,33 +5699,8 @@ i32.const 17392 call $~lib/string/String#toUpperCase local.tee $84 - call $~lib/rt/pure/__retain - local.set $85 i32.const 17424 - call $~lib/rt/pure/__retain - local.set $86 - local.get $85 - i32.eqz - local.get $86 - i32.eqz - i32.or - if (result i32) - local.get $85 - local.get $86 - i32.eq - else - local.get $85 - local.get $86 - call $~lib/string/String.__eq - end - local.set $87 - local.get $86 - call $~lib/rt/pure/__release - local.get $85 - call $~lib/rt/pure/__release - local.get $87 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -7720,33 +5713,8 @@ i32.const 17456 call $~lib/string/String#toUpperCase local.tee $85 - call $~lib/rt/pure/__retain - local.set $86 i32.const 17488 - call $~lib/rt/pure/__retain - local.set $87 - local.get $86 - i32.eqz - local.get $87 - i32.eqz - i32.or - if (result i32) - local.get $86 - local.get $87 - i32.eq - else - local.get $86 - local.get $87 - call $~lib/string/String.__eq - end - local.set $88 - local.get $87 - call $~lib/rt/pure/__release - local.get $86 - call $~lib/rt/pure/__release - local.get $88 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 diff --git a/tests/compiler/std/string-encoding.optimized.wat b/tests/compiler/std/string-encoding.optimized.wat index e3fa4ea27b..9dfed1a930 100644 --- a/tests/compiler/std/string-encoding.optimized.wat +++ b/tests/compiler/std/string-encoding.optimized.wat @@ -1576,7 +1576,7 @@ end i32.const 0 ) - (func $~lib/string/String.__eq (; 24 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/string/String#_eq (; 24 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) local.get $0 call $~lib/string/String#get:length @@ -1603,28 +1603,18 @@ (local $5 i32) (local $6 i32) (local $7 i32) - (local $8 i32) i32.const 1040 call $~lib/string/String.UTF16.encode - local.set $1 + local.set $0 i32.const 1036 i32.load - local.set $0 - local.get $1 + local.set $1 + local.get $0 i32.const 0 call $~lib/string/String.UTF16.decodeUnsafe - local.tee $3 - local.set $2 - local.get $3 - if (result i32) - local.get $2 - i32.const 1296 - call $~lib/string/String.__eq - else - local.get $2 - i32.const 1296 - i32.eq - end + local.tee $2 + i32.const 1296 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -1634,21 +1624,12 @@ call $~lib/builtins/abort unreachable end - local.get $1 local.get $0 + local.get $1 call $~lib/string/String.UTF16.decodeUnsafe - local.tee $4 - local.set $0 - local.get $4 - if (result i32) - local.get $0 - i32.const 1040 - call $~lib/string/String.__eq - else - local.get $0 - i32.const 1040 - i32.eq - end + local.tee $3 + i32.const 1040 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -1658,21 +1639,12 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $0 i32.const 4 call $~lib/string/String.UTF16.decodeUnsafe - local.tee $5 - local.set $0 - local.get $5 - if (result i32) - local.get $0 - i32.const 1312 - call $~lib/string/String.__eq - else - local.get $0 - i32.const 1312 - i32.eq - end + local.tee $4 + i32.const 1312 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -1682,23 +1654,14 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $0 i32.const 4 i32.add i32.const 2 call $~lib/string/String.UTF16.decodeUnsafe - local.tee $6 - local.set $0 - local.get $6 - if (result i32) - local.get $0 - i32.const 1344 - call $~lib/string/String.__eq - else - local.get $0 - i32.const 1344 - i32.eq - end + local.tee $5 + i32.const 1344 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -1708,23 +1671,14 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $0 i32.const 4 i32.add i32.const 4 call $~lib/string/String.UTF16.decodeUnsafe - local.tee $7 - local.set $0 - local.get $7 - if (result i32) - local.get $0 - i32.const 1376 - call $~lib/string/String.__eq - else - local.get $0 - i32.const 1376 - i32.eq - end + local.tee $6 + i32.const 1376 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -1734,23 +1688,14 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $0 i32.const 8 i32.add i32.const 4 call $~lib/string/String.UTF16.decodeUnsafe - local.tee $8 - local.set $0 - local.get $8 - if (result i32) - local.get $0 - i32.const 1408 - call $~lib/string/String.__eq - else - local.get $0 - i32.const 1408 - i32.eq - end + local.tee $7 + i32.const 1408 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -1760,23 +1705,14 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $0 i32.const 12 i32.add i32.const 0 call $~lib/string/String.UTF16.decodeUnsafe - local.tee $2 - local.set $0 - local.get $2 - if (result i32) - local.get $0 - i32.const 1296 - call $~lib/string/String.__eq - else - local.get $0 - i32.const 1296 - i32.eq - end + local.tee $1 + i32.const 1296 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -1786,6 +1722,8 @@ call $~lib/builtins/abort unreachable end + local.get $2 + call $~lib/rt/pure/__release local.get $3 call $~lib/rt/pure/__release local.get $4 @@ -1796,12 +1734,10 @@ call $~lib/rt/pure/__release local.get $7 call $~lib/rt/pure/__release - local.get $8 - call $~lib/rt/pure/__release - local.get $2 - call $~lib/rt/pure/__release local.get $1 call $~lib/rt/pure/__release + local.get $0 + call $~lib/rt/pure/__release ) (func $~lib/string/String.UTF8.byteLength (; 26 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) @@ -2514,7 +2450,7 @@ if i32.const 0 i32.const 1440 - i32.const 750 + i32.const 749 i32.const 7 call $~lib/builtins/abort unreachable @@ -2748,25 +2684,15 @@ (local $3 i32) (local $4 i32) (local $5 i32) - (local $6 i32) i32.const 1040 i32.const 1 call $~lib/string/String.UTF8.encode - local.tee $5 + local.tee $1 i32.const 1 call $~lib/string/String.UTF8.decode local.tee $2 - local.set $0 - local.get $2 - if (result i32) - local.get $0 - i32.const 1040 - call $~lib/string/String.__eq - else - local.get $0 - i32.const 1040 - i32.eq - end + i32.const 1040 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -2823,17 +2749,8 @@ i32.const 1 call $~lib/string/String.UTF8.decode local.tee $3 - local.set $1 - local.get $3 - if (result i32) - local.get $1 - i32.const 1520 - call $~lib/string/String.__eq - else - local.get $1 - i32.const 1520 - i32.eq - end + i32.const 1520 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -2846,21 +2763,12 @@ i32.const 1488 i32.const 0 call $~lib/string/String.UTF8.encode - local.tee $6 + local.tee $4 i32.const 1 call $~lib/string/String.UTF8.decode - local.tee $1 - local.set $4 - local.get $1 - if (result i32) - local.get $4 - i32.const 1520 - call $~lib/string/String.__eq - else - local.get $4 - i32.const 1520 - i32.eq - end + local.tee $5 + i32.const 1520 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -2874,13 +2782,13 @@ call $~lib/rt/pure/__release local.get $3 call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release local.get $5 call $~lib/rt/pure/__release + local.get $1 + call $~lib/rt/pure/__release local.get $0 call $~lib/rt/pure/__release - local.get $6 + local.get $4 call $~lib/rt/pure/__release ) (func $std/string-encoding/testUTF8DecodeUnsafe (; 36 ;) @@ -2894,31 +2802,22 @@ (local $7 i32) (local $8 i32) (local $9 i32) - (local $10 i32) i32.const 1040 i32.const 1 call $~lib/string/String.UTF8.encode - local.set $1 + local.set $0 i32.const 1040 i32.const 0 call $~lib/string/String.UTF8.byteLength - local.set $3 - local.get $1 - local.tee $0 + local.set $9 + local.get $0 + local.tee $1 i32.const 0 i32.const 0 call $~lib/string/String.UTF8.decodeUnsafe - local.tee $6 - local.tee $5 - if (result i32) - local.get $5 - i32.const 1296 - call $~lib/string/String.__eq - else - local.get $5 - i32.const 1296 - i32.eq - end + local.tee $8 + i32.const 1296 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -2928,21 +2827,13 @@ call $~lib/builtins/abort unreachable end - local.get $0 - local.get $3 + local.get $1 + local.get $9 i32.const 0 call $~lib/string/String.UTF8.decodeUnsafe local.tee $7 - local.tee $2 - if (result i32) - local.get $2 - i32.const 1040 - call $~lib/string/String.__eq - else - local.get $2 - i32.const 1040 - i32.eq - end + i32.const 1040 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -2952,21 +2843,13 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.const 4 i32.const 0 call $~lib/string/String.UTF8.decodeUnsafe - local.tee $8 - local.tee $2 - if (result i32) - local.get $2 - i32.const 1312 - call $~lib/string/String.__eq - else - local.get $2 - i32.const 1312 - i32.eq - end + local.tee $6 + i32.const 1312 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -2976,23 +2859,15 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.const 4 i32.add i32.const 2 i32.const 0 call $~lib/string/String.UTF8.decodeUnsafe - local.tee $9 - local.tee $2 - if (result i32) - local.get $2 - i32.const 1376 - call $~lib/string/String.__eq - else - local.get $2 - i32.const 1376 - i32.eq - end + local.tee $5 + i32.const 1376 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -3002,23 +2877,15 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.const 6 i32.add i32.const 4 i32.const 0 call $~lib/string/String.UTF8.decodeUnsafe - local.tee $10 - local.tee $2 - if (result i32) - local.get $2 - i32.const 1408 - call $~lib/string/String.__eq - else - local.get $2 - i32.const 1408 - i32.eq - end + local.tee $4 + i32.const 1408 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -3028,23 +2895,15 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.const 10 i32.add i32.const 0 i32.const 0 call $~lib/string/String.UTF8.decodeUnsafe - local.tee $5 - local.tee $2 - if (result i32) - local.get $2 - i32.const 1296 - call $~lib/string/String.__eq - else - local.get $2 - i32.const 1296 - i32.eq - end + local.tee $3 + i32.const 1296 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -3054,23 +2913,15 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.const 4 i32.add i32.const 100 i32.const 1 call $~lib/string/String.UTF8.decodeUnsafe local.tee $2 - local.tee $3 - if (result i32) - local.get $3 - i32.const 1552 - call $~lib/string/String.__eq - else - local.get $3 - i32.const 1552 - i32.eq - end + i32.const 1552 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -3080,23 +2931,15 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.const 6 i32.add i32.const 100 i32.const 1 call $~lib/string/String.UTF8.decodeUnsafe - local.tee $3 - local.tee $4 - if (result i32) - local.get $4 - i32.const 1408 - call $~lib/string/String.__eq - else - local.get $4 - i32.const 1408 - i32.eq - end + local.tee $9 + i32.const 1408 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -3106,23 +2949,15 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.const 10 i32.add i32.const 100 i32.const 1 call $~lib/string/String.UTF8.decodeUnsafe - local.tee $0 - local.tee $4 - if (result i32) - local.get $4 - i32.const 1296 - call $~lib/string/String.__eq - else - local.get $4 - i32.const 1296 - i32.eq - end + local.tee $1 + i32.const 1296 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -3132,54 +2967,41 @@ call $~lib/builtins/abort unreachable end - local.get $6 - call $~lib/rt/pure/__release - local.get $7 - call $~lib/rt/pure/__release local.get $8 call $~lib/rt/pure/__release - local.get $9 + local.get $7 call $~lib/rt/pure/__release - local.get $10 + local.get $6 call $~lib/rt/pure/__release local.get $5 call $~lib/rt/pure/__release - local.get $2 + local.get $4 call $~lib/rt/pure/__release local.get $3 call $~lib/rt/pure/__release - local.get $0 + local.get $2 + call $~lib/rt/pure/__release + local.get $9 call $~lib/rt/pure/__release local.get $1 call $~lib/rt/pure/__release + local.get $0 + call $~lib/rt/pure/__release ) (func $std/string-encoding/testLarge (; 37 ;) (param $0 i32) (local $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) - (local $5 i32) local.get $0 i32.const 0 call $~lib/string/String.UTF8.encode - local.tee $2 + local.tee $1 i32.const 0 call $~lib/string/String.UTF8.decode - local.tee $3 - local.tee $1 - i32.eqz + local.tee $2 local.get $0 - i32.eqz - i32.or - if (result i32) - local.get $0 - local.get $1 - i32.eq - else - local.get $1 - local.get $0 - call $~lib/string/String.__eq - end + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -3191,23 +3013,11 @@ end local.get $0 call $~lib/string/String.UTF16.encode - local.tee $4 + local.tee $3 call $~lib/string/String.UTF16.decode - local.tee $5 - local.tee $1 - i32.eqz + local.tee $4 local.get $0 - i32.eqz - i32.or - if (result i32) - local.get $0 - local.get $1 - i32.eq - else - local.get $1 - local.get $0 - call $~lib/string/String.__eq - end + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -3217,19 +3027,18 @@ call $~lib/builtins/abort unreachable end - local.get $3 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release local.get $2 call $~lib/rt/pure/__release local.get $4 call $~lib/rt/pure/__release + local.get $1 + call $~lib/rt/pure/__release + local.get $3 + call $~lib/rt/pure/__release ) (func $start:std/string-encoding (; 38 ;) (local $0 i32) (local $1 i32) - (local $2 i32) i32.const 1036 i32.load i32.const 12 @@ -3245,20 +3054,11 @@ call $std/string-encoding/testUTF16Encode i32.const 1040 call $~lib/string/String.UTF16.encode - local.tee $2 - call $~lib/string/String.UTF16.decode local.tee $0 - local.set $1 - local.get $0 - if (result i32) - local.get $1 - i32.const 1040 - call $~lib/string/String.__eq - else - local.get $1 - i32.const 1040 - i32.eq - end + call $~lib/string/String.UTF16.decode + local.tee $1 + i32.const 1040 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -3268,9 +3068,9 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 call $~lib/rt/pure/__release - local.get $2 + local.get $0 call $~lib/rt/pure/__release call $std/string-encoding/testUTF16DecodeUnsafe i32.const 1040 @@ -3304,21 +3104,12 @@ i32.const 1040 i32.const 0 call $~lib/string/String.UTF8.encode - local.tee $2 + local.tee $0 i32.const 0 call $~lib/string/String.UTF8.decode - local.tee $0 - local.set $1 - local.get $0 - if (result i32) - local.get $1 - i32.const 1040 - call $~lib/string/String.__eq - else - local.get $1 - i32.const 1040 - i32.eq - end + local.tee $1 + i32.const 1040 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -3328,9 +3119,9 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 call $~lib/rt/pure/__release - local.get $2 + local.get $0 call $~lib/rt/pure/__release call $std/string-encoding/testUTF8DecodeNullTerminated call $std/string-encoding/testUTF8DecodeUnsafe diff --git a/tests/compiler/std/string-encoding.untouched.wat b/tests/compiler/std/string-encoding.untouched.wat index 1113db2a17..0b0f08545e 100644 --- a/tests/compiler/std/string-encoding.untouched.wat +++ b/tests/compiler/std/string-encoding.untouched.wat @@ -3140,12 +3140,9 @@ call $~lib/rt/pure/__release local.get $7 ) - (func $~lib/string/String.__eq (; 31 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/string/String#_eq (; 31 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) - local.get $0 - call $~lib/rt/pure/__retain - local.set $0 local.get $1 call $~lib/rt/pure/__retain local.set $1 @@ -3159,8 +3156,6 @@ if i32.const 0 local.set $3 - local.get $0 - call $~lib/rt/pure/__release local.get $1 call $~lib/rt/pure/__release local.get $3 @@ -3174,8 +3169,6 @@ call $~lib/util/string/compareImpl i32.eqz local.set $3 - local.get $0 - call $~lib/rt/pure/__release local.get $1 call $~lib/rt/pure/__release local.get $3 @@ -3183,42 +3176,14 @@ (func $std/string-encoding/testUTF16Decode (; 32 ;) (local $0 i32) (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) global.get $std/string-encoding/str call $~lib/string/String.UTF16.encode local.set $0 local.get $0 call $~lib/string/String.UTF16.decode local.tee $1 - call $~lib/rt/pure/__retain - local.set $3 global.get $std/string-encoding/str - call $~lib/rt/pure/__retain - local.set $2 - local.get $3 - i32.eqz - local.get $2 - i32.eqz - i32.or - if (result i32) - local.get $3 - local.get $2 - i32.eq - else - local.get $3 - local.get $2 - call $~lib/string/String.__eq - end - local.set $4 - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $4 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -3244,9 +3209,6 @@ (local $7 i32) (local $8 i32) (local $9 i32) - (local $10 i32) - (local $11 i32) - (local $12 i32) global.get $std/string-encoding/str call $~lib/string/String.UTF16.encode local.set $0 @@ -3259,33 +3221,8 @@ i32.const 0 call $~lib/string/String.UTF16.decodeUnsafe local.tee $3 - call $~lib/rt/pure/__retain - local.set $5 i32.const 288 - call $~lib/rt/pure/__retain - local.set $4 - local.get $5 - i32.eqz - local.get $4 - i32.eqz - i32.or - if (result i32) - local.get $5 - local.get $4 - i32.eq - else - local.get $5 - local.get $4 - call $~lib/string/String.__eq - end - local.set $6 - local.get $4 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - local.get $6 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -3298,34 +3235,9 @@ local.get $2 local.get $1 call $~lib/string/String.UTF16.decodeUnsafe - local.tee $5 - call $~lib/rt/pure/__retain - local.set $4 + local.tee $4 global.get $std/string-encoding/str - call $~lib/rt/pure/__retain - local.set $6 - local.get $4 - i32.eqz - local.get $6 - i32.eqz - i32.or - if (result i32) - local.get $4 - local.get $6 - i32.eq - else - local.get $4 - local.get $6 - call $~lib/string/String.__eq - end - local.set $7 - local.get $6 - call $~lib/rt/pure/__release - local.get $4 - call $~lib/rt/pure/__release - local.get $7 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -3338,34 +3250,9 @@ local.get $2 i32.const 4 call $~lib/string/String.UTF16.decodeUnsafe - local.tee $4 - call $~lib/rt/pure/__retain - local.set $6 + local.tee $5 i32.const 304 - call $~lib/rt/pure/__retain - local.set $7 - local.get $6 - i32.eqz - local.get $7 - i32.eqz - i32.or - if (result i32) - local.get $6 - local.get $7 - i32.eq - else - local.get $6 - local.get $7 - call $~lib/string/String.__eq - end - local.set $8 - local.get $7 - call $~lib/rt/pure/__release - local.get $6 - call $~lib/rt/pure/__release - local.get $8 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -3381,33 +3268,8 @@ i32.const 2 call $~lib/string/String.UTF16.decodeUnsafe local.tee $6 - call $~lib/rt/pure/__retain - local.set $7 i32.const 336 - call $~lib/rt/pure/__retain - local.set $8 - local.get $7 - i32.eqz - local.get $8 - i32.eqz - i32.or - if (result i32) - local.get $7 - local.get $8 - i32.eq - else - local.get $7 - local.get $8 - call $~lib/string/String.__eq - end - local.set $9 - local.get $8 - call $~lib/rt/pure/__release - local.get $7 - call $~lib/rt/pure/__release - local.get $9 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -3423,33 +3285,8 @@ i32.const 4 call $~lib/string/String.UTF16.decodeUnsafe local.tee $7 - call $~lib/rt/pure/__retain - local.set $8 i32.const 368 - call $~lib/rt/pure/__retain - local.set $9 - local.get $8 - i32.eqz - local.get $9 - i32.eqz - i32.or - if (result i32) - local.get $8 - local.get $9 - i32.eq - else - local.get $8 - local.get $9 - call $~lib/string/String.__eq - end - local.set $10 - local.get $9 - call $~lib/rt/pure/__release - local.get $8 - call $~lib/rt/pure/__release - local.get $10 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -3465,33 +3302,8 @@ i32.const 4 call $~lib/string/String.UTF16.decodeUnsafe local.tee $8 - call $~lib/rt/pure/__retain - local.set $9 i32.const 400 - call $~lib/rt/pure/__retain - local.set $10 - local.get $9 - i32.eqz - local.get $10 - i32.eqz - i32.or - if (result i32) - local.get $9 - local.get $10 - i32.eq - else - local.get $9 - local.get $10 - call $~lib/string/String.__eq - end - local.set $11 - local.get $10 - call $~lib/rt/pure/__release - local.get $9 - call $~lib/rt/pure/__release - local.get $11 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -3507,33 +3319,8 @@ i32.const 0 call $~lib/string/String.UTF16.decodeUnsafe local.tee $9 - call $~lib/rt/pure/__retain - local.set $10 i32.const 288 - call $~lib/rt/pure/__retain - local.set $11 - local.get $10 - i32.eqz - local.get $11 - i32.eqz - i32.or - if (result i32) - local.get $10 - local.get $11 - i32.eq - else - local.get $10 - local.get $11 - call $~lib/string/String.__eq - end - local.set $12 - local.get $11 - call $~lib/rt/pure/__release - local.get $10 - call $~lib/rt/pure/__release - local.get $12 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -3545,10 +3332,10 @@ end local.get $3 call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release local.get $4 call $~lib/rt/pure/__release + local.get $5 + call $~lib/rt/pure/__release local.get $6 call $~lib/rt/pure/__release local.get $7 @@ -4480,7 +4267,7 @@ if i32.const 0 i32.const 432 - i32.const 750 + i32.const 749 i32.const 7 call $~lib/builtins/abort unreachable @@ -4690,9 +4477,6 @@ (func $std/string-encoding/testUTF8Decode (; 46 ;) (local $0 i32) (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) global.get $std/string-encoding/str i32.const 0 call $~lib/string/String.UTF8.encode @@ -4701,33 +4485,8 @@ i32.const 0 call $~lib/string/String.UTF8.decode local.tee $1 - call $~lib/rt/pure/__retain - local.set $3 global.get $std/string-encoding/str - call $~lib/rt/pure/__retain - local.set $2 - local.get $3 - i32.eqz - local.get $2 - i32.eqz - i32.or - if (result i32) - local.get $3 - local.get $2 - i32.eq - else - local.get $3 - local.get $2 - call $~lib/string/String.__eq - end - local.set $4 - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $4 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -4751,9 +4510,6 @@ (local $5 i32) (local $6 i32) (local $7 i32) - (local $8 i32) - (local $9 i32) - (local $10 i32) global.get $std/string-encoding/str i32.const 1 call $~lib/string/String.UTF8.encode @@ -4762,33 +4518,8 @@ i32.const 1 call $~lib/string/String.UTF8.decode local.tee $1 - call $~lib/rt/pure/__retain - local.set $3 global.get $std/string-encoding/str - call $~lib/rt/pure/__retain - local.set $2 - local.get $3 - i32.eqz - local.get $2 - i32.eqz - i32.or - if (result i32) - local.get $3 - local.get $2 - i32.eq - else - local.get $3 - local.get $2 - call $~lib/string/String.__eq - end - local.set $4 - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $4 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -4799,8 +4530,8 @@ unreachable end i32.const 480 - local.set $5 - local.get $5 + local.set $2 + local.get $2 i32.const 1 call $~lib/string/String.UTF8.byteLength i32.const 4 @@ -4814,11 +4545,11 @@ call $~lib/builtins/abort unreachable end - local.get $5 + local.get $2 i32.const 1 call $~lib/string/String.UTF8.encode - local.set $6 - local.get $6 + local.set $3 + local.get $3 call $~lib/arraybuffer/ArrayBuffer#get:byteLength i32.const 4 i32.eq @@ -4832,8 +4563,8 @@ unreachable end i32.const 512 - local.set $7 - local.get $7 + local.set $4 + local.get $4 i32.const 1 call $~lib/string/String.UTF8.byteLength i32.const 4 @@ -4847,37 +4578,12 @@ call $~lib/builtins/abort unreachable end - local.get $6 + local.get $3 i32.const 1 call $~lib/string/String.UTF8.decode - local.tee $3 - call $~lib/rt/pure/__retain - local.set $2 - local.get $7 - call $~lib/rt/pure/__retain - local.set $4 - local.get $2 - i32.eqz - local.get $4 - i32.eqz - i32.or - if (result i32) - local.get $2 - local.get $4 - i32.eq - else - local.get $2 - local.get $4 - call $~lib/string/String.__eq - end - local.set $8 + local.tee $5 local.get $4 - call $~lib/rt/pure/__release - local.get $2 - call $~lib/rt/pure/__release - local.get $8 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -4887,41 +4593,16 @@ call $~lib/builtins/abort unreachable end - local.get $5 + local.get $2 i32.const 0 call $~lib/string/String.UTF8.encode - local.set $9 - local.get $9 + local.set $6 + local.get $6 i32.const 1 call $~lib/string/String.UTF8.decode - local.tee $2 - call $~lib/rt/pure/__retain - local.set $4 - local.get $7 - call $~lib/rt/pure/__retain - local.set $8 - local.get $4 - i32.eqz - local.get $8 - i32.eqz - i32.or - if (result i32) - local.get $4 - local.get $8 - i32.eq - else - local.get $4 - local.get $8 - call $~lib/string/String.__eq - end - local.set $10 - local.get $8 - call $~lib/rt/pure/__release + local.tee $7 local.get $4 - call $~lib/rt/pure/__release - local.get $10 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -4933,19 +4614,19 @@ end local.get $1 call $~lib/rt/pure/__release - local.get $3 + local.get $5 call $~lib/rt/pure/__release - local.get $2 + local.get $7 call $~lib/rt/pure/__release local.get $0 call $~lib/rt/pure/__release - local.get $5 + local.get $2 call $~lib/rt/pure/__release - local.get $6 + local.get $3 call $~lib/rt/pure/__release - local.get $7 + local.get $4 call $~lib/rt/pure/__release - local.get $9 + local.get $6 call $~lib/rt/pure/__release ) (func $std/string-encoding/testUTF8DecodeUnsafe (; 48 ;) @@ -4961,9 +4642,6 @@ (local $9 i32) (local $10 i32) (local $11 i32) - (local $12 i32) - (local $13 i32) - (local $14 i32) global.get $std/string-encoding/str i32.const 1 call $~lib/string/String.UTF8.encode @@ -4979,33 +4657,8 @@ i32.const 0 call $~lib/string/String.UTF8.decodeUnsafe local.tee $3 - call $~lib/rt/pure/__retain - local.set $5 i32.const 288 - call $~lib/rt/pure/__retain - local.set $4 - local.get $5 - i32.eqz - local.get $4 - i32.eqz - i32.or - if (result i32) - local.get $5 - local.get $4 - i32.eq - else - local.get $5 - local.get $4 - call $~lib/string/String.__eq - end - local.set $6 - local.get $4 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - local.get $6 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -5019,34 +4672,9 @@ local.get $1 i32.const 0 call $~lib/string/String.UTF8.decodeUnsafe - local.tee $5 - call $~lib/rt/pure/__retain - local.set $4 + local.tee $4 global.get $std/string-encoding/str - call $~lib/rt/pure/__retain - local.set $6 - local.get $4 - i32.eqz - local.get $6 - i32.eqz - i32.or - if (result i32) - local.get $4 - local.get $6 - i32.eq - else - local.get $4 - local.get $6 - call $~lib/string/String.__eq - end - local.set $7 - local.get $6 - call $~lib/rt/pure/__release - local.get $4 - call $~lib/rt/pure/__release - local.get $7 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -5060,34 +4688,9 @@ i32.const 4 i32.const 0 call $~lib/string/String.UTF8.decodeUnsafe - local.tee $4 - call $~lib/rt/pure/__retain - local.set $6 + local.tee $5 i32.const 304 - call $~lib/rt/pure/__retain - local.set $7 - local.get $6 - i32.eqz - local.get $7 - i32.eqz - i32.or - if (result i32) - local.get $6 - local.get $7 - i32.eq - else - local.get $6 - local.get $7 - call $~lib/string/String.__eq - end - local.set $8 - local.get $7 - call $~lib/rt/pure/__release - local.get $6 - call $~lib/rt/pure/__release - local.get $8 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -5104,33 +4707,8 @@ i32.const 0 call $~lib/string/String.UTF8.decodeUnsafe local.tee $6 - call $~lib/rt/pure/__retain - local.set $7 i32.const 368 - call $~lib/rt/pure/__retain - local.set $8 - local.get $7 - i32.eqz - local.get $8 - i32.eqz - i32.or - if (result i32) - local.get $7 - local.get $8 - i32.eq - else - local.get $7 - local.get $8 - call $~lib/string/String.__eq - end - local.set $9 - local.get $8 - call $~lib/rt/pure/__release - local.get $7 - call $~lib/rt/pure/__release - local.get $9 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -5147,33 +4725,8 @@ i32.const 0 call $~lib/string/String.UTF8.decodeUnsafe local.tee $7 - call $~lib/rt/pure/__retain - local.set $8 i32.const 400 - call $~lib/rt/pure/__retain - local.set $9 - local.get $8 - i32.eqz - local.get $9 - i32.eqz - i32.or - if (result i32) - local.get $8 - local.get $9 - i32.eq - else - local.get $8 - local.get $9 - call $~lib/string/String.__eq - end - local.set $10 - local.get $9 - call $~lib/rt/pure/__release - local.get $8 - call $~lib/rt/pure/__release - local.get $10 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -5190,33 +4743,8 @@ i32.const 0 call $~lib/string/String.UTF8.decodeUnsafe local.tee $8 - call $~lib/rt/pure/__retain - local.set $9 i32.const 288 - call $~lib/rt/pure/__retain - local.set $10 - local.get $9 - i32.eqz - local.get $10 - i32.eqz - i32.or - if (result i32) - local.get $9 - local.get $10 - i32.eq - else - local.get $9 - local.get $10 - call $~lib/string/String.__eq - end - local.set $11 - local.get $10 - call $~lib/rt/pure/__release - local.get $9 - call $~lib/rt/pure/__release - local.get $11 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -5233,33 +4761,8 @@ i32.const 1 call $~lib/string/String.UTF8.decodeUnsafe local.tee $9 - call $~lib/rt/pure/__retain - local.set $10 i32.const 544 - call $~lib/rt/pure/__retain - local.set $11 - local.get $10 - i32.eqz - local.get $11 - i32.eqz - i32.or - if (result i32) - local.get $10 - local.get $11 - i32.eq - else - local.get $10 - local.get $11 - call $~lib/string/String.__eq - end - local.set $12 - local.get $11 - call $~lib/rt/pure/__release - local.get $10 - call $~lib/rt/pure/__release - local.get $12 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -5276,33 +4779,8 @@ i32.const 1 call $~lib/string/String.UTF8.decodeUnsafe local.tee $10 - call $~lib/rt/pure/__retain - local.set $11 i32.const 400 - call $~lib/rt/pure/__retain - local.set $12 - local.get $11 - i32.eqz - local.get $12 - i32.eqz - i32.or - if (result i32) - local.get $11 - local.get $12 - i32.eq - else - local.get $11 - local.get $12 - call $~lib/string/String.__eq - end - local.set $13 - local.get $12 - call $~lib/rt/pure/__release - local.get $11 - call $~lib/rt/pure/__release - local.get $13 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -5319,33 +4797,8 @@ i32.const 1 call $~lib/string/String.UTF8.decodeUnsafe local.tee $11 - call $~lib/rt/pure/__retain - local.set $12 i32.const 288 - call $~lib/rt/pure/__retain - local.set $13 - local.get $12 - i32.eqz - local.get $13 - i32.eqz - i32.or - if (result i32) - local.get $12 - local.get $13 - i32.eq - else - local.get $12 - local.get $13 - call $~lib/string/String.__eq - end - local.set $14 - local.get $13 - call $~lib/rt/pure/__release - local.get $12 - call $~lib/rt/pure/__release - local.get $14 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -5357,10 +4810,10 @@ end local.get $3 call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release local.get $4 call $~lib/rt/pure/__release + local.get $5 + call $~lib/rt/pure/__release local.get $6 call $~lib/rt/pure/__release local.get $7 @@ -5381,9 +4834,6 @@ (local $2 i32) (local $3 i32) (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) local.get $0 call $~lib/rt/pure/__retain local.set $0 @@ -5395,33 +4845,8 @@ i32.const 0 call $~lib/string/String.UTF8.decode local.tee $2 - call $~lib/rt/pure/__retain - local.set $4 local.get $0 - call $~lib/rt/pure/__retain - local.set $3 - local.get $4 - i32.eqz - local.get $3 - i32.eqz - i32.or - if (result i32) - local.get $4 - local.get $3 - i32.eq - else - local.get $4 - local.get $3 - call $~lib/string/String.__eq - end - local.set $5 - local.get $3 - call $~lib/rt/pure/__release - local.get $4 - call $~lib/rt/pure/__release - local.get $5 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -5433,37 +4858,12 @@ end local.get $0 call $~lib/string/String.UTF16.encode - local.set $6 - local.get $6 + local.set $3 + local.get $3 call $~lib/string/String.UTF16.decode local.tee $4 - call $~lib/rt/pure/__retain - local.set $3 local.get $0 - call $~lib/rt/pure/__retain - local.set $5 - local.get $3 - i32.eqz - local.get $5 - i32.eqz - i32.or - if (result i32) - local.get $3 - local.get $5 - i32.eq - else - local.get $3 - local.get $5 - call $~lib/string/String.__eq - end - local.set $7 - local.get $5 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $7 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -5481,7 +4881,7 @@ call $~lib/rt/pure/__release local.get $1 call $~lib/rt/pure/__release - local.get $6 + local.get $3 call $~lib/rt/pure/__release ) (func $start:std/string-encoding (; 50 ;) diff --git a/tests/compiler/std/string.optimized.wat b/tests/compiler/std/string.optimized.wat index 3f76f13930..2cd49c3e31 100644 --- a/tests/compiler/std/string.optimized.wat +++ b/tests/compiler/std/string.optimized.wat @@ -536,7 +536,7 @@ end i32.const 0 ) - (func $~lib/string/String.__eq (; 10 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/string/String#_eq (; 10 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) local.get $0 call $~lib/string/String#get:length @@ -3953,7 +3953,7 @@ end f64.const nan:0x8000000000000 ) - (func $~lib/string/String.__concat (; 41 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/string/String._add (; 41 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -3997,7 +3997,7 @@ end local.get $0 ) - (func $~lib/string/String.__gt (; 42 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/string/String._gt (; 42 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) i32.const 1 @@ -4111,7 +4111,7 @@ if i32.const 11904 i32.const 1536 - i32.const 334 + i32.const 268 i32.const 7 call $~lib/builtins/abort unreachable @@ -4172,24 +4172,10 @@ call $~lib/rt/pure/__retain else local.get $2 - local.tee $3 local.get $0 - local.tee $4 local.get $1 - local.tee $2 - i32.eqz local.get $0 - i32.eqz - i32.or - if (result i32) - local.get $2 - local.get $4 - i32.eq - else - local.get $2 - local.get $4 - call $~lib/string/String.__eq - end + call $~lib/string/String#_eq select call $~lib/rt/pure/__retain end @@ -4437,61 +4423,50 @@ (local $8 i32) (local $9 i32) (local $10 i32) + local.get $2 + local.set $5 local.get $0 call $~lib/string/String#get:length - local.tee $4 + local.tee $3 local.get $1 - local.tee $5 + local.tee $4 call $~lib/string/String#get:length local.tee $10 i32.le_u if - local.get $4 + local.get $3 local.get $10 i32.lt_u if (result i32) local.get $0 call $~lib/rt/pure/__retain else - local.get $2 - local.tee $3 - local.get $0 - local.tee $2 local.get $5 - i32.eqz local.get $0 - i32.eqz - i32.or - if (result i32) - local.get $2 - local.get $5 - i32.eq - else - local.get $5 - local.get $2 - call $~lib/string/String.__eq - end + local.get $4 + local.get $0 + call $~lib/string/String#_eq select call $~lib/rt/pure/__retain end return end - local.get $2 + local.get $5 call $~lib/string/String#get:length - local.set $3 + local.set $2 local.get $10 i32.eqz if - local.get $3 + local.get $2 i32.eqz if local.get $0 call $~lib/rt/pure/__retain return end - local.get $4 local.get $3 - local.get $4 + local.get $2 + local.get $3 i32.const 1 i32.add i32.mul @@ -4500,20 +4475,20 @@ i32.shl i32.const 1 call $~lib/rt/tlsf/__alloc - local.tee $5 + local.tee $4 + local.get $5 local.get $2 - local.get $3 i32.const 1 i32.shl call $~lib/memory/memory.copy - local.get $3 + local.get $2 local.set $1 loop $for-loop|0 local.get $9 - local.get $4 + local.get $3 i32.lt_u if - local.get $5 + local.get $4 local.get $1 i32.const 1 i32.shl @@ -4525,7 +4500,7 @@ i32.add i32.load16_u i32.store16 - local.get $5 + local.get $4 local.get $1 i32.const 1 i32.add @@ -4533,13 +4508,13 @@ i32.const 1 i32.shl i32.add + local.get $5 local.get $2 - local.get $3 i32.const 1 i32.shl call $~lib/memory/memory.copy local.get $1 - local.get $3 + local.get $2 i32.add local.set $1 local.get $9 @@ -4549,44 +4524,44 @@ br $for-loop|0 end end - local.get $5 + local.get $4 call $~lib/rt/pure/__retain return end - local.get $3 + local.get $2 local.get $10 i32.eq if - local.get $4 + local.get $3 i32.const 1 i32.shl - local.tee $4 + local.tee $3 i32.const 1 call $~lib/rt/tlsf/__alloc local.tee $1 local.get $0 - local.get $4 + local.get $3 call $~lib/memory/memory.copy loop $while-continue|1 local.get $0 - local.get $5 + local.get $4 local.get $7 call $~lib/string/String#indexOf - local.tee $4 + local.tee $3 i32.const -1 i32.xor if local.get $1 - local.get $4 + local.get $3 i32.const 1 i32.shl i32.add + local.get $5 local.get $2 - local.get $3 i32.const 1 i32.shl call $~lib/memory/memory.copy - local.get $4 + local.get $3 local.get $10 i32.add local.set $7 @@ -4597,11 +4572,11 @@ call $~lib/rt/pure/__retain return end - local.get $4 + local.get $3 local.set $1 loop $while-continue|2 local.get $0 - local.get $5 + local.get $4 local.get $7 call $~lib/string/String#indexOf local.tee $9 @@ -4611,7 +4586,7 @@ local.get $6 i32.eqz if - local.get $4 + local.get $3 i32.const 1 i32.shl i32.const 1 @@ -4657,12 +4632,12 @@ i32.const 1 i32.shl i32.add + local.get $5 local.get $2 - local.get $3 i32.const 1 i32.shl call $~lib/memory/memory.copy - local.get $3 + local.get $2 local.get $7 i32.add local.set $8 @@ -4689,7 +4664,7 @@ call $~lib/rt/tlsf/__realloc local.set $6 end - local.get $4 + local.get $3 local.get $7 i32.sub local.tee $2 @@ -6751,7 +6726,7 @@ (func $start:std/string (; 71 ;) (local $0 i32) (local $1 i32) - (local $2 i32) + (local $2 f64) (local $3 i32) (local $4 i32) (local $5 i32) @@ -6960,8 +6935,7 @@ (local $208 i32) (local $209 i32) (local $210 i32) - (local $211 f64) - (local $212 i32) + (local $211 i32) global.get $std/string/str i32.const 1040 i32.ne @@ -6975,7 +6949,7 @@ end i32.const 1136 i32.const 1136 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -6987,7 +6961,7 @@ end i32.const 1216 i32.const 1216 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -6999,7 +6973,7 @@ end i32.const 1248 i32.const 1248 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -7025,12 +6999,12 @@ i32.const -1 i32.const 0 global.get $std/string/str - local.tee $1 + local.tee $0 call $~lib/string/String#get:length i32.ge_u br_if $__inlined_func$~lib/string/String#charCodeAt drop - local.get $1 + local.get $0 i32.load16_u end i32.const 104 @@ -7085,18 +7059,9 @@ global.set $~argumentsLength i32.const 0 call $~lib/string/String.fromCharCode|trampoline - local.tee $104 - local.set $1 - local.get $104 - if (result i32) - local.get $1 - i32.const 1296 - call $~lib/string/String.__eq - else - local.get $1 - i32.const 1296 - i32.eq - end + local.tee $41 + i32.const 1296 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -7110,18 +7075,9 @@ global.set $~argumentsLength i32.const 54 call $~lib/string/String.fromCharCode|trampoline - local.tee $103 - local.set $1 - local.get $103 - if (result i32) - local.get $1 - i32.const 1472 - call $~lib/string/String.__eq - else - local.get $1 - i32.const 1472 - i32.eq - end + local.tee $42 + i32.const 1472 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -7135,18 +7091,9 @@ global.set $~argumentsLength i32.const 65590 call $~lib/string/String.fromCharCode|trampoline - local.tee $102 - local.set $1 - local.get $102 - if (result i32) - local.get $1 - i32.const 1472 - call $~lib/string/String.__eq - else - local.get $1 - i32.const 1472 - i32.eq - end + local.tee $43 + i32.const 1472 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -7159,18 +7106,9 @@ i32.const 55296 i32.const 57088 call $~lib/string/String.fromCharCode - local.tee $101 - local.set $1 - local.get $101 - if (result i32) - local.get $1 - i32.const 1504 - call $~lib/string/String.__eq - else - local.get $1 - i32.const 1504 - i32.eq - end + local.tee $44 + i32.const 1504 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -7182,18 +7120,9 @@ end i32.const 0 call $~lib/string/String.fromCodePoint - local.tee $100 - local.set $1 - local.get $100 - if (result i32) - local.get $1 - i32.const 1296 - call $~lib/string/String.__eq - else - local.get $1 - i32.const 1296 - i32.eq - end + local.tee $45 + i32.const 1296 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -7205,18 +7134,9 @@ end i32.const 54 call $~lib/string/String.fromCodePoint - local.tee $99 - local.set $1 - local.get $99 - if (result i32) - local.get $1 - i32.const 1472 - call $~lib/string/String.__eq - else - local.get $1 - i32.const 1472 - i32.eq - end + local.tee $46 + i32.const 1472 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -7228,18 +7148,9 @@ end i32.const 119558 call $~lib/string/String.fromCodePoint - local.tee $98 - local.set $1 - local.get $98 - if (result i32) - local.get $1 - i32.const 1584 - call $~lib/string/String.__eq - else - local.get $1 - i32.const 1584 - i32.eq - end + local.tee $47 + i32.const 1584 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -7253,26 +7164,26 @@ i32.const 0 i32.const 0 global.get $std/string/str - local.tee $0 - call $~lib/string/String#get:length local.tee $1 + call $~lib/string/String#get:length + local.tee $0 i32.const 0 - local.get $1 + local.get $0 i32.lt_s select - local.tee $210 + local.tee $3 i32.const 1616 call $~lib/string/String#get:length - local.tee $107 + local.tee $4 i32.add - local.get $1 + local.get $0 i32.gt_s br_if $__inlined_func$~lib/string/String#startsWith drop - local.get $0 - local.get $210 + local.get $1 + local.get $3 i32.const 1616 - local.get $107 + local.get $4 call $~lib/util/string/compareImpl i32.eqz end @@ -7289,26 +7200,26 @@ i32.const 0 i32.const 536870904 global.get $std/string/str - local.tee $1 - call $~lib/string/String#get:length local.tee $0 + call $~lib/string/String#get:length + local.tee $1 i32.const 536870904 - local.get $0 + local.get $1 i32.lt_s select i32.const 1648 call $~lib/string/String#get:length - local.tee $0 + local.tee $1 i32.sub - local.tee $210 + local.tee $3 i32.const 0 i32.lt_s br_if $__inlined_func$~lib/string/String#endsWith drop - local.get $1 - local.get $210 - i32.const 1648 local.get $0 + local.get $3 + i32.const 1648 + local.get $1 call $~lib/util/string/compareImpl i32.eqz end @@ -7339,23 +7250,9 @@ i32.const 0 i32.const 1712 call $~lib/string/String#padStart - local.tee $210 - local.set $1 - local.get $210 - i32.eqz + local.tee $4 global.get $std/string/str - local.tee $0 - i32.eqz - i32.or - if (result i32) - local.get $0 - local.get $1 - i32.eq - else - local.get $1 - local.get $0 - call $~lib/string/String.__eq - end + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -7369,23 +7266,9 @@ i32.const 15 i32.const 1712 call $~lib/string/String#padStart - local.tee $107 - local.set $1 - local.get $107 - i32.eqz + local.tee $48 global.get $std/string/str - local.tee $0 - i32.eqz - i32.or - if (result i32) - local.get $0 - local.get $1 - i32.eq - else - local.get $1 - local.get $0 - call $~lib/string/String.__eq - end + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -7399,18 +7282,9 @@ i32.const 3 i32.const 1712 call $~lib/string/String#padStart - local.tee $97 - local.set $1 - local.get $97 - if (result i32) - local.get $1 - i32.const 1744 - call $~lib/string/String.__eq - else - local.get $1 - i32.const 1744 - i32.eq - end + local.tee $49 + i32.const 1744 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -7424,18 +7298,9 @@ i32.const 10 i32.const 1280 call $~lib/string/String#padStart - local.tee $96 - local.set $1 - local.get $96 - if (result i32) - local.get $1 - i32.const 1280 - call $~lib/string/String.__eq - else - local.get $1 - i32.const 1280 - i32.eq - end + local.tee $50 + i32.const 1280 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -7449,18 +7314,9 @@ i32.const 100 i32.const 1280 call $~lib/string/String#padStart - local.tee $95 - local.set $1 - local.get $95 - if (result i32) - local.get $1 - i32.const 1328 - call $~lib/string/String.__eq - else - local.get $1 - i32.const 1328 - i32.eq - end + local.tee $51 + i32.const 1328 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -7474,18 +7330,9 @@ i32.const 5 i32.const 1712 call $~lib/string/String#padStart - local.tee $94 - local.set $1 - local.get $94 - if (result i32) - local.get $1 - i32.const 1808 - call $~lib/string/String.__eq - else - local.get $1 - i32.const 1808 - i32.eq - end + local.tee $52 + i32.const 1808 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -7499,18 +7346,9 @@ i32.const 6 i32.const 1840 call $~lib/string/String#padStart - local.tee $93 - local.set $1 - local.get $93 - if (result i32) - local.get $1 - i32.const 1872 - call $~lib/string/String.__eq - else - local.get $1 - i32.const 1872 - i32.eq - end + local.tee $53 + i32.const 1872 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -7524,18 +7362,9 @@ i32.const 8 i32.const 1840 call $~lib/string/String#padStart - local.tee $92 - local.set $1 - local.get $92 - if (result i32) - local.get $1 - i32.const 1904 - call $~lib/string/String.__eq - else - local.get $1 - i32.const 1904 - i32.eq - end + local.tee $54 + i32.const 1904 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -7549,23 +7378,9 @@ i32.const 0 i32.const 1712 call $~lib/string/String#padEnd - local.tee $91 - local.set $1 - local.get $91 - i32.eqz + local.tee $55 global.get $std/string/str - local.tee $0 - i32.eqz - i32.or - if (result i32) - local.get $0 - local.get $1 - i32.eq - else - local.get $1 - local.get $0 - call $~lib/string/String.__eq - end + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -7579,23 +7394,9 @@ i32.const 15 i32.const 1712 call $~lib/string/String#padEnd - local.tee $90 - local.set $1 - local.get $90 - i32.eqz + local.tee $56 global.get $std/string/str - local.tee $0 - i32.eqz - i32.or - if (result i32) - local.get $0 - local.get $1 - i32.eq - else - local.get $1 - local.get $0 - call $~lib/string/String.__eq - end + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -7609,18 +7410,9 @@ i32.const 3 i32.const 1712 call $~lib/string/String#padEnd - local.tee $89 - local.set $1 - local.get $89 - if (result i32) - local.get $1 - i32.const 1744 - call $~lib/string/String.__eq - else - local.get $1 - i32.const 1744 - i32.eq - end + local.tee $57 + i32.const 1744 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -7634,18 +7426,9 @@ i32.const 10 i32.const 1280 call $~lib/string/String#padEnd - local.tee $88 - local.set $1 - local.get $88 - if (result i32) - local.get $1 - i32.const 1280 - call $~lib/string/String.__eq - else - local.get $1 - i32.const 1280 - i32.eq - end + local.tee $58 + i32.const 1280 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -7659,18 +7442,9 @@ i32.const 100 i32.const 1280 call $~lib/string/String#padEnd - local.tee $87 - local.set $1 - local.get $87 - if (result i32) - local.get $1 - i32.const 1328 - call $~lib/string/String.__eq - else - local.get $1 - i32.const 1328 - i32.eq - end + local.tee $59 + i32.const 1328 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -7684,18 +7458,9 @@ i32.const 5 i32.const 1712 call $~lib/string/String#padEnd - local.tee $86 - local.set $1 - local.get $86 - if (result i32) - local.get $1 - i32.const 1936 - call $~lib/string/String.__eq - else - local.get $1 - i32.const 1936 - i32.eq - end + local.tee $60 + i32.const 1936 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -7709,18 +7474,9 @@ i32.const 6 i32.const 1776 call $~lib/string/String#padEnd - local.tee $85 - local.set $1 - local.get $85 - if (result i32) - local.get $1 - i32.const 1968 - call $~lib/string/String.__eq - else - local.get $1 - i32.const 1968 - i32.eq - end + local.tee $61 + i32.const 1968 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -7734,18 +7490,9 @@ i32.const 8 i32.const 1776 call $~lib/string/String#padEnd - local.tee $84 - local.set $1 - local.get $84 - if (result i32) - local.get $1 - i32.const 2000 - call $~lib/string/String.__eq - else - local.get $1 - i32.const 2000 - i32.eq - end + local.tee $62 + i32.const 2000 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -8166,18 +7913,9 @@ end i32.const 1280 call $~lib/string/String#trimStart - local.tee $83 - local.set $1 - local.get $83 - if (result i32) - local.get $1 - i32.const 1280 - call $~lib/string/String.__eq - else - local.get $1 - i32.const 1280 - i32.eq - end + local.tee $63 + i32.const 1280 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -8189,18 +7927,9 @@ end i32.const 2288 call $~lib/string/String#trimStart - local.tee $82 - local.set $1 - local.get $82 - if (result i32) - local.get $1 - i32.const 2288 - call $~lib/string/String.__eq - else - local.get $1 - i32.const 2288 - i32.eq - end + local.tee $64 + i32.const 2288 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -8212,18 +7941,9 @@ end i32.const 2320 call $~lib/string/String#trimStart - local.tee $81 - local.set $1 - local.get $81 - if (result i32) - local.get $1 - i32.const 2368 - call $~lib/string/String.__eq - else - local.get $1 - i32.const 2368 - i32.eq - end + local.tee $65 + i32.const 2368 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -8235,18 +7955,9 @@ end i32.const 1280 call $~lib/string/String#trimEnd - local.tee $80 - local.set $1 - local.get $80 - if (result i32) - local.get $1 - i32.const 1280 - call $~lib/string/String.__eq - else - local.get $1 - i32.const 1280 - i32.eq - end + local.tee $66 + i32.const 1280 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -8258,18 +7969,9 @@ end i32.const 2288 call $~lib/string/String#trimEnd - local.tee $79 - local.set $1 - local.get $79 - if (result i32) - local.get $1 - i32.const 2288 - call $~lib/string/String.__eq - else - local.get $1 - i32.const 2288 - i32.eq - end + local.tee $67 + i32.const 2288 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -8281,18 +7983,9 @@ end i32.const 2320 call $~lib/string/String#trimEnd - local.tee $78 - local.set $1 - local.get $78 - if (result i32) - local.get $1 - i32.const 2400 - call $~lib/string/String.__eq - else - local.get $1 - i32.const 2400 - i32.eq - end + local.tee $68 + i32.const 2400 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -8304,18 +7997,9 @@ end i32.const 1280 call $~lib/string/String#trim - local.tee $77 - local.set $1 - local.get $77 - if (result i32) - local.get $1 - i32.const 1280 - call $~lib/string/String.__eq - else - local.get $1 - i32.const 1280 - i32.eq - end + local.tee $69 + i32.const 1280 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -8327,18 +8011,9 @@ end i32.const 2288 call $~lib/string/String#trim - local.tee $76 - local.set $1 - local.get $76 - if (result i32) - local.get $1 - i32.const 2288 - call $~lib/string/String.__eq - else - local.get $1 - i32.const 2288 - i32.eq - end + local.tee $70 + i32.const 2288 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -8350,18 +8025,9 @@ end i32.const 2320 call $~lib/string/String#trim - local.tee $75 - local.set $1 - local.get $75 - if (result i32) - local.get $1 - i32.const 1776 - call $~lib/string/String.__eq - else - local.get $1 - i32.const 1776 - i32.eq - end + local.tee $71 + i32.const 1776 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -8803,8 +8469,8 @@ end i32.const 1280 call $~lib/util/string/strtod - local.tee $211 - local.get $211 + local.tee $2 + local.get $2 f64.eq if i32.const 0 @@ -9452,8 +9118,8 @@ end i32.const 5584 call $~lib/util/string/strtod - local.tee $211 - local.get $211 + local.tee $2 + local.get $2 f64.eq if i32.const 0 @@ -9465,8 +9131,8 @@ end i32.const 5616 call $~lib/util/string/strtod - local.tee $211 - local.get $211 + local.tee $2 + local.get $2 f64.eq if i32.const 0 @@ -9478,8 +9144,8 @@ end i32.const 5648 call $~lib/util/string/strtod - local.tee $211 - local.get $211 + local.tee $2 + local.get $2 f64.eq if i32.const 0 @@ -9491,8 +9157,8 @@ end i32.const 5680 call $~lib/util/string/strtod - local.tee $211 - local.get $211 + local.tee $2 + local.get $2 f64.eq if i32.const 0 @@ -9504,8 +9170,8 @@ end i32.const 5712 call $~lib/util/string/strtod - local.tee $211 - local.get $211 + local.tee $2 + local.get $2 f64.eq if i32.const 0 @@ -9517,8 +9183,8 @@ end i32.const 5744 call $~lib/util/string/strtod - local.tee $211 - local.get $211 + local.tee $2 + local.get $2 f64.eq if i32.const 0 @@ -9530,8 +9196,8 @@ end i32.const 5776 call $~lib/util/string/strtod - local.tee $211 - local.get $211 + local.tee $2 + local.get $2 f64.eq if i32.const 0 @@ -9543,8 +9209,8 @@ end i32.const 5808 call $~lib/util/string/strtod - local.tee $211 - local.get $211 + local.tee $2 + local.get $2 f64.eq if i32.const 0 @@ -9556,8 +9222,8 @@ end i32.const 5840 call $~lib/util/string/strtod - local.tee $211 - local.get $211 + local.tee $2 + local.get $2 f64.eq if i32.const 0 @@ -9569,8 +9235,8 @@ end i32.const 5872 call $~lib/util/string/strtod - local.tee $211 - local.get $211 + local.tee $2 + local.get $2 f64.eq if i32.const 0 @@ -9582,8 +9248,8 @@ end i32.const 5904 call $~lib/util/string/strtod - local.tee $211 - local.get $211 + local.tee $2 + local.get $2 f64.eq if i32.const 0 @@ -9595,8 +9261,8 @@ end i32.const 5936 call $~lib/util/string/strtod - local.tee $211 - local.get $211 + local.tee $2 + local.get $2 f64.eq if i32.const 0 @@ -9608,8 +9274,8 @@ end i32.const 5968 call $~lib/util/string/strtod - local.tee $211 - local.get $211 + local.tee $2 + local.get $2 f64.eq if i32.const 0 @@ -9621,8 +9287,8 @@ end i32.const 6000 call $~lib/util/string/strtod - local.tee $211 - local.get $211 + local.tee $2 + local.get $2 f64.eq if i32.const 0 @@ -9634,8 +9300,8 @@ end i32.const 6032 call $~lib/util/string/strtod - local.tee $211 - local.get $211 + local.tee $2 + local.get $2 f64.eq if i32.const 0 @@ -9647,8 +9313,8 @@ end i32.const 6064 call $~lib/util/string/strtod - local.tee $211 - local.get $211 + local.tee $2 + local.get $2 f64.eq if i32.const 0 @@ -9960,8 +9626,8 @@ end i32.const 7200 call $~lib/util/string/strtod - local.tee $211 - local.get $211 + local.tee $2 + local.get $2 f64.eq if i32.const 0 @@ -9973,8 +9639,8 @@ end i32.const 7232 call $~lib/util/string/strtod - local.tee $211 - local.get $211 + local.tee $2 + local.get $2 f64.eq if i32.const 0 @@ -9986,8 +9652,8 @@ end i32.const 7264 call $~lib/util/string/strtod - local.tee $211 - local.get $211 + local.tee $2 + local.get $2 f64.eq if i32.const 0 @@ -10035,17 +9701,17 @@ end i32.const 7872 i32.const 8032 - call $~lib/string/String.__concat - local.tee $5 + call $~lib/string/String._add + local.tee $72 i32.const 8192 - call $~lib/string/String.__concat - local.tee $4 + call $~lib/string/String._add + local.tee $73 i32.const 8352 - call $~lib/string/String.__concat - local.tee $3 + call $~lib/string/String._add + local.tee $74 i32.const 8512 - call $~lib/string/String.__concat - local.tee $2 + call $~lib/string/String._add + local.tee $75 call $~lib/util/string/strtod f64.const 1797693134862315708145274e284 f64.ne @@ -10347,8 +10013,8 @@ end i32.const 11360 call $~lib/util/string/strtod - local.tee $211 - local.get $211 + local.tee $2 + local.get $2 f64.eq if i32.const 0 @@ -10372,19 +10038,11 @@ end i32.const 1328 i32.const 11424 - call $~lib/string/String.__concat - local.tee $1 - local.set $0 - local.get $1 - if (result i32) - local.get $1 - i32.const 11456 - call $~lib/string/String.__eq - else - local.get $1 - i32.const 11456 - i32.eq - end + call $~lib/string/String._add + local.tee $0 + local.get $0 + i32.const 11456 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -10394,16 +10052,8 @@ call $~lib/builtins/abort unreachable end - local.get $0 - if (result i32) - local.get $0 - i32.const 1328 - call $~lib/string/String.__eq - else - local.get $0 - i32.const 1328 - i32.eq - end + i32.const 1328 + call $~lib/string/String#_eq if i32.const 0 i32.const 1088 @@ -10412,11 +10062,11 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $0 call $~lib/rt/pure/__release i32.const 1280 i32.const 1280 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -10428,7 +10078,7 @@ end i32.const 1328 i32.const 11424 - call $~lib/string/String.__eq + call $~lib/string/String#_eq if i32.const 0 i32.const 1088 @@ -10439,7 +10089,7 @@ end i32.const 1328 i32.const 1328 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -10451,7 +10101,7 @@ end i32.const 11488 i32.const 11520 - call $~lib/string/String.__eq + call $~lib/string/String#_eq if i32.const 0 i32.const 1088 @@ -10462,7 +10112,7 @@ end i32.const 11488 i32.const 11488 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -10474,7 +10124,7 @@ end i32.const 11552 i32.const 11584 - call $~lib/string/String.__eq + call $~lib/string/String#_eq if i32.const 0 i32.const 1088 @@ -10485,7 +10135,7 @@ end i32.const 11616 i32.const 11648 - call $~lib/string/String.__eq + call $~lib/string/String#_eq if i32.const 0 i32.const 1088 @@ -10496,7 +10146,7 @@ end i32.const 11680 i32.const 11680 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -10508,7 +10158,7 @@ end i32.const 11680 i32.const 11712 - call $~lib/string/String.__eq + call $~lib/string/String#_eq if i32.const 0 i32.const 1088 @@ -10519,7 +10169,7 @@ end i32.const 11744 i32.const 11792 - call $~lib/string/String.__eq + call $~lib/string/String#_eq if i32.const 0 i32.const 1088 @@ -10530,7 +10180,7 @@ end i32.const 11424 i32.const 1328 - call $~lib/string/String.__gt + call $~lib/string/String._gt i32.eqz if i32.const 0 @@ -10542,7 +10192,7 @@ end i32.const 11840 i32.const 1328 - call $~lib/string/String.__gt + call $~lib/string/String._gt i32.eqz if i32.const 0 @@ -10565,7 +10215,7 @@ end i32.const 11840 i32.const 11456 - call $~lib/string/String.__gt + call $~lib/string/String._gt i32.eqz if i32.const 0 @@ -10610,7 +10260,7 @@ end i32.const 1776 i32.const 1280 - call $~lib/string/String.__gt + call $~lib/string/String._gt i32.eqz if i32.const 0 @@ -10645,7 +10295,7 @@ end i32.const 1280 i32.const 1776 - call $~lib/string/String.__gt + call $~lib/string/String._gt if i32.const 0 i32.const 1088 @@ -10667,7 +10317,7 @@ end i32.const 1280 i32.const 1776 - call $~lib/string/String.__gt + call $~lib/string/String._gt if i32.const 0 i32.const 1088 @@ -10689,7 +10339,7 @@ end i32.const 1280 i32.const 1280 - call $~lib/string/String.__gt + call $~lib/string/String._gt if i32.const 0 i32.const 1088 @@ -10711,7 +10361,7 @@ end i32.const 1280 i32.const 1280 - call $~lib/string/String.__gt + call $~lib/string/String._gt if i32.const 0 i32.const 1088 @@ -10722,16 +10372,16 @@ end i32.const 65377 call $~lib/string/String.fromCodePoint - local.tee $1 + local.tee $0 i32.const 55296 call $~lib/string/String.fromCodePoint - local.tee $0 + local.tee $1 i32.const 56322 call $~lib/string/String.fromCodePoint - local.tee $106 - call $~lib/string/String.__concat - local.tee $105 - call $~lib/string/String.__gt + local.tee $3 + call $~lib/string/String._add + local.tee $5 + call $~lib/string/String._gt i32.eqz if i32.const 0 @@ -10741,13 +10391,13 @@ call $~lib/builtins/abort unreachable end - local.get $1 - call $~lib/rt/pure/__release local.get $0 call $~lib/rt/pure/__release - local.get $106 + local.get $1 call $~lib/rt/pure/__release - local.get $105 + local.get $3 + call $~lib/rt/pure/__release + local.get $5 call $~lib/rt/pure/__release i32.const 1840 call $~lib/string/String#get:length @@ -10764,18 +10414,9 @@ i32.const 1280 i32.const 100 call $~lib/string/String#repeat - local.tee $106 - local.set $1 - local.get $106 - if (result i32) - local.get $1 - i32.const 1280 - call $~lib/string/String.__eq - else - local.get $1 - i32.const 1280 - i32.eq - end + local.tee $5 + i32.const 1280 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -10788,18 +10429,9 @@ i32.const 1328 i32.const 0 call $~lib/string/String#repeat - local.tee $105 - local.set $1 - local.get $105 - if (result i32) - local.get $1 - i32.const 1280 - call $~lib/string/String.__eq - else - local.get $1 - i32.const 1280 - i32.eq - end + local.tee $76 + i32.const 1280 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -10812,18 +10444,9 @@ i32.const 1328 i32.const 1 call $~lib/string/String#repeat - local.tee $74 - local.set $1 - local.get $74 - if (result i32) - local.get $1 - i32.const 1328 - call $~lib/string/String.__eq - else - local.get $1 - i32.const 1328 - i32.eq - end + local.tee $77 + i32.const 1328 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -10836,18 +10459,9 @@ i32.const 1328 i32.const 2 call $~lib/string/String#repeat - local.tee $73 - local.set $1 - local.get $73 - if (result i32) - local.get $1 - i32.const 11872 - call $~lib/string/String.__eq - else - local.get $1 - i32.const 11872 - i32.eq - end + local.tee $78 + i32.const 11872 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -10860,18 +10474,9 @@ i32.const 1328 i32.const 3 call $~lib/string/String#repeat - local.tee $72 - local.set $1 - local.get $72 - if (result i32) - local.get $1 - i32.const 11952 - call $~lib/string/String.__eq - else - local.get $1 - i32.const 11952 - i32.eq - end + local.tee $79 + i32.const 11952 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -10884,18 +10489,9 @@ i32.const 11456 i32.const 4 call $~lib/string/String#repeat - local.tee $71 - local.set $1 - local.get $71 - if (result i32) - local.get $1 - i32.const 11984 - call $~lib/string/String.__eq - else - local.get $1 - i32.const 11984 - i32.eq - end + local.tee $80 + i32.const 11984 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -10908,18 +10504,9 @@ i32.const 1328 i32.const 5 call $~lib/string/String#repeat - local.tee $70 - local.set $1 - local.get $70 - if (result i32) - local.get $1 - i32.const 12016 - call $~lib/string/String.__eq - else - local.get $1 - i32.const 12016 - i32.eq - end + local.tee $81 + i32.const 12016 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -10932,18 +10519,9 @@ i32.const 1328 i32.const 6 call $~lib/string/String#repeat - local.tee $69 - local.set $1 - local.get $69 - if (result i32) - local.get $1 - i32.const 12048 - call $~lib/string/String.__eq - else - local.get $1 - i32.const 12048 - i32.eq - end + local.tee $82 + i32.const 12048 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -10956,18 +10534,9 @@ i32.const 1328 i32.const 7 call $~lib/string/String#repeat - local.tee $68 - local.set $1 - local.get $68 - if (result i32) - local.get $1 - i32.const 12080 - call $~lib/string/String.__eq - else - local.get $1 - i32.const 12080 - i32.eq - end + local.tee $83 + i32.const 12080 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -10981,18 +10550,9 @@ i32.const 1280 i32.const 1280 call $~lib/string/String#replace - local.tee $67 - local.set $1 - local.get $67 - if (result i32) - local.get $1 - i32.const 1280 - call $~lib/string/String.__eq - else - local.get $1 - i32.const 1280 - i32.eq - end + local.tee $84 + i32.const 1280 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -11006,18 +10566,9 @@ i32.const 1280 i32.const 5584 call $~lib/string/String#replace - local.tee $66 - local.set $1 - local.get $66 - if (result i32) - local.get $1 - i32.const 5584 - call $~lib/string/String.__eq - else - local.get $1 - i32.const 5584 - i32.eq - end + local.tee $85 + i32.const 5584 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -11031,18 +10582,9 @@ i32.const 5584 i32.const 1280 call $~lib/string/String#replace - local.tee $65 - local.set $1 - local.get $65 - if (result i32) - local.get $1 - i32.const 1280 - call $~lib/string/String.__eq - else - local.get $1 - i32.const 1280 - i32.eq - end + local.tee $86 + i32.const 1280 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -11056,18 +10598,9 @@ i32.const 1280 i32.const 1280 call $~lib/string/String#replace - local.tee $64 - local.set $1 - local.get $64 - if (result i32) - local.get $1 - i32.const 5584 - call $~lib/string/String.__eq - else - local.get $1 - i32.const 5584 - i32.eq - end + local.tee $87 + i32.const 5584 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -11081,18 +10614,9 @@ i32.const 5616 i32.const 5584 call $~lib/string/String#replace - local.tee $63 - local.set $1 - local.get $63 - if (result i32) - local.get $1 - i32.const 1776 - call $~lib/string/String.__eq - else - local.get $1 - i32.const 1776 - i32.eq - end + local.tee $88 + i32.const 1776 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -11106,18 +10630,9 @@ i32.const 1776 i32.const 5584 call $~lib/string/String#replace - local.tee $62 - local.set $1 - local.get $62 - if (result i32) - local.get $1 - i32.const 5584 - call $~lib/string/String.__eq - else - local.get $1 - i32.const 5584 - i32.eq - end + local.tee $89 + i32.const 5584 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -11131,18 +10646,9 @@ i32.const 2256 i32.const 5584 call $~lib/string/String#replace - local.tee $61 - local.set $1 - local.get $61 - if (result i32) - local.get $1 - i32.const 1776 - call $~lib/string/String.__eq - else - local.get $1 - i32.const 1776 - i32.eq - end + local.tee $90 + i32.const 1776 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -11156,18 +10662,9 @@ i32.const 11456 i32.const 11456 call $~lib/string/String#replace - local.tee $60 - local.set $1 - local.get $60 - if (result i32) - local.get $1 - i32.const 1776 - call $~lib/string/String.__eq - else - local.get $1 - i32.const 1776 - i32.eq - end + local.tee $91 + i32.const 1776 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -11181,18 +10678,9 @@ i32.const 5616 i32.const 5584 call $~lib/string/String#replace - local.tee $59 - local.set $1 - local.get $59 - if (result i32) - local.get $1 - i32.const 12144 - call $~lib/string/String.__eq - else - local.get $1 - i32.const 12144 - i32.eq - end + local.tee $92 + i32.const 12144 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -11206,18 +10694,9 @@ i32.const 1280 i32.const 5584 call $~lib/string/String#replace - local.tee $58 - local.set $1 - local.get $58 - if (result i32) - local.get $1 - i32.const 12176 - call $~lib/string/String.__eq - else - local.get $1 - i32.const 12176 - i32.eq - end + local.tee $93 + i32.const 12176 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -11231,18 +10710,9 @@ i32.const 12240 i32.const 5584 call $~lib/string/String#replace - local.tee $57 - local.set $1 - local.get $57 - if (result i32) - local.get $1 - i32.const 12176 - call $~lib/string/String.__eq - else - local.get $1 - i32.const 12176 - i32.eq - end + local.tee $94 + i32.const 12176 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -11256,18 +10726,9 @@ i32.const 12272 i32.const 12304 call $~lib/string/String#replace - local.tee $56 - local.set $1 - local.get $56 - if (result i32) - local.get $1 - i32.const 12336 - call $~lib/string/String.__eq - else - local.get $1 - i32.const 12336 - i32.eq - end + local.tee $95 + i32.const 12336 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -11281,18 +10742,9 @@ i32.const 12272 i32.const 1280 call $~lib/string/String#replace - local.tee $55 - local.set $1 - local.get $55 - if (result i32) - local.get $1 - i32.const 11456 - call $~lib/string/String.__eq - else - local.get $1 - i32.const 11456 - i32.eq - end + local.tee $96 + i32.const 11456 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -11306,18 +10758,9 @@ i32.const 1280 i32.const 1776 call $~lib/string/String#replaceAll - local.tee $54 - local.set $1 - local.get $54 - if (result i32) - local.get $1 - i32.const 1776 - call $~lib/string/String.__eq - else - local.get $1 - i32.const 1776 - i32.eq - end + local.tee $97 + i32.const 1776 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -11331,18 +10774,9 @@ i32.const 5616 i32.const 5584 call $~lib/string/String#replaceAll - local.tee $53 - local.set $1 - local.get $53 - if (result i32) - local.get $1 - i32.const 1776 - call $~lib/string/String.__eq - else - local.get $1 - i32.const 1776 - i32.eq - end + local.tee $98 + i32.const 1776 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -11356,18 +10790,9 @@ i32.const 1776 i32.const 5584 call $~lib/string/String#replaceAll - local.tee $52 - local.set $1 - local.get $52 - if (result i32) - local.get $1 - i32.const 12304 - call $~lib/string/String.__eq - else - local.get $1 - i32.const 12304 - i32.eq - end + local.tee $99 + i32.const 12304 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -11381,18 +10806,9 @@ i32.const 1776 i32.const 5584 call $~lib/string/String#replaceAll - local.tee $51 - local.set $1 - local.get $51 - if (result i32) - local.get $1 - i32.const 12416 - call $~lib/string/String.__eq - else - local.get $1 - i32.const 12416 - i32.eq - end + local.tee $100 + i32.const 12416 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -11406,18 +10822,9 @@ i32.const 11456 i32.const 11456 call $~lib/string/String#replaceAll - local.tee $50 - local.set $1 - local.get $50 - if (result i32) - local.get $1 - i32.const 1968 - call $~lib/string/String.__eq - else - local.get $1 - i32.const 1968 - i32.eq - end + local.tee $101 + i32.const 1968 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -11431,18 +10838,9 @@ i32.const 1328 i32.const 12416 call $~lib/string/String#replaceAll - local.tee $49 - local.set $1 - local.get $49 - if (result i32) - local.get $1 - i32.const 12480 - call $~lib/string/String.__eq - else - local.get $1 - i32.const 12480 - i32.eq - end + local.tee $102 + i32.const 12480 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -11456,18 +10854,9 @@ i32.const 11456 i32.const 12304 call $~lib/string/String#replaceAll - local.tee $48 - local.set $1 - local.get $48 - if (result i32) - local.get $1 - i32.const 12528 - call $~lib/string/String.__eq - else - local.get $1 - i32.const 12528 - i32.eq - end + local.tee $103 + i32.const 12528 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -11481,18 +10870,9 @@ i32.const 12592 i32.const 12304 call $~lib/string/String#replaceAll - local.tee $47 - local.set $1 - local.get $47 - if (result i32) - local.get $1 - i32.const 12624 - call $~lib/string/String.__eq - else - local.get $1 - i32.const 12624 - i32.eq - end + local.tee $104 + i32.const 12624 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -11506,18 +10886,9 @@ i32.const 2256 i32.const 5584 call $~lib/string/String#replaceAll - local.tee $46 - local.set $1 - local.get $46 - if (result i32) - local.get $1 - i32.const 1776 - call $~lib/string/String.__eq - else - local.get $1 - i32.const 1776 - i32.eq - end + local.tee $105 + i32.const 1776 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -11531,18 +10902,9 @@ i32.const 12656 i32.const 12304 call $~lib/string/String#replaceAll - local.tee $45 - local.set $1 - local.get $45 - if (result i32) - local.get $1 - i32.const 2256 - call $~lib/string/String.__eq - else - local.get $1 - i32.const 2256 - i32.eq - end + local.tee $106 + i32.const 2256 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -11556,18 +10918,9 @@ i32.const 12688 i32.const 5584 call $~lib/string/String#replaceAll - local.tee $44 - local.set $1 - local.get $44 - if (result i32) - local.get $1 - i32.const 12720 - call $~lib/string/String.__eq - else - local.get $1 - i32.const 12720 - i32.eq - end + local.tee $107 + i32.const 12720 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -11581,18 +10934,9 @@ i32.const 11456 i32.const 5584 call $~lib/string/String#replaceAll - local.tee $43 - local.set $1 - local.get $43 - if (result i32) - local.get $1 - i32.const 5584 - call $~lib/string/String.__eq - else - local.get $1 - i32.const 5584 - i32.eq - end + local.tee $108 + i32.const 5584 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -11606,18 +10950,9 @@ i32.const 5616 i32.const 5584 call $~lib/string/String#replaceAll - local.tee $42 - local.set $1 - local.get $42 - if (result i32) - local.get $1 - i32.const 12752 - call $~lib/string/String.__eq - else - local.get $1 - i32.const 12752 - i32.eq - end + local.tee $109 + i32.const 12752 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -11631,18 +10966,9 @@ i32.const 1280 i32.const 1280 call $~lib/string/String#replaceAll - local.tee $41 - local.set $1 - local.get $41 - if (result i32) - local.get $1 - i32.const 1280 - call $~lib/string/String.__eq - else - local.get $1 - i32.const 1280 - i32.eq - end + local.tee $110 + i32.const 1280 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -11656,18 +10982,9 @@ i32.const 1280 i32.const 5584 call $~lib/string/String#replaceAll - local.tee $40 - local.set $1 - local.get $40 - if (result i32) - local.get $1 - i32.const 5584 - call $~lib/string/String.__eq - else - local.get $1 - i32.const 5584 - i32.eq - end + local.tee $111 + i32.const 5584 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -11681,18 +10998,9 @@ i32.const 5584 i32.const 1280 call $~lib/string/String#replaceAll - local.tee $39 - local.set $1 - local.get $39 - if (result i32) - local.get $1 - i32.const 1280 - call $~lib/string/String.__eq - else - local.get $1 - i32.const 1280 - i32.eq - end + local.tee $112 + i32.const 1280 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -11706,18 +11014,9 @@ i32.const 1280 i32.const 1280 call $~lib/string/String#replaceAll - local.tee $38 - local.set $1 - local.get $38 - if (result i32) - local.get $1 - i32.const 5584 - call $~lib/string/String.__eq - else - local.get $1 - i32.const 5584 - i32.eq - end + local.tee $113 + i32.const 5584 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -11731,18 +11030,9 @@ i32.const 1776 i32.const 5616 call $~lib/string/String#replaceAll - local.tee $37 - local.set $1 - local.get $37 - if (result i32) - local.get $1 - i32.const 5616 - call $~lib/string/String.__eq - else - local.get $1 - i32.const 5616 - i32.eq - end + local.tee $114 + i32.const 5616 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -11756,18 +11046,9 @@ i32.const 2224 i32.const 5616 call $~lib/string/String#replaceAll - local.tee $36 - local.set $1 - local.get $36 - if (result i32) - local.get $1 - i32.const 1776 - call $~lib/string/String.__eq - else - local.get $1 - i32.const 1776 - i32.eq - end + local.tee $115 + i32.const 1776 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -11781,18 +11062,9 @@ i32.const 1280 i32.const 5584 call $~lib/string/String#replaceAll - local.tee $35 - local.set $1 - local.get $35 - if (result i32) - local.get $1 - i32.const 12784 - call $~lib/string/String.__eq - else - local.get $1 - i32.const 12784 - i32.eq - end + local.tee $116 + i32.const 12784 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -11806,18 +11078,9 @@ i32.const 1280 i32.const 1280 call $~lib/string/String#replaceAll - local.tee $34 - local.set $1 - local.get $34 - if (result i32) - local.get $1 - i32.const 1776 - call $~lib/string/String.__eq - else - local.get $1 - i32.const 1776 - i32.eq - end + local.tee $117 + i32.const 1776 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -11835,18 +11098,9 @@ i32.const 0 i32.const 2147483647 call $~lib/string/String#slice - local.tee $33 - local.set $1 - local.get $33 - if (result i32) - local.get $1 - i32.const 12816 - call $~lib/string/String.__eq - else - local.get $1 - i32.const 12816 - i32.eq - end + local.tee $118 + i32.const 12816 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -11860,18 +11114,9 @@ i32.const -1 i32.const 2147483647 call $~lib/string/String#slice - local.tee $32 - local.set $1 - local.get $32 - if (result i32) - local.get $1 - i32.const 12864 - call $~lib/string/String.__eq - else - local.get $1 - i32.const 12864 - i32.eq - end + local.tee $119 + i32.const 12864 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -11885,18 +11130,9 @@ i32.const -5 i32.const 2147483647 call $~lib/string/String#slice - local.tee $31 - local.set $1 - local.get $31 - if (result i32) - local.get $1 - i32.const 12896 - call $~lib/string/String.__eq - else - local.get $1 - i32.const 12896 - i32.eq - end + local.tee $120 + i32.const 12896 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -11910,18 +11146,9 @@ i32.const 2 i32.const 7 call $~lib/string/String#slice - local.tee $30 - local.set $1 - local.get $30 - if (result i32) - local.get $1 - i32.const 12928 - call $~lib/string/String.__eq - else - local.get $1 - i32.const 12928 - i32.eq - end + local.tee $121 + i32.const 12928 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -11935,18 +11162,9 @@ i32.const -11 i32.const -6 call $~lib/string/String#slice - local.tee $29 - local.set $1 - local.get $29 - if (result i32) - local.get $1 - i32.const 12960 - call $~lib/string/String.__eq - else - local.get $1 - i32.const 12960 - i32.eq - end + local.tee $122 + i32.const 12960 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -11960,18 +11178,9 @@ i32.const 4 i32.const 3 call $~lib/string/String#slice - local.tee $28 - local.set $1 - local.get $28 - if (result i32) - local.get $1 - i32.const 1280 - call $~lib/string/String.__eq - else - local.get $1 - i32.const 1280 - i32.eq - end + local.tee $123 + i32.const 1280 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -11985,18 +11194,9 @@ i32.const 0 i32.const -1 call $~lib/string/String#slice - local.tee $27 - local.set $1 - local.get $27 - if (result i32) - local.get $1 - i32.const 12992 - call $~lib/string/String.__eq - else - local.get $1 - i32.const 12992 - i32.eq - end + local.tee $124 + i32.const 12992 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -12010,18 +11210,9 @@ i32.const 0 i32.const 2147483647 call $~lib/string/String#substr - local.tee $26 - local.set $1 - local.get $26 - if (result i32) - local.get $1 - i32.const 12816 - call $~lib/string/String.__eq - else - local.get $1 - i32.const 12816 - i32.eq - end + local.tee $125 + i32.const 12816 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -12035,18 +11226,9 @@ i32.const -1 i32.const 2147483647 call $~lib/string/String#substr - local.tee $25 - local.set $1 - local.get $25 - if (result i32) - local.get $1 - i32.const 12864 - call $~lib/string/String.__eq - else - local.get $1 - i32.const 12864 - i32.eq - end + local.tee $126 + i32.const 12864 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -12060,18 +11242,9 @@ i32.const -5 i32.const 2147483647 call $~lib/string/String#substr - local.tee $24 - local.set $1 - local.get $24 - if (result i32) - local.get $1 - i32.const 12896 - call $~lib/string/String.__eq - else - local.get $1 - i32.const 12896 - i32.eq - end + local.tee $127 + i32.const 12896 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -12085,18 +11258,9 @@ i32.const 2 i32.const 7 call $~lib/string/String#substr - local.tee $23 - local.set $1 - local.get $23 - if (result i32) - local.get $1 - i32.const 13040 - call $~lib/string/String.__eq - else - local.get $1 - i32.const 13040 - i32.eq - end + local.tee $128 + i32.const 13040 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -12110,18 +11274,9 @@ i32.const -11 i32.const -6 call $~lib/string/String#substr - local.tee $22 - local.set $1 - local.get $22 - if (result i32) - local.get $1 - i32.const 1280 - call $~lib/string/String.__eq - else - local.get $1 - i32.const 1280 - i32.eq - end + local.tee $129 + i32.const 1280 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -12135,18 +11290,9 @@ i32.const 4 i32.const 3 call $~lib/string/String#substr - local.tee $21 - local.set $1 - local.get $21 - if (result i32) - local.get $1 - i32.const 13072 - call $~lib/string/String.__eq - else - local.get $1 - i32.const 13072 - i32.eq - end + local.tee $130 + i32.const 13072 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -12160,18 +11306,9 @@ i32.const 0 i32.const -1 call $~lib/string/String#substr - local.tee $20 - local.set $1 - local.get $20 - if (result i32) - local.get $1 - i32.const 1280 - call $~lib/string/String.__eq - else - local.get $1 - i32.const 1280 - i32.eq - end + local.tee $131 + i32.const 1280 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -12185,18 +11322,9 @@ i32.const 0 i32.const 100 call $~lib/string/String#substr - local.tee $19 - local.set $1 - local.get $19 - if (result i32) - local.get $1 - i32.const 12816 - call $~lib/string/String.__eq - else - local.get $1 - i32.const 12816 - i32.eq - end + local.tee $132 + i32.const 12816 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -12210,18 +11338,9 @@ i32.const 4 i32.const 4 call $~lib/string/String#substr - local.tee $18 - local.set $1 - local.get $18 - if (result i32) - local.get $1 - i32.const 13104 - call $~lib/string/String.__eq - else - local.get $1 - i32.const 13104 - i32.eq - end + local.tee $133 + i32.const 13104 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -12235,18 +11354,9 @@ i32.const 4 i32.const -3 call $~lib/string/String#substr - local.tee $17 - local.set $1 - local.get $17 - if (result i32) - local.get $1 - i32.const 1280 - call $~lib/string/String.__eq - else - local.get $1 - i32.const 1280 - i32.eq - end + local.tee $134 + i32.const 1280 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -12260,18 +11370,9 @@ i32.const 0 i32.const 2147483647 call $~lib/string/String#substring - local.tee $16 - local.set $1 - local.get $16 - if (result i32) - local.get $1 - i32.const 12816 - call $~lib/string/String.__eq - else - local.get $1 - i32.const 12816 - i32.eq - end + local.tee $135 + i32.const 12816 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -12285,18 +11386,9 @@ i32.const -1 i32.const 2147483647 call $~lib/string/String#substring - local.tee $15 - local.set $1 - local.get $15 - if (result i32) - local.get $1 - i32.const 12816 - call $~lib/string/String.__eq - else - local.get $1 - i32.const 12816 - i32.eq - end + local.tee $136 + i32.const 12816 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -12310,18 +11402,9 @@ i32.const -5 i32.const 2147483647 call $~lib/string/String#substring - local.tee $14 - local.set $1 - local.get $14 - if (result i32) - local.get $1 - i32.const 12816 - call $~lib/string/String.__eq - else - local.get $1 - i32.const 12816 - i32.eq - end + local.tee $137 + i32.const 12816 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -12335,18 +11418,9 @@ i32.const 2 i32.const 7 call $~lib/string/String#substring - local.tee $13 - local.set $1 - local.get $13 - if (result i32) - local.get $1 - i32.const 12928 - call $~lib/string/String.__eq - else - local.get $1 - i32.const 12928 - i32.eq - end + local.tee $138 + i32.const 12928 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -12360,18 +11434,9 @@ i32.const -11 i32.const -6 call $~lib/string/String#substring - local.tee $12 - local.set $1 - local.get $12 - if (result i32) - local.get $1 - i32.const 1280 - call $~lib/string/String.__eq - else - local.get $1 - i32.const 1280 - i32.eq - end + local.tee $139 + i32.const 1280 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -12385,18 +11450,9 @@ i32.const 4 i32.const 3 call $~lib/string/String#substring - local.tee $11 - local.set $1 - local.get $11 - if (result i32) - local.get $1 - i32.const 13136 - call $~lib/string/String.__eq - else - local.get $1 - i32.const 13136 - i32.eq - end + local.tee $140 + i32.const 13136 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -12410,18 +11466,9 @@ i32.const 0 i32.const -1 call $~lib/string/String#substring - local.tee $10 - local.set $1 - local.get $10 - if (result i32) - local.get $1 - i32.const 1280 - call $~lib/string/String.__eq - else - local.get $1 - i32.const 1280 - i32.eq - end + local.tee $141 + i32.const 1280 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -12435,18 +11482,9 @@ i32.const 0 i32.const 100 call $~lib/string/String#substring - local.tee $9 - local.set $1 - local.get $9 - if (result i32) - local.get $1 - i32.const 12816 - call $~lib/string/String.__eq - else - local.get $1 - i32.const 12816 - i32.eq - end + local.tee $142 + i32.const 12816 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -12460,18 +11498,9 @@ i32.const 4 i32.const 4 call $~lib/string/String#substring - local.tee $8 - local.set $1 - local.get $8 - if (result i32) - local.get $1 - i32.const 1280 - call $~lib/string/String.__eq - else - local.get $1 - i32.const 1280 - i32.eq - end + local.tee $143 + i32.const 1280 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -12485,18 +11514,9 @@ i32.const 4 i32.const -3 call $~lib/string/String#substring - local.tee $7 - local.set $1 - local.get $7 - if (result i32) - local.get $1 - i32.const 2256 - call $~lib/string/String.__eq - else - local.get $1 - i32.const 2256 - i32.eq - end + local.tee $144 + i32.const 2256 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -12510,33 +11530,22 @@ i32.const 0 i32.const 2147483647 call $~lib/string/String#split - local.tee $0 + local.tee $1 i32.load offset=12 i32.const 1 i32.eq - if (result i32) - local.get $0 + if + local.get $1 i32.const 0 call $~lib/array/Array<~lib/string/String>#__get - local.tee $1 - local.set $212 - local.get $1 - if (result i32) - local.get $212 - i32.const 1280 - call $~lib/string/String.__eq - else - local.get $212 - i32.const 1280 - i32.eq - end - local.get $1 + local.tee $0 + i32.const 1280 + call $~lib/string/String#_eq + local.set $6 + local.get $0 call $~lib/rt/pure/__release - i32.const 0 - i32.ne - else - i32.const 0 end + local.get $6 i32.eqz if i32.const 0 @@ -12550,10 +11559,10 @@ i32.const 1280 i32.const 2147483647 call $~lib/string/String#split - local.set $1 - local.get $0 - call $~lib/rt/pure/__release + local.set $0 local.get $1 + call $~lib/rt/pure/__release + local.get $0 i32.load offset=12 if i32.const 0 @@ -12567,35 +11576,25 @@ i32.const 2032 i32.const 2147483647 call $~lib/string/String#split - local.get $1 + local.set $1 + local.get $0 call $~lib/rt/pure/__release - local.tee $1 + local.get $1 i32.load offset=12 i32.const 1 i32.eq - if (result i32) + if local.get $1 i32.const 0 call $~lib/array/Array<~lib/string/String>#__get local.tee $0 - local.set $212 - local.get $0 - if (result i32) - local.get $212 - i32.const 1280 - call $~lib/string/String.__eq - else - local.get $212 - i32.const 1280 - i32.eq - end + i32.const 1280 + call $~lib/string/String#_eq + local.set $7 local.get $0 call $~lib/rt/pure/__release - i32.const 0 - i32.ne - else - i32.const 0 end + local.get $7 i32.eqz if i32.const 0 @@ -12609,35 +11608,25 @@ i32.const 5776 i32.const 2147483647 call $~lib/string/String#split + local.set $3 local.get $1 call $~lib/rt/pure/__release - local.tee $1 + local.get $3 i32.load offset=12 i32.const 1 i32.eq - if (result i32) - local.get $1 + if + local.get $3 i32.const 0 call $~lib/array/Array<~lib/string/String>#__get local.tee $0 - local.set $212 - local.get $0 - if (result i32) - local.get $212 - i32.const 13392 - call $~lib/string/String.__eq - else - local.get $212 - i32.const 13392 - i32.eq - end + i32.const 13392 + call $~lib/string/String#_eq + local.set $8 local.get $0 call $~lib/rt/pure/__release - i32.const 0 - i32.ne - else - i32.const 0 end + local.get $8 i32.eqz if i32.const 0 @@ -12651,83 +11640,49 @@ i32.const 2032 i32.const 2147483647 call $~lib/string/String#split - local.get $1 + local.set $0 + local.get $3 call $~lib/rt/pure/__release - local.tee $1 + local.get $0 i32.load offset=12 i32.const 3 i32.eq if - local.get $1 + local.get $0 i32.const 0 call $~lib/array/Array<~lib/string/String>#__get - local.tee $212 - local.set $0 - local.get $212 - if (result i32) - local.get $0 - i32.const 1328 - call $~lib/string/String.__eq - else - local.get $0 - i32.const 1328 - i32.eq - end - local.set $0 - local.get $212 + local.tee $1 + i32.const 1328 + call $~lib/string/String#_eq + local.set $9 + local.get $1 call $~lib/rt/pure/__release - else - i32.const 0 - local.set $0 end - local.get $0 + local.get $9 if - local.get $1 + local.get $0 i32.const 1 call $~lib/array/Array<~lib/string/String>#__get - local.tee $212 - local.set $0 - local.get $212 - if (result i32) - local.get $0 - i32.const 11424 - call $~lib/string/String.__eq - else - local.get $0 - i32.const 11424 - i32.eq - end - local.set $0 - local.get $212 + local.tee $1 + i32.const 11424 + call $~lib/string/String#_eq + local.set $10 + local.get $1 call $~lib/rt/pure/__release - else - i32.const 0 - local.set $0 end - local.get $0 - if (result i32) - local.get $1 + local.get $10 + if + local.get $0 i32.const 2 call $~lib/array/Array<~lib/string/String>#__get - local.tee $0 - local.set $212 - local.get $0 - if (result i32) - local.get $212 - i32.const 12272 - call $~lib/string/String.__eq - else - local.get $212 - i32.const 12272 - i32.eq - end - local.get $0 + local.tee $1 + i32.const 12272 + call $~lib/string/String#_eq + local.set $11 + local.get $1 call $~lib/rt/pure/__release - i32.const 0 - i32.ne - else - i32.const 0 end + local.get $11 i32.eqz if i32.const 0 @@ -12741,9 +11696,10 @@ i32.const 13456 i32.const 2147483647 call $~lib/string/String#split - local.get $1 - call $~lib/rt/pure/__release - local.tee $1 + local.set $1 + local.get $0 + call $~lib/rt/pure/__release + local.get $1 i32.load offset=12 i32.const 3 i32.eq @@ -12751,73 +11707,38 @@ local.get $1 i32.const 0 call $~lib/array/Array<~lib/string/String>#__get - local.tee $212 - local.set $0 - local.get $212 - if (result i32) - local.get $0 - i32.const 1328 - call $~lib/string/String.__eq - else - local.get $0 - i32.const 1328 - i32.eq - end - local.set $0 - local.get $212 + local.tee $0 + i32.const 1328 + call $~lib/string/String#_eq + local.set $12 + local.get $0 call $~lib/rt/pure/__release - else - i32.const 0 - local.set $0 end - local.get $0 + local.get $12 if local.get $1 i32.const 1 call $~lib/array/Array<~lib/string/String>#__get - local.tee $212 - local.set $0 - local.get $212 - if (result i32) - local.get $0 - i32.const 11424 - call $~lib/string/String.__eq - else - local.get $0 - i32.const 11424 - i32.eq - end - local.set $0 - local.get $212 + local.tee $0 + i32.const 11424 + call $~lib/string/String#_eq + local.set $13 + local.get $0 call $~lib/rt/pure/__release - else - i32.const 0 - local.set $0 end - local.get $0 - if (result i32) + local.get $13 + if local.get $1 i32.const 2 call $~lib/array/Array<~lib/string/String>#__get local.tee $0 - local.set $212 - local.get $0 - if (result i32) - local.get $212 - i32.const 12272 - call $~lib/string/String.__eq - else - local.get $212 - i32.const 12272 - i32.eq - end + i32.const 12272 + call $~lib/string/String#_eq + local.set $14 local.get $0 call $~lib/rt/pure/__release - i32.const 0 - i32.ne - else - i32.const 0 end + local.get $14 i32.eqz if i32.const 0 @@ -12831,107 +11752,61 @@ i32.const 2032 i32.const 2147483647 call $~lib/string/String#split + local.set $0 local.get $1 call $~lib/rt/pure/__release - local.tee $1 + local.get $0 i32.load offset=12 i32.const 4 i32.eq if - local.get $1 + local.get $0 i32.const 0 call $~lib/array/Array<~lib/string/String>#__get - local.tee $212 - local.set $0 - local.get $212 - if (result i32) - local.get $0 - i32.const 1328 - call $~lib/string/String.__eq - else - local.get $0 - i32.const 1328 - i32.eq - end - local.set $0 - local.get $212 + local.tee $1 + i32.const 1328 + call $~lib/string/String#_eq + local.set $15 + local.get $1 call $~lib/rt/pure/__release - else - i32.const 0 - local.set $0 end - local.get $0 + local.get $15 if - local.get $1 + local.get $0 i32.const 1 call $~lib/array/Array<~lib/string/String>#__get - local.tee $212 - local.set $0 - local.get $212 - if (result i32) - local.get $0 - i32.const 11424 - call $~lib/string/String.__eq - else - local.get $0 - i32.const 11424 - i32.eq - end - local.set $0 - local.get $212 + local.tee $1 + i32.const 11424 + call $~lib/string/String#_eq + local.set $16 + local.get $1 call $~lib/rt/pure/__release - else - i32.const 0 - local.set $0 end - local.get $0 + local.get $16 if - local.get $1 + local.get $0 i32.const 2 call $~lib/array/Array<~lib/string/String>#__get - local.tee $212 - local.set $0 - local.get $212 - if (result i32) - local.get $0 - i32.const 1280 - call $~lib/string/String.__eq - else - local.get $0 - i32.const 1280 - i32.eq - end - local.set $0 - local.get $212 + local.tee $1 + i32.const 1280 + call $~lib/string/String#_eq + local.set $17 + local.get $1 call $~lib/rt/pure/__release - else - i32.const 0 - local.set $0 end - local.get $0 - if (result i32) - local.get $1 + local.get $17 + if + local.get $0 i32.const 3 call $~lib/array/Array<~lib/string/String>#__get - local.tee $0 - local.set $212 - local.get $0 - if (result i32) - local.get $212 - i32.const 12272 - call $~lib/string/String.__eq - else - local.get $212 - i32.const 12272 - i32.eq - end - local.get $0 + local.tee $1 + i32.const 12272 + call $~lib/string/String#_eq + local.set $18 + local.get $1 call $~lib/rt/pure/__release - i32.const 0 - i32.ne - else - i32.const 0 end + local.get $18 i32.eqz if i32.const 0 @@ -12945,9 +11820,10 @@ i32.const 2032 i32.const 2147483647 call $~lib/string/String#split - local.get $1 + local.set $1 + local.get $0 call $~lib/rt/pure/__release - local.tee $1 + local.get $1 i32.load offset=12 i32.const 4 i32.eq @@ -12955,97 +11831,50 @@ local.get $1 i32.const 0 call $~lib/array/Array<~lib/string/String>#__get - local.tee $212 - local.set $0 - local.get $212 - if (result i32) - local.get $0 - i32.const 1280 - call $~lib/string/String.__eq - else - local.get $0 - i32.const 1280 - i32.eq - end - local.set $0 - local.get $212 + local.tee $0 + i32.const 1280 + call $~lib/string/String#_eq + local.set $19 + local.get $0 call $~lib/rt/pure/__release - else - i32.const 0 - local.set $0 end - local.get $0 + local.get $19 if local.get $1 i32.const 1 call $~lib/array/Array<~lib/string/String>#__get - local.tee $212 - local.set $0 - local.get $212 - if (result i32) - local.get $0 - i32.const 1328 - call $~lib/string/String.__eq - else - local.get $0 - i32.const 1328 - i32.eq - end - local.set $0 - local.get $212 + local.tee $0 + i32.const 1328 + call $~lib/string/String#_eq + local.set $20 + local.get $0 call $~lib/rt/pure/__release - else - i32.const 0 - local.set $0 end - local.get $0 + local.get $20 if local.get $1 i32.const 2 call $~lib/array/Array<~lib/string/String>#__get - local.tee $212 - local.set $0 - local.get $212 - if (result i32) - local.get $0 - i32.const 11424 - call $~lib/string/String.__eq - else - local.get $0 - i32.const 11424 - i32.eq - end - local.set $0 - local.get $212 + local.tee $0 + i32.const 11424 + call $~lib/string/String#_eq + local.set $21 + local.get $0 call $~lib/rt/pure/__release - else - i32.const 0 - local.set $0 end - local.get $0 - if (result i32) + local.get $21 + if local.get $1 i32.const 3 call $~lib/array/Array<~lib/string/String>#__get local.tee $0 - local.set $212 - local.get $0 - if (result i32) - local.get $212 - i32.const 12272 - call $~lib/string/String.__eq - else - local.get $212 - i32.const 12272 - i32.eq - end + i32.const 12272 + call $~lib/string/String#_eq + local.set $22 local.get $0 call $~lib/rt/pure/__release - i32.const 0 - i32.ne - else - i32.const 0 end + local.get $22 i32.eqz if i32.const 0 @@ -13059,107 +11888,61 @@ i32.const 2032 i32.const 2147483647 call $~lib/string/String#split + local.set $0 local.get $1 call $~lib/rt/pure/__release - local.tee $1 + local.get $0 i32.load offset=12 i32.const 4 i32.eq if - local.get $1 + local.get $0 i32.const 0 call $~lib/array/Array<~lib/string/String>#__get - local.tee $212 - local.set $0 - local.get $212 - if (result i32) - local.get $0 - i32.const 1328 - call $~lib/string/String.__eq - else - local.get $0 - i32.const 1328 - i32.eq - end - local.set $0 - local.get $212 + local.tee $1 + i32.const 1328 + call $~lib/string/String#_eq + local.set $23 + local.get $1 call $~lib/rt/pure/__release - else - i32.const 0 - local.set $0 end - local.get $0 + local.get $23 if - local.get $1 + local.get $0 i32.const 1 call $~lib/array/Array<~lib/string/String>#__get - local.tee $212 - local.set $0 - local.get $212 - if (result i32) - local.get $0 - i32.const 11424 - call $~lib/string/String.__eq - else - local.get $0 - i32.const 11424 - i32.eq - end - local.set $0 - local.get $212 + local.tee $1 + i32.const 11424 + call $~lib/string/String#_eq + local.set $24 + local.get $1 call $~lib/rt/pure/__release - else - i32.const 0 - local.set $0 end - local.get $0 + local.get $24 if - local.get $1 + local.get $0 i32.const 2 call $~lib/array/Array<~lib/string/String>#__get - local.tee $212 - local.set $0 - local.get $212 - if (result i32) - local.get $0 - i32.const 12272 - call $~lib/string/String.__eq - else - local.get $0 - i32.const 12272 - i32.eq - end - local.set $0 - local.get $212 + local.tee $1 + i32.const 12272 + call $~lib/string/String#_eq + local.set $25 + local.get $1 call $~lib/rt/pure/__release - else - i32.const 0 - local.set $0 end - local.get $0 - if (result i32) - local.get $1 + local.get $25 + if + local.get $0 i32.const 3 call $~lib/array/Array<~lib/string/String>#__get - local.tee $0 - local.set $212 - local.get $0 - if (result i32) - local.get $212 - i32.const 1280 - call $~lib/string/String.__eq - else - local.get $212 - i32.const 1280 - i32.eq - end - local.get $0 + local.tee $1 + i32.const 1280 + call $~lib/string/String#_eq + local.set $26 + local.get $1 call $~lib/rt/pure/__release - i32.const 0 - i32.ne - else - i32.const 0 end + local.get $26 i32.eqz if i32.const 0 @@ -13173,9 +11956,10 @@ i32.const 1280 i32.const 2147483647 call $~lib/string/String#split - local.get $1 + local.set $1 + local.get $0 call $~lib/rt/pure/__release - local.tee $1 + local.get $1 i32.load offset=12 i32.const 3 i32.eq @@ -13183,73 +11967,38 @@ local.get $1 i32.const 0 call $~lib/array/Array<~lib/string/String>#__get - local.tee $212 - local.set $0 - local.get $212 - if (result i32) - local.get $0 - i32.const 1328 - call $~lib/string/String.__eq - else - local.get $0 - i32.const 1328 - i32.eq - end - local.set $0 - local.get $212 + local.tee $0 + i32.const 1328 + call $~lib/string/String#_eq + local.set $27 + local.get $0 call $~lib/rt/pure/__release - else - i32.const 0 - local.set $0 end - local.get $0 + local.get $27 if local.get $1 i32.const 1 call $~lib/array/Array<~lib/string/String>#__get - local.tee $212 - local.set $0 - local.get $212 - if (result i32) - local.get $0 - i32.const 11424 - call $~lib/string/String.__eq - else - local.get $0 - i32.const 11424 - i32.eq - end - local.set $0 - local.get $212 + local.tee $0 + i32.const 11424 + call $~lib/string/String#_eq + local.set $28 + local.get $0 call $~lib/rt/pure/__release - else - i32.const 0 - local.set $0 end - local.get $0 - if (result i32) + local.get $28 + if local.get $1 i32.const 2 call $~lib/array/Array<~lib/string/String>#__get local.tee $0 - local.set $212 - local.get $0 - if (result i32) - local.get $212 - i32.const 12272 - call $~lib/string/String.__eq - else - local.get $212 - i32.const 12272 - i32.eq - end + i32.const 12272 + call $~lib/string/String#_eq + local.set $29 local.get $0 call $~lib/rt/pure/__release - i32.const 0 - i32.ne - else - i32.const 0 end + local.get $29 i32.eqz if i32.const 0 @@ -13287,29 +12036,18 @@ i32.load offset=12 i32.const 1 i32.eq - if (result i32) + if local.get $1 i32.const 0 call $~lib/array/Array<~lib/string/String>#__get local.tee $0 - local.set $212 - local.get $0 - if (result i32) - local.get $212 - i32.const 1328 - call $~lib/string/String.__eq - else - local.get $212 - i32.const 1328 - i32.eq - end + i32.const 1328 + call $~lib/string/String#_eq + local.set $30 local.get $0 call $~lib/rt/pure/__release - i32.const 0 - i32.ne - else - i32.const 0 end + local.get $30 i32.eqz if i32.const 0 @@ -13323,35 +12061,25 @@ i32.const 2032 i32.const 1 call $~lib/string/String#split + local.set $3 local.get $1 call $~lib/rt/pure/__release - local.tee $1 + local.get $3 i32.load offset=12 i32.const 1 i32.eq - if (result i32) - local.get $1 + if + local.get $3 i32.const 0 call $~lib/array/Array<~lib/string/String>#__get local.tee $0 - local.set $212 - local.get $0 - if (result i32) - local.get $212 - i32.const 1328 - call $~lib/string/String.__eq - else - local.get $212 - i32.const 1328 - i32.eq - end + i32.const 1328 + call $~lib/string/String#_eq + local.set $31 local.get $0 call $~lib/rt/pure/__release - i32.const 0 - i32.ne - else - i32.const 0 end + local.get $31 i32.eqz if i32.const 0 @@ -13365,83 +12093,49 @@ i32.const 1280 i32.const 4 call $~lib/string/String#split - local.get $1 + local.set $0 + local.get $3 call $~lib/rt/pure/__release - local.tee $1 + local.get $0 i32.load offset=12 i32.const 3 i32.eq if - local.get $1 + local.get $0 i32.const 0 call $~lib/array/Array<~lib/string/String>#__get - local.tee $212 - local.set $0 - local.get $212 - if (result i32) - local.get $0 - i32.const 1328 - call $~lib/string/String.__eq - else - local.get $0 - i32.const 1328 - i32.eq - end - local.set $0 - local.get $212 + local.tee $1 + i32.const 1328 + call $~lib/string/String#_eq + local.set $32 + local.get $1 call $~lib/rt/pure/__release - else - i32.const 0 - local.set $0 end - local.get $0 + local.get $32 if - local.get $1 + local.get $0 i32.const 1 call $~lib/array/Array<~lib/string/String>#__get - local.tee $212 - local.set $0 - local.get $212 - if (result i32) - local.get $0 - i32.const 11424 - call $~lib/string/String.__eq - else - local.get $0 - i32.const 11424 - i32.eq - end - local.set $0 - local.get $212 + local.tee $1 + i32.const 11424 + call $~lib/string/String#_eq + local.set $33 + local.get $1 call $~lib/rt/pure/__release - else - i32.const 0 - local.set $0 end - local.get $0 - if (result i32) - local.get $1 + local.get $33 + if + local.get $0 i32.const 2 call $~lib/array/Array<~lib/string/String>#__get - local.tee $0 - local.set $212 - local.get $0 - if (result i32) - local.get $212 - i32.const 12272 - call $~lib/string/String.__eq - else - local.get $212 - i32.const 12272 - i32.eq - end - local.get $0 + local.tee $1 + i32.const 12272 + call $~lib/string/String#_eq + local.set $34 + local.get $1 call $~lib/rt/pure/__release - i32.const 0 - i32.ne - else - i32.const 0 end + local.get $34 i32.eqz if i32.const 0 @@ -13455,9 +12149,10 @@ i32.const 1280 i32.const -1 call $~lib/string/String#split - local.get $1 + local.set $1 + local.get $0 call $~lib/rt/pure/__release - local.tee $1 + local.get $1 i32.load offset=12 i32.const 3 i32.eq @@ -13465,73 +12160,38 @@ local.get $1 i32.const 0 call $~lib/array/Array<~lib/string/String>#__get - local.tee $212 - local.set $0 - local.get $212 - if (result i32) - local.get $0 - i32.const 1328 - call $~lib/string/String.__eq - else - local.get $0 - i32.const 1328 - i32.eq - end - local.set $0 - local.get $212 + local.tee $0 + i32.const 1328 + call $~lib/string/String#_eq + local.set $35 + local.get $0 call $~lib/rt/pure/__release - else - i32.const 0 - local.set $0 end - local.get $0 + local.get $35 if local.get $1 i32.const 1 call $~lib/array/Array<~lib/string/String>#__get - local.tee $212 - local.set $0 - local.get $212 - if (result i32) - local.get $0 - i32.const 11424 - call $~lib/string/String.__eq - else - local.get $0 - i32.const 11424 - i32.eq - end - local.set $0 - local.get $212 + local.tee $0 + i32.const 11424 + call $~lib/string/String#_eq + local.set $36 + local.get $0 call $~lib/rt/pure/__release - else - i32.const 0 - local.set $0 end - local.get $0 - if (result i32) + local.get $36 + if local.get $1 i32.const 2 call $~lib/array/Array<~lib/string/String>#__get local.tee $0 - local.set $212 - local.get $0 - if (result i32) - local.get $212 - i32.const 12272 - call $~lib/string/String.__eq - else - local.get $212 - i32.const 12272 - i32.eq - end + i32.const 12272 + call $~lib/string/String#_eq + local.set $37 local.get $0 call $~lib/rt/pure/__release - i32.const 0 - i32.ne - else - i32.const 0 end + local.get $37 i32.eqz if i32.const 0 @@ -13545,83 +12205,49 @@ i32.const 2032 i32.const -1 call $~lib/string/String#split + local.set $0 local.get $1 call $~lib/rt/pure/__release - local.tee $1 + local.get $0 i32.load offset=12 i32.const 3 i32.eq if - local.get $1 + local.get $0 i32.const 0 call $~lib/array/Array<~lib/string/String>#__get - local.tee $212 - local.set $0 - local.get $212 - if (result i32) - local.get $0 - i32.const 1328 - call $~lib/string/String.__eq - else - local.get $0 - i32.const 1328 - i32.eq - end - local.set $0 - local.get $212 + local.tee $1 + i32.const 1328 + call $~lib/string/String#_eq + local.set $38 + local.get $1 call $~lib/rt/pure/__release - else - i32.const 0 - local.set $0 end - local.get $0 + local.get $38 if - local.get $1 + local.get $0 i32.const 1 call $~lib/array/Array<~lib/string/String>#__get - local.tee $212 - local.set $0 - local.get $212 - if (result i32) - local.get $0 - i32.const 11424 - call $~lib/string/String.__eq - else - local.get $0 - i32.const 11424 - i32.eq - end - local.set $0 - local.get $212 + local.tee $1 + i32.const 11424 + call $~lib/string/String#_eq + local.set $39 + local.get $1 call $~lib/rt/pure/__release - else - i32.const 0 - local.set $0 end - local.get $0 - if (result i32) - local.get $1 + local.get $39 + if + local.get $0 i32.const 2 call $~lib/array/Array<~lib/string/String>#__get - local.tee $0 - local.set $212 - local.get $0 - if (result i32) - local.get $212 - i32.const 12272 - call $~lib/string/String.__eq - else - local.get $212 - i32.const 12272 - i32.eq - end - local.get $0 + local.tee $1 + i32.const 12272 + call $~lib/string/String#_eq + local.set $40 + local.get $1 call $~lib/rt/pure/__release - i32.const 0 - i32.ne - else - i32.const 0 end + local.get $40 i32.eqz if i32.const 0 @@ -13631,22 +12257,13 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $0 call $~lib/rt/pure/__release i32.const 0 call $~lib/util/number/itoa32 - local.tee $1 - local.set $0 - local.get $1 - if (result i32) - local.get $0 - i32.const 2432 - call $~lib/string/String.__eq - else - local.get $0 - i32.const 2432 - i32.eq - end + local.tee $0 + i32.const 2432 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -13658,18 +12275,9 @@ end i32.const 1 call $~lib/util/number/itoa32 - local.tee $0 - local.set $212 - local.get $0 - if (result i32) - local.get $212 - i32.const 2496 - call $~lib/string/String.__eq - else - local.get $212 - i32.const 2496 - i32.eq - end + local.tee $1 + i32.const 2496 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -13681,18 +12289,9 @@ end i32.const 8 call $~lib/util/number/itoa32 - local.tee $212 - local.set $209 - local.get $212 - if (result i32) - local.get $209 - i32.const 13584 - call $~lib/string/String.__eq - else - local.get $209 - i32.const 13584 - i32.eq - end + local.tee $3 + i32.const 13584 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -13704,18 +12303,9 @@ end i32.const 12 call $~lib/util/number/itoa32 - local.tee $209 - local.set $208 - local.get $209 - if (result i32) - local.get $208 - i32.const 13616 - call $~lib/string/String.__eq - else - local.get $208 - i32.const 13616 - i32.eq - end + local.tee $6 + i32.const 13616 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -13727,18 +12317,9 @@ end i32.const 123 call $~lib/util/number/itoa32 - local.tee $208 - local.set $207 - local.get $208 - if (result i32) - local.get $207 - i32.const 1840 - call $~lib/string/String.__eq - else - local.get $207 - i32.const 1840 - i32.eq - end + local.tee $7 + i32.const 1840 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -13750,18 +12331,9 @@ end i32.const -1000 call $~lib/util/number/itoa32 - local.tee $207 - local.set $206 - local.get $207 - if (result i32) - local.get $206 - i32.const 13648 - call $~lib/string/String.__eq - else - local.get $206 - i32.const 13648 - i32.eq - end + local.tee $8 + i32.const 13648 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -13773,18 +12345,9 @@ end i32.const 1234 call $~lib/util/number/itoa32 - local.tee $206 - local.set $205 - local.get $206 - if (result i32) - local.get $205 - i32.const 13680 - call $~lib/string/String.__eq - else - local.get $205 - i32.const 13680 - i32.eq - end + local.tee $9 + i32.const 13680 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -13796,18 +12359,9 @@ end i32.const 12345 call $~lib/util/number/itoa32 - local.tee $205 - local.set $204 - local.get $205 - if (result i32) - local.get $204 - i32.const 13712 - call $~lib/string/String.__eq - else - local.get $204 - i32.const 13712 - i32.eq - end + local.tee $10 + i32.const 13712 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -13819,18 +12373,9 @@ end i32.const 123456 call $~lib/util/number/itoa32 - local.tee $204 - local.set $203 - local.get $204 - if (result i32) - local.get $203 - i32.const 13744 - call $~lib/string/String.__eq - else - local.get $203 - i32.const 13744 - i32.eq - end + local.tee $11 + i32.const 13744 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -13842,18 +12387,9 @@ end i32.const 1111111 call $~lib/util/number/itoa32 - local.tee $203 - local.set $202 - local.get $203 - if (result i32) - local.get $202 - i32.const 13776 - call $~lib/string/String.__eq - else - local.get $202 - i32.const 13776 - i32.eq - end + local.tee $12 + i32.const 13776 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -13865,18 +12401,9 @@ end i32.const 1234567 call $~lib/util/number/itoa32 - local.tee $202 - local.set $201 - local.get $202 - if (result i32) - local.get $201 - i32.const 13808 - call $~lib/string/String.__eq - else - local.get $201 - i32.const 13808 - i32.eq - end + local.tee $13 + i32.const 13808 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -13888,18 +12415,9 @@ end i32.const 12345678 call $~lib/util/number/itoa32 - local.tee $201 - local.set $200 - local.get $201 - if (result i32) - local.get $200 - i32.const 13840 - call $~lib/string/String.__eq - else - local.get $200 - i32.const 13840 - i32.eq - end + local.tee $14 + i32.const 13840 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -13911,18 +12429,9 @@ end i32.const 123456789 call $~lib/util/number/itoa32 - local.tee $200 - local.set $199 - local.get $200 - if (result i32) - local.get $199 - i32.const 13872 - call $~lib/string/String.__eq - else - local.get $199 - i32.const 13872 - i32.eq - end + local.tee $15 + i32.const 13872 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -13934,18 +12443,9 @@ end i32.const 2147483646 call $~lib/util/number/itoa32 - local.tee $199 - local.set $198 - local.get $199 - if (result i32) - local.get $198 - i32.const 13920 - call $~lib/string/String.__eq - else - local.get $198 - i32.const 13920 - i32.eq - end + local.tee $16 + i32.const 13920 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -13957,18 +12457,9 @@ end i32.const 2147483647 call $~lib/util/number/itoa32 - local.tee $198 - local.set $197 - local.get $198 - if (result i32) - local.get $197 - i32.const 13968 - call $~lib/string/String.__eq - else - local.get $197 - i32.const 13968 - i32.eq - end + local.tee $17 + i32.const 13968 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -13980,18 +12471,9 @@ end i32.const -2147483648 call $~lib/util/number/itoa32 - local.tee $197 - local.set $196 - local.get $197 - if (result i32) - local.get $196 - i32.const 14016 - call $~lib/string/String.__eq - else - local.get $196 - i32.const 14016 - i32.eq - end + local.tee $18 + i32.const 14016 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -14003,18 +12485,9 @@ end i32.const -1 call $~lib/util/number/itoa32 - local.tee $196 - local.set $195 - local.get $196 - if (result i32) - local.get $195 - i32.const 14064 - call $~lib/string/String.__eq - else - local.get $195 - i32.const 14064 - i32.eq - end + local.tee $19 + i32.const 14064 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -14026,18 +12499,9 @@ end i32.const 0 call $~lib/util/number/utoa32 - local.tee $195 - local.set $194 - local.get $195 - if (result i32) - local.get $194 - i32.const 2432 - call $~lib/string/String.__eq - else - local.get $194 - i32.const 2432 - i32.eq - end + local.tee $20 + i32.const 2432 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -14049,18 +12513,9 @@ end i32.const 1000 call $~lib/util/number/utoa32 - local.tee $194 - local.set $193 - local.get $194 - if (result i32) - local.get $193 - i32.const 14096 - call $~lib/string/String.__eq - else - local.get $193 - i32.const 14096 - i32.eq - end + local.tee $21 + i32.const 14096 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -14072,18 +12527,9 @@ end i32.const 2147483647 call $~lib/util/number/utoa32 - local.tee $193 - local.set $192 - local.get $193 - if (result i32) - local.get $192 - i32.const 13968 - call $~lib/string/String.__eq - else - local.get $192 - i32.const 13968 - i32.eq - end + local.tee $22 + i32.const 13968 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -14095,18 +12541,9 @@ end i32.const -2147483648 call $~lib/util/number/utoa32 - local.tee $192 - local.set $191 - local.get $192 - if (result i32) - local.get $191 - i32.const 14128 - call $~lib/string/String.__eq - else - local.get $191 - i32.const 14128 - i32.eq - end + local.tee $23 + i32.const 14128 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -14118,18 +12555,9 @@ end i32.const -1 call $~lib/util/number/utoa32 - local.tee $191 - local.set $190 - local.get $191 - if (result i32) - local.get $190 - i32.const 14176 - call $~lib/string/String.__eq - else - local.get $190 - i32.const 14176 - i32.eq - end + local.tee $24 + i32.const 14176 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -14141,18 +12569,9 @@ end i64.const 0 call $~lib/util/number/utoa64 - local.tee $190 - local.set $189 - local.get $190 - if (result i32) - local.get $189 - i32.const 2432 - call $~lib/string/String.__eq - else - local.get $189 - i32.const 2432 - i32.eq - end + local.tee $25 + i32.const 2432 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -14164,18 +12583,9 @@ end i64.const 12 call $~lib/util/number/utoa64 - local.tee $189 - local.set $188 - local.get $189 - if (result i32) - local.get $188 - i32.const 13616 - call $~lib/string/String.__eq - else - local.get $188 - i32.const 13616 - i32.eq - end + local.tee $26 + i32.const 13616 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -14187,18 +12597,9 @@ end i64.const 123 call $~lib/util/number/utoa64 - local.tee $188 - local.set $187 - local.get $188 - if (result i32) - local.get $187 - i32.const 1840 - call $~lib/string/String.__eq - else - local.get $187 - i32.const 1840 - i32.eq - end + local.tee $27 + i32.const 1840 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -14210,18 +12611,9 @@ end i64.const 1234 call $~lib/util/number/utoa64 - local.tee $187 - local.set $186 - local.get $187 - if (result i32) - local.get $186 - i32.const 13680 - call $~lib/string/String.__eq - else - local.get $186 - i32.const 13680 - i32.eq - end + local.tee $28 + i32.const 13680 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -14233,18 +12625,9 @@ end i64.const 12345 call $~lib/util/number/utoa64 - local.tee $186 - local.set $185 - local.get $186 - if (result i32) - local.get $185 - i32.const 13712 - call $~lib/string/String.__eq - else - local.get $185 - i32.const 13712 - i32.eq - end + local.tee $29 + i32.const 13712 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -14256,18 +12639,9 @@ end i64.const 123456 call $~lib/util/number/utoa64 - local.tee $185 - local.set $184 - local.get $185 - if (result i32) - local.get $184 - i32.const 13744 - call $~lib/string/String.__eq - else - local.get $184 - i32.const 13744 - i32.eq - end + local.tee $30 + i32.const 13744 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -14279,18 +12653,9 @@ end i64.const 1234567 call $~lib/util/number/utoa64 - local.tee $184 - local.set $183 - local.get $184 - if (result i32) - local.get $183 - i32.const 13808 - call $~lib/string/String.__eq - else - local.get $183 - i32.const 13808 - i32.eq - end + local.tee $31 + i32.const 13808 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -14302,18 +12667,9 @@ end i64.const 99999999 call $~lib/util/number/utoa64 - local.tee $183 - local.set $182 - local.get $183 - if (result i32) - local.get $182 - i32.const 14224 - call $~lib/string/String.__eq - else - local.get $182 - i32.const 14224 - i32.eq - end + local.tee $32 + i32.const 14224 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -14325,18 +12681,9 @@ end i64.const 100000000 call $~lib/util/number/utoa64 - local.tee $182 - local.set $181 - local.get $182 - if (result i32) - local.get $181 - i32.const 14256 - call $~lib/string/String.__eq - else - local.get $181 - i32.const 14256 - i32.eq - end + local.tee $33 + i32.const 14256 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -14348,18 +12695,9 @@ end i64.const 4294967295 call $~lib/util/number/utoa64 - local.tee $181 - local.set $180 - local.get $181 - if (result i32) - local.get $180 - i32.const 14176 - call $~lib/string/String.__eq - else - local.get $180 - i32.const 14176 - i32.eq - end + local.tee $34 + i32.const 14176 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -14371,18 +12709,9 @@ end i64.const 4294967297 call $~lib/util/number/utoa64 - local.tee $180 - local.set $179 - local.get $180 - if (result i32) - local.get $179 - i32.const 14304 - call $~lib/string/String.__eq - else - local.get $179 - i32.const 14304 - i32.eq - end + local.tee $35 + i32.const 14304 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -14394,18 +12723,9 @@ end i64.const 68719476735 call $~lib/util/number/utoa64 - local.tee $179 - local.set $178 - local.get $179 - if (result i32) - local.get $178 - i32.const 14352 - call $~lib/string/String.__eq - else - local.get $178 - i32.const 14352 - i32.eq - end + local.tee $36 + i32.const 14352 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -14417,18 +12737,9 @@ end i64.const 868719476735 call $~lib/util/number/utoa64 - local.tee $178 - local.set $177 - local.get $178 - if (result i32) - local.get $177 - i32.const 14400 - call $~lib/string/String.__eq - else - local.get $177 - i32.const 14400 - i32.eq - end + local.tee $37 + i32.const 14400 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -14440,18 +12751,9 @@ end i64.const 8687194767350 call $~lib/util/number/utoa64 - local.tee $177 - local.set $176 - local.get $177 - if (result i32) - local.get $176 - i32.const 14448 - call $~lib/string/String.__eq - else - local.get $176 - i32.const 14448 - i32.eq - end + local.tee $38 + i32.const 14448 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -14463,18 +12765,9 @@ end i64.const 86871947673501 call $~lib/util/number/utoa64 - local.tee $176 - local.set $175 - local.get $176 - if (result i32) - local.get $175 - i32.const 14496 - call $~lib/string/String.__eq - else - local.get $175 - i32.const 14496 - i32.eq - end + local.tee $39 + i32.const 14496 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -14486,18 +12779,9 @@ end i64.const 999868719476735 call $~lib/util/number/utoa64 - local.tee $175 - local.set $174 - local.get $175 - if (result i32) - local.get $174 - i32.const 14544 - call $~lib/string/String.__eq - else - local.get $174 - i32.const 14544 - i32.eq - end + local.tee $40 + i32.const 14544 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -14509,18 +12793,9 @@ end i64.const 9999868719476735 call $~lib/util/number/utoa64 - local.tee $174 - local.set $173 - local.get $174 - if (result i32) - local.get $173 - i32.const 14592 - call $~lib/string/String.__eq - else - local.get $173 - i32.const 14592 - i32.eq - end + local.tee $145 + i32.const 14592 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -14532,18 +12807,9 @@ end i64.const 19999868719476735 call $~lib/util/number/utoa64 - local.tee $173 - local.set $172 - local.get $173 - if (result i32) - local.get $172 - i32.const 14640 - call $~lib/string/String.__eq - else - local.get $172 - i32.const 14640 - i32.eq - end + local.tee $146 + i32.const 14640 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -14555,18 +12821,9 @@ end i64.const 129999868719476735 call $~lib/util/number/utoa64 - local.tee $172 - local.set $171 - local.get $172 - if (result i32) - local.get $171 - i32.const 14704 - call $~lib/string/String.__eq - else - local.get $171 - i32.const 14704 - i32.eq - end + local.tee $147 + i32.const 14704 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -14578,18 +12835,9 @@ end i64.const 1239999868719476735 call $~lib/util/number/utoa64 - local.tee $171 - local.set $170 - local.get $171 - if (result i32) - local.get $170 - i32.const 14768 - call $~lib/string/String.__eq - else - local.get $170 - i32.const 14768 - i32.eq - end + local.tee $148 + i32.const 14768 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -14601,18 +12849,9 @@ end i64.const -1 call $~lib/util/number/utoa64 - local.tee $170 - local.set $169 - local.get $170 - if (result i32) - local.get $169 - i32.const 14832 - call $~lib/string/String.__eq - else - local.get $169 - i32.const 14832 - i32.eq - end + local.tee $149 + i32.const 14832 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -14624,18 +12863,9 @@ end i64.const 0 call $~lib/util/number/itoa64 - local.tee $169 - local.set $168 - local.get $169 - if (result i32) - local.get $168 - i32.const 2432 - call $~lib/string/String.__eq - else - local.get $168 - i32.const 2432 - i32.eq - end + local.tee $150 + i32.const 2432 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -14647,18 +12877,9 @@ end i64.const -1234 call $~lib/util/number/itoa64 - local.tee $168 - local.set $167 - local.get $168 - if (result i32) - local.get $167 - i32.const 14896 - call $~lib/string/String.__eq - else - local.get $167 - i32.const 14896 - i32.eq - end + local.tee $151 + i32.const 14896 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -14670,18 +12891,9 @@ end i64.const 4294967295 call $~lib/util/number/itoa64 - local.tee $167 - local.set $166 - local.get $167 - if (result i32) - local.get $166 - i32.const 14176 - call $~lib/string/String.__eq - else - local.get $166 - i32.const 14176 - i32.eq - end + local.tee $152 + i32.const 14176 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -14693,18 +12905,9 @@ end i64.const 4294967297 call $~lib/util/number/itoa64 - local.tee $166 - local.set $165 - local.get $166 - if (result i32) - local.get $165 - i32.const 14304 - call $~lib/string/String.__eq - else - local.get $165 - i32.const 14304 - i32.eq - end + local.tee $153 + i32.const 14304 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -14716,18 +12919,9 @@ end i64.const -4294967295 call $~lib/util/number/itoa64 - local.tee $165 - local.set $164 - local.get $165 - if (result i32) - local.get $164 - i32.const 14928 - call $~lib/string/String.__eq - else - local.get $164 - i32.const 14928 - i32.eq - end + local.tee $154 + i32.const 14928 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -14739,18 +12933,9 @@ end i64.const 68719476735 call $~lib/util/number/itoa64 - local.tee $164 - local.set $163 - local.get $164 - if (result i32) - local.get $163 - i32.const 14352 - call $~lib/string/String.__eq - else - local.get $163 - i32.const 14352 - i32.eq - end + local.tee $155 + i32.const 14352 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -14762,18 +12947,9 @@ end i64.const -68719476735 call $~lib/util/number/itoa64 - local.tee $163 - local.set $162 - local.get $163 - if (result i32) - local.get $162 - i32.const 14976 - call $~lib/string/String.__eq - else - local.get $162 - i32.const 14976 - i32.eq - end + local.tee $156 + i32.const 14976 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -14785,18 +12961,9 @@ end i64.const -868719476735 call $~lib/util/number/itoa64 - local.tee $162 - local.set $161 - local.get $162 - if (result i32) - local.get $161 - i32.const 15024 - call $~lib/string/String.__eq - else - local.get $161 - i32.const 15024 - i32.eq - end + local.tee $157 + i32.const 15024 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -14808,18 +12975,9 @@ end i64.const -999868719476735 call $~lib/util/number/itoa64 - local.tee $161 - local.set $160 - local.get $161 - if (result i32) - local.get $160 - i32.const 15072 - call $~lib/string/String.__eq - else - local.get $160 - i32.const 15072 - i32.eq - end + local.tee $158 + i32.const 15072 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -14831,18 +12989,9 @@ end i64.const -19999868719476735 call $~lib/util/number/itoa64 - local.tee $160 - local.set $159 - local.get $160 - if (result i32) - local.get $159 - i32.const 15120 - call $~lib/string/String.__eq - else - local.get $159 - i32.const 15120 - i32.eq - end + local.tee $159 + i32.const 15120 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -14854,18 +13003,9 @@ end i64.const 9223372036854775807 call $~lib/util/number/itoa64 - local.tee $159 - local.set $158 - local.get $159 - if (result i32) - local.get $158 - i32.const 15184 - call $~lib/string/String.__eq - else - local.get $158 - i32.const 15184 - i32.eq - end + local.tee $160 + i32.const 15184 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -14877,18 +13017,9 @@ end i64.const -9223372036854775808 call $~lib/util/number/itoa64 - local.tee $158 - local.set $157 - local.get $158 - if (result i32) - local.get $157 - i32.const 15248 - call $~lib/string/String.__eq - else - local.get $157 - i32.const 15248 - i32.eq - end + local.tee $161 + i32.const 15248 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -14900,18 +13031,9 @@ end f64.const 0 call $~lib/util/number/dtoa - local.tee $157 - local.set $156 - local.get $157 - if (result i32) - local.get $156 - i32.const 15312 - call $~lib/string/String.__eq - else - local.get $156 - i32.const 15312 - i32.eq - end + local.tee $162 + i32.const 15312 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -14923,18 +13045,9 @@ end f64.const -0 call $~lib/util/number/dtoa - local.tee $156 - local.set $155 - local.get $156 - if (result i32) - local.get $155 - i32.const 15312 - call $~lib/string/String.__eq - else - local.get $155 - i32.const 15312 - i32.eq - end + local.tee $163 + i32.const 15312 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -14946,18 +13059,9 @@ end f64.const nan:0x8000000000000 call $~lib/util/number/dtoa - local.tee $155 - local.set $154 - local.get $155 - if (result i32) - local.get $154 - i32.const 5840 - call $~lib/string/String.__eq - else - local.get $154 - i32.const 5840 - i32.eq - end + local.tee $164 + i32.const 5840 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -14969,18 +13073,9 @@ end f64.const inf call $~lib/util/number/dtoa - local.tee $154 - local.set $153 - local.get $154 - if (result i32) - local.get $153 - i32.const 15344 - call $~lib/string/String.__eq - else - local.get $153 - i32.const 15344 - i32.eq - end + local.tee $165 + i32.const 15344 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -14992,18 +13087,9 @@ end f64.const -inf call $~lib/util/number/dtoa - local.tee $153 - local.set $152 - local.get $153 - if (result i32) - local.get $152 - i32.const 7056 - call $~lib/string/String.__eq - else - local.get $152 - i32.const 7056 - i32.eq - end + local.tee $166 + i32.const 7056 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -15015,18 +13101,9 @@ end f64.const 2.220446049250313e-16 call $~lib/util/number/dtoa - local.tee $152 - local.set $151 - local.get $152 - if (result i32) - local.get $151 - i32.const 6352 - call $~lib/string/String.__eq - else - local.get $151 - i32.const 6352 - i32.eq - end + local.tee $167 + i32.const 6352 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -15038,18 +13115,9 @@ end f64.const -2.220446049250313e-16 call $~lib/util/number/dtoa - local.tee $151 - local.set $150 - local.get $151 - if (result i32) - local.get $150 - i32.const 16352 - call $~lib/string/String.__eq - else - local.get $150 - i32.const 16352 - i32.eq - end + local.tee $168 + i32.const 16352 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -15061,18 +13129,9 @@ end f64.const 1797693134862315708145274e284 call $~lib/util/number/dtoa - local.tee $150 - local.set $149 - local.get $150 - if (result i32) - local.get $149 - i32.const 6416 - call $~lib/string/String.__eq - else - local.get $149 - i32.const 6416 - i32.eq - end + local.tee $169 + i32.const 6416 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -15084,18 +13143,9 @@ end f64.const -1797693134862315708145274e284 call $~lib/util/number/dtoa - local.tee $149 - local.set $148 - local.get $149 - if (result i32) - local.get $148 - i32.const 16416 - call $~lib/string/String.__eq - else - local.get $148 - i32.const 16416 - i32.eq - end + local.tee $170 + i32.const 16416 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -15107,18 +13157,9 @@ end f64.const 4185580496821356722454785e274 call $~lib/util/number/dtoa - local.tee $148 - local.set $147 - local.get $148 - if (result i32) - local.get $147 - i32.const 16480 - call $~lib/string/String.__eq - else - local.get $147 - i32.const 16480 - i32.eq - end + local.tee $171 + i32.const 16480 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -15130,18 +13171,9 @@ end f64.const 2.2250738585072014e-308 call $~lib/util/number/dtoa - local.tee $147 - local.set $146 - local.get $147 - if (result i32) - local.get $146 - i32.const 16544 - call $~lib/string/String.__eq - else - local.get $146 - i32.const 16544 - i32.eq - end + local.tee $172 + i32.const 16544 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -15153,18 +13185,9 @@ end f64.const 4.940656e-318 call $~lib/util/number/dtoa - local.tee $146 - local.set $145 - local.get $146 - if (result i32) - local.get $145 - i32.const 16608 - call $~lib/string/String.__eq - else - local.get $145 - i32.const 16608 - i32.eq - end + local.tee $173 + i32.const 16608 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -15176,18 +13199,9 @@ end f64.const 9060801153433600 call $~lib/util/number/dtoa - local.tee $145 - local.set $144 - local.get $145 - if (result i32) - local.get $144 - i32.const 16656 - call $~lib/string/String.__eq - else - local.get $144 - i32.const 16656 - i32.eq - end + local.tee $174 + i32.const 16656 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -15199,18 +13213,9 @@ end f64.const 4708356024711512064 call $~lib/util/number/dtoa - local.tee $144 - local.set $143 - local.get $144 - if (result i32) - local.get $143 - i32.const 16720 - call $~lib/string/String.__eq - else - local.get $143 - i32.const 16720 - i32.eq - end + local.tee $175 + i32.const 16720 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -15222,18 +13227,9 @@ end f64.const 9409340012568248320 call $~lib/util/number/dtoa - local.tee $143 - local.set $142 - local.get $143 - if (result i32) - local.get $142 - i32.const 16784 - call $~lib/string/String.__eq - else - local.get $142 - i32.const 16784 - i32.eq - end + local.tee $176 + i32.const 16784 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -15245,18 +13241,9 @@ end f64.const 5e-324 call $~lib/util/number/dtoa - local.tee $142 - local.set $141 - local.get $142 - if (result i32) - local.get $141 - i32.const 6480 - call $~lib/string/String.__eq - else - local.get $141 - i32.const 6480 - i32.eq - end + local.tee $177 + i32.const 6480 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -15268,18 +13255,9 @@ end f64.const 1 call $~lib/util/number/dtoa - local.tee $141 - local.set $140 - local.get $141 - if (result i32) - local.get $140 - i32.const 16848 - call $~lib/string/String.__eq - else - local.get $140 - i32.const 16848 - i32.eq - end + local.tee $178 + i32.const 16848 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -15291,18 +13269,9 @@ end f64.const 0.1 call $~lib/util/number/dtoa - local.tee $140 - local.set $139 - local.get $140 - if (result i32) - local.get $139 - i32.const 3488 - call $~lib/string/String.__eq - else - local.get $139 - i32.const 3488 - i32.eq - end + local.tee $179 + i32.const 3488 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -15314,18 +13283,9 @@ end f64.const -1 call $~lib/util/number/dtoa - local.tee $139 - local.set $138 - local.get $139 - if (result i32) - local.get $138 - i32.const 16880 - call $~lib/string/String.__eq - else - local.get $138 - i32.const 16880 - i32.eq - end + local.tee $180 + i32.const 16880 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -15337,18 +13297,9 @@ end f64.const -0.1 call $~lib/util/number/dtoa - local.tee $138 - local.set $137 - local.get $138 - if (result i32) - local.get $137 - i32.const 16912 - call $~lib/string/String.__eq - else - local.get $137 - i32.const 16912 - i32.eq - end + local.tee $181 + i32.const 16912 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -15360,18 +13311,9 @@ end f64.const 1e6 call $~lib/util/number/dtoa - local.tee $137 - local.set $136 - local.get $137 - if (result i32) - local.get $136 - i32.const 16944 - call $~lib/string/String.__eq - else - local.get $136 - i32.const 16944 - i32.eq - end + local.tee $182 + i32.const 16944 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -15383,18 +13325,9 @@ end f64.const 1e-06 call $~lib/util/number/dtoa - local.tee $136 - local.set $135 - local.get $136 - if (result i32) - local.get $135 - i32.const 16992 - call $~lib/string/String.__eq - else - local.get $135 - i32.const 16992 - i32.eq - end + local.tee $183 + i32.const 16992 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -15406,18 +13339,9 @@ end f64.const -1e6 call $~lib/util/number/dtoa - local.tee $135 - local.set $134 - local.get $135 - if (result i32) - local.get $134 - i32.const 17024 - call $~lib/string/String.__eq - else - local.get $134 - i32.const 17024 - i32.eq - end + local.tee $184 + i32.const 17024 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -15429,18 +13353,9 @@ end f64.const -1e-06 call $~lib/util/number/dtoa - local.tee $134 - local.set $133 - local.get $134 - if (result i32) - local.get $133 - i32.const 17072 - call $~lib/string/String.__eq - else - local.get $133 - i32.const 17072 - i32.eq - end + local.tee $185 + i32.const 17072 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -15452,18 +13367,9 @@ end f64.const 1e7 call $~lib/util/number/dtoa - local.tee $133 - local.set $132 - local.get $133 - if (result i32) - local.get $132 - i32.const 17120 - call $~lib/string/String.__eq - else - local.get $132 - i32.const 17120 - i32.eq - end + local.tee $186 + i32.const 17120 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -15475,18 +13381,9 @@ end f64.const 1e-07 call $~lib/util/number/dtoa - local.tee $132 - local.set $131 - local.get $132 - if (result i32) - local.get $131 - i32.const 17168 - call $~lib/string/String.__eq - else - local.get $131 - i32.const 17168 - i32.eq - end + local.tee $187 + i32.const 17168 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -15498,18 +13395,9 @@ end f64.const 1.e+308 call $~lib/util/number/dtoa - local.tee $131 - local.set $130 - local.get $131 - if (result i32) - local.get $130 - i32.const 3712 - call $~lib/string/String.__eq - else - local.get $130 - i32.const 3712 - i32.eq - end + local.tee $188 + i32.const 3712 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -15521,18 +13409,9 @@ end f64.const -1.e+308 call $~lib/util/number/dtoa - local.tee $130 - local.set $129 - local.get $130 - if (result i32) - local.get $129 - i32.const 17200 - call $~lib/string/String.__eq - else - local.get $129 - i32.const 17200 - i32.eq - end + local.tee $189 + i32.const 17200 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -15544,18 +13423,9 @@ end f64.const inf call $~lib/util/number/dtoa - local.tee $129 - local.set $128 - local.get $129 - if (result i32) - local.get $128 - i32.const 15344 - call $~lib/string/String.__eq - else - local.get $128 - i32.const 15344 - i32.eq - end + local.tee $190 + i32.const 15344 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -15567,18 +13437,9 @@ end f64.const -inf call $~lib/util/number/dtoa - local.tee $128 - local.set $127 - local.get $128 - if (result i32) - local.get $127 - i32.const 7056 - call $~lib/string/String.__eq - else - local.get $127 - i32.const 7056 - i32.eq - end + local.tee $191 + i32.const 7056 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -15590,18 +13451,9 @@ end f64.const 1e-308 call $~lib/util/number/dtoa - local.tee $127 - local.set $126 - local.get $127 - if (result i32) - local.get $126 - i32.const 17232 - call $~lib/string/String.__eq - else - local.get $126 - i32.const 17232 - i32.eq - end + local.tee $192 + i32.const 17232 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -15613,18 +13465,9 @@ end f64.const -1e-308 call $~lib/util/number/dtoa - local.tee $126 - local.set $125 - local.get $126 - if (result i32) - local.get $125 - i32.const 17264 - call $~lib/string/String.__eq - else - local.get $125 - i32.const 17264 - i32.eq - end + local.tee $193 + i32.const 17264 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -15636,18 +13479,9 @@ end f64.const 1e-323 call $~lib/util/number/dtoa - local.tee $125 - local.set $124 - local.get $125 - if (result i32) - local.get $124 - i32.const 17296 - call $~lib/string/String.__eq - else - local.get $124 - i32.const 17296 - i32.eq - end + local.tee $194 + i32.const 17296 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -15659,18 +13493,9 @@ end f64.const -1e-323 call $~lib/util/number/dtoa - local.tee $124 - local.set $123 - local.get $124 - if (result i32) - local.get $123 - i32.const 17328 - call $~lib/string/String.__eq - else - local.get $123 - i32.const 17328 - i32.eq - end + local.tee $195 + i32.const 17328 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -15682,18 +13507,9 @@ end f64.const 0 call $~lib/util/number/dtoa - local.tee $123 - local.set $122 - local.get $123 - if (result i32) - local.get $122 - i32.const 15312 - call $~lib/string/String.__eq - else - local.get $122 - i32.const 15312 - i32.eq - end + local.tee $196 + i32.const 15312 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -15705,18 +13521,9 @@ end f64.const 4294967272 call $~lib/util/number/dtoa - local.tee $122 - local.set $121 - local.get $122 - if (result i32) - local.get $121 - i32.const 17360 - call $~lib/string/String.__eq - else - local.get $121 - i32.const 17360 - i32.eq - end + local.tee $197 + i32.const 17360 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -15728,18 +13535,9 @@ end f64.const 1.2312145673456234e-08 call $~lib/util/number/dtoa - local.tee $121 - local.set $120 - local.get $121 - if (result i32) - local.get $120 - i32.const 17408 - call $~lib/string/String.__eq - else - local.get $120 - i32.const 17408 - i32.eq - end + local.tee $198 + i32.const 17408 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -15751,18 +13549,9 @@ end f64.const 555555555.5555556 call $~lib/util/number/dtoa - local.tee $120 - local.set $119 - local.get $120 - if (result i32) - local.get $119 - i32.const 17472 - call $~lib/string/String.__eq - else - local.get $119 - i32.const 17472 - i32.eq - end + local.tee $199 + i32.const 17472 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -15774,18 +13563,9 @@ end f64.const 0.9999999999999999 call $~lib/util/number/dtoa - local.tee $119 - local.set $118 - local.get $119 - if (result i32) - local.get $118 - i32.const 17536 - call $~lib/string/String.__eq - else - local.get $118 - i32.const 17536 - i32.eq - end + local.tee $200 + i32.const 17536 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -15797,18 +13577,9 @@ end f64.const 1 call $~lib/util/number/dtoa - local.tee $118 - local.set $117 - local.get $118 - if (result i32) - local.get $117 - i32.const 16848 - call $~lib/string/String.__eq - else - local.get $117 - i32.const 16848 - i32.eq - end + local.tee $201 + i32.const 16848 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -15820,18 +13591,9 @@ end f64.const 12.34 call $~lib/util/number/dtoa - local.tee $117 - local.set $116 - local.get $117 - if (result i32) - local.get $116 - i32.const 17600 - call $~lib/string/String.__eq - else - local.get $116 - i32.const 17600 - i32.eq - end + local.tee $202 + i32.const 17600 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -15843,18 +13605,9 @@ end f64.const 0.3333333333333333 call $~lib/util/number/dtoa - local.tee $116 - local.set $115 - local.get $116 - if (result i32) - local.get $115 - i32.const 17632 - call $~lib/string/String.__eq - else - local.get $115 - i32.const 17632 - i32.eq - end + local.tee $203 + i32.const 17632 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -15866,18 +13619,9 @@ end f64.const 1234e17 call $~lib/util/number/dtoa - local.tee $115 - local.set $114 - local.get $115 - if (result i32) - local.get $114 - i32.const 17696 - call $~lib/string/String.__eq - else - local.get $114 - i32.const 17696 - i32.eq - end + local.tee $204 + i32.const 17696 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -15889,18 +13633,9 @@ end f64.const 1234e18 call $~lib/util/number/dtoa - local.tee $114 - local.set $113 - local.get $114 - if (result i32) - local.get $113 - i32.const 17760 - call $~lib/string/String.__eq - else - local.get $113 - i32.const 17760 - i32.eq - end + local.tee $205 + i32.const 17760 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -15912,18 +13647,9 @@ end f64.const 2.71828 call $~lib/util/number/dtoa - local.tee $113 - local.set $112 - local.get $113 - if (result i32) - local.get $112 - i32.const 17808 - call $~lib/string/String.__eq - else - local.get $112 - i32.const 17808 - i32.eq - end + local.tee $206 + i32.const 17808 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -15935,18 +13661,9 @@ end f64.const 0.0271828 call $~lib/util/number/dtoa - local.tee $112 - local.set $111 - local.get $112 - if (result i32) - local.get $111 - i32.const 17840 - call $~lib/string/String.__eq - else - local.get $111 - i32.const 17840 - i32.eq - end + local.tee $207 + i32.const 17840 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -15958,18 +13675,9 @@ end f64.const 271.828 call $~lib/util/number/dtoa - local.tee $111 - local.set $110 - local.get $111 - if (result i32) - local.get $110 - i32.const 17888 - call $~lib/string/String.__eq - else - local.get $110 - i32.const 17888 - i32.eq - end + local.tee $208 + i32.const 17888 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -15981,18 +13689,9 @@ end f64.const 1.1e+128 call $~lib/util/number/dtoa - local.tee $110 - local.set $109 - local.get $110 - if (result i32) - local.get $109 - i32.const 17920 - call $~lib/string/String.__eq - else - local.get $109 - i32.const 17920 - i32.eq - end + local.tee $209 + i32.const 17920 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -16004,18 +13703,9 @@ end f64.const 1.1e-64 call $~lib/util/number/dtoa - local.tee $109 - local.set $108 - local.get $109 - if (result i32) - local.get $108 - i32.const 17952 - call $~lib/string/String.__eq - else - local.get $108 - i32.const 17952 - i32.eq - end + local.tee $210 + i32.const 17952 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -16027,18 +13717,9 @@ end f64.const 0.000035689 call $~lib/util/number/dtoa - local.tee $108 - local.set $6 - local.get $108 - if (result i32) - local.get $6 - i32.const 17984 - call $~lib/string/String.__eq - else - local.get $6 - i32.const 17984 - i32.eq - end + local.tee $211 + i32.const 17984 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -16050,427 +13731,427 @@ end global.get $std/string/str call $~lib/rt/pure/__release - local.get $102 - call $~lib/rt/pure/__release - local.get $103 + local.get $41 call $~lib/rt/pure/__release - local.get $104 + local.get $42 call $~lib/rt/pure/__release - local.get $101 + local.get $43 call $~lib/rt/pure/__release - local.get $100 + local.get $44 call $~lib/rt/pure/__release - local.get $99 + local.get $45 call $~lib/rt/pure/__release - local.get $98 + local.get $46 call $~lib/rt/pure/__release - local.get $210 + local.get $47 call $~lib/rt/pure/__release - local.get $107 + local.get $4 call $~lib/rt/pure/__release - local.get $97 + local.get $48 call $~lib/rt/pure/__release - local.get $96 + local.get $49 call $~lib/rt/pure/__release - local.get $95 + local.get $50 call $~lib/rt/pure/__release - local.get $94 + local.get $51 call $~lib/rt/pure/__release - local.get $93 + local.get $52 call $~lib/rt/pure/__release - local.get $92 + local.get $53 call $~lib/rt/pure/__release - local.get $91 + local.get $54 call $~lib/rt/pure/__release - local.get $90 + local.get $55 call $~lib/rt/pure/__release - local.get $89 + local.get $56 call $~lib/rt/pure/__release - local.get $88 + local.get $57 call $~lib/rt/pure/__release - local.get $87 + local.get $58 call $~lib/rt/pure/__release - local.get $86 + local.get $59 call $~lib/rt/pure/__release - local.get $85 + local.get $60 call $~lib/rt/pure/__release - local.get $84 + local.get $61 call $~lib/rt/pure/__release - local.get $83 + local.get $62 call $~lib/rt/pure/__release - local.get $82 + local.get $63 call $~lib/rt/pure/__release - local.get $81 + local.get $64 call $~lib/rt/pure/__release - local.get $80 + local.get $65 call $~lib/rt/pure/__release - local.get $79 + local.get $66 call $~lib/rt/pure/__release - local.get $78 + local.get $67 call $~lib/rt/pure/__release - local.get $77 + local.get $68 call $~lib/rt/pure/__release - local.get $76 + local.get $69 call $~lib/rt/pure/__release - local.get $75 + local.get $70 call $~lib/rt/pure/__release - local.get $5 + local.get $71 call $~lib/rt/pure/__release - local.get $4 + local.get $72 call $~lib/rt/pure/__release - local.get $3 + local.get $73 call $~lib/rt/pure/__release - local.get $2 + local.get $74 call $~lib/rt/pure/__release - local.get $70 + local.get $75 call $~lib/rt/pure/__release - local.get $73 + local.get $79 call $~lib/rt/pure/__release - local.get $106 + local.get $78 call $~lib/rt/pure/__release - local.get $105 + local.get $77 call $~lib/rt/pure/__release - local.get $71 + local.get $76 call $~lib/rt/pure/__release - local.get $74 + local.get $5 call $~lib/rt/pure/__release - local.get $72 + local.get $80 call $~lib/rt/pure/__release - local.get $69 + local.get $81 call $~lib/rt/pure/__release - local.get $68 + local.get $82 call $~lib/rt/pure/__release - local.get $67 + local.get $83 call $~lib/rt/pure/__release - local.get $66 + local.get $84 call $~lib/rt/pure/__release - local.get $65 + local.get $85 call $~lib/rt/pure/__release - local.get $64 + local.get $86 call $~lib/rt/pure/__release - local.get $63 + local.get $87 call $~lib/rt/pure/__release - local.get $62 + local.get $88 call $~lib/rt/pure/__release - local.get $61 + local.get $89 call $~lib/rt/pure/__release - local.get $60 + local.get $90 call $~lib/rt/pure/__release - local.get $59 + local.get $91 call $~lib/rt/pure/__release - local.get $58 + local.get $92 call $~lib/rt/pure/__release - local.get $57 + local.get $93 call $~lib/rt/pure/__release - local.get $56 + local.get $94 call $~lib/rt/pure/__release - local.get $55 + local.get $95 call $~lib/rt/pure/__release - local.get $54 + local.get $96 call $~lib/rt/pure/__release - local.get $53 + local.get $97 call $~lib/rt/pure/__release - local.get $52 + local.get $98 call $~lib/rt/pure/__release - local.get $51 + local.get $99 call $~lib/rt/pure/__release - local.get $50 + local.get $100 call $~lib/rt/pure/__release - local.get $49 + local.get $101 call $~lib/rt/pure/__release - local.get $48 + local.get $102 call $~lib/rt/pure/__release - local.get $47 + local.get $103 call $~lib/rt/pure/__release - local.get $46 + local.get $104 call $~lib/rt/pure/__release - local.get $45 + local.get $105 call $~lib/rt/pure/__release - local.get $44 + local.get $106 call $~lib/rt/pure/__release - local.get $43 + local.get $107 call $~lib/rt/pure/__release - local.get $42 + local.get $108 call $~lib/rt/pure/__release - local.get $41 + local.get $109 call $~lib/rt/pure/__release - local.get $40 + local.get $110 call $~lib/rt/pure/__release - local.get $39 + local.get $111 call $~lib/rt/pure/__release - local.get $38 + local.get $112 call $~lib/rt/pure/__release - local.get $37 + local.get $113 call $~lib/rt/pure/__release - local.get $36 + local.get $114 call $~lib/rt/pure/__release - local.get $35 + local.get $115 call $~lib/rt/pure/__release - local.get $34 + local.get $116 call $~lib/rt/pure/__release - local.get $32 + local.get $117 call $~lib/rt/pure/__release - local.get $31 + local.get $118 call $~lib/rt/pure/__release - local.get $33 + local.get $119 call $~lib/rt/pure/__release - local.get $30 + local.get $120 call $~lib/rt/pure/__release - local.get $29 + local.get $121 call $~lib/rt/pure/__release - local.get $28 + local.get $122 call $~lib/rt/pure/__release - local.get $27 + local.get $123 call $~lib/rt/pure/__release - local.get $26 + local.get $124 call $~lib/rt/pure/__release - local.get $25 + local.get $125 call $~lib/rt/pure/__release - local.get $24 + local.get $126 call $~lib/rt/pure/__release - local.get $23 + local.get $127 call $~lib/rt/pure/__release - local.get $22 + local.get $128 call $~lib/rt/pure/__release - local.get $21 + local.get $129 call $~lib/rt/pure/__release - local.get $20 + local.get $130 call $~lib/rt/pure/__release - local.get $19 + local.get $131 call $~lib/rt/pure/__release - local.get $18 + local.get $132 call $~lib/rt/pure/__release - local.get $17 + local.get $133 call $~lib/rt/pure/__release - local.get $16 + local.get $134 call $~lib/rt/pure/__release - local.get $15 + local.get $135 call $~lib/rt/pure/__release - local.get $14 + local.get $136 call $~lib/rt/pure/__release - local.get $13 + local.get $137 call $~lib/rt/pure/__release - local.get $12 + local.get $138 call $~lib/rt/pure/__release - local.get $11 + local.get $139 call $~lib/rt/pure/__release - local.get $10 + local.get $140 call $~lib/rt/pure/__release - local.get $9 + local.get $141 call $~lib/rt/pure/__release - local.get $8 + local.get $142 call $~lib/rt/pure/__release - local.get $7 + local.get $143 call $~lib/rt/pure/__release - local.get $1 + local.get $144 call $~lib/rt/pure/__release local.get $0 call $~lib/rt/pure/__release - local.get $209 + local.get $3 call $~lib/rt/pure/__release - local.get $212 + local.get $1 call $~lib/rt/pure/__release - local.get $208 + local.get $6 call $~lib/rt/pure/__release - local.get $207 + local.get $7 call $~lib/rt/pure/__release - local.get $206 + local.get $8 call $~lib/rt/pure/__release - local.get $205 + local.get $9 call $~lib/rt/pure/__release - local.get $204 + local.get $10 call $~lib/rt/pure/__release - local.get $203 + local.get $11 call $~lib/rt/pure/__release - local.get $202 + local.get $12 call $~lib/rt/pure/__release - local.get $201 + local.get $13 call $~lib/rt/pure/__release - local.get $200 + local.get $14 call $~lib/rt/pure/__release - local.get $199 + local.get $15 call $~lib/rt/pure/__release - local.get $198 + local.get $16 call $~lib/rt/pure/__release - local.get $197 + local.get $17 call $~lib/rt/pure/__release - local.get $196 + local.get $18 call $~lib/rt/pure/__release - local.get $195 + local.get $19 call $~lib/rt/pure/__release - local.get $194 + local.get $20 call $~lib/rt/pure/__release - local.get $193 + local.get $21 call $~lib/rt/pure/__release - local.get $192 + local.get $22 call $~lib/rt/pure/__release - local.get $191 + local.get $23 call $~lib/rt/pure/__release - local.get $190 + local.get $24 call $~lib/rt/pure/__release - local.get $189 + local.get $25 call $~lib/rt/pure/__release - local.get $188 + local.get $26 call $~lib/rt/pure/__release - local.get $187 + local.get $27 call $~lib/rt/pure/__release - local.get $186 + local.get $28 call $~lib/rt/pure/__release - local.get $185 + local.get $29 call $~lib/rt/pure/__release - local.get $184 + local.get $30 call $~lib/rt/pure/__release - local.get $183 + local.get $31 call $~lib/rt/pure/__release - local.get $182 + local.get $32 call $~lib/rt/pure/__release - local.get $181 + local.get $33 call $~lib/rt/pure/__release - local.get $180 + local.get $34 call $~lib/rt/pure/__release - local.get $179 + local.get $35 call $~lib/rt/pure/__release - local.get $178 + local.get $36 call $~lib/rt/pure/__release - local.get $177 + local.get $37 call $~lib/rt/pure/__release - local.get $176 + local.get $38 call $~lib/rt/pure/__release - local.get $175 + local.get $39 call $~lib/rt/pure/__release - local.get $174 + local.get $40 call $~lib/rt/pure/__release - local.get $173 + local.get $145 call $~lib/rt/pure/__release - local.get $172 + local.get $146 call $~lib/rt/pure/__release - local.get $171 + local.get $147 call $~lib/rt/pure/__release - local.get $170 + local.get $148 call $~lib/rt/pure/__release - local.get $169 + local.get $149 call $~lib/rt/pure/__release - local.get $168 + local.get $150 call $~lib/rt/pure/__release - local.get $167 + local.get $151 call $~lib/rt/pure/__release - local.get $166 + local.get $152 call $~lib/rt/pure/__release - local.get $165 + local.get $153 call $~lib/rt/pure/__release - local.get $164 + local.get $154 call $~lib/rt/pure/__release - local.get $163 + local.get $155 call $~lib/rt/pure/__release - local.get $162 + local.get $156 call $~lib/rt/pure/__release - local.get $161 + local.get $157 call $~lib/rt/pure/__release - local.get $160 + local.get $158 call $~lib/rt/pure/__release local.get $159 call $~lib/rt/pure/__release - local.get $158 + local.get $160 call $~lib/rt/pure/__release - local.get $157 + local.get $161 call $~lib/rt/pure/__release - local.get $156 + local.get $162 call $~lib/rt/pure/__release - local.get $155 + local.get $163 call $~lib/rt/pure/__release - local.get $154 + local.get $164 call $~lib/rt/pure/__release - local.get $153 + local.get $165 call $~lib/rt/pure/__release - local.get $152 + local.get $166 call $~lib/rt/pure/__release - local.get $151 + local.get $167 call $~lib/rt/pure/__release - local.get $150 + local.get $168 call $~lib/rt/pure/__release - local.get $149 + local.get $169 call $~lib/rt/pure/__release - local.get $148 + local.get $170 call $~lib/rt/pure/__release - local.get $147 + local.get $171 call $~lib/rt/pure/__release - local.get $146 + local.get $172 call $~lib/rt/pure/__release - local.get $145 + local.get $173 call $~lib/rt/pure/__release - local.get $144 + local.get $174 call $~lib/rt/pure/__release - local.get $143 + local.get $175 call $~lib/rt/pure/__release - local.get $142 + local.get $176 call $~lib/rt/pure/__release - local.get $141 + local.get $177 call $~lib/rt/pure/__release - local.get $140 + local.get $178 call $~lib/rt/pure/__release - local.get $139 + local.get $179 call $~lib/rt/pure/__release - local.get $138 + local.get $180 call $~lib/rt/pure/__release - local.get $137 + local.get $181 call $~lib/rt/pure/__release - local.get $136 + local.get $182 call $~lib/rt/pure/__release - local.get $135 + local.get $183 call $~lib/rt/pure/__release - local.get $134 + local.get $184 call $~lib/rt/pure/__release - local.get $133 + local.get $185 call $~lib/rt/pure/__release - local.get $132 + local.get $186 call $~lib/rt/pure/__release - local.get $131 + local.get $187 call $~lib/rt/pure/__release - local.get $130 + local.get $188 call $~lib/rt/pure/__release - local.get $129 + local.get $189 call $~lib/rt/pure/__release - local.get $128 + local.get $190 call $~lib/rt/pure/__release - local.get $127 + local.get $191 call $~lib/rt/pure/__release - local.get $126 + local.get $192 call $~lib/rt/pure/__release - local.get $125 + local.get $193 call $~lib/rt/pure/__release - local.get $124 + local.get $194 call $~lib/rt/pure/__release - local.get $123 + local.get $195 call $~lib/rt/pure/__release - local.get $122 + local.get $196 call $~lib/rt/pure/__release - local.get $121 + local.get $197 call $~lib/rt/pure/__release - local.get $120 + local.get $198 call $~lib/rt/pure/__release - local.get $119 + local.get $199 call $~lib/rt/pure/__release - local.get $118 + local.get $200 call $~lib/rt/pure/__release - local.get $117 + local.get $201 call $~lib/rt/pure/__release - local.get $116 + local.get $202 call $~lib/rt/pure/__release - local.get $115 + local.get $203 call $~lib/rt/pure/__release - local.get $114 + local.get $204 call $~lib/rt/pure/__release - local.get $113 + local.get $205 call $~lib/rt/pure/__release - local.get $112 + local.get $206 call $~lib/rt/pure/__release - local.get $111 + local.get $207 call $~lib/rt/pure/__release - local.get $110 + local.get $208 call $~lib/rt/pure/__release - local.get $109 + local.get $209 call $~lib/rt/pure/__release - local.get $108 + local.get $210 + call $~lib/rt/pure/__release + local.get $211 call $~lib/rt/pure/__release ) (func $std/string/getString (; 72 ;) (result i32) diff --git a/tests/compiler/std/string.ts b/tests/compiler/std/string.ts index 7cebf8518b..545ab55dbf 100644 --- a/tests/compiler/std/string.ts +++ b/tests/compiler/std/string.ts @@ -2,7 +2,7 @@ import { utoa32, itoa32, utoa64, itoa64, dtoa } from "util/number"; // preliminary var str: string = "hi, I'm a string"; -var nullStr: string; +var nullStr: string | null; // exactly once in static memory assert(changetype(str) == changetype("hi, I'm a string")); diff --git a/tests/compiler/std/string.untouched.wat b/tests/compiler/std/string.untouched.wat index dfa210160b..dedea24211 100644 --- a/tests/compiler/std/string.untouched.wat +++ b/tests/compiler/std/string.untouched.wat @@ -1,8 +1,8 @@ (module (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) - (type $i32_i32_=>_none (func (param i32 i32))) (type $i32_=>_i32 (func (param i32) (result i32))) + (type $i32_i32_=>_none (func (param i32 i32))) (type $i32_=>_none (func (param i32))) (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $none_=>_none (func)) @@ -605,12 +605,9 @@ call $~lib/rt/pure/__release local.get $7 ) - (func $~lib/string/String.__eq (; 11 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/string/String#_eq (; 11 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) - local.get $0 - call $~lib/rt/pure/__retain - local.set $0 local.get $1 call $~lib/rt/pure/__retain local.set $1 @@ -624,8 +621,6 @@ if i32.const 0 local.set $3 - local.get $0 - call $~lib/rt/pure/__release local.get $1 call $~lib/rt/pure/__release local.get $3 @@ -639,8 +634,6 @@ call $~lib/util/string/compareImpl i32.eqz local.set $3 - local.get $0 - call $~lib/rt/pure/__release local.get $1 call $~lib/rt/pure/__release local.get $3 @@ -661,7 +654,12 @@ i32.add i32.load16_u ) - (func $~lib/rt/tlsf/removeBlock (; 13 ;) (param $0 i32) (param $1 i32) + (func $~lib/string/String#_not (; 13 ;) (param $0 i32) (result i32) + local.get $0 + call $~lib/string/String#get:length + i32.eqz + ) + (func $~lib/rt/tlsf/removeBlock (; 14 ;) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -871,7 +869,7 @@ end end ) - (func $~lib/rt/tlsf/insertBlock (; 14 ;) (param $0 i32) (param $1 i32) + (func $~lib/rt/tlsf/insertBlock (; 15 ;) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -1221,7 +1219,7 @@ local.get $7 i32.store offset=4 ) - (func $~lib/rt/tlsf/addMemory (; 15 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/rt/tlsf/addMemory (; 16 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -1369,7 +1367,7 @@ call $~lib/rt/tlsf/insertBlock i32.const 1 ) - (func $~lib/rt/tlsf/maybeInitialize (; 16 ;) (result i32) + (func $~lib/rt/tlsf/maybeInitialize (; 17 ;) (result i32) (local $0 i32) (local $1 i32) (local $2 i32) @@ -1523,7 +1521,7 @@ end local.get $0 ) - (func $~lib/rt/tlsf/prepareSize (; 17 ;) (param $0 i32) (result i32) + (func $~lib/rt/tlsf/prepareSize (; 18 ;) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) local.get $0 @@ -1552,7 +1550,7 @@ i32.gt_u select ) - (func $~lib/rt/tlsf/searchBlock (; 18 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/rt/tlsf/searchBlock (; 19 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -1735,7 +1733,7 @@ end local.get $7 ) - (func $~lib/rt/tlsf/growMemory (; 19 ;) (param $0 i32) (param $1 i32) + (func $~lib/rt/tlsf/growMemory (; 20 ;) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -1819,7 +1817,7 @@ call $~lib/rt/tlsf/addMemory drop ) - (func $~lib/rt/tlsf/prepareBlock (; 20 ;) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/rt/tlsf/prepareBlock (; 21 ;) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -1914,7 +1912,7 @@ i32.store end ) - (func $~lib/rt/tlsf/allocateBlock (; 21 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/rt/tlsf/allocateBlock (; 22 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) global.get $~lib/rt/tlsf/collectLock @@ -2025,7 +2023,7 @@ call $~lib/rt/rtrace/onalloc local.get $4 ) - (func $~lib/rt/tlsf/__alloc (; 22 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/rt/tlsf/__alloc (; 23 ;) (param $0 i32) (param $1 i32) (result i32) call $~lib/rt/tlsf/maybeInitialize local.get $0 local.get $1 @@ -2033,7 +2031,7 @@ i32.const 16 i32.add ) - (func $~lib/string/String.fromCharCode (; 23 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/string/String.fromCharCode (; 24 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) local.get $1 @@ -2058,7 +2056,7 @@ local.get $3 call $~lib/rt/pure/__retain ) - (func $~lib/string/String.fromCharCode|trampoline (; 24 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/string/String.fromCharCode|trampoline (; 25 ;) (param $0 i32) (param $1 i32) (result i32) block $1of1 block $0of1 block $outOfRange @@ -2076,11 +2074,11 @@ local.get $1 call $~lib/string/String.fromCharCode ) - (func $~setArgumentsLength (; 25 ;) (param $0 i32) + (func $~setArgumentsLength (; 26 ;) (param $0 i32) local.get $0 global.set $~argumentsLength ) - (func $~lib/string/String.fromCodePoint (; 26 ;) (param $0 i32) (result i32) + (func $~lib/string/String.fromCodePoint (; 27 ;) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -2141,7 +2139,7 @@ local.get $2 call $~lib/rt/pure/__retain ) - (func $~lib/string/String#startsWith (; 27 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/string/String#startsWith (; 28 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -2197,7 +2195,7 @@ call $~lib/rt/pure/__release local.get $4 ) - (func $~lib/string/String#endsWith (; 28 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/string/String#endsWith (; 29 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -2252,7 +2250,7 @@ call $~lib/rt/pure/__release local.get $3 ) - (func $~lib/string/String#indexOf (; 29 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/string/String#indexOf (; 30 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -2342,7 +2340,7 @@ call $~lib/rt/pure/__release local.get $4 ) - (func $~lib/string/String#includes (; 30 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/string/String#includes (; 31 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $1 call $~lib/rt/pure/__retain @@ -2358,7 +2356,7 @@ call $~lib/rt/pure/__release local.get $3 ) - (func $~lib/util/memory/memcpy (; 31 ;) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/util/memory/memcpy (; 32 ;) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -3382,7 +3380,7 @@ i32.store8 end ) - (func $~lib/memory/memory.copy (; 32 ;) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/memory/memory.copy (; 33 ;) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -3602,7 +3600,7 @@ end end ) - (func $~lib/memory/memory.repeat (; 33 ;) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) + (func $~lib/memory/memory.repeat (; 34 ;) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (local $4 i32) (local $5 i32) (local $6 i32) @@ -3633,7 +3631,7 @@ end end ) - (func $~lib/string/String#padStart (; 34 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/string/String#padStart (; 35 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -3733,7 +3731,7 @@ call $~lib/rt/pure/__release local.get $10 ) - (func $~lib/string/String#padEnd (; 35 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/string/String#padEnd (; 36 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -3837,7 +3835,7 @@ call $~lib/rt/pure/__release local.get $10 ) - (func $~lib/string/String#lastIndexOf (; 36 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/string/String#lastIndexOf (; 37 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -3926,7 +3924,7 @@ call $~lib/rt/pure/__release local.get $4 ) - (func $~lib/string/String#localeCompare (; 37 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/string/String#localeCompare (; 38 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -3987,7 +3985,7 @@ call $~lib/rt/pure/__release local.get $2 ) - (func $~lib/util/string/isSpace (; 38 ;) (param $0 i32) (result i32) + (func $~lib/util/string/isSpace (; 39 ;) (param $0 i32) (result i32) (local $1 i32) local.get $0 i32.const 5760 @@ -4068,7 +4066,7 @@ end i32.const 0 ) - (func $~lib/string/String#trimStart (; 39 ;) (param $0 i32) (result i32) + (func $~lib/string/String#trimStart (; 40 ;) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -4134,7 +4132,7 @@ local.get $4 call $~lib/rt/pure/__retain ) - (func $~lib/string/String#trimEnd (; 40 ;) (param $0 i32) (result i32) + (func $~lib/string/String#trimEnd (; 41 ;) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -4195,7 +4193,7 @@ local.get $4 call $~lib/rt/pure/__retain ) - (func $~lib/string/String#trim (; 41 ;) (param $0 i32) (result i32) + (func $~lib/string/String#trim (; 42 ;) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -4296,7 +4294,7 @@ local.get $5 call $~lib/rt/pure/__retain ) - (func $~lib/util/string/strtol (; 42 ;) (param $0 i32) (param $1 i32) (result f64) + (func $~lib/util/string/strtol (; 43 ;) (param $0 i32) (param $1 i32) (result f64) (local $2 i32) (local $3 f64) (local $4 i32) @@ -4587,7 +4585,7 @@ call $~lib/rt/pure/__release local.get $3 ) - (func $~lib/string/parseInt (; 43 ;) (param $0 i32) (param $1 i32) (result f64) + (func $~lib/string/parseInt (; 44 ;) (param $0 i32) (param $1 i32) (result f64) (local $2 f64) local.get $0 call $~lib/rt/pure/__retain @@ -4600,7 +4598,7 @@ call $~lib/rt/pure/__release local.get $2 ) - (func $~lib/util/string/strtol (; 44 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/util/string/strtol (; 45 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -4888,7 +4886,7 @@ call $~lib/rt/pure/__release local.get $3 ) - (func $~lib/number/I32.parseInt (; 45 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/number/I32.parseInt (; 46 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) local.get $0 call $~lib/rt/pure/__retain @@ -4901,7 +4899,7 @@ call $~lib/rt/pure/__release local.get $2 ) - (func $~lib/util/string/strtol (; 46 ;) (param $0 i32) (param $1 i32) (result i64) + (func $~lib/util/string/strtol (; 47 ;) (param $0 i32) (param $1 i32) (result i64) (local $2 i32) (local $3 i64) (local $4 i32) @@ -5192,7 +5190,7 @@ call $~lib/rt/pure/__release local.get $3 ) - (func $~lib/number/I64.parseInt (; 47 ;) (param $0 i32) (param $1 i32) (result i64) + (func $~lib/number/I64.parseInt (; 48 ;) (param $0 i32) (param $1 i32) (result i64) (local $2 i64) local.get $0 call $~lib/rt/pure/__retain @@ -5205,7 +5203,7 @@ call $~lib/rt/pure/__release local.get $2 ) - (func $~lib/math/ipow32 (; 48 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/math/ipow32 (; 49 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -5402,7 +5400,7 @@ end local.get $2 ) - (func $~lib/math/NativeMath.scalbn (; 49 ;) (param $0 f64) (param $1 i32) (result f64) + (func $~lib/math/NativeMath.scalbn (; 50 ;) (param $0 f64) (param $1 i32) (result f64) (local $2 f64) (local $3 i32) (local $4 i32) @@ -5493,7 +5491,7 @@ f64.reinterpret_i64 f64.mul ) - (func $~lib/util/string/strtod (; 50 ;) (param $0 i32) (result f64) + (func $~lib/util/string/strtod (; 51 ;) (param $0 i32) (result f64) (local $1 i32) (local $2 f64) (local $3 i32) @@ -6458,7 +6456,7 @@ call $~lib/rt/pure/__release local.get $2 ) - (func $~lib/string/parseFloat (; 51 ;) (param $0 i32) (result f64) + (func $~lib/string/parseFloat (; 52 ;) (param $0 i32) (result f64) (local $1 f64) local.get $0 call $~lib/rt/pure/__retain @@ -6470,7 +6468,7 @@ call $~lib/rt/pure/__release local.get $1 ) - (func $~lib/string/String#concat (; 52 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/string/String#concat (; 53 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -6526,7 +6524,7 @@ call $~lib/rt/pure/__release local.get $5 ) - (func $~lib/string/String.__concat (; 53 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/string/String._add (; 54 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) local.get $0 call $~lib/rt/pure/__retain @@ -6549,7 +6547,21 @@ call $~lib/rt/pure/__release local.get $2 ) - (func $~lib/string/String.__gt (; 54 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/string/String#_ne (; 55 ;) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $1 + call $~lib/rt/pure/__retain + local.set $1 + local.get $0 + local.get $1 + call $~lib/string/String#_eq + i32.eqz + local.set $2 + local.get $1 + call $~lib/rt/pure/__release + local.get $2 + ) + (func $~lib/string/String._gt (; 56 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -6637,7 +6649,7 @@ call $~lib/rt/pure/__release local.get $2 ) - (func $~lib/string/String.__lt (; 55 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/string/String.__lt (; 57 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -6725,7 +6737,7 @@ call $~lib/rt/pure/__release local.get $2 ) - (func $~lib/string/String.__gte (; 56 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/string/String._ge (; 58 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) local.get $0 call $~lib/rt/pure/__retain @@ -6744,7 +6756,7 @@ call $~lib/rt/pure/__release local.get $2 ) - (func $~lib/string/String.__lte (; 57 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/string/String.__le (; 59 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) local.get $0 call $~lib/rt/pure/__retain @@ -6754,7 +6766,7 @@ local.set $1 local.get $0 local.get $1 - call $~lib/string/String.__gt + call $~lib/string/String._gt i32.eqz local.set $2 local.get $0 @@ -6763,7 +6775,7 @@ call $~lib/rt/pure/__release local.get $2 ) - (func $~lib/string/String#repeat (; 58 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/string/String#repeat (; 60 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) local.get $0 @@ -6786,7 +6798,7 @@ if i32.const 10896 i32.const 528 - i32.const 334 + i32.const 268 i32.const 7 call $~lib/builtins/abort unreachable @@ -6831,7 +6843,7 @@ local.get $3 call $~lib/rt/pure/__retain ) - (func $~lib/string/String#replace (; 59 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/string/String#replace (; 61 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -6865,107 +6877,84 @@ local.get $2 local.get $0 local.get $1 - call $~lib/rt/pure/__retain - local.set $6 local.get $0 - call $~lib/rt/pure/__retain - local.set $5 - local.get $6 - i32.eqz - local.get $5 - i32.eqz - i32.or - if (result i32) - local.get $6 - local.get $5 - i32.eq - else - local.get $6 - local.get $5 - call $~lib/string/String.__eq - end - local.set $7 - local.get $5 - call $~lib/rt/pure/__release - local.get $6 - call $~lib/rt/pure/__release - local.get $7 + call $~lib/string/String#_eq select call $~lib/rt/pure/__retain end - local.set $6 + local.set $5 local.get $1 call $~lib/rt/pure/__release local.get $2 call $~lib/rt/pure/__release - local.get $6 + local.get $5 return end local.get $0 local.get $1 i32.const 0 call $~lib/string/String#indexOf - local.set $8 - local.get $8 + local.set $6 + local.get $6 i32.const -1 i32.xor if local.get $2 call $~lib/string/String#get:length - local.set $6 + local.set $5 local.get $3 local.get $4 i32.sub local.set $3 local.get $3 - local.get $6 - i32.add - local.set $5 local.get $5 + i32.add + local.set $7 + local.get $7 if - local.get $5 + local.get $7 i32.const 1 i32.shl i32.const 1 call $~lib/rt/tlsf/__alloc - local.set $7 - local.get $7 - local.get $0 + local.set $8 local.get $8 + local.get $0 + local.get $6 i32.const 1 i32.shl call $~lib/memory/memory.copy - local.get $7 local.get $8 + local.get $6 i32.const 1 i32.shl i32.add local.get $2 - local.get $6 + local.get $5 i32.const 1 i32.shl call $~lib/memory/memory.copy - local.get $7 local.get $8 local.get $6 + local.get $5 i32.add i32.const 1 i32.shl i32.add local.get $0 - local.get $8 + local.get $6 local.get $4 i32.add i32.const 1 i32.shl i32.add local.get $3 - local.get $8 + local.get $6 i32.sub i32.const 1 i32.shl call $~lib/memory/memory.copy - local.get $7 + local.get $8 call $~lib/rt/pure/__retain local.set $9 local.get $1 @@ -6978,14 +6967,14 @@ end local.get $0 call $~lib/rt/pure/__retain - local.set $5 + local.set $7 local.get $1 call $~lib/rt/pure/__release local.get $2 call $~lib/rt/pure/__release - local.get $5 + local.get $7 ) - (func $~lib/rt/tlsf/checkUsedBlock (; 60 ;) (param $0 i32) (result i32) + (func $~lib/rt/tlsf/checkUsedBlock (; 62 ;) (param $0 i32) (result i32) (local $1 i32) local.get $0 i32.const 16 @@ -7031,7 +7020,7 @@ end local.get $1 ) - (func $~lib/rt/tlsf/freeBlock (; 61 ;) (param $0 i32) (param $1 i32) + (func $~lib/rt/tlsf/freeBlock (; 63 ;) (param $0 i32) (param $1 i32) (local $2 i32) local.get $1 i32.load @@ -7047,7 +7036,7 @@ local.get $1 call $~lib/rt/rtrace/onfree ) - (func $~lib/rt/tlsf/reallocateBlock (; 62 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/rt/tlsf/reallocateBlock (; 64 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -7166,7 +7155,7 @@ end local.get $8 ) - (func $~lib/rt/tlsf/__realloc (; 63 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/rt/tlsf/__realloc (; 65 ;) (param $0 i32) (param $1 i32) (result i32) call $~lib/rt/tlsf/maybeInitialize local.get $0 call $~lib/rt/tlsf/checkUsedBlock @@ -7175,7 +7164,7 @@ i32.const 16 i32.add ) - (func $~lib/string/String#replaceAll (; 64 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/string/String#replaceAll (; 66 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -7215,136 +7204,113 @@ local.get $2 local.get $0 local.get $1 - call $~lib/rt/pure/__retain - local.set $6 local.get $0 - call $~lib/rt/pure/__retain - local.set $5 - local.get $6 - i32.eqz - local.get $5 - i32.eqz - i32.or - if (result i32) - local.get $6 - local.get $5 - i32.eq - else - local.get $6 - local.get $5 - call $~lib/string/String.__eq - end - local.set $7 - local.get $5 - call $~lib/rt/pure/__release - local.get $6 - call $~lib/rt/pure/__release - local.get $7 + call $~lib/string/String#_eq select call $~lib/rt/pure/__retain end - local.set $6 + local.set $5 local.get $1 call $~lib/rt/pure/__release local.get $2 call $~lib/rt/pure/__release - local.get $6 + local.get $5 return end local.get $2 call $~lib/string/String#get:length - local.set $8 + local.set $6 local.get $4 i32.eqz if - local.get $8 + local.get $6 i32.eqz if local.get $0 call $~lib/rt/pure/__retain - local.set $6 + local.set $5 local.get $1 call $~lib/rt/pure/__release local.get $2 call $~lib/rt/pure/__release - local.get $6 + local.get $5 return end local.get $3 local.get $3 i32.const 1 i32.add - local.get $8 + local.get $6 i32.mul i32.add i32.const 1 i32.shl i32.const 1 call $~lib/rt/tlsf/__alloc - local.set $6 - local.get $6 + local.set $5 + local.get $5 local.get $2 - local.get $8 + local.get $6 i32.const 1 i32.shl call $~lib/memory/memory.copy - local.get $8 - local.set $5 - i32.const 0 + local.get $6 local.set $7 + i32.const 0 + local.set $8 loop $for-loop|0 - local.get $7 + local.get $8 local.get $3 i32.lt_u local.set $9 local.get $9 if - local.get $6 local.get $5 + local.get $7 local.tee $10 i32.const 1 i32.add - local.set $5 + local.set $7 local.get $10 i32.const 1 i32.shl i32.add local.get $0 - local.get $7 + local.get $8 i32.const 1 i32.shl i32.add i32.load16_u i32.store16 - local.get $6 local.get $5 + local.get $7 i32.const 1 i32.shl i32.add local.get $2 - local.get $8 + local.get $6 i32.const 1 i32.shl call $~lib/memory/memory.copy - local.get $5 - local.get $8 - i32.add - local.set $5 local.get $7 - i32.const 1 + local.get $6 i32.add local.set $7 + local.get $8 + i32.const 1 + i32.add + local.set $8 br $for-loop|0 end end - local.get $6 + local.get $5 call $~lib/rt/pure/__retain - local.set $7 + local.set $8 local.get $1 call $~lib/rt/pure/__release local.get $2 call $~lib/rt/pure/__release - local.get $7 + local.get $8 return end i32.const 0 @@ -7352,20 +7318,20 @@ i32.const 0 local.set $12 local.get $4 - local.get $8 + local.get $6 i32.eq if local.get $3 i32.const 1 i32.shl - local.set $5 - local.get $5 + local.set $7 + local.get $7 i32.const 1 call $~lib/rt/tlsf/__alloc - local.set $6 - local.get $6 - local.get $0 + local.set $5 local.get $5 + local.get $0 + local.get $7 call $~lib/memory/memory.copy loop $while-continue|1 local.get $0 @@ -7375,16 +7341,16 @@ local.tee $12 i32.const -1 i32.xor - local.set $7 - local.get $7 + local.set $8 + local.get $8 if - local.get $6 + local.get $5 local.get $12 i32.const 1 i32.shl i32.add local.get $2 - local.get $8 + local.get $6 i32.const 1 i32.shl call $~lib/memory/memory.copy @@ -7395,14 +7361,14 @@ br $while-continue|1 end end - local.get $6 + local.get $5 call $~lib/rt/pure/__retain - local.set $7 + local.set $8 local.get $1 call $~lib/rt/pure/__release local.get $2 call $~lib/rt/pure/__release - local.get $7 + local.get $8 return end i32.const 0 @@ -7419,8 +7385,8 @@ local.tee $12 i32.const -1 i32.xor - local.set $6 - local.get $6 + local.set $5 + local.get $5 if local.get $13 i32.eqz @@ -7439,20 +7405,20 @@ local.get $15 i32.const 1 i32.shl - local.set $5 + local.set $7 local.get $13 - local.get $5 + local.get $7 i32.const 1 i32.shl call $~lib/rt/tlsf/__realloc local.set $13 - local.get $5 + local.get $7 local.set $15 end local.get $12 local.get $11 i32.sub - local.set $5 + local.set $7 local.get $13 local.get $14 i32.const 1 @@ -7463,12 +7429,12 @@ i32.const 1 i32.shl i32.add - local.get $5 + local.get $7 i32.const 1 i32.shl call $~lib/memory/memory.copy local.get $14 - local.get $5 + local.get $7 i32.add local.set $14 local.get $13 @@ -7477,12 +7443,12 @@ i32.shl i32.add local.get $2 - local.get $8 + local.get $6 i32.const 1 i32.shl call $~lib/memory/memory.copy local.get $14 - local.get $8 + local.get $6 i32.add local.set $14 local.get $12 @@ -7501,21 +7467,21 @@ local.get $15 i32.const 1 i32.shl - local.set $6 + local.set $5 local.get $13 - local.get $6 + local.get $5 i32.const 1 i32.shl call $~lib/rt/tlsf/__realloc local.set $13 - local.get $6 + local.get $5 local.set $15 end local.get $3 local.get $11 i32.sub - local.set $6 - local.get $6 + local.set $5 + local.get $5 if local.get $13 local.get $14 @@ -7527,21 +7493,21 @@ i32.const 1 i32.shl i32.add - local.get $6 + local.get $5 i32.const 1 i32.shl call $~lib/memory/memory.copy end - local.get $6 + local.get $5 local.get $14 i32.add - local.set $6 + local.set $5 local.get $15 - local.get $6 + local.get $5 i32.gt_u if local.get $13 - local.get $6 + local.get $5 i32.const 1 i32.shl call $~lib/rt/tlsf/__realloc @@ -7549,24 +7515,24 @@ end local.get $13 call $~lib/rt/pure/__retain - local.set $7 + local.set $8 local.get $1 call $~lib/rt/pure/__release local.get $2 call $~lib/rt/pure/__release - local.get $7 + local.get $8 return end local.get $0 call $~lib/rt/pure/__retain - local.set $6 + local.set $5 local.get $1 call $~lib/rt/pure/__release local.get $2 call $~lib/rt/pure/__release - local.get $6 + local.get $5 ) - (func $~lib/string/String#slice (; 65 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/string/String#slice (; 67 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -7655,7 +7621,7 @@ local.get $6 call $~lib/rt/pure/__retain ) - (func $~lib/string/String#substr (; 66 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/string/String#substr (; 68 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -7729,7 +7695,7 @@ local.get $9 call $~lib/rt/pure/__retain ) - (func $~lib/string/String#substring (; 67 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/string/String#substring (; 69 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -7836,7 +7802,7 @@ local.get $11 call $~lib/rt/pure/__retain ) - (func $~lib/rt/__allocBuffer (; 68 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/rt/__allocBuffer (; 70 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $0 local.get $1 @@ -7851,7 +7817,7 @@ end local.get $3 ) - (func $~lib/rt/__allocArray (; 69 ;) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (func $~lib/rt/__allocArray (; 71 ;) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) (local $4 i32) (local $5 i32) (local $6 i32) @@ -7883,7 +7849,7 @@ i32.store offset=12 local.get $4 ) - (func $~lib/memory/memory.fill (; 70 ;) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/memory/memory.fill (; 72 ;) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -8092,7 +8058,7 @@ end end ) - (func $~lib/array/ensureSize (; 71 ;) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/array/ensureSize (; 73 ;) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -8154,7 +8120,7 @@ i32.store offset=8 end ) - (func $~lib/array/Array<~lib/string/String>#push (; 72 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array<~lib/string/String>#push (; 74 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -8190,7 +8156,7 @@ call $~lib/rt/pure/__release local.get $4 ) - (func $~lib/string/String#split (; 73 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/string/String#split (; 75 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -8495,11 +8461,11 @@ call $~lib/rt/pure/__release local.get $3 ) - (func $~lib/array/Array<~lib/string/String>#get:length (; 74 ;) (param $0 i32) (result i32) + (func $~lib/array/Array<~lib/string/String>#get:length (; 76 ;) (param $0 i32) (result i32) local.get $0 i32.load offset=12 ) - (func $~lib/array/Array<~lib/string/String>#__unchecked_get (; 75 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array<~lib/string/String>#__unchecked_get (; 77 ;) (param $0 i32) (param $1 i32) (result i32) local.get $0 i32.load offset=4 local.get $1 @@ -8509,7 +8475,7 @@ i32.load call $~lib/rt/pure/__retain ) - (func $~lib/array/Array<~lib/string/String>#__get (; 76 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array<~lib/string/String>#__get (; 78 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) local.get $1 local.get $0 @@ -8541,7 +8507,7 @@ end local.get $2 ) - (func $~lib/util/number/decimalCount32 (; 77 ;) (param $0 i32) (result i32) + (func $~lib/util/number/decimalCount32 (; 79 ;) (param $0 i32) (result i32) local.get $0 i32.const 100000 i32.lt_u @@ -8596,7 +8562,7 @@ end unreachable ) - (func $~lib/util/number/utoa32_lut (; 78 ;) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/util/number/utoa32_lut (; 80 ;) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -8736,7 +8702,7 @@ i32.store16 end ) - (func $~lib/util/number/itoa32 (; 79 ;) (param $0 i32) (result i32) + (func $~lib/util/number/itoa32 (; 81 ;) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -8790,7 +8756,7 @@ local.get $3 call $~lib/rt/pure/__retain ) - (func $~lib/util/number/utoa32 (; 80 ;) (param $0 i32) (result i32) + (func $~lib/util/number/utoa32 (; 82 ;) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -8824,7 +8790,7 @@ local.get $2 call $~lib/rt/pure/__retain ) - (func $~lib/util/number/decimalCount64High (; 81 ;) (param $0 i64) (result i32) + (func $~lib/util/number/decimalCount64High (; 83 ;) (param $0 i64) (result i32) local.get $0 i64.const 1000000000000000 i64.lt_u @@ -8883,7 +8849,7 @@ end unreachable ) - (func $~lib/util/number/utoa64_lut (; 82 ;) (param $0 i32) (param $1 i64) (param $2 i32) + (func $~lib/util/number/utoa64_lut (; 84 ;) (param $0 i32) (param $1 i64) (param $2 i32) (local $3 i32) (local $4 i64) (local $5 i32) @@ -9006,7 +8972,7 @@ local.get $2 call $~lib/util/number/utoa32_lut ) - (func $~lib/util/number/utoa64 (; 83 ;) (param $0 i64) (result i32) + (func $~lib/util/number/utoa64 (; 85 ;) (param $0 i64) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -9072,7 +9038,7 @@ local.get $1 call $~lib/rt/pure/__retain ) - (func $~lib/util/number/itoa64 (; 84 ;) (param $0 i64) (result i32) + (func $~lib/util/number/itoa64 (; 86 ;) (param $0 i64) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -9161,7 +9127,7 @@ local.get $2 call $~lib/rt/pure/__retain ) - (func $~lib/util/number/genDigits (; 85 ;) (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 (; 87 ;) (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) @@ -9664,7 +9630,7 @@ end unreachable ) - (func $~lib/util/number/prettify (; 86 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/util/number/prettify (; 88 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -9981,7 +9947,7 @@ end unreachable ) - (func $~lib/util/number/dtoa_core (; 87 ;) (param $0 i32) (param $1 f64) (result i32) + (func $~lib/util/number/dtoa_core (; 89 ;) (param $0 i32) (param $1 f64) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -10407,13 +10373,13 @@ local.get $2 i32.add ) - (func $~lib/rt/tlsf/__free (; 88 ;) (param $0 i32) + (func $~lib/rt/tlsf/__free (; 90 ;) (param $0 i32) call $~lib/rt/tlsf/maybeInitialize local.get $0 call $~lib/rt/tlsf/checkUsedBlock call $~lib/rt/tlsf/freeBlock ) - (func $~lib/util/number/dtoa (; 89 ;) (param $0 f64) (result i32) + (func $~lib/util/number/dtoa (; 91 ;) (param $0 f64) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -10474,7 +10440,7 @@ call $~lib/rt/tlsf/__free local.get $3 ) - (func $start:std/string (; 90 ;) + (func $start:std/string (; 92 ;) (local $0 i32) (local $1 i32) (local $2 i32) @@ -10507,10 +10473,10 @@ (local $29 i32) (local $30 i32) (local $31 i32) - (local $32 i32) + (local $32 f64) (local $33 i32) (local $34 i32) - (local $35 f64) + (local $35 i32) (local $36 i32) (local $37 i32) (local $38 i32) @@ -10687,9 +10653,6 @@ (local $209 i32) (local $210 i32) (local $211 i32) - (local $212 i32) - (local $213 i32) - (local $214 i32) global.get $std/string/str i32.const 32 i32.eq @@ -10703,70 +10666,20 @@ unreachable end i32.const 128 - call $~lib/rt/pure/__retain - local.set $1 i32.const 128 - call $~lib/rt/pure/__retain - local.set $0 - local.get $1 + call $~lib/string/String#_eq i32.eqz - local.get $0 - i32.eqz - i32.or - if (result i32) - local.get $1 - local.get $0 - i32.eq - else - local.get $1 - local.get $0 - call $~lib/string/String.__eq - end - local.set $2 - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $2 - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 10 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 208 - call $~lib/rt/pure/__retain - local.set $0 - i32.const 208 - call $~lib/rt/pure/__retain - local.set $2 - local.get $0 - i32.eqz - local.get $2 - i32.eqz - i32.or - if (result i32) - local.get $0 - local.get $2 - i32.eq - else - local.get $0 - local.get $2 - call $~lib/string/String.__eq - end - local.set $1 - local.get $2 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - i32.const 0 - i32.ne + if + i32.const 0 + i32.const 80 + i32.const 10 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 208 + i32.const 208 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -10777,33 +10690,8 @@ unreachable end i32.const 240 - call $~lib/rt/pure/__retain - local.set $2 i32.const 240 - call $~lib/rt/pure/__retain - local.set $1 - local.get $2 - i32.eqz - local.get $1 - i32.eqz - i32.or - if (result i32) - local.get $2 - local.get $1 - i32.eq - else - local.get $2 - local.get $1 - call $~lib/string/String.__eq - end - local.set $0 - local.get $1 - call $~lib/rt/pure/__release - local.get $2 - call $~lib/rt/pure/__release - local.get $0 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -10841,21 +10729,7 @@ unreachable end i32.const 272 - call $~lib/rt/pure/__retain - local.set $0 - local.get $0 - i32.eqz - if (result i32) - i32.const 1 - else - local.get $0 - call $~lib/string/String#get:length - i32.eqz - end - local.set $2 - local.get $0 - call $~lib/rt/pure/__release - local.get $2 + call $~lib/string/String#_not i32.eqz i32.const 0 i32.eq @@ -10869,21 +10743,7 @@ unreachable end i32.const 288 - call $~lib/rt/pure/__retain - local.set $1 - local.get $1 - i32.eqz - if (result i32) - i32.const 1 - else - local.get $1 - call $~lib/string/String#get:length - i32.eqz - end - local.set $0 - local.get $1 - call $~lib/rt/pure/__release - local.get $0 + call $~lib/string/String#_not i32.eqz i32.const 1 i32.eq @@ -10897,21 +10757,7 @@ unreachable end i32.const 320 - call $~lib/rt/pure/__retain - local.set $2 - local.get $2 - i32.eqz - if (result i32) - i32.const 1 - else - local.get $2 - call $~lib/string/String#get:length - i32.eqz - end - local.set $1 - local.get $2 - call $~lib/rt/pure/__release - local.get $1 + call $~lib/string/String#_not i32.eqz i32.const 1 i32.eq @@ -10929,34 +10775,9 @@ i32.const 0 i32.const 0 call $~lib/string/String.fromCharCode|trampoline - local.tee $2 - call $~lib/rt/pure/__retain - local.set $1 + local.tee $0 i32.const 288 - call $~lib/rt/pure/__retain - local.set $0 - local.get $1 - i32.eqz - local.get $0 - i32.eqz - i32.or - if (result i32) - local.get $1 - local.get $0 - i32.eq - else - local.get $1 - local.get $0 - call $~lib/string/String.__eq - end - local.set $3 - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $3 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -10972,33 +10793,8 @@ i32.const 0 call $~lib/string/String.fromCharCode|trampoline local.tee $1 - call $~lib/rt/pure/__retain - local.set $0 i32.const 464 - call $~lib/rt/pure/__retain - local.set $3 - local.get $0 - i32.eqz - local.get $3 - i32.eqz - i32.or - if (result i32) - local.get $0 - local.get $3 - i32.eq - else - local.get $0 - local.get $3 - call $~lib/string/String.__eq - end - local.set $4 - local.get $3 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - local.get $4 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -11013,34 +10809,9 @@ i32.const 65590 i32.const 0 call $~lib/string/String.fromCharCode|trampoline - local.tee $0 - call $~lib/rt/pure/__retain - local.set $3 + local.tee $2 i32.const 464 - call $~lib/rt/pure/__retain - local.set $4 - local.get $3 - i32.eqz - local.get $4 - i32.eqz - i32.or - if (result i32) - local.get $3 - local.get $4 - i32.eq - else - local.get $3 - local.get $4 - call $~lib/string/String.__eq - end - local.set $5 - local.get $4 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $5 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -11054,33 +10825,8 @@ i32.const 57088 call $~lib/string/String.fromCharCode local.tee $3 - call $~lib/rt/pure/__retain - local.set $4 i32.const 496 - call $~lib/rt/pure/__retain - local.set $5 - local.get $4 - i32.eqz - local.get $5 - i32.eqz - i32.or - if (result i32) - local.get $4 - local.get $5 - i32.eq - else - local.get $4 - local.get $5 - call $~lib/string/String.__eq - end - local.set $6 - local.get $5 - call $~lib/rt/pure/__release - local.get $4 - call $~lib/rt/pure/__release - local.get $6 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -11093,33 +10839,8 @@ i32.const 0 call $~lib/string/String.fromCodePoint local.tee $4 - call $~lib/rt/pure/__retain - local.set $5 i32.const 288 - call $~lib/rt/pure/__retain - local.set $6 - local.get $5 - i32.eqz - local.get $6 - i32.eqz - i32.or - if (result i32) - local.get $5 - local.get $6 - i32.eq - else - local.get $5 - local.get $6 - call $~lib/string/String.__eq - end - local.set $7 - local.get $6 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - local.get $7 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -11132,33 +10853,8 @@ i32.const 54 call $~lib/string/String.fromCodePoint local.tee $5 - call $~lib/rt/pure/__retain - local.set $6 i32.const 464 - call $~lib/rt/pure/__retain - local.set $7 - local.get $6 - i32.eqz - local.get $7 - i32.eqz - i32.or - if (result i32) - local.get $6 - local.get $7 - i32.eq - else - local.get $6 - local.get $7 - call $~lib/string/String.__eq - end - local.set $8 - local.get $7 - call $~lib/rt/pure/__release - local.get $6 - call $~lib/rt/pure/__release - local.get $8 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -11171,33 +10867,8 @@ i32.const 119558 call $~lib/string/String.fromCodePoint local.tee $6 - call $~lib/rt/pure/__retain - local.set $7 i32.const 576 - call $~lib/rt/pure/__retain - local.set $8 - local.get $7 - i32.eqz - local.get $8 - i32.eqz - i32.or - if (result i32) - local.get $7 - local.get $8 - i32.eq - else - local.get $7 - local.get $8 - call $~lib/string/String.__eq - end - local.set $9 - local.get $8 - call $~lib/rt/pure/__release - local.get $7 - call $~lib/rt/pure/__release - local.get $9 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -11251,33 +10922,8 @@ i32.const 704 call $~lib/string/String#padStart local.tee $7 - call $~lib/rt/pure/__retain - local.set $8 global.get $std/string/str - call $~lib/rt/pure/__retain - local.set $9 - local.get $8 - i32.eqz - local.get $9 - i32.eqz - i32.or - if (result i32) - local.get $8 - local.get $9 - i32.eq - else - local.get $8 - local.get $9 - call $~lib/string/String.__eq - end - local.set $10 - local.get $9 - call $~lib/rt/pure/__release - local.get $8 - call $~lib/rt/pure/__release - local.get $10 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -11292,33 +10938,8 @@ i32.const 704 call $~lib/string/String#padStart local.tee $8 - call $~lib/rt/pure/__retain - local.set $9 global.get $std/string/str - call $~lib/rt/pure/__retain - local.set $10 - local.get $9 - i32.eqz - local.get $10 - i32.eqz - i32.or - if (result i32) - local.get $9 - local.get $10 - i32.eq - else - local.get $9 - local.get $10 - call $~lib/string/String.__eq - end - local.set $11 - local.get $10 - call $~lib/rt/pure/__release - local.get $9 - call $~lib/rt/pure/__release - local.get $11 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -11333,33 +10954,8 @@ i32.const 704 call $~lib/string/String#padStart local.tee $9 - call $~lib/rt/pure/__retain - local.set $10 i32.const 736 - call $~lib/rt/pure/__retain - local.set $11 - local.get $10 - i32.eqz - local.get $11 - i32.eqz - i32.or - if (result i32) - local.get $10 - local.get $11 - i32.eq - else - local.get $10 - local.get $11 - call $~lib/string/String.__eq - end - local.set $12 - local.get $11 - call $~lib/rt/pure/__release - local.get $10 - call $~lib/rt/pure/__release - local.get $12 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -11374,33 +10970,8 @@ i32.const 272 call $~lib/string/String#padStart local.tee $10 - call $~lib/rt/pure/__retain - local.set $11 i32.const 272 - call $~lib/rt/pure/__retain - local.set $12 - local.get $11 - i32.eqz - local.get $12 - i32.eqz - i32.or - if (result i32) - local.get $11 - local.get $12 - i32.eq - else - local.get $11 - local.get $12 - call $~lib/string/String.__eq - end - local.set $13 - local.get $12 - call $~lib/rt/pure/__release - local.get $11 - call $~lib/rt/pure/__release - local.get $13 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -11415,33 +10986,8 @@ i32.const 272 call $~lib/string/String#padStart local.tee $11 - call $~lib/rt/pure/__retain - local.set $12 i32.const 320 - call $~lib/rt/pure/__retain - local.set $13 - local.get $12 - i32.eqz - local.get $13 - i32.eqz - i32.or - if (result i32) - local.get $12 - local.get $13 - i32.eq - else - local.get $12 - local.get $13 - call $~lib/string/String.__eq - end - local.set $14 - local.get $13 - call $~lib/rt/pure/__release - local.get $12 - call $~lib/rt/pure/__release - local.get $14 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -11456,33 +11002,8 @@ i32.const 704 call $~lib/string/String#padStart local.tee $12 - call $~lib/rt/pure/__retain - local.set $13 i32.const 800 - call $~lib/rt/pure/__retain - local.set $14 - local.get $13 - i32.eqz - local.get $14 - i32.eqz - i32.or - if (result i32) - local.get $13 - local.get $14 - i32.eq - else - local.get $13 - local.get $14 - call $~lib/string/String.__eq - end - local.set $15 - local.get $14 - call $~lib/rt/pure/__release - local.get $13 - call $~lib/rt/pure/__release - local.get $15 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -11497,33 +11018,8 @@ i32.const 832 call $~lib/string/String#padStart local.tee $13 - call $~lib/rt/pure/__retain - local.set $14 i32.const 864 - call $~lib/rt/pure/__retain - local.set $15 - local.get $14 - i32.eqz - local.get $15 - i32.eqz - i32.or - if (result i32) - local.get $14 - local.get $15 - i32.eq - else - local.get $14 - local.get $15 - call $~lib/string/String.__eq - end - local.set $16 - local.get $15 - call $~lib/rt/pure/__release - local.get $14 - call $~lib/rt/pure/__release - local.get $16 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -11538,33 +11034,8 @@ i32.const 832 call $~lib/string/String#padStart local.tee $14 - call $~lib/rt/pure/__retain - local.set $15 i32.const 896 - call $~lib/rt/pure/__retain - local.set $16 - local.get $15 - i32.eqz - local.get $16 - i32.eqz - i32.or - if (result i32) - local.get $15 - local.get $16 - i32.eq - else - local.get $15 - local.get $16 - call $~lib/string/String.__eq - end - local.set $17 - local.get $16 - call $~lib/rt/pure/__release - local.get $15 - call $~lib/rt/pure/__release - local.get $17 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -11579,33 +11050,8 @@ i32.const 704 call $~lib/string/String#padEnd local.tee $15 - call $~lib/rt/pure/__retain - local.set $16 global.get $std/string/str - call $~lib/rt/pure/__retain - local.set $17 - local.get $16 - i32.eqz - local.get $17 - i32.eqz - i32.or - if (result i32) - local.get $16 - local.get $17 - i32.eq - else - local.get $16 - local.get $17 - call $~lib/string/String.__eq - end - local.set $18 - local.get $17 - call $~lib/rt/pure/__release - local.get $16 - call $~lib/rt/pure/__release - local.get $18 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -11620,33 +11066,8 @@ i32.const 704 call $~lib/string/String#padEnd local.tee $16 - call $~lib/rt/pure/__retain - local.set $17 global.get $std/string/str - call $~lib/rt/pure/__retain - local.set $18 - local.get $17 - i32.eqz - local.get $18 - i32.eqz - i32.or - if (result i32) - local.get $17 - local.get $18 - i32.eq - else - local.get $17 - local.get $18 - call $~lib/string/String.__eq - end - local.set $19 - local.get $18 - call $~lib/rt/pure/__release - local.get $17 - call $~lib/rt/pure/__release - local.get $19 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -11661,33 +11082,8 @@ i32.const 704 call $~lib/string/String#padEnd local.tee $17 - call $~lib/rt/pure/__retain - local.set $18 i32.const 736 - call $~lib/rt/pure/__retain - local.set $19 - local.get $18 - i32.eqz - local.get $19 - i32.eqz - i32.or - if (result i32) - local.get $18 - local.get $19 - i32.eq - else - local.get $18 - local.get $19 - call $~lib/string/String.__eq - end - local.set $20 - local.get $19 - call $~lib/rt/pure/__release - local.get $18 - call $~lib/rt/pure/__release - local.get $20 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -11702,33 +11098,8 @@ i32.const 272 call $~lib/string/String#padEnd local.tee $18 - call $~lib/rt/pure/__retain - local.set $19 i32.const 272 - call $~lib/rt/pure/__retain - local.set $20 - local.get $19 - i32.eqz - local.get $20 - i32.eqz - i32.or - if (result i32) - local.get $19 - local.get $20 - i32.eq - else - local.get $19 - local.get $20 - call $~lib/string/String.__eq - end - local.set $21 - local.get $20 - call $~lib/rt/pure/__release - local.get $19 - call $~lib/rt/pure/__release - local.get $21 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -11743,33 +11114,8 @@ i32.const 272 call $~lib/string/String#padEnd local.tee $19 - call $~lib/rt/pure/__retain - local.set $20 i32.const 320 - call $~lib/rt/pure/__retain - local.set $21 - local.get $20 - i32.eqz - local.get $21 - i32.eqz - i32.or - if (result i32) - local.get $20 - local.get $21 - i32.eq - else - local.get $20 - local.get $21 - call $~lib/string/String.__eq - end - local.set $22 - local.get $21 - call $~lib/rt/pure/__release - local.get $20 - call $~lib/rt/pure/__release - local.get $22 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -11784,33 +11130,8 @@ i32.const 704 call $~lib/string/String#padEnd local.tee $20 - call $~lib/rt/pure/__retain - local.set $21 i32.const 928 - call $~lib/rt/pure/__retain - local.set $22 - local.get $21 - i32.eqz - local.get $22 - i32.eqz - i32.or - if (result i32) - local.get $21 - local.get $22 - i32.eq - else - local.get $21 - local.get $22 - call $~lib/string/String.__eq - end - local.set $23 - local.get $22 - call $~lib/rt/pure/__release - local.get $21 - call $~lib/rt/pure/__release - local.get $23 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -11825,33 +11146,8 @@ i32.const 768 call $~lib/string/String#padEnd local.tee $21 - call $~lib/rt/pure/__retain - local.set $22 i32.const 960 - call $~lib/rt/pure/__retain - local.set $23 - local.get $22 - i32.eqz - local.get $23 - i32.eqz - i32.or - if (result i32) - local.get $22 - local.get $23 - i32.eq - else - local.get $22 - local.get $23 - call $~lib/string/String.__eq - end - local.set $24 - local.get $23 - call $~lib/rt/pure/__release - local.get $22 - call $~lib/rt/pure/__release - local.get $24 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -11866,33 +11162,8 @@ i32.const 768 call $~lib/string/String#padEnd local.tee $22 - call $~lib/rt/pure/__retain - local.set $23 i32.const 992 - call $~lib/rt/pure/__retain - local.set $24 - local.get $23 - i32.eqz - local.get $24 - i32.eqz - i32.or - if (result i32) - local.get $23 - local.get $24 - i32.eq - else - local.get $23 - local.get $24 - call $~lib/string/String.__eq - end - local.set $25 - local.get $24 - call $~lib/rt/pure/__release - local.get $23 - call $~lib/rt/pure/__release - local.get $25 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -12361,33 +11632,8 @@ i32.const 272 call $~lib/string/String#trimStart local.tee $23 - call $~lib/rt/pure/__retain - local.set $24 i32.const 272 - call $~lib/rt/pure/__retain - local.set $25 - local.get $24 - i32.eqz - local.get $25 - i32.eqz - i32.or - if (result i32) - local.get $24 - local.get $25 - i32.eq - else - local.get $24 - local.get $25 - call $~lib/string/String.__eq - end - local.set $26 - local.get $25 - call $~lib/rt/pure/__release - local.get $24 - call $~lib/rt/pure/__release - local.get $26 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -12400,33 +11646,8 @@ i32.const 1280 call $~lib/string/String#trimStart local.tee $24 - call $~lib/rt/pure/__retain - local.set $25 i32.const 1280 - call $~lib/rt/pure/__retain - local.set $26 - local.get $25 - i32.eqz - local.get $26 - i32.eqz - i32.or - if (result i32) - local.get $25 - local.get $26 - i32.eq - else - local.get $25 - local.get $26 - call $~lib/string/String.__eq - end - local.set $27 - local.get $26 - call $~lib/rt/pure/__release - local.get $25 - call $~lib/rt/pure/__release - local.get $27 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -12439,33 +11660,8 @@ i32.const 1312 call $~lib/string/String#trimStart local.tee $25 - call $~lib/rt/pure/__retain - local.set $26 i32.const 1360 - call $~lib/rt/pure/__retain - local.set $27 - local.get $26 - i32.eqz - local.get $27 - i32.eqz - i32.or - if (result i32) - local.get $26 - local.get $27 - i32.eq - else - local.get $26 - local.get $27 - call $~lib/string/String.__eq - end - local.set $28 - local.get $27 - call $~lib/rt/pure/__release - local.get $26 - call $~lib/rt/pure/__release - local.get $28 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -12478,33 +11674,8 @@ i32.const 272 call $~lib/string/String#trimEnd local.tee $26 - call $~lib/rt/pure/__retain - local.set $27 i32.const 272 - call $~lib/rt/pure/__retain - local.set $28 - local.get $27 - i32.eqz - local.get $28 - i32.eqz - i32.or - if (result i32) - local.get $27 - local.get $28 - i32.eq - else - local.get $27 - local.get $28 - call $~lib/string/String.__eq - end - local.set $29 - local.get $28 - call $~lib/rt/pure/__release - local.get $27 - call $~lib/rt/pure/__release - local.get $29 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -12517,33 +11688,8 @@ i32.const 1280 call $~lib/string/String#trimEnd local.tee $27 - call $~lib/rt/pure/__retain - local.set $28 i32.const 1280 - call $~lib/rt/pure/__retain - local.set $29 - local.get $28 - i32.eqz - local.get $29 - i32.eqz - i32.or - if (result i32) - local.get $28 - local.get $29 - i32.eq - else - local.get $28 - local.get $29 - call $~lib/string/String.__eq - end - local.set $30 - local.get $29 - call $~lib/rt/pure/__release - local.get $28 - call $~lib/rt/pure/__release - local.get $30 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -12556,33 +11702,8 @@ i32.const 1312 call $~lib/string/String#trimEnd local.tee $28 - call $~lib/rt/pure/__retain - local.set $29 i32.const 1392 - call $~lib/rt/pure/__retain - local.set $30 - local.get $29 - i32.eqz - local.get $30 - i32.eqz - i32.or - if (result i32) - local.get $29 - local.get $30 - i32.eq - else - local.get $29 - local.get $30 - call $~lib/string/String.__eq - end - local.set $31 - local.get $30 - call $~lib/rt/pure/__release - local.get $29 - call $~lib/rt/pure/__release - local.get $31 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -12595,33 +11716,8 @@ i32.const 272 call $~lib/string/String#trim local.tee $29 - call $~lib/rt/pure/__retain - local.set $30 i32.const 272 - call $~lib/rt/pure/__retain - local.set $31 - local.get $30 - i32.eqz - local.get $31 - i32.eqz - i32.or - if (result i32) - local.get $30 - local.get $31 - i32.eq - else - local.get $30 - local.get $31 - call $~lib/string/String.__eq - end - local.set $32 - local.get $31 - call $~lib/rt/pure/__release - local.get $30 - call $~lib/rt/pure/__release - local.get $32 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -12634,33 +11730,8 @@ i32.const 1280 call $~lib/string/String#trim local.tee $30 - call $~lib/rt/pure/__retain - local.set $31 i32.const 1280 - call $~lib/rt/pure/__retain - local.set $32 - local.get $31 - i32.eqz - local.get $32 - i32.eqz - i32.or - if (result i32) - local.get $31 - local.get $32 - i32.eq - else - local.get $31 - local.get $32 - call $~lib/string/String.__eq - end - local.set $33 - local.get $32 - call $~lib/rt/pure/__release - local.get $31 - call $~lib/rt/pure/__release - local.get $33 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -12673,33 +11744,8 @@ i32.const 1312 call $~lib/string/String#trim local.tee $31 - call $~lib/rt/pure/__retain - local.set $32 i32.const 768 - call $~lib/rt/pure/__retain - local.set $33 - local.get $32 - i32.eqz - local.get $33 - i32.eqz - i32.or - if (result i32) - local.get $32 - local.get $33 - i32.eq - else - local.get $32 - local.get $33 - call $~lib/string/String.__eq - end - local.set $34 - local.get $33 - call $~lib/rt/pure/__release - local.get $32 - call $~lib/rt/pure/__release - local.get $34 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -13196,8 +12242,8 @@ end i32.const 272 call $~lib/string/parseFloat - local.tee $35 - local.get $35 + local.tee $32 + local.get $32 f64.ne i32.eqz if @@ -13899,8 +12945,8 @@ end i32.const 4576 call $~lib/string/parseFloat - local.tee $35 - local.get $35 + local.tee $32 + local.get $32 f64.ne i32.eqz if @@ -13913,8 +12959,8 @@ end i32.const 4608 call $~lib/string/parseFloat - local.tee $35 - local.get $35 + local.tee $32 + local.get $32 f64.ne i32.eqz if @@ -13927,8 +12973,8 @@ end i32.const 4640 call $~lib/string/parseFloat - local.tee $35 - local.get $35 + local.tee $32 + local.get $32 f64.ne i32.eqz if @@ -13941,8 +12987,8 @@ end i32.const 4672 call $~lib/string/parseFloat - local.tee $35 - local.get $35 + local.tee $32 + local.get $32 f64.ne i32.eqz if @@ -13955,8 +13001,8 @@ end i32.const 4704 call $~lib/string/parseFloat - local.tee $35 - local.get $35 + local.tee $32 + local.get $32 f64.ne i32.eqz if @@ -13969,8 +13015,8 @@ end i32.const 4736 call $~lib/string/parseFloat - local.tee $35 - local.get $35 + local.tee $32 + local.get $32 f64.ne i32.eqz if @@ -13983,8 +13029,8 @@ end i32.const 4768 call $~lib/string/parseFloat - local.tee $35 - local.get $35 + local.tee $32 + local.get $32 f64.ne i32.eqz if @@ -13997,8 +13043,8 @@ end i32.const 4800 call $~lib/string/parseFloat - local.tee $35 - local.get $35 + local.tee $32 + local.get $32 f64.ne i32.eqz if @@ -14011,8 +13057,8 @@ end i32.const 4832 call $~lib/string/parseFloat - local.tee $35 - local.get $35 + local.tee $32 + local.get $32 f64.ne i32.eqz if @@ -14025,8 +13071,8 @@ end i32.const 4864 call $~lib/string/parseFloat - local.tee $35 - local.get $35 + local.tee $32 + local.get $32 f64.ne i32.eqz if @@ -14039,8 +13085,8 @@ end i32.const 4896 call $~lib/string/parseFloat - local.tee $35 - local.get $35 + local.tee $32 + local.get $32 f64.ne i32.eqz if @@ -14053,8 +13099,8 @@ end i32.const 4928 call $~lib/string/parseFloat - local.tee $35 - local.get $35 + local.tee $32 + local.get $32 f64.ne i32.eqz if @@ -14067,8 +13113,8 @@ end i32.const 4960 call $~lib/string/parseFloat - local.tee $35 - local.get $35 + local.tee $32 + local.get $32 f64.ne i32.eqz if @@ -14081,8 +13127,8 @@ end i32.const 4992 call $~lib/string/parseFloat - local.tee $35 - local.get $35 + local.tee $32 + local.get $32 f64.ne i32.eqz if @@ -14095,8 +13141,8 @@ end i32.const 5024 call $~lib/string/parseFloat - local.tee $35 - local.get $35 + local.tee $32 + local.get $32 f64.ne i32.eqz if @@ -14109,8 +13155,8 @@ end i32.const 5056 call $~lib/string/parseFloat - local.tee $35 - local.get $35 + local.tee $32 + local.get $32 f64.ne i32.eqz if @@ -14448,8 +13494,8 @@ end i32.const 6192 call $~lib/string/parseFloat - local.tee $35 - local.get $35 + local.tee $32 + local.get $32 f64.ne i32.eqz if @@ -14462,8 +13508,8 @@ end i32.const 6224 call $~lib/string/parseFloat - local.tee $35 - local.get $35 + local.tee $32 + local.get $32 f64.ne i32.eqz if @@ -14476,8 +13522,8 @@ end i32.const 6256 call $~lib/string/parseFloat - local.tee $35 - local.get $35 + local.tee $32 + local.get $32 f64.ne i32.eqz if @@ -14529,16 +13575,16 @@ end i32.const 6864 i32.const 7024 - call $~lib/string/String.__concat - local.tee $32 - i32.const 7184 - call $~lib/string/String.__concat + call $~lib/string/String._add local.tee $33 - i32.const 7344 - call $~lib/string/String.__concat + i32.const 7184 + call $~lib/string/String._add local.tee $34 + i32.const 7344 + call $~lib/string/String._add + local.tee $35 i32.const 7504 - call $~lib/string/String.__concat + call $~lib/string/String._add local.tee $36 call $~lib/string/parseFloat f64.const 1797693134862315708145274e284 @@ -14866,8 +13912,8 @@ end i32.const 10352 call $~lib/string/parseFloat - local.tee $35 - local.get $35 + local.tee $32 + local.get $32 f64.ne i32.eqz if @@ -14893,38 +13939,13 @@ end i32.const 320 i32.const 10416 - call $~lib/string/String.__concat + call $~lib/string/String._add local.tee $37 call $~lib/rt/pure/__retain local.set $38 local.get $38 - call $~lib/rt/pure/__retain - local.set $40 i32.const 10448 - call $~lib/rt/pure/__retain - local.set $39 - local.get $40 - i32.eqz - local.get $39 - i32.eqz - i32.or - if (result i32) - local.get $40 - local.get $39 - i32.eq - else - local.get $40 - local.get $39 - call $~lib/string/String.__eq - end - local.set $41 - local.get $39 - call $~lib/rt/pure/__release - local.get $40 - call $~lib/rt/pure/__release - local.get $41 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -14935,46 +13956,8 @@ unreachable end local.get $38 - call $~lib/rt/pure/__retain - local.set $39 i32.const 320 - call $~lib/rt/pure/__retain - local.set $41 - local.get $39 - call $~lib/rt/pure/__retain - local.set $42 - local.get $41 - call $~lib/rt/pure/__retain - local.set $40 - local.get $42 - i32.eqz - local.get $40 - i32.eqz - i32.or - if (result i32) - local.get $42 - local.get $40 - i32.eq - else - local.get $42 - local.get $40 - call $~lib/string/String.__eq - end - local.set $43 - local.get $40 - call $~lib/rt/pure/__release - local.get $42 - call $~lib/rt/pure/__release - local.get $43 - i32.eqz - local.set $42 - local.get $41 - call $~lib/rt/pure/__release - local.get $39 - call $~lib/rt/pure/__release - local.get $42 - i32.const 0 - i32.ne + call $~lib/string/String#_ne i32.eqz if i32.const 0 @@ -14989,133 +13972,46 @@ local.get $38 call $~lib/rt/pure/__release i32.const 272 - call $~lib/rt/pure/__retain - local.set $40 i32.const 272 - call $~lib/rt/pure/__retain - local.set $43 - local.get $40 + call $~lib/string/String#_eq i32.eqz - local.get $43 + if + i32.const 0 + i32.const 80 + i32.const 316 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $std/string/nullStr + local.tee $37 i32.eqz - i32.or if (result i32) - local.get $40 - local.get $43 - i32.eq + i32.const 1 else - local.get $40 - local.get $43 - call $~lib/string/String.__eq + i32.const 272 + local.get $37 + call $~lib/string/String#_ne end - local.set $38 - local.get $43 - call $~lib/rt/pure/__release - local.get $40 - call $~lib/rt/pure/__release - local.get $38 - i32.const 0 - i32.ne i32.eqz if i32.const 0 i32.const 80 - i32.const 316 + i32.const 317 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 272 - call $~lib/rt/pure/__retain - local.set $41 global.get $std/string/nullStr - call $~lib/rt/pure/__retain - local.set $42 - local.get $41 - call $~lib/rt/pure/__retain - local.set $37 - local.get $42 - call $~lib/rt/pure/__retain - local.set $39 - local.get $37 - i32.eqz - local.get $39 + local.tee $37 i32.eqz - i32.or if (result i32) - local.get $37 - local.get $39 - i32.eq - else - local.get $37 - local.get $39 - call $~lib/string/String.__eq - end - local.set $40 - local.get $39 - call $~lib/rt/pure/__release - local.get $37 - call $~lib/rt/pure/__release - local.get $40 - i32.eqz - local.set $37 - local.get $42 - call $~lib/rt/pure/__release - local.get $41 - call $~lib/rt/pure/__release - local.get $37 - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 317 i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $std/string/nullStr - call $~lib/rt/pure/__retain - local.set $43 - i32.const 272 - call $~lib/rt/pure/__retain - local.set $38 - local.get $43 - call $~lib/rt/pure/__retain - local.set $39 - local.get $38 - call $~lib/rt/pure/__retain - local.set $40 - local.get $39 - i32.eqz - local.get $40 - i32.eqz - i32.or - if (result i32) - local.get $39 - local.get $40 - i32.eq else - local.get $39 - local.get $40 - call $~lib/string/String.__eq + local.get $37 + i32.const 272 + call $~lib/string/String#_ne end - local.set $41 - local.get $40 - call $~lib/rt/pure/__release - local.get $39 - call $~lib/rt/pure/__release - local.get $41 - i32.eqz - local.set $39 - local.get $38 - call $~lib/rt/pure/__release - local.get $43 - call $~lib/rt/pure/__release - local.get $39 - i32.const 0 - i32.ne i32.eqz if i32.const 0 @@ -15126,46 +14022,8 @@ unreachable end i32.const 320 - call $~lib/rt/pure/__retain - local.set $42 i32.const 10416 - call $~lib/rt/pure/__retain - local.set $37 - local.get $42 - call $~lib/rt/pure/__retain - local.set $40 - local.get $37 - call $~lib/rt/pure/__retain - local.set $41 - local.get $40 - i32.eqz - local.get $41 - i32.eqz - i32.or - if (result i32) - local.get $40 - local.get $41 - i32.eq - else - local.get $40 - local.get $41 - call $~lib/string/String.__eq - end - local.set $43 - local.get $41 - call $~lib/rt/pure/__release - local.get $40 - call $~lib/rt/pure/__release - local.get $43 - i32.eqz - local.set $40 - local.get $37 - call $~lib/rt/pure/__release - local.get $42 - call $~lib/rt/pure/__release - local.get $40 - i32.const 0 - i32.ne + call $~lib/string/String#_ne i32.eqz if i32.const 0 @@ -15176,33 +14034,8 @@ unreachable end i32.const 320 - call $~lib/rt/pure/__retain - local.set $38 i32.const 320 - call $~lib/rt/pure/__retain - local.set $39 - local.get $38 - i32.eqz - local.get $39 - i32.eqz - i32.or - if (result i32) - local.get $38 - local.get $39 - i32.eq - else - local.get $38 - local.get $39 - call $~lib/string/String.__eq - end - local.set $42 - local.get $39 - call $~lib/rt/pure/__release - local.get $38 - call $~lib/rt/pure/__release - local.get $42 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -15213,46 +14046,8 @@ unreachable end i32.const 10480 - call $~lib/rt/pure/__retain - local.set $41 i32.const 10512 - call $~lib/rt/pure/__retain - local.set $43 - local.get $41 - call $~lib/rt/pure/__retain - local.set $37 - local.get $43 - call $~lib/rt/pure/__retain - local.set $40 - local.get $37 - i32.eqz - local.get $40 - i32.eqz - i32.or - if (result i32) - local.get $37 - local.get $40 - i32.eq - else - local.get $37 - local.get $40 - call $~lib/string/String.__eq - end - local.set $38 - local.get $40 - call $~lib/rt/pure/__release - local.get $37 - call $~lib/rt/pure/__release - local.get $38 - i32.eqz - local.set $37 - local.get $43 - call $~lib/rt/pure/__release - local.get $41 - call $~lib/rt/pure/__release - local.get $37 - i32.const 0 - i32.ne + call $~lib/string/String#_ne i32.eqz if i32.const 0 @@ -15263,33 +14058,8 @@ unreachable end i32.const 10480 - call $~lib/rt/pure/__retain - local.set $39 i32.const 10480 - call $~lib/rt/pure/__retain - local.set $42 - local.get $39 - i32.eqz - local.get $42 - i32.eqz - i32.or - if (result i32) - local.get $39 - local.get $42 - i32.eq - else - local.get $39 - local.get $42 - call $~lib/string/String.__eq - end - local.set $41 - local.get $42 - call $~lib/rt/pure/__release - local.get $39 - call $~lib/rt/pure/__release - local.get $41 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -15300,46 +14070,8 @@ unreachable end i32.const 10544 - call $~lib/rt/pure/__retain - local.set $40 i32.const 10576 - call $~lib/rt/pure/__retain - local.set $38 - local.get $40 - call $~lib/rt/pure/__retain - local.set $43 - local.get $38 - call $~lib/rt/pure/__retain - local.set $37 - local.get $43 - i32.eqz - local.get $37 - i32.eqz - i32.or - if (result i32) - local.get $43 - local.get $37 - i32.eq - else - local.get $43 - local.get $37 - call $~lib/string/String.__eq - end - local.set $39 - local.get $37 - call $~lib/rt/pure/__release - local.get $43 - call $~lib/rt/pure/__release - local.get $39 - i32.eqz - local.set $43 - local.get $38 - call $~lib/rt/pure/__release - local.get $40 - call $~lib/rt/pure/__release - local.get $43 - i32.const 0 - i32.ne + call $~lib/string/String#_ne i32.eqz if i32.const 0 @@ -15350,46 +14082,8 @@ unreachable end i32.const 10608 - call $~lib/rt/pure/__retain - local.set $42 i32.const 10640 - call $~lib/rt/pure/__retain - local.set $41 - local.get $42 - call $~lib/rt/pure/__retain - local.set $37 - local.get $41 - call $~lib/rt/pure/__retain - local.set $39 - local.get $37 - i32.eqz - local.get $39 - i32.eqz - i32.or - if (result i32) - local.get $37 - local.get $39 - i32.eq - else - local.get $37 - local.get $39 - call $~lib/string/String.__eq - end - local.set $40 - local.get $39 - call $~lib/rt/pure/__release - local.get $37 - call $~lib/rt/pure/__release - local.get $40 - i32.eqz - local.set $37 - local.get $41 - call $~lib/rt/pure/__release - local.get $42 - call $~lib/rt/pure/__release - local.get $37 - i32.const 0 - i32.ne + call $~lib/string/String#_ne i32.eqz if i32.const 0 @@ -15400,33 +14094,8 @@ unreachable end i32.const 10672 - call $~lib/rt/pure/__retain - local.set $38 i32.const 10672 - call $~lib/rt/pure/__retain - local.set $43 - local.get $38 - i32.eqz - local.get $43 - i32.eqz - i32.or - if (result i32) - local.get $38 - local.get $43 - i32.eq - else - local.get $38 - local.get $43 - call $~lib/string/String.__eq - end - local.set $42 - local.get $43 - call $~lib/rt/pure/__release - local.get $38 - call $~lib/rt/pure/__release - local.get $42 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -15437,46 +14106,8 @@ unreachable end i32.const 10672 - call $~lib/rt/pure/__retain - local.set $39 i32.const 10704 - call $~lib/rt/pure/__retain - local.set $40 - local.get $39 - call $~lib/rt/pure/__retain - local.set $41 - local.get $40 - call $~lib/rt/pure/__retain - local.set $37 - local.get $41 - i32.eqz - local.get $37 - i32.eqz - i32.or - if (result i32) - local.get $41 - local.get $37 - i32.eq - else - local.get $41 - local.get $37 - call $~lib/string/String.__eq - end - local.set $38 - local.get $37 - call $~lib/rt/pure/__release - local.get $41 - call $~lib/rt/pure/__release - local.get $38 - i32.eqz - local.set $41 - local.get $40 - call $~lib/rt/pure/__release - local.get $39 - call $~lib/rt/pure/__release - local.get $41 - i32.const 0 - i32.ne + call $~lib/string/String#_ne i32.eqz if i32.const 0 @@ -15487,46 +14118,8 @@ unreachable end i32.const 10736 - call $~lib/rt/pure/__retain - local.set $43 i32.const 10784 - call $~lib/rt/pure/__retain - local.set $42 - local.get $43 - call $~lib/rt/pure/__retain - local.set $37 - local.get $42 - call $~lib/rt/pure/__retain - local.set $38 - local.get $37 - i32.eqz - local.get $38 - i32.eqz - i32.or - if (result i32) - local.get $37 - local.get $38 - i32.eq - else - local.get $37 - local.get $38 - call $~lib/string/String.__eq - end - local.set $39 - local.get $38 - call $~lib/rt/pure/__release - local.get $37 - call $~lib/rt/pure/__release - local.get $39 - i32.eqz - local.set $37 - local.get $42 - call $~lib/rt/pure/__release - local.get $43 - call $~lib/rt/pure/__release - local.get $37 - i32.const 0 - i32.ne + call $~lib/string/String#_ne i32.eqz if i32.const 0 @@ -15538,7 +14131,7 @@ end i32.const 10416 i32.const 320 - call $~lib/string/String.__gt + call $~lib/string/String._gt i32.eqz if i32.const 0 @@ -15550,7 +14143,7 @@ end i32.const 10832 i32.const 320 - call $~lib/string/String.__gt + call $~lib/string/String._gt i32.eqz if i32.const 0 @@ -15562,7 +14155,7 @@ end i32.const 10832 i32.const 10864 - call $~lib/string/String.__gte + call $~lib/string/String._ge i32.eqz if i32.const 0 @@ -15574,7 +14167,7 @@ end i32.const 10832 i32.const 10448 - call $~lib/string/String.__gt + call $~lib/string/String._gt i32.eqz if i32.const 0 @@ -15625,7 +14218,7 @@ end i32.const 768 i32.const 272 - call $~lib/string/String.__gt + call $~lib/string/String._gt i32.eqz if i32.const 0 @@ -15649,7 +14242,7 @@ end i32.const 768 i32.const 272 - call $~lib/string/String.__gte + call $~lib/string/String._ge i32.eqz if i32.const 0 @@ -15661,7 +14254,7 @@ end i32.const 272 i32.const 768 - call $~lib/string/String.__lte + call $~lib/string/String.__le i32.eqz if i32.const 0 @@ -15686,7 +14279,7 @@ end i32.const 272 i32.const 768 - call $~lib/string/String.__gt + call $~lib/string/String._gt i32.eqz i32.eqz if @@ -15712,7 +14305,7 @@ end i32.const 272 i32.const 272 - call $~lib/string/String.__gt + call $~lib/string/String._gt i32.eqz i32.eqz if @@ -15725,7 +14318,7 @@ end i32.const 272 i32.const 272 - call $~lib/string/String.__gte + call $~lib/string/String._ge i32.eqz if i32.const 0 @@ -15737,7 +14330,7 @@ end i32.const 272 i32.const 272 - call $~lib/string/String.__lte + call $~lib/string/String.__le i32.eqz if i32.const 0 @@ -15749,20 +14342,20 @@ end i32.const 65377 call $~lib/string/String.fromCodePoint - local.set $43 + local.set $37 i32.const 55296 call $~lib/string/String.fromCodePoint - local.tee $42 + local.tee $38 i32.const 56322 call $~lib/string/String.fromCodePoint - local.tee $37 - call $~lib/string/String.__concat - local.tee $38 + local.tee $39 + call $~lib/string/String._add + local.tee $40 call $~lib/rt/pure/__retain - local.set $39 - local.get $43 - local.get $39 - call $~lib/string/String.__gt + local.set $41 + local.get $37 + local.get $41 + call $~lib/string/String._gt i32.eqz if i32.const 0 @@ -15772,16 +14365,16 @@ call $~lib/builtins/abort unreachable end - local.get $43 - call $~lib/rt/pure/__release - local.get $42 - call $~lib/rt/pure/__release local.get $37 call $~lib/rt/pure/__release local.get $38 call $~lib/rt/pure/__release local.get $39 call $~lib/rt/pure/__release + local.get $40 + call $~lib/rt/pure/__release + local.get $41 + call $~lib/rt/pure/__release i32.const 832 call $~lib/string/String#get:length i32.const 3 @@ -15791,41 +14384,16 @@ i32.const 0 i32.const 80 i32.const 355 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 272 - i32.const 100 - call $~lib/string/String#repeat - local.tee $39 - call $~lib/rt/pure/__retain - local.set $40 - i32.const 272 - call $~lib/rt/pure/__retain - local.set $41 - local.get $40 - i32.eqz - local.get $41 - i32.eqz - i32.or - if (result i32) - local.get $40 - local.get $41 - i32.eq - else - local.get $40 - local.get $41 - call $~lib/string/String.__eq + i32.const 1 + call $~lib/builtins/abort + unreachable end - local.set $38 - local.get $41 - call $~lib/rt/pure/__release - local.get $40 - call $~lib/rt/pure/__release - local.get $38 - i32.const 0 - i32.ne + i32.const 272 + i32.const 100 + call $~lib/string/String#repeat + local.tee $41 + i32.const 272 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -15839,33 +14407,8 @@ i32.const 0 call $~lib/string/String#repeat local.tee $40 - call $~lib/rt/pure/__retain - local.set $42 i32.const 272 - call $~lib/rt/pure/__retain - local.set $43 - local.get $42 - i32.eqz - local.get $43 - i32.eqz - i32.or - if (result i32) - local.get $42 - local.get $43 - i32.eq - else - local.get $42 - local.get $43 - call $~lib/string/String.__eq - end - local.set $41 - local.get $43 - call $~lib/rt/pure/__release - local.get $42 - call $~lib/rt/pure/__release - local.get $41 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -15878,34 +14421,9 @@ i32.const 320 i32.const 1 call $~lib/string/String#repeat - local.tee $42 - call $~lib/rt/pure/__retain - local.set $38 + local.tee $39 i32.const 320 - call $~lib/rt/pure/__retain - local.set $37 - local.get $38 - i32.eqz - local.get $37 - i32.eqz - i32.or - if (result i32) - local.get $38 - local.get $37 - i32.eq - else - local.get $38 - local.get $37 - call $~lib/string/String.__eq - end - local.set $43 - local.get $37 - call $~lib/rt/pure/__release - local.get $38 - call $~lib/rt/pure/__release - local.get $43 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -15919,33 +14437,8 @@ i32.const 2 call $~lib/string/String#repeat local.tee $38 - call $~lib/rt/pure/__retain - local.set $43 i32.const 10864 - call $~lib/rt/pure/__retain - local.set $41 - local.get $43 - i32.eqz - local.get $41 - i32.eqz - i32.or - if (result i32) - local.get $43 - local.get $41 - i32.eq - else - local.get $43 - local.get $41 - call $~lib/string/String.__eq - end - local.set $37 - local.get $41 - call $~lib/rt/pure/__release - local.get $43 - call $~lib/rt/pure/__release - local.get $37 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -15958,34 +14451,9 @@ i32.const 320 i32.const 3 call $~lib/string/String#repeat - local.tee $43 - call $~lib/rt/pure/__retain - local.set $41 + local.tee $37 i32.const 10944 - call $~lib/rt/pure/__retain - local.set $37 - local.get $41 - i32.eqz - local.get $37 - i32.eqz - i32.or - if (result i32) - local.get $41 - local.get $37 - i32.eq - else - local.get $41 - local.get $37 - call $~lib/string/String.__eq - end - local.set $44 - local.get $37 - call $~lib/rt/pure/__release - local.get $41 - call $~lib/rt/pure/__release - local.get $44 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -15998,34 +14466,9 @@ i32.const 10448 i32.const 4 call $~lib/string/String#repeat - local.tee $41 - call $~lib/rt/pure/__retain - local.set $37 + local.tee $42 i32.const 10976 - call $~lib/rt/pure/__retain - local.set $44 - local.get $37 - i32.eqz - local.get $44 - i32.eqz - i32.or - if (result i32) - local.get $37 - local.get $44 - i32.eq - else - local.get $37 - local.get $44 - call $~lib/string/String.__eq - end - local.set $45 - local.get $44 - call $~lib/rt/pure/__release - local.get $37 - call $~lib/rt/pure/__release - local.get $45 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -16038,34 +14481,9 @@ i32.const 320 i32.const 5 call $~lib/string/String#repeat - local.tee $37 - call $~lib/rt/pure/__retain - local.set $44 + local.tee $43 i32.const 11008 - call $~lib/rt/pure/__retain - local.set $45 - local.get $44 - i32.eqz - local.get $45 - i32.eqz - i32.or - if (result i32) - local.get $44 - local.get $45 - i32.eq - else - local.get $44 - local.get $45 - call $~lib/string/String.__eq - end - local.set $46 - local.get $45 - call $~lib/rt/pure/__release - local.get $44 - call $~lib/rt/pure/__release - local.get $46 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -16079,33 +14497,8 @@ i32.const 6 call $~lib/string/String#repeat local.tee $44 - call $~lib/rt/pure/__retain - local.set $45 i32.const 11040 - call $~lib/rt/pure/__retain - local.set $46 - local.get $45 - i32.eqz - local.get $46 - i32.eqz - i32.or - if (result i32) - local.get $45 - local.get $46 - i32.eq - else - local.get $45 - local.get $46 - call $~lib/string/String.__eq - end - local.set $47 - local.get $46 - call $~lib/rt/pure/__release - local.get $45 - call $~lib/rt/pure/__release - local.get $47 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -16119,33 +14512,8 @@ i32.const 7 call $~lib/string/String#repeat local.tee $45 - call $~lib/rt/pure/__retain - local.set $46 i32.const 11072 - call $~lib/rt/pure/__retain - local.set $47 - local.get $46 - i32.eqz - local.get $47 - i32.eqz - i32.or - if (result i32) - local.get $46 - local.get $47 - i32.eq - else - local.get $46 - local.get $47 - call $~lib/string/String.__eq - end - local.set $48 - local.get $47 - call $~lib/rt/pure/__release - local.get $46 - call $~lib/rt/pure/__release - local.get $48 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -16160,33 +14528,8 @@ i32.const 272 call $~lib/string/String#replace local.tee $46 - call $~lib/rt/pure/__retain - local.set $47 i32.const 272 - call $~lib/rt/pure/__retain - local.set $48 - local.get $47 - i32.eqz - local.get $48 - i32.eqz - i32.or - if (result i32) - local.get $47 - local.get $48 - i32.eq - else - local.get $47 - local.get $48 - call $~lib/string/String.__eq - end - local.set $49 - local.get $48 - call $~lib/rt/pure/__release - local.get $47 - call $~lib/rt/pure/__release - local.get $49 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -16201,33 +14544,8 @@ i32.const 4576 call $~lib/string/String#replace local.tee $47 - call $~lib/rt/pure/__retain - local.set $48 i32.const 4576 - call $~lib/rt/pure/__retain - local.set $49 - local.get $48 - i32.eqz - local.get $49 - i32.eqz - i32.or - if (result i32) - local.get $48 - local.get $49 - i32.eq - else - local.get $48 - local.get $49 - call $~lib/string/String.__eq - end - local.set $50 - local.get $49 - call $~lib/rt/pure/__release - local.get $48 - call $~lib/rt/pure/__release - local.get $50 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -16242,33 +14560,8 @@ i32.const 272 call $~lib/string/String#replace local.tee $48 - call $~lib/rt/pure/__retain - local.set $49 i32.const 272 - call $~lib/rt/pure/__retain - local.set $50 - local.get $49 - i32.eqz - local.get $50 - i32.eqz - i32.or - if (result i32) - local.get $49 - local.get $50 - i32.eq - else - local.get $49 - local.get $50 - call $~lib/string/String.__eq - end - local.set $51 - local.get $50 - call $~lib/rt/pure/__release - local.get $49 - call $~lib/rt/pure/__release - local.get $51 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -16282,34 +14575,9 @@ i32.const 272 i32.const 272 call $~lib/string/String#replace - local.tee $49 - call $~lib/rt/pure/__retain - local.set $50 - i32.const 4576 - call $~lib/rt/pure/__retain - local.set $51 - local.get $50 - i32.eqz - local.get $51 - i32.eqz - i32.or - if (result i32) - local.get $50 - local.get $51 - i32.eq - else - local.get $50 - local.get $51 - call $~lib/string/String.__eq - end - local.set $52 - local.get $51 - call $~lib/rt/pure/__release - local.get $50 - call $~lib/rt/pure/__release - local.get $52 - i32.const 0 - i32.ne + local.tee $49 + i32.const 4576 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -16324,33 +14592,8 @@ i32.const 4576 call $~lib/string/String#replace local.tee $50 - call $~lib/rt/pure/__retain - local.set $51 i32.const 768 - call $~lib/rt/pure/__retain - local.set $52 - local.get $51 - i32.eqz - local.get $52 - i32.eqz - i32.or - if (result i32) - local.get $51 - local.get $52 - i32.eq - else - local.get $51 - local.get $52 - call $~lib/string/String.__eq - end - local.set $53 - local.get $52 - call $~lib/rt/pure/__release - local.get $51 - call $~lib/rt/pure/__release - local.get $53 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -16365,33 +14608,8 @@ i32.const 4576 call $~lib/string/String#replace local.tee $51 - call $~lib/rt/pure/__retain - local.set $52 i32.const 4576 - call $~lib/rt/pure/__retain - local.set $53 - local.get $52 - i32.eqz - local.get $53 - i32.eqz - i32.or - if (result i32) - local.get $52 - local.get $53 - i32.eq - else - local.get $52 - local.get $53 - call $~lib/string/String.__eq - end - local.set $54 - local.get $53 - call $~lib/rt/pure/__release - local.get $52 - call $~lib/rt/pure/__release - local.get $54 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -16406,33 +14624,8 @@ i32.const 4576 call $~lib/string/String#replace local.tee $52 - call $~lib/rt/pure/__retain - local.set $53 i32.const 768 - call $~lib/rt/pure/__retain - local.set $54 - local.get $53 - i32.eqz - local.get $54 - i32.eqz - i32.or - if (result i32) - local.get $53 - local.get $54 - i32.eq - else - local.get $53 - local.get $54 - call $~lib/string/String.__eq - end - local.set $55 - local.get $54 - call $~lib/rt/pure/__release - local.get $53 - call $~lib/rt/pure/__release - local.get $55 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -16447,33 +14640,8 @@ i32.const 10448 call $~lib/string/String#replace local.tee $53 - call $~lib/rt/pure/__retain - local.set $54 i32.const 768 - call $~lib/rt/pure/__retain - local.set $55 - local.get $54 - i32.eqz - local.get $55 - i32.eqz - i32.or - if (result i32) - local.get $54 - local.get $55 - i32.eq - else - local.get $54 - local.get $55 - call $~lib/string/String.__eq - end - local.set $56 - local.get $55 - call $~lib/rt/pure/__release - local.get $54 - call $~lib/rt/pure/__release - local.get $56 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -16488,33 +14656,8 @@ i32.const 4576 call $~lib/string/String#replace local.tee $54 - call $~lib/rt/pure/__retain - local.set $55 i32.const 11136 - call $~lib/rt/pure/__retain - local.set $56 - local.get $55 - i32.eqz - local.get $56 - i32.eqz - i32.or - if (result i32) - local.get $55 - local.get $56 - i32.eq - else - local.get $55 - local.get $56 - call $~lib/string/String.__eq - end - local.set $57 - local.get $56 - call $~lib/rt/pure/__release - local.get $55 - call $~lib/rt/pure/__release - local.get $57 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -16529,33 +14672,8 @@ i32.const 4576 call $~lib/string/String#replace local.tee $55 - call $~lib/rt/pure/__retain - local.set $56 i32.const 11168 - call $~lib/rt/pure/__retain - local.set $57 - local.get $56 - i32.eqz - local.get $57 - i32.eqz - i32.or - if (result i32) - local.get $56 - local.get $57 - i32.eq - else - local.get $56 - local.get $57 - call $~lib/string/String.__eq - end - local.set $58 - local.get $57 - call $~lib/rt/pure/__release - local.get $56 - call $~lib/rt/pure/__release - local.get $58 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -16570,33 +14688,8 @@ i32.const 4576 call $~lib/string/String#replace local.tee $56 - call $~lib/rt/pure/__retain - local.set $57 i32.const 11168 - call $~lib/rt/pure/__retain - local.set $58 - local.get $57 - i32.eqz - local.get $58 - i32.eqz - i32.or - if (result i32) - local.get $57 - local.get $58 - i32.eq - else - local.get $57 - local.get $58 - call $~lib/string/String.__eq - end - local.set $59 - local.get $58 - call $~lib/rt/pure/__release - local.get $57 - call $~lib/rt/pure/__release - local.get $59 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -16611,33 +14704,8 @@ i32.const 11296 call $~lib/string/String#replace local.tee $57 - call $~lib/rt/pure/__retain - local.set $58 i32.const 11328 - call $~lib/rt/pure/__retain - local.set $59 - local.get $58 - i32.eqz - local.get $59 - i32.eqz - i32.or - if (result i32) - local.get $58 - local.get $59 - i32.eq - else - local.get $58 - local.get $59 - call $~lib/string/String.__eq - end - local.set $60 - local.get $59 - call $~lib/rt/pure/__release - local.get $58 - call $~lib/rt/pure/__release - local.get $60 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -16652,33 +14720,8 @@ i32.const 272 call $~lib/string/String#replace local.tee $58 - call $~lib/rt/pure/__retain - local.set $59 i32.const 10448 - call $~lib/rt/pure/__retain - local.set $60 - local.get $59 - i32.eqz - local.get $60 - i32.eqz - i32.or - if (result i32) - local.get $59 - local.get $60 - i32.eq - else - local.get $59 - local.get $60 - call $~lib/string/String.__eq - end - local.set $61 - local.get $60 - call $~lib/rt/pure/__release - local.get $59 - call $~lib/rt/pure/__release - local.get $61 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -16693,33 +14736,8 @@ i32.const 768 call $~lib/string/String#replaceAll local.tee $59 - call $~lib/rt/pure/__retain - local.set $60 i32.const 768 - call $~lib/rt/pure/__retain - local.set $61 - local.get $60 - i32.eqz - local.get $61 - i32.eqz - i32.or - if (result i32) - local.get $60 - local.get $61 - i32.eq - else - local.get $60 - local.get $61 - call $~lib/string/String.__eq - end - local.set $62 - local.get $61 - call $~lib/rt/pure/__release - local.get $60 - call $~lib/rt/pure/__release - local.get $62 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -16734,33 +14752,8 @@ i32.const 4576 call $~lib/string/String#replaceAll local.tee $60 - call $~lib/rt/pure/__retain - local.set $61 i32.const 768 - call $~lib/rt/pure/__retain - local.set $62 - local.get $61 - i32.eqz - local.get $62 - i32.eqz - i32.or - if (result i32) - local.get $61 - local.get $62 - i32.eq - else - local.get $61 - local.get $62 - call $~lib/string/String.__eq - end - local.set $63 - local.get $62 - call $~lib/rt/pure/__release - local.get $61 - call $~lib/rt/pure/__release - local.get $63 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -16775,33 +14768,8 @@ i32.const 4576 call $~lib/string/String#replaceAll local.tee $61 - call $~lib/rt/pure/__retain - local.set $62 i32.const 11296 - call $~lib/rt/pure/__retain - local.set $63 - local.get $62 - i32.eqz - local.get $63 - i32.eqz - i32.or - if (result i32) - local.get $62 - local.get $63 - i32.eq - else - local.get $62 - local.get $63 - call $~lib/string/String.__eq - end - local.set $64 - local.get $63 - call $~lib/rt/pure/__release - local.get $62 - call $~lib/rt/pure/__release - local.get $64 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -16816,33 +14784,8 @@ i32.const 4576 call $~lib/string/String#replaceAll local.tee $62 - call $~lib/rt/pure/__retain - local.set $63 i32.const 11408 - call $~lib/rt/pure/__retain - local.set $64 - local.get $63 - i32.eqz - local.get $64 - i32.eqz - i32.or - if (result i32) - local.get $63 - local.get $64 - i32.eq - else - local.get $63 - local.get $64 - call $~lib/string/String.__eq - end - local.set $65 - local.get $64 - call $~lib/rt/pure/__release - local.get $63 - call $~lib/rt/pure/__release - local.get $65 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -16856,34 +14799,9 @@ i32.const 10448 i32.const 10448 call $~lib/string/String#replaceAll - local.tee $63 - call $~lib/rt/pure/__retain - local.set $64 - i32.const 960 - call $~lib/rt/pure/__retain - local.set $65 - local.get $64 - i32.eqz - local.get $65 - i32.eqz - i32.or - if (result i32) - local.get $64 - local.get $65 - i32.eq - else - local.get $64 - local.get $65 - call $~lib/string/String.__eq - end - local.set $66 - local.get $65 - call $~lib/rt/pure/__release - local.get $64 - call $~lib/rt/pure/__release - local.get $66 - i32.const 0 - i32.ne + local.tee $63 + i32.const 960 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -16898,33 +14816,8 @@ i32.const 11408 call $~lib/string/String#replaceAll local.tee $64 - call $~lib/rt/pure/__retain - local.set $65 i32.const 11472 - call $~lib/rt/pure/__retain - local.set $66 - local.get $65 - i32.eqz - local.get $66 - i32.eqz - i32.or - if (result i32) - local.get $65 - local.get $66 - i32.eq - else - local.get $65 - local.get $66 - call $~lib/string/String.__eq - end - local.set $67 - local.get $66 - call $~lib/rt/pure/__release - local.get $65 - call $~lib/rt/pure/__release - local.get $67 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -16939,33 +14832,8 @@ i32.const 11296 call $~lib/string/String#replaceAll local.tee $65 - call $~lib/rt/pure/__retain - local.set $66 i32.const 11520 - call $~lib/rt/pure/__retain - local.set $67 - local.get $66 - i32.eqz - local.get $67 - i32.eqz - i32.or - if (result i32) - local.get $66 - local.get $67 - i32.eq - else - local.get $66 - local.get $67 - call $~lib/string/String.__eq - end - local.set $68 - local.get $67 - call $~lib/rt/pure/__release - local.get $66 - call $~lib/rt/pure/__release - local.get $68 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -16980,33 +14848,8 @@ i32.const 11296 call $~lib/string/String#replaceAll local.tee $66 - call $~lib/rt/pure/__retain - local.set $67 i32.const 11616 - call $~lib/rt/pure/__retain - local.set $68 - local.get $67 - i32.eqz - local.get $68 - i32.eqz - i32.or - if (result i32) - local.get $67 - local.get $68 - i32.eq - else - local.get $67 - local.get $68 - call $~lib/string/String.__eq - end - local.set $69 - local.get $68 - call $~lib/rt/pure/__release - local.get $67 - call $~lib/rt/pure/__release - local.get $69 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -17021,33 +14864,8 @@ i32.const 4576 call $~lib/string/String#replaceAll local.tee $67 - call $~lib/rt/pure/__retain - local.set $68 i32.const 768 - call $~lib/rt/pure/__retain - local.set $69 - local.get $68 - i32.eqz - local.get $69 - i32.eqz - i32.or - if (result i32) - local.get $68 - local.get $69 - i32.eq - else - local.get $68 - local.get $69 - call $~lib/string/String.__eq - end - local.set $70 - local.get $69 - call $~lib/rt/pure/__release - local.get $68 - call $~lib/rt/pure/__release - local.get $70 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -17062,33 +14880,8 @@ i32.const 11296 call $~lib/string/String#replaceAll local.tee $68 - call $~lib/rt/pure/__retain - local.set $69 i32.const 1248 - call $~lib/rt/pure/__retain - local.set $70 - local.get $69 - i32.eqz - local.get $70 - i32.eqz - i32.or - if (result i32) - local.get $69 - local.get $70 - i32.eq - else - local.get $69 - local.get $70 - call $~lib/string/String.__eq - end - local.set $71 - local.get $70 - call $~lib/rt/pure/__release - local.get $69 - call $~lib/rt/pure/__release - local.get $71 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -17103,33 +14896,8 @@ i32.const 4576 call $~lib/string/String#replaceAll local.tee $69 - call $~lib/rt/pure/__retain - local.set $70 i32.const 11712 - call $~lib/rt/pure/__retain - local.set $71 - local.get $70 - i32.eqz - local.get $71 - i32.eqz - i32.or - if (result i32) - local.get $70 - local.get $71 - i32.eq - else - local.get $70 - local.get $71 - call $~lib/string/String.__eq - end - local.set $72 - local.get $71 - call $~lib/rt/pure/__release - local.get $70 - call $~lib/rt/pure/__release - local.get $72 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -17144,33 +14912,8 @@ i32.const 4576 call $~lib/string/String#replaceAll local.tee $70 - call $~lib/rt/pure/__retain - local.set $71 i32.const 4576 - call $~lib/rt/pure/__retain - local.set $72 - local.get $71 - i32.eqz - local.get $72 - i32.eqz - i32.or - if (result i32) - local.get $71 - local.get $72 - i32.eq - else - local.get $71 - local.get $72 - call $~lib/string/String.__eq - end - local.set $73 - local.get $72 - call $~lib/rt/pure/__release - local.get $71 - call $~lib/rt/pure/__release - local.get $73 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -17185,33 +14928,8 @@ i32.const 4576 call $~lib/string/String#replaceAll local.tee $71 - call $~lib/rt/pure/__retain - local.set $72 i32.const 11744 - call $~lib/rt/pure/__retain - local.set $73 - local.get $72 - i32.eqz - local.get $73 - i32.eqz - i32.or - if (result i32) - local.get $72 - local.get $73 - i32.eq - else - local.get $72 - local.get $73 - call $~lib/string/String.__eq - end - local.set $74 - local.get $73 - call $~lib/rt/pure/__release - local.get $72 - call $~lib/rt/pure/__release - local.get $74 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -17226,33 +14944,8 @@ i32.const 272 call $~lib/string/String#replaceAll local.tee $72 - call $~lib/rt/pure/__retain - local.set $73 i32.const 272 - call $~lib/rt/pure/__retain - local.set $74 - local.get $73 - i32.eqz - local.get $74 - i32.eqz - i32.or - if (result i32) - local.get $73 - local.get $74 - i32.eq - else - local.get $73 - local.get $74 - call $~lib/string/String.__eq - end - local.set $75 - local.get $74 - call $~lib/rt/pure/__release - local.get $73 - call $~lib/rt/pure/__release - local.get $75 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -17267,33 +14960,8 @@ i32.const 4576 call $~lib/string/String#replaceAll local.tee $73 - call $~lib/rt/pure/__retain - local.set $74 i32.const 4576 - call $~lib/rt/pure/__retain - local.set $75 - local.get $74 - i32.eqz - local.get $75 - i32.eqz - i32.or - if (result i32) - local.get $74 - local.get $75 - i32.eq - else - local.get $74 - local.get $75 - call $~lib/string/String.__eq - end - local.set $76 - local.get $75 - call $~lib/rt/pure/__release - local.get $74 - call $~lib/rt/pure/__release - local.get $76 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -17308,33 +14976,8 @@ i32.const 272 call $~lib/string/String#replaceAll local.tee $74 - call $~lib/rt/pure/__retain - local.set $75 i32.const 272 - call $~lib/rt/pure/__retain - local.set $76 - local.get $75 - i32.eqz - local.get $76 - i32.eqz - i32.or - if (result i32) - local.get $75 - local.get $76 - i32.eq - else - local.get $75 - local.get $76 - call $~lib/string/String.__eq - end - local.set $77 - local.get $76 - call $~lib/rt/pure/__release - local.get $75 - call $~lib/rt/pure/__release - local.get $77 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -17349,33 +14992,8 @@ i32.const 272 call $~lib/string/String#replaceAll local.tee $75 - call $~lib/rt/pure/__retain - local.set $76 i32.const 4576 - call $~lib/rt/pure/__retain - local.set $77 - local.get $76 - i32.eqz - local.get $77 - i32.eqz - i32.or - if (result i32) - local.get $76 - local.get $77 - i32.eq - else - local.get $76 - local.get $77 - call $~lib/string/String.__eq - end - local.set $78 - local.get $77 - call $~lib/rt/pure/__release - local.get $76 - call $~lib/rt/pure/__release - local.get $78 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -17390,74 +15008,24 @@ i32.const 4608 call $~lib/string/String#replaceAll local.tee $76 - call $~lib/rt/pure/__retain - local.set $77 i32.const 4608 - call $~lib/rt/pure/__retain - local.set $78 - local.get $77 - i32.eqz - local.get $78 - i32.eqz - i32.or - if (result i32) - local.get $77 - local.get $78 - i32.eq - else - local.get $77 - local.get $78 - call $~lib/string/String.__eq - end - local.set $79 - local.get $78 - call $~lib/rt/pure/__release - local.get $77 - call $~lib/rt/pure/__release - local.get $79 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 i32.const 80 i32.const 400 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 768 - i32.const 1216 - i32.const 4608 - call $~lib/string/String#replaceAll - local.tee $77 - call $~lib/rt/pure/__retain - local.set $78 - i32.const 768 - call $~lib/rt/pure/__retain - local.set $79 - local.get $78 - i32.eqz - local.get $79 - i32.eqz - i32.or - if (result i32) - local.get $78 - local.get $79 - i32.eq - else - local.get $78 - local.get $79 - call $~lib/string/String.__eq + i32.const 1 + call $~lib/builtins/abort + unreachable end - local.set $80 - local.get $79 - call $~lib/rt/pure/__release - local.get $78 - call $~lib/rt/pure/__release - local.get $80 - i32.const 0 - i32.ne + i32.const 768 + i32.const 1216 + i32.const 4608 + call $~lib/string/String#replaceAll + local.tee $77 + i32.const 768 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -17472,33 +15040,8 @@ i32.const 4576 call $~lib/string/String#replaceAll local.tee $78 - call $~lib/rt/pure/__retain - local.set $79 i32.const 11776 - call $~lib/rt/pure/__retain - local.set $80 - local.get $79 - i32.eqz - local.get $80 - i32.eqz - i32.or - if (result i32) - local.get $79 - local.get $80 - i32.eq - else - local.get $79 - local.get $80 - call $~lib/string/String.__eq - end - local.set $81 - local.get $80 - call $~lib/rt/pure/__release - local.get $79 - call $~lib/rt/pure/__release - local.get $81 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -17513,33 +15056,8 @@ i32.const 272 call $~lib/string/String#replaceAll local.tee $79 - call $~lib/rt/pure/__retain - local.set $80 i32.const 768 - call $~lib/rt/pure/__retain - local.set $81 - local.get $80 - i32.eqz - local.get $81 - i32.eqz - i32.or - if (result i32) - local.get $80 - local.get $81 - i32.eq - else - local.get $80 - local.get $81 - call $~lib/string/String.__eq - end - local.set $82 - local.get $81 - call $~lib/rt/pure/__release - local.get $80 - call $~lib/rt/pure/__release - local.get $82 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -17550,43 +15068,18 @@ unreachable end i32.const 11808 - local.set $82 + local.set $80 global.get $std/string/str call $~lib/rt/pure/__release - local.get $82 + local.get $80 global.set $std/string/str global.get $std/string/str i32.const 0 i32.const 2147483647 call $~lib/string/String#slice - local.tee $82 - call $~lib/rt/pure/__retain - local.set $80 + local.tee $80 i32.const 11808 - call $~lib/rt/pure/__retain - local.set $81 - local.get $80 - i32.eqz - local.get $81 - i32.eqz - i32.or - if (result i32) - local.get $80 - local.get $81 - i32.eq - else - local.get $80 - local.get $81 - call $~lib/string/String.__eq - end - local.set $83 - local.get $81 - call $~lib/rt/pure/__release - local.get $80 - call $~lib/rt/pure/__release - local.get $83 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -17600,34 +15093,9 @@ i32.const -1 i32.const 2147483647 call $~lib/string/String#slice - local.tee $80 - call $~lib/rt/pure/__retain - local.set $81 + local.tee $81 i32.const 11856 - call $~lib/rt/pure/__retain - local.set $83 - local.get $81 - i32.eqz - local.get $83 - i32.eqz - i32.or - if (result i32) - local.get $81 - local.get $83 - i32.eq - else - local.get $81 - local.get $83 - call $~lib/string/String.__eq - end - local.set $84 - local.get $83 - call $~lib/rt/pure/__release - local.get $81 - call $~lib/rt/pure/__release - local.get $84 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -17641,34 +15109,9 @@ i32.const -5 i32.const 2147483647 call $~lib/string/String#slice - local.tee $81 - call $~lib/rt/pure/__retain - local.set $83 + local.tee $82 i32.const 11888 - call $~lib/rt/pure/__retain - local.set $84 - local.get $83 - i32.eqz - local.get $84 - i32.eqz - i32.or - if (result i32) - local.get $83 - local.get $84 - i32.eq - else - local.get $83 - local.get $84 - call $~lib/string/String.__eq - end - local.set $85 - local.get $84 - call $~lib/rt/pure/__release - local.get $83 - call $~lib/rt/pure/__release - local.get $85 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -17683,33 +15126,8 @@ i32.const 7 call $~lib/string/String#slice local.tee $83 - call $~lib/rt/pure/__retain - local.set $84 i32.const 11920 - call $~lib/rt/pure/__retain - local.set $85 - local.get $84 - i32.eqz - local.get $85 - i32.eqz - i32.or - if (result i32) - local.get $84 - local.get $85 - i32.eq - else - local.get $84 - local.get $85 - call $~lib/string/String.__eq - end - local.set $86 - local.get $85 - call $~lib/rt/pure/__release - local.get $84 - call $~lib/rt/pure/__release - local.get $86 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -17724,33 +15142,8 @@ i32.const -6 call $~lib/string/String#slice local.tee $84 - call $~lib/rt/pure/__retain - local.set $85 i32.const 11952 - call $~lib/rt/pure/__retain - local.set $86 - local.get $85 - i32.eqz - local.get $86 - i32.eqz - i32.or - if (result i32) - local.get $85 - local.get $86 - i32.eq - else - local.get $85 - local.get $86 - call $~lib/string/String.__eq - end - local.set $87 - local.get $86 - call $~lib/rt/pure/__release - local.get $85 - call $~lib/rt/pure/__release - local.get $87 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -17765,33 +15158,8 @@ i32.const 3 call $~lib/string/String#slice local.tee $85 - call $~lib/rt/pure/__retain - local.set $86 i32.const 272 - call $~lib/rt/pure/__retain - local.set $87 - local.get $86 - i32.eqz - local.get $87 - i32.eqz - i32.or - if (result i32) - local.get $86 - local.get $87 - i32.eq - else - local.get $86 - local.get $87 - call $~lib/string/String.__eq - end - local.set $88 - local.get $87 - call $~lib/rt/pure/__release - local.get $86 - call $~lib/rt/pure/__release - local.get $88 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -17806,33 +15174,8 @@ i32.const -1 call $~lib/string/String#slice local.tee $86 - call $~lib/rt/pure/__retain - local.set $87 i32.const 11984 - call $~lib/rt/pure/__retain - local.set $88 - local.get $87 - i32.eqz - local.get $88 - i32.eqz - i32.or - if (result i32) - local.get $87 - local.get $88 - i32.eq - else - local.get $87 - local.get $88 - call $~lib/string/String.__eq - end - local.set $89 - local.get $88 - call $~lib/rt/pure/__release - local.get $87 - call $~lib/rt/pure/__release - local.get $89 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -17847,33 +15190,8 @@ i32.const 2147483647 call $~lib/string/String#substr local.tee $87 - call $~lib/rt/pure/__retain - local.set $88 i32.const 11808 - call $~lib/rt/pure/__retain - local.set $89 - local.get $88 - i32.eqz - local.get $89 - i32.eqz - i32.or - if (result i32) - local.get $88 - local.get $89 - i32.eq - else - local.get $88 - local.get $89 - call $~lib/string/String.__eq - end - local.set $90 - local.get $89 - call $~lib/rt/pure/__release - local.get $88 - call $~lib/rt/pure/__release - local.get $90 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -17888,74 +15206,24 @@ i32.const 2147483647 call $~lib/string/String#substr local.tee $88 - call $~lib/rt/pure/__retain - local.set $89 i32.const 11856 - call $~lib/rt/pure/__retain - local.set $90 - local.get $89 - i32.eqz - local.get $90 - i32.eqz - i32.or - if (result i32) - local.get $89 - local.get $90 - i32.eq - else - local.get $89 - local.get $90 - call $~lib/string/String.__eq - end - local.set $91 - local.get $90 - call $~lib/rt/pure/__release - local.get $89 - call $~lib/rt/pure/__release - local.get $91 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 i32.const 80 - i32.const 416 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $std/string/str - i32.const -5 - i32.const 2147483647 - call $~lib/string/String#substr - local.tee $89 - call $~lib/rt/pure/__retain - local.set $90 - i32.const 11888 - call $~lib/rt/pure/__retain - local.set $91 - local.get $90 - i32.eqz - local.get $91 - i32.eqz - i32.or - if (result i32) - local.get $90 - local.get $91 - i32.eq - else - local.get $90 - local.get $91 - call $~lib/string/String.__eq - end - local.set $92 - local.get $91 - call $~lib/rt/pure/__release - local.get $90 - call $~lib/rt/pure/__release - local.get $92 - i32.const 0 - i32.ne + i32.const 416 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $std/string/str + i32.const -5 + i32.const 2147483647 + call $~lib/string/String#substr + local.tee $89 + i32.const 11888 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -17970,33 +15238,8 @@ i32.const 7 call $~lib/string/String#substr local.tee $90 - call $~lib/rt/pure/__retain - local.set $91 i32.const 12032 - call $~lib/rt/pure/__retain - local.set $92 - local.get $91 - i32.eqz - local.get $92 - i32.eqz - i32.or - if (result i32) - local.get $91 - local.get $92 - i32.eq - else - local.get $91 - local.get $92 - call $~lib/string/String.__eq - end - local.set $93 - local.get $92 - call $~lib/rt/pure/__release - local.get $91 - call $~lib/rt/pure/__release - local.get $93 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -18011,33 +15254,8 @@ i32.const -6 call $~lib/string/String#substr local.tee $91 - call $~lib/rt/pure/__retain - local.set $92 i32.const 272 - call $~lib/rt/pure/__retain - local.set $93 - local.get $92 - i32.eqz - local.get $93 - i32.eqz - i32.or - if (result i32) - local.get $92 - local.get $93 - i32.eq - else - local.get $92 - local.get $93 - call $~lib/string/String.__eq - end - local.set $94 - local.get $93 - call $~lib/rt/pure/__release - local.get $92 - call $~lib/rt/pure/__release - local.get $94 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -18052,33 +15270,8 @@ i32.const 3 call $~lib/string/String#substr local.tee $92 - call $~lib/rt/pure/__retain - local.set $93 i32.const 12064 - call $~lib/rt/pure/__retain - local.set $94 - local.get $93 - i32.eqz - local.get $94 - i32.eqz - i32.or - if (result i32) - local.get $93 - local.get $94 - i32.eq - else - local.get $93 - local.get $94 - call $~lib/string/String.__eq - end - local.set $95 - local.get $94 - call $~lib/rt/pure/__release - local.get $93 - call $~lib/rt/pure/__release - local.get $95 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -18093,33 +15286,8 @@ i32.const -1 call $~lib/string/String#substr local.tee $93 - call $~lib/rt/pure/__retain - local.set $94 i32.const 272 - call $~lib/rt/pure/__retain - local.set $95 - local.get $94 - i32.eqz - local.get $95 - i32.eqz - i32.or - if (result i32) - local.get $94 - local.get $95 - i32.eq - else - local.get $94 - local.get $95 - call $~lib/string/String.__eq - end - local.set $96 - local.get $95 - call $~lib/rt/pure/__release - local.get $94 - call $~lib/rt/pure/__release - local.get $96 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -18134,33 +15302,8 @@ i32.const 100 call $~lib/string/String#substr local.tee $94 - call $~lib/rt/pure/__retain - local.set $95 i32.const 11808 - call $~lib/rt/pure/__retain - local.set $96 - local.get $95 - i32.eqz - local.get $96 - i32.eqz - i32.or - if (result i32) - local.get $95 - local.get $96 - i32.eq - else - local.get $95 - local.get $96 - call $~lib/string/String.__eq - end - local.set $97 - local.get $96 - call $~lib/rt/pure/__release - local.get $95 - call $~lib/rt/pure/__release - local.get $97 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -18175,33 +15318,8 @@ i32.const 4 call $~lib/string/String#substr local.tee $95 - call $~lib/rt/pure/__retain - local.set $96 i32.const 12096 - call $~lib/rt/pure/__retain - local.set $97 - local.get $96 - i32.eqz - local.get $97 - i32.eqz - i32.or - if (result i32) - local.get $96 - local.get $97 - i32.eq - else - local.get $96 - local.get $97 - call $~lib/string/String.__eq - end - local.set $98 - local.get $97 - call $~lib/rt/pure/__release - local.get $96 - call $~lib/rt/pure/__release - local.get $98 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -18216,33 +15334,8 @@ i32.const -3 call $~lib/string/String#substr local.tee $96 - call $~lib/rt/pure/__retain - local.set $97 i32.const 272 - call $~lib/rt/pure/__retain - local.set $98 - local.get $97 - i32.eqz - local.get $98 - i32.eqz - i32.or - if (result i32) - local.get $97 - local.get $98 - i32.eq - else - local.get $97 - local.get $98 - call $~lib/string/String.__eq - end - local.set $99 - local.get $98 - call $~lib/rt/pure/__release - local.get $97 - call $~lib/rt/pure/__release - local.get $99 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -18257,33 +15350,8 @@ i32.const 2147483647 call $~lib/string/String#substring local.tee $97 - call $~lib/rt/pure/__retain - local.set $98 i32.const 11808 - call $~lib/rt/pure/__retain - local.set $99 - local.get $98 - i32.eqz - local.get $99 - i32.eqz - i32.or - if (result i32) - local.get $98 - local.get $99 - i32.eq - else - local.get $98 - local.get $99 - call $~lib/string/String.__eq - end - local.set $100 - local.get $99 - call $~lib/rt/pure/__release - local.get $98 - call $~lib/rt/pure/__release - local.get $100 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -18298,33 +15366,8 @@ i32.const 2147483647 call $~lib/string/String#substring local.tee $98 - call $~lib/rt/pure/__retain - local.set $99 i32.const 11808 - call $~lib/rt/pure/__retain - local.set $100 - local.get $99 - i32.eqz - local.get $100 - i32.eqz - i32.or - if (result i32) - local.get $99 - local.get $100 - i32.eq - else - local.get $99 - local.get $100 - call $~lib/string/String.__eq - end - local.set $101 - local.get $100 - call $~lib/rt/pure/__release - local.get $99 - call $~lib/rt/pure/__release - local.get $101 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -18339,33 +15382,8 @@ i32.const 2147483647 call $~lib/string/String#substring local.tee $99 - call $~lib/rt/pure/__retain - local.set $100 i32.const 11808 - call $~lib/rt/pure/__retain - local.set $101 - local.get $100 - i32.eqz - local.get $101 - i32.eqz - i32.or - if (result i32) - local.get $100 - local.get $101 - i32.eq - else - local.get $100 - local.get $101 - call $~lib/string/String.__eq - end - local.set $102 - local.get $101 - call $~lib/rt/pure/__release - local.get $100 - call $~lib/rt/pure/__release - local.get $102 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -18380,33 +15398,8 @@ i32.const 7 call $~lib/string/String#substring local.tee $100 - call $~lib/rt/pure/__retain - local.set $101 i32.const 11920 - call $~lib/rt/pure/__retain - local.set $102 - local.get $101 - i32.eqz - local.get $102 - i32.eqz - i32.or - if (result i32) - local.get $101 - local.get $102 - i32.eq - else - local.get $101 - local.get $102 - call $~lib/string/String.__eq - end - local.set $103 - local.get $102 - call $~lib/rt/pure/__release - local.get $101 - call $~lib/rt/pure/__release - local.get $103 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -18421,74 +15414,24 @@ i32.const -6 call $~lib/string/String#substring local.tee $101 - call $~lib/rt/pure/__retain - local.set $102 i32.const 272 - call $~lib/rt/pure/__retain - local.set $103 - local.get $102 - i32.eqz - local.get $103 - i32.eqz - i32.or - if (result i32) - local.get $102 - local.get $103 - i32.eq - else - local.get $102 - local.get $103 - call $~lib/string/String.__eq - end - local.set $104 - local.get $103 - call $~lib/rt/pure/__release - local.get $102 - call $~lib/rt/pure/__release - local.get $104 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 i32.const 80 - i32.const 430 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $std/string/str - i32.const 4 - i32.const 3 - call $~lib/string/String#substring - local.tee $102 - call $~lib/rt/pure/__retain - local.set $103 - i32.const 12128 - call $~lib/rt/pure/__retain - local.set $104 - local.get $103 - i32.eqz - local.get $104 - i32.eqz - i32.or - if (result i32) - local.get $103 - local.get $104 - i32.eq - else - local.get $103 - local.get $104 - call $~lib/string/String.__eq - end - local.set $105 - local.get $104 - call $~lib/rt/pure/__release - local.get $103 - call $~lib/rt/pure/__release - local.get $105 - i32.const 0 - i32.ne + i32.const 430 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $std/string/str + i32.const 4 + i32.const 3 + call $~lib/string/String#substring + local.tee $102 + i32.const 12128 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -18503,33 +15446,8 @@ i32.const -1 call $~lib/string/String#substring local.tee $103 - call $~lib/rt/pure/__retain - local.set $104 i32.const 272 - call $~lib/rt/pure/__retain - local.set $105 - local.get $104 - i32.eqz - local.get $105 - i32.eqz - i32.or - if (result i32) - local.get $104 - local.get $105 - i32.eq - else - local.get $104 - local.get $105 - call $~lib/string/String.__eq - end - local.set $106 - local.get $105 - call $~lib/rt/pure/__release - local.get $104 - call $~lib/rt/pure/__release - local.get $106 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -18544,33 +15462,8 @@ i32.const 100 call $~lib/string/String#substring local.tee $104 - call $~lib/rt/pure/__retain - local.set $105 i32.const 11808 - call $~lib/rt/pure/__retain - local.set $106 - local.get $105 - i32.eqz - local.get $106 - i32.eqz - i32.or - if (result i32) - local.get $105 - local.get $106 - i32.eq - else - local.get $105 - local.get $106 - call $~lib/string/String.__eq - end - local.set $107 - local.get $106 - call $~lib/rt/pure/__release - local.get $105 - call $~lib/rt/pure/__release - local.get $107 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -18585,33 +15478,8 @@ i32.const 4 call $~lib/string/String#substring local.tee $105 - call $~lib/rt/pure/__retain - local.set $106 i32.const 272 - call $~lib/rt/pure/__retain - local.set $107 - local.get $106 - i32.eqz - local.get $107 - i32.eqz - i32.or - if (result i32) - local.get $106 - local.get $107 - i32.eq - else - local.get $106 - local.get $107 - call $~lib/string/String.__eq - end - local.set $108 - local.get $107 - call $~lib/rt/pure/__release - local.get $106 - call $~lib/rt/pure/__release - local.get $108 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -18626,33 +15494,8 @@ i32.const -3 call $~lib/string/String#substring local.tee $106 - call $~lib/rt/pure/__retain - local.set $107 i32.const 1248 - call $~lib/rt/pure/__retain - local.set $108 - local.get $107 - i32.eqz - local.get $108 - i32.eqz - i32.or - if (result i32) - local.get $107 - local.get $108 - i32.eq - else - local.get $107 - local.get $108 - call $~lib/string/String.__eq - end - local.set $109 - local.get $108 - call $~lib/rt/pure/__release - local.get $107 - call $~lib/rt/pure/__release - local.get $109 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -18668,10 +15511,10 @@ i32.const 0 global.get $~lib/builtins/i32.MAX_VALUE call $~lib/string/String#split - local.set $109 + local.set $108 local.get $107 call $~lib/rt/pure/__release - local.get $109 + local.get $108 local.set $107 local.get $107 call $~lib/array/Array<~lib/string/String>#get:length @@ -18681,38 +15524,13 @@ local.get $107 i32.const 0 call $~lib/array/Array<~lib/string/String>#__get - local.tee $109 - call $~lib/rt/pure/__retain - local.set $110 + local.tee $108 i32.const 272 - call $~lib/rt/pure/__retain - local.set $108 - local.get $110 - i32.eqz - local.get $108 - i32.eqz - i32.or - if (result i32) - local.get $110 - local.get $108 - i32.eq - else - local.get $110 - local.get $108 - call $~lib/string/String.__eq - end - local.set $111 + call $~lib/string/String#_eq + local.set $109 local.get $108 call $~lib/rt/pure/__release - local.get $110 - call $~lib/rt/pure/__release - local.get $111 - i32.const 0 - i32.ne - local.set $110 local.get $109 - call $~lib/rt/pure/__release - local.get $110 else i32.const 0 end @@ -18731,10 +15549,10 @@ i32.const 272 global.get $~lib/builtins/i32.MAX_VALUE call $~lib/string/String#split - local.set $111 + local.set $109 local.get $107 call $~lib/rt/pure/__release - local.get $111 + local.get $109 local.set $107 local.get $107 call $~lib/array/Array<~lib/string/String>#get:length @@ -18767,33 +15585,8 @@ i32.const 0 call $~lib/array/Array<~lib/string/String>#__get local.tee $108 - call $~lib/rt/pure/__retain - local.set $109 i32.const 272 - call $~lib/rt/pure/__retain - local.set $110 - local.get $109 - i32.eqz - local.get $110 - i32.eqz - i32.or - if (result i32) - local.get $109 - local.get $110 - i32.eq - else - local.get $109 - local.get $110 - call $~lib/string/String.__eq - end - local.set $111 - local.get $110 - call $~lib/rt/pure/__release - local.get $109 - call $~lib/rt/pure/__release - local.get $111 - i32.const 0 - i32.ne + call $~lib/string/String#_eq local.set $109 local.get $108 call $~lib/rt/pure/__release @@ -18816,10 +15609,10 @@ i32.const 4768 global.get $~lib/builtins/i32.MAX_VALUE call $~lib/string/String#split - local.set $111 + local.set $109 local.get $107 call $~lib/rt/pure/__release - local.get $111 + local.get $109 local.set $107 local.get $107 call $~lib/array/Array<~lib/string/String>#get:length @@ -18829,38 +15622,13 @@ local.get $107 i32.const 0 call $~lib/array/Array<~lib/string/String>#__get - local.tee $111 - call $~lib/rt/pure/__retain - local.set $109 + local.tee $109 i32.const 12384 - call $~lib/rt/pure/__retain - local.set $110 - local.get $109 - i32.eqz - local.get $110 - i32.eqz - i32.or - if (result i32) - local.get $109 - local.get $110 - i32.eq - else - local.get $109 - local.get $110 - call $~lib/string/String.__eq - end + call $~lib/string/String#_eq local.set $108 - local.get $110 - call $~lib/rt/pure/__release local.get $109 call $~lib/rt/pure/__release local.get $108 - i32.const 0 - i32.ne - local.set $109 - local.get $111 - call $~lib/rt/pure/__release - local.get $109 else i32.const 0 end @@ -18893,33 +15661,8 @@ i32.const 0 call $~lib/array/Array<~lib/string/String>#__get local.tee $108 - call $~lib/rt/pure/__retain - local.set $109 i32.const 320 - call $~lib/rt/pure/__retain - local.set $110 - local.get $109 - i32.eqz - local.get $110 - i32.eqz - i32.or - if (result i32) - local.get $109 - local.get $110 - i32.eq - else - local.get $109 - local.get $110 - call $~lib/string/String.__eq - end - local.set $111 - local.get $110 - call $~lib/rt/pure/__release - local.get $109 - call $~lib/rt/pure/__release - local.get $111 - i32.const 0 - i32.ne + call $~lib/string/String#_eq local.set $109 local.get $108 call $~lib/rt/pure/__release @@ -18934,37 +15677,12 @@ i32.const 1 call $~lib/array/Array<~lib/string/String>#__get local.tee $108 - call $~lib/rt/pure/__retain - local.set $110 i32.const 10416 - call $~lib/rt/pure/__retain - local.set $111 - local.get $110 - i32.eqz - local.get $111 - i32.eqz - i32.or - if (result i32) - local.get $110 - local.get $111 - i32.eq - else - local.get $110 - local.get $111 - call $~lib/string/String.__eq - end + call $~lib/string/String#_eq local.set $109 - local.get $111 - call $~lib/rt/pure/__release - local.get $110 - call $~lib/rt/pure/__release - local.get $109 - i32.const 0 - i32.ne - local.set $110 local.get $108 call $~lib/rt/pure/__release - local.get $110 + local.get $109 else i32.const 0 end @@ -18975,37 +15693,12 @@ i32.const 2 call $~lib/array/Array<~lib/string/String>#__get local.tee $108 - call $~lib/rt/pure/__retain - local.set $111 i32.const 11264 - call $~lib/rt/pure/__retain + call $~lib/string/String#_eq local.set $109 - local.get $111 - i32.eqz - local.get $109 - i32.eqz - i32.or - if (result i32) - local.get $111 - local.get $109 - i32.eq - else - local.get $111 - local.get $109 - call $~lib/string/String.__eq - end - local.set $110 - local.get $109 - call $~lib/rt/pure/__release - local.get $111 - call $~lib/rt/pure/__release - local.get $110 - i32.const 0 - i32.ne - local.set $111 local.get $108 call $~lib/rt/pure/__release - local.get $111 + local.get $109 else i32.const 0 end @@ -19024,10 +15717,10 @@ i32.const 12448 global.get $~lib/builtins/i32.MAX_VALUE call $~lib/string/String#split - local.set $110 + local.set $109 local.get $107 call $~lib/rt/pure/__release - local.get $110 + local.get $109 local.set $107 local.get $107 call $~lib/array/Array<~lib/string/String>#get:length @@ -19037,79 +15730,13 @@ local.get $107 i32.const 0 call $~lib/array/Array<~lib/string/String>#__get - local.tee $110 - call $~lib/rt/pure/__retain - local.set $111 + local.tee $109 i32.const 320 - call $~lib/rt/pure/__retain - local.set $109 - local.get $111 - i32.eqz - local.get $109 - i32.eqz - i32.or - if (result i32) - local.get $111 - local.get $109 - i32.eq - else - local.get $111 - local.get $109 - call $~lib/string/String.__eq - end - local.set $108 - local.get $109 - call $~lib/rt/pure/__release - local.get $111 - call $~lib/rt/pure/__release - local.get $108 - i32.const 0 - i32.ne - local.set $111 - local.get $110 - call $~lib/rt/pure/__release - local.get $111 - else - i32.const 0 - end - i32.const 0 - i32.ne - if (result i32) - local.get $107 - i32.const 1 - call $~lib/array/Array<~lib/string/String>#__get - local.tee $110 - call $~lib/rt/pure/__retain - local.set $109 - i32.const 10416 - call $~lib/rt/pure/__retain + call $~lib/string/String#_eq local.set $108 local.get $109 - i32.eqz - local.get $108 - i32.eqz - i32.or - if (result i32) - local.get $109 - local.get $108 - i32.eq - else - local.get $109 - local.get $108 - call $~lib/string/String.__eq - end - local.set $111 - local.get $108 - call $~lib/rt/pure/__release - local.get $109 - call $~lib/rt/pure/__release - local.get $111 - i32.const 0 - i32.ne - local.set $109 - local.get $110 call $~lib/rt/pure/__release - local.get $109 + local.get $108 else i32.const 0 end @@ -19117,38 +15744,29 @@ i32.ne if (result i32) local.get $107 - i32.const 2 + i32.const 1 call $~lib/array/Array<~lib/string/String>#__get - local.tee $110 - call $~lib/rt/pure/__retain + local.tee $109 + i32.const 10416 + call $~lib/string/String#_eq local.set $108 - i32.const 11264 - call $~lib/rt/pure/__retain - local.set $111 - local.get $108 - i32.eqz - local.get $111 - i32.eqz - i32.or - if (result i32) - local.get $108 - local.get $111 - i32.eq - else - local.get $108 - local.get $111 - call $~lib/string/String.__eq - end - local.set $109 - local.get $111 + local.get $109 call $~lib/rt/pure/__release local.get $108 - call $~lib/rt/pure/__release - local.get $109 + else i32.const 0 - i32.ne + end + i32.const 0 + i32.ne + if (result i32) + local.get $107 + i32.const 2 + call $~lib/array/Array<~lib/string/String>#__get + local.tee $109 + i32.const 11264 + call $~lib/string/String#_eq local.set $108 - local.get $110 + local.get $109 call $~lib/rt/pure/__release local.get $108 else @@ -19169,10 +15787,10 @@ i32.const 1024 global.get $~lib/builtins/i32.MAX_VALUE call $~lib/string/String#split - local.set $109 + local.set $108 local.get $107 call $~lib/rt/pure/__release - local.get $109 + local.get $108 local.set $107 local.get $107 call $~lib/array/Array<~lib/string/String>#get:length @@ -19182,38 +15800,13 @@ local.get $107 i32.const 0 call $~lib/array/Array<~lib/string/String>#__get - local.tee $109 - call $~lib/rt/pure/__retain - local.set $108 + local.tee $108 i32.const 320 - call $~lib/rt/pure/__retain - local.set $111 - local.get $108 - i32.eqz - local.get $111 - i32.eqz - i32.or - if (result i32) - local.get $108 - local.get $111 - i32.eq - else - local.get $108 - local.get $111 - call $~lib/string/String.__eq - end - local.set $110 - local.get $111 - call $~lib/rt/pure/__release + call $~lib/string/String#_eq + local.set $109 local.get $108 call $~lib/rt/pure/__release - local.get $110 - i32.const 0 - i32.ne - local.set $108 local.get $109 - call $~lib/rt/pure/__release - local.get $108 else i32.const 0 end @@ -19223,38 +15816,13 @@ local.get $107 i32.const 1 call $~lib/array/Array<~lib/string/String>#__get - local.tee $109 - call $~lib/rt/pure/__retain - local.set $111 + local.tee $108 i32.const 10416 - call $~lib/rt/pure/__retain - local.set $110 - local.get $111 - i32.eqz - local.get $110 - i32.eqz - i32.or - if (result i32) - local.get $111 - local.get $110 - i32.eq - else - local.get $111 - local.get $110 - call $~lib/string/String.__eq - end - local.set $108 - local.get $110 - call $~lib/rt/pure/__release - local.get $111 - call $~lib/rt/pure/__release + call $~lib/string/String#_eq + local.set $109 local.get $108 - i32.const 0 - i32.ne - local.set $111 - local.get $109 call $~lib/rt/pure/__release - local.get $111 + local.get $109 else i32.const 0 end @@ -19264,38 +15832,13 @@ local.get $107 i32.const 2 call $~lib/array/Array<~lib/string/String>#__get - local.tee $109 - call $~lib/rt/pure/__retain - local.set $110 + local.tee $108 i32.const 272 - call $~lib/rt/pure/__retain - local.set $108 - local.get $110 - i32.eqz - local.get $108 - i32.eqz - i32.or - if (result i32) - local.get $110 - local.get $108 - i32.eq - else - local.get $110 - local.get $108 - call $~lib/string/String.__eq - end - local.set $111 + call $~lib/string/String#_eq + local.set $109 local.get $108 call $~lib/rt/pure/__release - local.get $110 - call $~lib/rt/pure/__release - local.get $111 - i32.const 0 - i32.ne - local.set $110 local.get $109 - call $~lib/rt/pure/__release - local.get $110 else i32.const 0 end @@ -19305,38 +15848,13 @@ local.get $107 i32.const 3 call $~lib/array/Array<~lib/string/String>#__get - local.tee $109 - call $~lib/rt/pure/__retain - local.set $108 + local.tee $108 i32.const 11264 - call $~lib/rt/pure/__retain - local.set $111 - local.get $108 - i32.eqz - local.get $111 - i32.eqz - i32.or - if (result i32) - local.get $108 - local.get $111 - i32.eq - else - local.get $108 - local.get $111 - call $~lib/string/String.__eq - end - local.set $110 - local.get $111 - call $~lib/rt/pure/__release + call $~lib/string/String#_eq + local.set $109 local.get $108 call $~lib/rt/pure/__release - local.get $110 - i32.const 0 - i32.ne - local.set $108 local.get $109 - call $~lib/rt/pure/__release - local.get $108 else i32.const 0 end @@ -19355,10 +15873,10 @@ i32.const 1024 global.get $~lib/builtins/i32.MAX_VALUE call $~lib/string/String#split - local.set $110 + local.set $109 local.get $107 call $~lib/rt/pure/__release - local.get $110 + local.get $109 local.set $107 local.get $107 call $~lib/array/Array<~lib/string/String>#get:length @@ -19368,36 +15886,11 @@ local.get $107 i32.const 0 call $~lib/array/Array<~lib/string/String>#__get - local.tee $110 - call $~lib/rt/pure/__retain - local.set $108 + local.tee $109 i32.const 272 - call $~lib/rt/pure/__retain - local.set $111 - local.get $108 - i32.eqz - local.get $111 - i32.eqz - i32.or - if (result i32) - local.get $108 - local.get $111 - i32.eq - else - local.get $108 - local.get $111 - call $~lib/string/String.__eq - end - local.set $109 - local.get $111 - call $~lib/rt/pure/__release - local.get $108 - call $~lib/rt/pure/__release - local.get $109 - i32.const 0 - i32.ne + call $~lib/string/String#_eq local.set $108 - local.get $110 + local.get $109 call $~lib/rt/pure/__release local.get $108 else @@ -19409,38 +15902,13 @@ local.get $107 i32.const 1 call $~lib/array/Array<~lib/string/String>#__get - local.tee $110 - call $~lib/rt/pure/__retain - local.set $111 + local.tee $109 i32.const 320 - call $~lib/rt/pure/__retain - local.set $109 - local.get $111 - i32.eqz - local.get $109 - i32.eqz - i32.or - if (result i32) - local.get $111 - local.get $109 - i32.eq - else - local.get $111 - local.get $109 - call $~lib/string/String.__eq - end + call $~lib/string/String#_eq local.set $108 local.get $109 call $~lib/rt/pure/__release - local.get $111 - call $~lib/rt/pure/__release local.get $108 - i32.const 0 - i32.ne - local.set $111 - local.get $110 - call $~lib/rt/pure/__release - local.get $111 else i32.const 0 end @@ -19450,38 +15918,13 @@ local.get $107 i32.const 2 call $~lib/array/Array<~lib/string/String>#__get - local.tee $110 - call $~lib/rt/pure/__retain - local.set $109 + local.tee $109 i32.const 10416 - call $~lib/rt/pure/__retain + call $~lib/string/String#_eq local.set $108 local.get $109 - i32.eqz - local.get $108 - i32.eqz - i32.or - if (result i32) - local.get $109 - local.get $108 - i32.eq - else - local.get $109 - local.get $108 - call $~lib/string/String.__eq - end - local.set $111 - local.get $108 - call $~lib/rt/pure/__release - local.get $109 - call $~lib/rt/pure/__release - local.get $111 - i32.const 0 - i32.ne - local.set $109 - local.get $110 call $~lib/rt/pure/__release - local.get $109 + local.get $108 else i32.const 0 end @@ -19491,36 +15934,11 @@ local.get $107 i32.const 3 call $~lib/array/Array<~lib/string/String>#__get - local.tee $110 - call $~lib/rt/pure/__retain - local.set $108 + local.tee $109 i32.const 11264 - call $~lib/rt/pure/__retain - local.set $111 - local.get $108 - i32.eqz - local.get $111 - i32.eqz - i32.or - if (result i32) - local.get $108 - local.get $111 - i32.eq - else - local.get $108 - local.get $111 - call $~lib/string/String.__eq - end - local.set $109 - local.get $111 - call $~lib/rt/pure/__release - local.get $108 - call $~lib/rt/pure/__release - local.get $109 - i32.const 0 - i32.ne + call $~lib/string/String#_eq local.set $108 - local.get $110 + local.get $109 call $~lib/rt/pure/__release local.get $108 else @@ -19541,10 +15959,10 @@ i32.const 1024 global.get $~lib/builtins/i32.MAX_VALUE call $~lib/string/String#split - local.set $109 + local.set $108 local.get $107 call $~lib/rt/pure/__release - local.get $109 + local.get $108 local.set $107 local.get $107 call $~lib/array/Array<~lib/string/String>#get:length @@ -19554,38 +15972,13 @@ local.get $107 i32.const 0 call $~lib/array/Array<~lib/string/String>#__get - local.tee $109 - call $~lib/rt/pure/__retain - local.set $108 + local.tee $108 i32.const 320 - call $~lib/rt/pure/__retain - local.set $111 - local.get $108 - i32.eqz - local.get $111 - i32.eqz - i32.or - if (result i32) - local.get $108 - local.get $111 - i32.eq - else - local.get $108 - local.get $111 - call $~lib/string/String.__eq - end - local.set $110 - local.get $111 - call $~lib/rt/pure/__release + call $~lib/string/String#_eq + local.set $109 local.get $108 call $~lib/rt/pure/__release - local.get $110 - i32.const 0 - i32.ne - local.set $108 local.get $109 - call $~lib/rt/pure/__release - local.get $108 else i32.const 0 end @@ -19595,38 +15988,13 @@ local.get $107 i32.const 1 call $~lib/array/Array<~lib/string/String>#__get - local.tee $109 - call $~lib/rt/pure/__retain - local.set $111 + local.tee $108 i32.const 10416 - call $~lib/rt/pure/__retain - local.set $110 - local.get $111 - i32.eqz - local.get $110 - i32.eqz - i32.or - if (result i32) - local.get $111 - local.get $110 - i32.eq - else - local.get $111 - local.get $110 - call $~lib/string/String.__eq - end - local.set $108 - local.get $110 - call $~lib/rt/pure/__release - local.get $111 - call $~lib/rt/pure/__release + call $~lib/string/String#_eq + local.set $109 local.get $108 - i32.const 0 - i32.ne - local.set $111 - local.get $109 call $~lib/rt/pure/__release - local.get $111 + local.get $109 else i32.const 0 end @@ -19636,38 +16004,13 @@ local.get $107 i32.const 2 call $~lib/array/Array<~lib/string/String>#__get - local.tee $109 - call $~lib/rt/pure/__retain - local.set $110 + local.tee $108 i32.const 11264 - call $~lib/rt/pure/__retain - local.set $108 - local.get $110 - i32.eqz - local.get $108 - i32.eqz - i32.or - if (result i32) - local.get $110 - local.get $108 - i32.eq - else - local.get $110 - local.get $108 - call $~lib/string/String.__eq - end - local.set $111 - local.get $108 - call $~lib/rt/pure/__release - local.get $110 - call $~lib/rt/pure/__release - local.get $111 - i32.const 0 - i32.ne - local.set $110 - local.get $109 + call $~lib/string/String#_eq + local.set $109 + local.get $108 call $~lib/rt/pure/__release - local.get $110 + local.get $109 else i32.const 0 end @@ -19677,38 +16020,13 @@ local.get $107 i32.const 3 call $~lib/array/Array<~lib/string/String>#__get - local.tee $109 - call $~lib/rt/pure/__retain - local.set $108 + local.tee $108 i32.const 272 - call $~lib/rt/pure/__retain - local.set $111 - local.get $108 - i32.eqz - local.get $111 - i32.eqz - i32.or - if (result i32) - local.get $108 - local.get $111 - i32.eq - else - local.get $108 - local.get $111 - call $~lib/string/String.__eq - end - local.set $110 - local.get $111 - call $~lib/rt/pure/__release + call $~lib/string/String#_eq + local.set $109 local.get $108 call $~lib/rt/pure/__release - local.get $110 - i32.const 0 - i32.ne - local.set $108 local.get $109 - call $~lib/rt/pure/__release - local.get $108 else i32.const 0 end @@ -19727,10 +16045,10 @@ i32.const 272 global.get $~lib/builtins/i32.MAX_VALUE call $~lib/string/String#split - local.set $110 + local.set $109 local.get $107 call $~lib/rt/pure/__release - local.get $110 + local.get $109 local.set $107 local.get $107 call $~lib/array/Array<~lib/string/String>#get:length @@ -19740,36 +16058,11 @@ local.get $107 i32.const 0 call $~lib/array/Array<~lib/string/String>#__get - local.tee $110 - call $~lib/rt/pure/__retain - local.set $108 + local.tee $109 i32.const 320 - call $~lib/rt/pure/__retain - local.set $111 - local.get $108 - i32.eqz - local.get $111 - i32.eqz - i32.or - if (result i32) - local.get $108 - local.get $111 - i32.eq - else - local.get $108 - local.get $111 - call $~lib/string/String.__eq - end - local.set $109 - local.get $111 - call $~lib/rt/pure/__release - local.get $108 - call $~lib/rt/pure/__release - local.get $109 - i32.const 0 - i32.ne + call $~lib/string/String#_eq local.set $108 - local.get $110 + local.get $109 call $~lib/rt/pure/__release local.get $108 else @@ -19781,38 +16074,13 @@ local.get $107 i32.const 1 call $~lib/array/Array<~lib/string/String>#__get - local.tee $110 - call $~lib/rt/pure/__retain - local.set $111 + local.tee $109 i32.const 10416 - call $~lib/rt/pure/__retain - local.set $109 - local.get $111 - i32.eqz - local.get $109 - i32.eqz - i32.or - if (result i32) - local.get $111 - local.get $109 - i32.eq - else - local.get $111 - local.get $109 - call $~lib/string/String.__eq - end + call $~lib/string/String#_eq local.set $108 local.get $109 call $~lib/rt/pure/__release - local.get $111 - call $~lib/rt/pure/__release local.get $108 - i32.const 0 - i32.ne - local.set $111 - local.get $110 - call $~lib/rt/pure/__release - local.get $111 else i32.const 0 end @@ -19822,38 +16090,13 @@ local.get $107 i32.const 2 call $~lib/array/Array<~lib/string/String>#__get - local.tee $110 - call $~lib/rt/pure/__retain - local.set $109 + local.tee $109 i32.const 11264 - call $~lib/rt/pure/__retain + call $~lib/string/String#_eq local.set $108 local.get $109 - i32.eqz - local.get $108 - i32.eqz - i32.or - if (result i32) - local.get $109 - local.get $108 - i32.eq - else - local.get $109 - local.get $108 - call $~lib/string/String.__eq - end - local.set $111 - local.get $108 - call $~lib/rt/pure/__release - local.get $109 - call $~lib/rt/pure/__release - local.get $111 - i32.const 0 - i32.ne - local.set $109 - local.get $110 call $~lib/rt/pure/__release - local.get $109 + local.get $108 else i32.const 0 end @@ -19872,10 +16115,10 @@ i32.const 272 i32.const 0 call $~lib/string/String#split - local.set $111 + local.set $108 local.get $107 call $~lib/rt/pure/__release - local.get $111 + local.get $108 local.set $107 local.get $107 call $~lib/array/Array<~lib/string/String>#get:length @@ -19894,10 +16137,10 @@ i32.const 272 i32.const 1 call $~lib/string/String#split - local.set $108 + local.set $109 local.get $107 call $~lib/rt/pure/__release - local.get $108 + local.get $109 local.set $107 local.get $107 call $~lib/array/Array<~lib/string/String>#get:length @@ -19907,38 +16150,13 @@ local.get $107 i32.const 0 call $~lib/array/Array<~lib/string/String>#__get - local.tee $108 - call $~lib/rt/pure/__retain - local.set $110 + local.tee $109 i32.const 320 - call $~lib/rt/pure/__retain - local.set $109 - local.get $110 - i32.eqz - local.get $109 - i32.eqz - i32.or - if (result i32) - local.get $110 - local.get $109 - i32.eq - else - local.get $110 - local.get $109 - call $~lib/string/String.__eq - end - local.set $111 + call $~lib/string/String#_eq + local.set $108 local.get $109 call $~lib/rt/pure/__release - local.get $110 - call $~lib/rt/pure/__release - local.get $111 - i32.const 0 - i32.ne - local.set $110 local.get $108 - call $~lib/rt/pure/__release - local.get $110 else i32.const 0 end @@ -19957,10 +16175,10 @@ i32.const 1024 i32.const 1 call $~lib/string/String#split - local.set $111 + local.set $108 local.get $107 call $~lib/rt/pure/__release - local.get $111 + local.get $108 local.set $107 local.get $107 call $~lib/array/Array<~lib/string/String>#get:length @@ -19970,38 +16188,13 @@ local.get $107 i32.const 0 call $~lib/array/Array<~lib/string/String>#__get - local.tee $111 - call $~lib/rt/pure/__retain - local.set $110 + local.tee $108 i32.const 320 - call $~lib/rt/pure/__retain + call $~lib/string/String#_eq local.set $109 - local.get $110 - i32.eqz - local.get $109 - i32.eqz - i32.or - if (result i32) - local.get $110 - local.get $109 - i32.eq - else - local.get $110 - local.get $109 - call $~lib/string/String.__eq - end - local.set $108 - local.get $109 - call $~lib/rt/pure/__release - local.get $110 - call $~lib/rt/pure/__release local.get $108 - i32.const 0 - i32.ne - local.set $110 - local.get $111 call $~lib/rt/pure/__release - local.get $110 + local.get $109 else i32.const 0 end @@ -20020,10 +16213,10 @@ i32.const 272 i32.const 4 call $~lib/string/String#split - local.set $108 + local.set $109 local.get $107 call $~lib/rt/pure/__release - local.get $108 + local.get $109 local.set $107 local.get $107 call $~lib/array/Array<~lib/string/String>#get:length @@ -20033,38 +16226,13 @@ local.get $107 i32.const 0 call $~lib/array/Array<~lib/string/String>#__get - local.tee $108 - call $~lib/rt/pure/__retain - local.set $110 + local.tee $109 i32.const 320 - call $~lib/rt/pure/__retain - local.set $109 - local.get $110 - i32.eqz - local.get $109 - i32.eqz - i32.or - if (result i32) - local.get $110 - local.get $109 - i32.eq - else - local.get $110 - local.get $109 - call $~lib/string/String.__eq - end - local.set $111 + call $~lib/string/String#_eq + local.set $108 local.get $109 call $~lib/rt/pure/__release - local.get $110 - call $~lib/rt/pure/__release - local.get $111 - i32.const 0 - i32.ne - local.set $110 local.get $108 - call $~lib/rt/pure/__release - local.get $110 else i32.const 0 end @@ -20074,38 +16242,13 @@ local.get $107 i32.const 1 call $~lib/array/Array<~lib/string/String>#__get - local.tee $108 - call $~lib/rt/pure/__retain - local.set $109 + local.tee $109 i32.const 10416 - call $~lib/rt/pure/__retain - local.set $111 - local.get $109 - i32.eqz - local.get $111 - i32.eqz - i32.or - if (result i32) - local.get $109 - local.get $111 - i32.eq - else - local.get $109 - local.get $111 - call $~lib/string/String.__eq - end - local.set $110 - local.get $111 - call $~lib/rt/pure/__release + call $~lib/string/String#_eq + local.set $108 local.get $109 call $~lib/rt/pure/__release - local.get $110 - i32.const 0 - i32.ne - local.set $109 local.get $108 - call $~lib/rt/pure/__release - local.get $109 else i32.const 0 end @@ -20115,38 +16258,13 @@ local.get $107 i32.const 2 call $~lib/array/Array<~lib/string/String>#__get - local.tee $108 - call $~lib/rt/pure/__retain - local.set $111 + local.tee $109 i32.const 11264 - call $~lib/rt/pure/__retain - local.set $110 - local.get $111 - i32.eqz - local.get $110 - i32.eqz - i32.or - if (result i32) - local.get $111 - local.get $110 - i32.eq - else - local.get $111 - local.get $110 - call $~lib/string/String.__eq - end - local.set $109 - local.get $110 - call $~lib/rt/pure/__release - local.get $111 - call $~lib/rt/pure/__release + call $~lib/string/String#_eq + local.set $108 local.get $109 - i32.const 0 - i32.ne - local.set $111 - local.get $108 call $~lib/rt/pure/__release - local.get $111 + local.get $108 else i32.const 0 end @@ -20165,10 +16283,10 @@ i32.const 272 i32.const -1 call $~lib/string/String#split - local.set $109 + local.set $108 local.get $107 call $~lib/rt/pure/__release - local.get $109 + local.get $108 local.set $107 local.get $107 call $~lib/array/Array<~lib/string/String>#get:length @@ -20178,38 +16296,13 @@ local.get $107 i32.const 0 call $~lib/array/Array<~lib/string/String>#__get - local.tee $109 - call $~lib/rt/pure/__retain - local.set $111 + local.tee $108 i32.const 320 - call $~lib/rt/pure/__retain - local.set $110 - local.get $111 - i32.eqz - local.get $110 - i32.eqz - i32.or - if (result i32) - local.get $111 - local.get $110 - i32.eq - else - local.get $111 - local.get $110 - call $~lib/string/String.__eq - end - local.set $108 - local.get $110 - call $~lib/rt/pure/__release - local.get $111 - call $~lib/rt/pure/__release + call $~lib/string/String#_eq + local.set $109 local.get $108 - i32.const 0 - i32.ne - local.set $111 - local.get $109 call $~lib/rt/pure/__release - local.get $111 + local.get $109 else i32.const 0 end @@ -20219,79 +16312,29 @@ local.get $107 i32.const 1 call $~lib/array/Array<~lib/string/String>#__get - local.tee $109 - call $~lib/rt/pure/__retain - local.set $110 + local.tee $108 i32.const 10416 - call $~lib/rt/pure/__retain - local.set $108 - local.get $110 - i32.eqz - local.get $108 - i32.eqz - i32.or - if (result i32) - local.get $110 - local.get $108 - i32.eq - else - local.get $110 - local.get $108 - call $~lib/string/String.__eq - end - local.set $111 - local.get $108 - call $~lib/rt/pure/__release - local.get $110 - call $~lib/rt/pure/__release - local.get $111 - i32.const 0 - i32.ne - local.set $110 - local.get $109 - call $~lib/rt/pure/__release - local.get $110 - else - i32.const 0 - end - i32.const 0 - i32.ne - if (result i32) - local.get $107 - i32.const 2 - call $~lib/array/Array<~lib/string/String>#__get - local.tee $109 - call $~lib/rt/pure/__retain - local.set $108 - i32.const 11264 - call $~lib/rt/pure/__retain - local.set $111 - local.get $108 - i32.eqz - local.get $111 - i32.eqz - i32.or - if (result i32) - local.get $108 - local.get $111 - i32.eq - else - local.get $108 - local.get $111 - call $~lib/string/String.__eq - end - local.set $110 - local.get $111 - call $~lib/rt/pure/__release + call $~lib/string/String#_eq + local.set $109 local.get $108 call $~lib/rt/pure/__release - local.get $110 - i32.const 0 - i32.ne - local.set $108 local.get $109 - call $~lib/rt/pure/__release + else + i32.const 0 + end + i32.const 0 + i32.ne + if (result i32) + local.get $107 + i32.const 2 + call $~lib/array/Array<~lib/string/String>#__get + local.tee $108 + i32.const 11264 + call $~lib/string/String#_eq + local.set $109 local.get $108 + call $~lib/rt/pure/__release + local.get $109 else i32.const 0 end @@ -20310,10 +16353,10 @@ i32.const 1024 i32.const -1 call $~lib/string/String#split - local.set $110 + local.set $109 local.get $107 call $~lib/rt/pure/__release - local.get $110 + local.get $109 local.set $107 local.get $107 call $~lib/array/Array<~lib/string/String>#get:length @@ -20323,36 +16366,11 @@ local.get $107 i32.const 0 call $~lib/array/Array<~lib/string/String>#__get - local.tee $110 - call $~lib/rt/pure/__retain - local.set $108 + local.tee $109 i32.const 320 - call $~lib/rt/pure/__retain - local.set $111 - local.get $108 - i32.eqz - local.get $111 - i32.eqz - i32.or - if (result i32) - local.get $108 - local.get $111 - i32.eq - else - local.get $108 - local.get $111 - call $~lib/string/String.__eq - end - local.set $109 - local.get $111 - call $~lib/rt/pure/__release - local.get $108 - call $~lib/rt/pure/__release - local.get $109 - i32.const 0 - i32.ne + call $~lib/string/String#_eq local.set $108 - local.get $110 + local.get $109 call $~lib/rt/pure/__release local.get $108 else @@ -20364,38 +16382,13 @@ local.get $107 i32.const 1 call $~lib/array/Array<~lib/string/String>#__get - local.tee $110 - call $~lib/rt/pure/__retain - local.set $111 + local.tee $109 i32.const 10416 - call $~lib/rt/pure/__retain - local.set $109 - local.get $111 - i32.eqz - local.get $109 - i32.eqz - i32.or - if (result i32) - local.get $111 - local.get $109 - i32.eq - else - local.get $111 - local.get $109 - call $~lib/string/String.__eq - end + call $~lib/string/String#_eq local.set $108 local.get $109 call $~lib/rt/pure/__release - local.get $111 - call $~lib/rt/pure/__release local.get $108 - i32.const 0 - i32.ne - local.set $111 - local.get $110 - call $~lib/rt/pure/__release - local.get $111 else i32.const 0 end @@ -20405,38 +16398,13 @@ local.get $107 i32.const 2 call $~lib/array/Array<~lib/string/String>#__get - local.tee $110 - call $~lib/rt/pure/__retain - local.set $109 + local.tee $109 i32.const 11264 - call $~lib/rt/pure/__retain + call $~lib/string/String#_eq local.set $108 local.get $109 - i32.eqz - local.get $108 - i32.eqz - i32.or - if (result i32) - local.get $109 - local.get $108 - i32.eq - else - local.get $109 - local.get $108 - call $~lib/string/String.__eq - end - local.set $111 - local.get $108 - call $~lib/rt/pure/__release - local.get $109 call $~lib/rt/pure/__release - local.get $111 - i32.const 0 - i32.ne - local.set $109 - local.get $110 - call $~lib/rt/pure/__release - local.get $109 + local.get $108 else i32.const 0 end @@ -20456,33 +16424,8 @@ i32.const 0 call $~lib/util/number/itoa32 local.tee $107 - call $~lib/rt/pure/__retain - local.set $108 i32.const 1424 - call $~lib/rt/pure/__retain - local.set $111 - local.get $108 - i32.eqz - local.get $111 - i32.eqz - i32.or - if (result i32) - local.get $108 - local.get $111 - i32.eq - else - local.get $108 - local.get $111 - call $~lib/string/String.__eq - end - local.set $110 - local.get $111 - call $~lib/rt/pure/__release - local.get $108 - call $~lib/rt/pure/__release - local.get $110 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -20494,34 +16437,9 @@ end i32.const 1 call $~lib/util/number/itoa32 - local.tee $108 - call $~lib/rt/pure/__retain - local.set $110 + local.tee $109 i32.const 1488 - call $~lib/rt/pure/__retain - local.set $109 - local.get $110 - i32.eqz - local.get $109 - i32.eqz - i32.or - if (result i32) - local.get $110 - local.get $109 - i32.eq - else - local.get $110 - local.get $109 - call $~lib/string/String.__eq - end - local.set $111 - local.get $109 - call $~lib/rt/pure/__release - local.get $110 - call $~lib/rt/pure/__release - local.get $111 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -20533,34 +16451,9 @@ end i32.const 8 call $~lib/util/number/itoa32 - local.tee $110 - call $~lib/rt/pure/__retain - local.set $109 + local.tee $108 i32.const 12992 - call $~lib/rt/pure/__retain - local.set $111 - local.get $109 - i32.eqz - local.get $111 - i32.eqz - i32.or - if (result i32) - local.get $109 - local.get $111 - i32.eq - else - local.get $109 - local.get $111 - call $~lib/string/String.__eq - end - local.set $112 - local.get $111 - call $~lib/rt/pure/__release - local.get $109 - call $~lib/rt/pure/__release - local.get $112 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -20572,34 +16465,9 @@ end i32.const 12 call $~lib/util/number/itoa32 - local.tee $109 - call $~lib/rt/pure/__retain - local.set $111 + local.tee $110 i32.const 13024 - call $~lib/rt/pure/__retain - local.set $112 - local.get $111 - i32.eqz - local.get $112 - i32.eqz - i32.or - if (result i32) - local.get $111 - local.get $112 - i32.eq - else - local.get $111 - local.get $112 - call $~lib/string/String.__eq - end - local.set $113 - local.get $112 - call $~lib/rt/pure/__release - local.get $111 - call $~lib/rt/pure/__release - local.get $113 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -20612,33 +16480,8 @@ i32.const 123 call $~lib/util/number/itoa32 local.tee $111 - call $~lib/rt/pure/__retain - local.set $112 i32.const 832 - call $~lib/rt/pure/__retain - local.set $113 - local.get $112 - i32.eqz - local.get $113 - i32.eqz - i32.or - if (result i32) - local.get $112 - local.get $113 - i32.eq - else - local.get $112 - local.get $113 - call $~lib/string/String.__eq - end - local.set $114 - local.get $113 - call $~lib/rt/pure/__release - local.get $112 - call $~lib/rt/pure/__release - local.get $114 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -20651,33 +16494,8 @@ i32.const -1000 call $~lib/util/number/itoa32 local.tee $112 - call $~lib/rt/pure/__retain - local.set $113 i32.const 13056 - call $~lib/rt/pure/__retain - local.set $114 - local.get $113 - i32.eqz - local.get $114 - i32.eqz - i32.or - if (result i32) - local.get $113 - local.get $114 - i32.eq - else - local.get $113 - local.get $114 - call $~lib/string/String.__eq - end - local.set $115 - local.get $114 - call $~lib/rt/pure/__release - local.get $113 - call $~lib/rt/pure/__release - local.get $115 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -20690,33 +16508,8 @@ i32.const 1234 call $~lib/util/number/itoa32 local.tee $113 - call $~lib/rt/pure/__retain - local.set $114 i32.const 13088 - call $~lib/rt/pure/__retain - local.set $115 - local.get $114 - i32.eqz - local.get $115 - i32.eqz - i32.or - if (result i32) - local.get $114 - local.get $115 - i32.eq - else - local.get $114 - local.get $115 - call $~lib/string/String.__eq - end - local.set $116 - local.get $115 - call $~lib/rt/pure/__release - local.get $114 - call $~lib/rt/pure/__release - local.get $116 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -20729,33 +16522,8 @@ i32.const 12345 call $~lib/util/number/itoa32 local.tee $114 - call $~lib/rt/pure/__retain - local.set $115 i32.const 13120 - call $~lib/rt/pure/__retain - local.set $116 - local.get $115 - i32.eqz - local.get $116 - i32.eqz - i32.or - if (result i32) - local.get $115 - local.get $116 - i32.eq - else - local.get $115 - local.get $116 - call $~lib/string/String.__eq - end - local.set $117 - local.get $116 - call $~lib/rt/pure/__release - local.get $115 - call $~lib/rt/pure/__release - local.get $117 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -20768,33 +16536,8 @@ i32.const 123456 call $~lib/util/number/itoa32 local.tee $115 - call $~lib/rt/pure/__retain - local.set $116 - i32.const 13152 - call $~lib/rt/pure/__retain - local.set $117 - local.get $116 - i32.eqz - local.get $117 - i32.eqz - i32.or - if (result i32) - local.get $116 - local.get $117 - i32.eq - else - local.get $116 - local.get $117 - call $~lib/string/String.__eq - end - local.set $118 - local.get $117 - call $~lib/rt/pure/__release - local.get $116 - call $~lib/rt/pure/__release - local.get $118 - i32.const 0 - i32.ne + i32.const 13152 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -20807,33 +16550,8 @@ i32.const 1111111 call $~lib/util/number/itoa32 local.tee $116 - call $~lib/rt/pure/__retain - local.set $117 i32.const 13184 - call $~lib/rt/pure/__retain - local.set $118 - local.get $117 - i32.eqz - local.get $118 - i32.eqz - i32.or - if (result i32) - local.get $117 - local.get $118 - i32.eq - else - local.get $117 - local.get $118 - call $~lib/string/String.__eq - end - local.set $119 - local.get $118 - call $~lib/rt/pure/__release - local.get $117 - call $~lib/rt/pure/__release - local.get $119 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -20846,33 +16564,8 @@ i32.const 1234567 call $~lib/util/number/itoa32 local.tee $117 - call $~lib/rt/pure/__retain - local.set $118 i32.const 13216 - call $~lib/rt/pure/__retain - local.set $119 - local.get $118 - i32.eqz - local.get $119 - i32.eqz - i32.or - if (result i32) - local.get $118 - local.get $119 - i32.eq - else - local.get $118 - local.get $119 - call $~lib/string/String.__eq - end - local.set $120 - local.get $119 - call $~lib/rt/pure/__release - local.get $118 - call $~lib/rt/pure/__release - local.get $120 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -20885,33 +16578,8 @@ i32.const 12345678 call $~lib/util/number/itoa32 local.tee $118 - call $~lib/rt/pure/__retain - local.set $119 i32.const 13248 - call $~lib/rt/pure/__retain - local.set $120 - local.get $119 - i32.eqz - local.get $120 - i32.eqz - i32.or - if (result i32) - local.get $119 - local.get $120 - i32.eq - else - local.get $119 - local.get $120 - call $~lib/string/String.__eq - end - local.set $121 - local.get $120 - call $~lib/rt/pure/__release - local.get $119 - call $~lib/rt/pure/__release - local.get $121 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -20924,33 +16592,8 @@ i32.const 123456789 call $~lib/util/number/itoa32 local.tee $119 - call $~lib/rt/pure/__retain - local.set $120 i32.const 13280 - call $~lib/rt/pure/__retain - local.set $121 - local.get $120 - i32.eqz - local.get $121 - i32.eqz - i32.or - if (result i32) - local.get $120 - local.get $121 - i32.eq - else - local.get $120 - local.get $121 - call $~lib/string/String.__eq - end - local.set $122 - local.get $121 - call $~lib/rt/pure/__release - local.get $120 - call $~lib/rt/pure/__release - local.get $122 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -20963,33 +16606,8 @@ i32.const 2147483646 call $~lib/util/number/itoa32 local.tee $120 - call $~lib/rt/pure/__retain - local.set $121 i32.const 13328 - call $~lib/rt/pure/__retain - local.set $122 - local.get $121 - i32.eqz - local.get $122 - i32.eqz - i32.or - if (result i32) - local.get $121 - local.get $122 - i32.eq - else - local.get $121 - local.get $122 - call $~lib/string/String.__eq - end - local.set $123 - local.get $122 - call $~lib/rt/pure/__release - local.get $121 - call $~lib/rt/pure/__release - local.get $123 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -21002,33 +16620,8 @@ i32.const 2147483647 call $~lib/util/number/itoa32 local.tee $121 - call $~lib/rt/pure/__retain - local.set $122 i32.const 13376 - call $~lib/rt/pure/__retain - local.set $123 - local.get $122 - i32.eqz - local.get $123 - i32.eqz - i32.or - if (result i32) - local.get $122 - local.get $123 - i32.eq - else - local.get $122 - local.get $123 - call $~lib/string/String.__eq - end - local.set $124 - local.get $123 - call $~lib/rt/pure/__release - local.get $122 - call $~lib/rt/pure/__release - local.get $124 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -21041,33 +16634,8 @@ i32.const -2147483648 call $~lib/util/number/itoa32 local.tee $122 - call $~lib/rt/pure/__retain - local.set $123 i32.const 13424 - call $~lib/rt/pure/__retain - local.set $124 - local.get $123 - i32.eqz - local.get $124 - i32.eqz - i32.or - if (result i32) - local.get $123 - local.get $124 - i32.eq - else - local.get $123 - local.get $124 - call $~lib/string/String.__eq - end - local.set $125 - local.get $124 - call $~lib/rt/pure/__release - local.get $123 - call $~lib/rt/pure/__release - local.get $125 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -21080,33 +16648,8 @@ i32.const -1 call $~lib/util/number/itoa32 local.tee $123 - call $~lib/rt/pure/__retain - local.set $124 i32.const 13472 - call $~lib/rt/pure/__retain - local.set $125 - local.get $124 - i32.eqz - local.get $125 - i32.eqz - i32.or - if (result i32) - local.get $124 - local.get $125 - i32.eq - else - local.get $124 - local.get $125 - call $~lib/string/String.__eq - end - local.set $126 - local.get $125 - call $~lib/rt/pure/__release - local.get $124 - call $~lib/rt/pure/__release - local.get $126 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -21119,33 +16662,8 @@ i32.const 0 call $~lib/util/number/utoa32 local.tee $124 - call $~lib/rt/pure/__retain - local.set $125 i32.const 1424 - call $~lib/rt/pure/__retain - local.set $126 - local.get $125 - i32.eqz - local.get $126 - i32.eqz - i32.or - if (result i32) - local.get $125 - local.get $126 - i32.eq - else - local.get $125 - local.get $126 - call $~lib/string/String.__eq - end - local.set $127 - local.get $126 - call $~lib/rt/pure/__release - local.get $125 - call $~lib/rt/pure/__release - local.get $127 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -21158,33 +16676,8 @@ i32.const 1000 call $~lib/util/number/utoa32 local.tee $125 - call $~lib/rt/pure/__retain - local.set $126 i32.const 13504 - call $~lib/rt/pure/__retain - local.set $127 - local.get $126 - i32.eqz - local.get $127 - i32.eqz - i32.or - if (result i32) - local.get $126 - local.get $127 - i32.eq - else - local.get $126 - local.get $127 - call $~lib/string/String.__eq - end - local.set $128 - local.get $127 - call $~lib/rt/pure/__release - local.get $126 - call $~lib/rt/pure/__release - local.get $128 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -21197,33 +16690,8 @@ i32.const 2147483647 call $~lib/util/number/utoa32 local.tee $126 - call $~lib/rt/pure/__retain - local.set $127 i32.const 13376 - call $~lib/rt/pure/__retain - local.set $128 - local.get $127 - i32.eqz - local.get $128 - i32.eqz - i32.or - if (result i32) - local.get $127 - local.get $128 - i32.eq - else - local.get $127 - local.get $128 - call $~lib/string/String.__eq - end - local.set $129 - local.get $128 - call $~lib/rt/pure/__release - local.get $127 - call $~lib/rt/pure/__release - local.get $129 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -21236,33 +16704,8 @@ i32.const -2147483648 call $~lib/util/number/utoa32 local.tee $127 - call $~lib/rt/pure/__retain - local.set $128 i32.const 13536 - call $~lib/rt/pure/__retain - local.set $129 - local.get $128 - i32.eqz - local.get $129 - i32.eqz - i32.or - if (result i32) - local.get $128 - local.get $129 - i32.eq - else - local.get $128 - local.get $129 - call $~lib/string/String.__eq - end - local.set $130 - local.get $129 - call $~lib/rt/pure/__release - local.get $128 - call $~lib/rt/pure/__release - local.get $130 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -21275,33 +16718,8 @@ i32.const -1 call $~lib/util/number/utoa32 local.tee $128 - call $~lib/rt/pure/__retain - local.set $129 i32.const 13584 - call $~lib/rt/pure/__retain - local.set $130 - local.get $129 - i32.eqz - local.get $130 - i32.eqz - i32.or - if (result i32) - local.get $129 - local.get $130 - i32.eq - else - local.get $129 - local.get $130 - call $~lib/string/String.__eq - end - local.set $131 - local.get $130 - call $~lib/rt/pure/__release - local.get $129 - call $~lib/rt/pure/__release - local.get $131 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -21312,35 +16730,10 @@ unreachable end i64.const 0 - call $~lib/util/number/utoa64 - local.tee $129 - call $~lib/rt/pure/__retain - local.set $130 - i32.const 1424 - call $~lib/rt/pure/__retain - local.set $131 - local.get $130 - i32.eqz - local.get $131 - i32.eqz - i32.or - if (result i32) - local.get $130 - local.get $131 - i32.eq - else - local.get $130 - local.get $131 - call $~lib/string/String.__eq - end - local.set $132 - local.get $131 - call $~lib/rt/pure/__release - local.get $130 - call $~lib/rt/pure/__release - local.get $132 - i32.const 0 - i32.ne + call $~lib/util/number/utoa64 + local.tee $129 + i32.const 1424 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -21353,33 +16746,8 @@ i64.const 12 call $~lib/util/number/utoa64 local.tee $130 - call $~lib/rt/pure/__retain - local.set $131 i32.const 13024 - call $~lib/rt/pure/__retain - local.set $132 - local.get $131 - i32.eqz - local.get $132 - i32.eqz - i32.or - if (result i32) - local.get $131 - local.get $132 - i32.eq - else - local.get $131 - local.get $132 - call $~lib/string/String.__eq - end - local.set $133 - local.get $132 - call $~lib/rt/pure/__release - local.get $131 - call $~lib/rt/pure/__release - local.get $133 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -21392,33 +16760,8 @@ i64.const 123 call $~lib/util/number/utoa64 local.tee $131 - call $~lib/rt/pure/__retain - local.set $132 i32.const 832 - call $~lib/rt/pure/__retain - local.set $133 - local.get $132 - i32.eqz - local.get $133 - i32.eqz - i32.or - if (result i32) - local.get $132 - local.get $133 - i32.eq - else - local.get $132 - local.get $133 - call $~lib/string/String.__eq - end - local.set $134 - local.get $133 - call $~lib/rt/pure/__release - local.get $132 - call $~lib/rt/pure/__release - local.get $134 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -21431,33 +16774,8 @@ i64.const 1234 call $~lib/util/number/utoa64 local.tee $132 - call $~lib/rt/pure/__retain - local.set $133 i32.const 13088 - call $~lib/rt/pure/__retain - local.set $134 - local.get $133 - i32.eqz - local.get $134 - i32.eqz - i32.or - if (result i32) - local.get $133 - local.get $134 - i32.eq - else - local.get $133 - local.get $134 - call $~lib/string/String.__eq - end - local.set $135 - local.get $134 - call $~lib/rt/pure/__release - local.get $133 - call $~lib/rt/pure/__release - local.get $135 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -21470,33 +16788,8 @@ i64.const 12345 call $~lib/util/number/utoa64 local.tee $133 - call $~lib/rt/pure/__retain - local.set $134 i32.const 13120 - call $~lib/rt/pure/__retain - local.set $135 - local.get $134 - i32.eqz - local.get $135 - i32.eqz - i32.or - if (result i32) - local.get $134 - local.get $135 - i32.eq - else - local.get $134 - local.get $135 - call $~lib/string/String.__eq - end - local.set $136 - local.get $135 - call $~lib/rt/pure/__release - local.get $134 - call $~lib/rt/pure/__release - local.get $136 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -21509,33 +16802,8 @@ i64.const 123456 call $~lib/util/number/utoa64 local.tee $134 - call $~lib/rt/pure/__retain - local.set $135 i32.const 13152 - call $~lib/rt/pure/__retain - local.set $136 - local.get $135 - i32.eqz - local.get $136 - i32.eqz - i32.or - if (result i32) - local.get $135 - local.get $136 - i32.eq - else - local.get $135 - local.get $136 - call $~lib/string/String.__eq - end - local.set $137 - local.get $136 - call $~lib/rt/pure/__release - local.get $135 - call $~lib/rt/pure/__release - local.get $137 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -21548,33 +16816,8 @@ i64.const 1234567 call $~lib/util/number/utoa64 local.tee $135 - call $~lib/rt/pure/__retain - local.set $136 i32.const 13216 - call $~lib/rt/pure/__retain - local.set $137 - local.get $136 - i32.eqz - local.get $137 - i32.eqz - i32.or - if (result i32) - local.get $136 - local.get $137 - i32.eq - else - local.get $136 - local.get $137 - call $~lib/string/String.__eq - end - local.set $138 - local.get $137 - call $~lib/rt/pure/__release - local.get $136 - call $~lib/rt/pure/__release - local.get $138 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -21587,33 +16830,8 @@ i64.const 99999999 call $~lib/util/number/utoa64 local.tee $136 - call $~lib/rt/pure/__retain - local.set $137 i32.const 13632 - call $~lib/rt/pure/__retain - local.set $138 - local.get $137 - i32.eqz - local.get $138 - i32.eqz - i32.or - if (result i32) - local.get $137 - local.get $138 - i32.eq - else - local.get $137 - local.get $138 - call $~lib/string/String.__eq - end - local.set $139 - local.get $138 - call $~lib/rt/pure/__release - local.get $137 - call $~lib/rt/pure/__release - local.get $139 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -21626,33 +16844,8 @@ i64.const 100000000 call $~lib/util/number/utoa64 local.tee $137 - call $~lib/rt/pure/__retain - local.set $138 i32.const 13664 - call $~lib/rt/pure/__retain - local.set $139 - local.get $138 - i32.eqz - local.get $139 - i32.eqz - i32.or - if (result i32) - local.get $138 - local.get $139 - i32.eq - else - local.get $138 - local.get $139 - call $~lib/string/String.__eq - end - local.set $140 - local.get $139 - call $~lib/rt/pure/__release - local.get $138 - call $~lib/rt/pure/__release - local.get $140 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -21665,33 +16858,8 @@ i64.const 4294967295 call $~lib/util/number/utoa64 local.tee $138 - call $~lib/rt/pure/__retain - local.set $139 i32.const 13584 - call $~lib/rt/pure/__retain - local.set $140 - local.get $139 - i32.eqz - local.get $140 - i32.eqz - i32.or - if (result i32) - local.get $139 - local.get $140 - i32.eq - else - local.get $139 - local.get $140 - call $~lib/string/String.__eq - end - local.set $141 - local.get $140 - call $~lib/rt/pure/__release - local.get $139 - call $~lib/rt/pure/__release - local.get $141 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -21704,33 +16872,8 @@ i64.const 4294967297 call $~lib/util/number/utoa64 local.tee $139 - call $~lib/rt/pure/__retain - local.set $140 i32.const 13712 - call $~lib/rt/pure/__retain - local.set $141 - local.get $140 - i32.eqz - local.get $141 - i32.eqz - i32.or - if (result i32) - local.get $140 - local.get $141 - i32.eq - else - local.get $140 - local.get $141 - call $~lib/string/String.__eq - end - local.set $142 - local.get $141 - call $~lib/rt/pure/__release - local.get $140 - call $~lib/rt/pure/__release - local.get $142 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -21743,33 +16886,8 @@ i64.const 68719476735 call $~lib/util/number/utoa64 local.tee $140 - call $~lib/rt/pure/__retain - local.set $141 i32.const 13760 - call $~lib/rt/pure/__retain - local.set $142 - local.get $141 - i32.eqz - local.get $142 - i32.eqz - i32.or - if (result i32) - local.get $141 - local.get $142 - i32.eq - else - local.get $141 - local.get $142 - call $~lib/string/String.__eq - end - local.set $143 - local.get $142 - call $~lib/rt/pure/__release - local.get $141 - call $~lib/rt/pure/__release - local.get $143 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -21782,33 +16900,8 @@ i64.const 868719476735 call $~lib/util/number/utoa64 local.tee $141 - call $~lib/rt/pure/__retain - local.set $142 i32.const 13808 - call $~lib/rt/pure/__retain - local.set $143 - local.get $142 - i32.eqz - local.get $143 - i32.eqz - i32.or - if (result i32) - local.get $142 - local.get $143 - i32.eq - else - local.get $142 - local.get $143 - call $~lib/string/String.__eq - end - local.set $144 - local.get $143 - call $~lib/rt/pure/__release - local.get $142 - call $~lib/rt/pure/__release - local.get $144 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -21821,33 +16914,8 @@ i64.const 8687194767350 call $~lib/util/number/utoa64 local.tee $142 - call $~lib/rt/pure/__retain - local.set $143 i32.const 13856 - call $~lib/rt/pure/__retain - local.set $144 - local.get $143 - i32.eqz - local.get $144 - i32.eqz - i32.or - if (result i32) - local.get $143 - local.get $144 - i32.eq - else - local.get $143 - local.get $144 - call $~lib/string/String.__eq - end - local.set $145 - local.get $144 - call $~lib/rt/pure/__release - local.get $143 - call $~lib/rt/pure/__release - local.get $145 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -21860,33 +16928,8 @@ i64.const 86871947673501 call $~lib/util/number/utoa64 local.tee $143 - call $~lib/rt/pure/__retain - local.set $144 - i32.const 13904 - call $~lib/rt/pure/__retain - local.set $145 - local.get $144 - i32.eqz - local.get $145 - i32.eqz - i32.or - if (result i32) - local.get $144 - local.get $145 - i32.eq - else - local.get $144 - local.get $145 - call $~lib/string/String.__eq - end - local.set $146 - local.get $145 - call $~lib/rt/pure/__release - local.get $144 - call $~lib/rt/pure/__release - local.get $146 - i32.const 0 - i32.ne + i32.const 13904 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -21899,33 +16942,8 @@ i64.const 999868719476735 call $~lib/util/number/utoa64 local.tee $144 - call $~lib/rt/pure/__retain - local.set $145 i32.const 13952 - call $~lib/rt/pure/__retain - local.set $146 - local.get $145 - i32.eqz - local.get $146 - i32.eqz - i32.or - if (result i32) - local.get $145 - local.get $146 - i32.eq - else - local.get $145 - local.get $146 - call $~lib/string/String.__eq - end - local.set $147 - local.get $146 - call $~lib/rt/pure/__release - local.get $145 - call $~lib/rt/pure/__release - local.get $147 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -21938,33 +16956,8 @@ i64.const 9999868719476735 call $~lib/util/number/utoa64 local.tee $145 - call $~lib/rt/pure/__retain - local.set $146 i32.const 14000 - call $~lib/rt/pure/__retain - local.set $147 - local.get $146 - i32.eqz - local.get $147 - i32.eqz - i32.or - if (result i32) - local.get $146 - local.get $147 - i32.eq - else - local.get $146 - local.get $147 - call $~lib/string/String.__eq - end - local.set $148 - local.get $147 - call $~lib/rt/pure/__release - local.get $146 - call $~lib/rt/pure/__release - local.get $148 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -21977,33 +16970,8 @@ i64.const 19999868719476735 call $~lib/util/number/utoa64 local.tee $146 - call $~lib/rt/pure/__retain - local.set $147 i32.const 14048 - call $~lib/rt/pure/__retain - local.set $148 - local.get $147 - i32.eqz - local.get $148 - i32.eqz - i32.or - if (result i32) - local.get $147 - local.get $148 - i32.eq - else - local.get $147 - local.get $148 - call $~lib/string/String.__eq - end - local.set $149 - local.get $148 - call $~lib/rt/pure/__release - local.get $147 - call $~lib/rt/pure/__release - local.get $149 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -22016,33 +16984,8 @@ i64.const 129999868719476735 call $~lib/util/number/utoa64 local.tee $147 - call $~lib/rt/pure/__retain - local.set $148 i32.const 14112 - call $~lib/rt/pure/__retain - local.set $149 - local.get $148 - i32.eqz - local.get $149 - i32.eqz - i32.or - if (result i32) - local.get $148 - local.get $149 - i32.eq - else - local.get $148 - local.get $149 - call $~lib/string/String.__eq - end - local.set $150 - local.get $149 - call $~lib/rt/pure/__release - local.get $148 - call $~lib/rt/pure/__release - local.get $150 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -22055,33 +16998,8 @@ i64.const 1239999868719476735 call $~lib/util/number/utoa64 local.tee $148 - call $~lib/rt/pure/__retain - local.set $149 i32.const 14176 - call $~lib/rt/pure/__retain - local.set $150 - local.get $149 - i32.eqz - local.get $150 - i32.eqz - i32.or - if (result i32) - local.get $149 - local.get $150 - i32.eq - else - local.get $149 - local.get $150 - call $~lib/string/String.__eq - end - local.set $151 - local.get $150 - call $~lib/rt/pure/__release - local.get $149 - call $~lib/rt/pure/__release - local.get $151 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -22094,33 +17012,8 @@ i64.const -1 call $~lib/util/number/utoa64 local.tee $149 - call $~lib/rt/pure/__retain - local.set $150 i32.const 14240 - call $~lib/rt/pure/__retain - local.set $151 - local.get $150 - i32.eqz - local.get $151 - i32.eqz - i32.or - if (result i32) - local.get $150 - local.get $151 - i32.eq - else - local.get $150 - local.get $151 - call $~lib/string/String.__eq - end - local.set $152 - local.get $151 - call $~lib/rt/pure/__release - local.get $150 - call $~lib/rt/pure/__release - local.get $152 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -22133,33 +17026,8 @@ i64.const 0 call $~lib/util/number/itoa64 local.tee $150 - call $~lib/rt/pure/__retain - local.set $151 i32.const 1424 - call $~lib/rt/pure/__retain - local.set $152 - local.get $151 - i32.eqz - local.get $152 - i32.eqz - i32.or - if (result i32) - local.get $151 - local.get $152 - i32.eq - else - local.get $151 - local.get $152 - call $~lib/string/String.__eq - end - local.set $153 - local.get $152 - call $~lib/rt/pure/__release - local.get $151 - call $~lib/rt/pure/__release - local.get $153 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -22172,33 +17040,8 @@ i64.const -1234 call $~lib/util/number/itoa64 local.tee $151 - call $~lib/rt/pure/__retain - local.set $152 i32.const 14304 - call $~lib/rt/pure/__retain - local.set $153 - local.get $152 - i32.eqz - local.get $153 - i32.eqz - i32.or - if (result i32) - local.get $152 - local.get $153 - i32.eq - else - local.get $152 - local.get $153 - call $~lib/string/String.__eq - end - local.set $154 - local.get $153 - call $~lib/rt/pure/__release - local.get $152 - call $~lib/rt/pure/__release - local.get $154 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -22211,33 +17054,8 @@ i64.const 4294967295 call $~lib/util/number/itoa64 local.tee $152 - call $~lib/rt/pure/__retain - local.set $153 i32.const 13584 - call $~lib/rt/pure/__retain - local.set $154 - local.get $153 - i32.eqz - local.get $154 - i32.eqz - i32.or - if (result i32) - local.get $153 - local.get $154 - i32.eq - else - local.get $153 - local.get $154 - call $~lib/string/String.__eq - end - local.set $155 - local.get $154 - call $~lib/rt/pure/__release - local.get $153 - call $~lib/rt/pure/__release - local.get $155 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -22250,33 +17068,8 @@ i64.const 4294967297 call $~lib/util/number/itoa64 local.tee $153 - call $~lib/rt/pure/__retain - local.set $154 i32.const 13712 - call $~lib/rt/pure/__retain - local.set $155 - local.get $154 - i32.eqz - local.get $155 - i32.eqz - i32.or - if (result i32) - local.get $154 - local.get $155 - i32.eq - else - local.get $154 - local.get $155 - call $~lib/string/String.__eq - end - local.set $156 - local.get $155 - call $~lib/rt/pure/__release - local.get $154 - call $~lib/rt/pure/__release - local.get $156 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -22289,33 +17082,8 @@ i64.const -4294967295 call $~lib/util/number/itoa64 local.tee $154 - call $~lib/rt/pure/__retain - local.set $155 i32.const 14336 - call $~lib/rt/pure/__retain - local.set $156 - local.get $155 - i32.eqz - local.get $156 - i32.eqz - i32.or - if (result i32) - local.get $155 - local.get $156 - i32.eq - else - local.get $155 - local.get $156 - call $~lib/string/String.__eq - end - local.set $157 - local.get $156 - call $~lib/rt/pure/__release - local.get $155 - call $~lib/rt/pure/__release - local.get $157 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -22328,33 +17096,8 @@ i64.const 68719476735 call $~lib/util/number/itoa64 local.tee $155 - call $~lib/rt/pure/__retain - local.set $156 i32.const 13760 - call $~lib/rt/pure/__retain - local.set $157 - local.get $156 - i32.eqz - local.get $157 - i32.eqz - i32.or - if (result i32) - local.get $156 - local.get $157 - i32.eq - else - local.get $156 - local.get $157 - call $~lib/string/String.__eq - end - local.set $158 - local.get $157 - call $~lib/rt/pure/__release - local.get $156 - call $~lib/rt/pure/__release - local.get $158 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -22367,72 +17110,22 @@ i64.const -68719476735 call $~lib/util/number/itoa64 local.tee $156 - call $~lib/rt/pure/__retain - local.set $157 i32.const 14384 - call $~lib/rt/pure/__retain - local.set $158 - local.get $157 - i32.eqz - local.get $158 - i32.eqz - i32.or - if (result i32) - local.get $157 - local.get $158 - i32.eq - else - local.get $157 - local.get $158 - call $~lib/string/String.__eq - end - local.set $159 - local.get $158 - call $~lib/rt/pure/__release - local.get $157 - call $~lib/rt/pure/__release - local.get $159 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if - i32.const 0 - i32.const 80 - i32.const 526 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i64.const -868719476735 - call $~lib/util/number/itoa64 - local.tee $157 - call $~lib/rt/pure/__retain - local.set $158 - i32.const 14432 - call $~lib/rt/pure/__retain - local.set $159 - local.get $158 - i32.eqz - local.get $159 - i32.eqz - i32.or - if (result i32) - local.get $158 - local.get $159 - i32.eq - else - local.get $158 - local.get $159 - call $~lib/string/String.__eq + i32.const 0 + i32.const 80 + i32.const 526 + i32.const 1 + call $~lib/builtins/abort + unreachable end - local.set $160 - local.get $159 - call $~lib/rt/pure/__release - local.get $158 - call $~lib/rt/pure/__release - local.get $160 - i32.const 0 - i32.ne + i64.const -868719476735 + call $~lib/util/number/itoa64 + local.tee $157 + i32.const 14432 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -22445,33 +17138,8 @@ i64.const -999868719476735 call $~lib/util/number/itoa64 local.tee $158 - call $~lib/rt/pure/__retain - local.set $159 i32.const 14480 - call $~lib/rt/pure/__retain - local.set $160 - local.get $159 - i32.eqz - local.get $160 - i32.eqz - i32.or - if (result i32) - local.get $159 - local.get $160 - i32.eq - else - local.get $159 - local.get $160 - call $~lib/string/String.__eq - end - local.set $161 - local.get $160 - call $~lib/rt/pure/__release - local.get $159 - call $~lib/rt/pure/__release - local.get $161 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -22484,33 +17152,8 @@ i64.const -19999868719476735 call $~lib/util/number/itoa64 local.tee $159 - call $~lib/rt/pure/__retain - local.set $160 i32.const 14528 - call $~lib/rt/pure/__retain - local.set $161 - local.get $160 - i32.eqz - local.get $161 - i32.eqz - i32.or - if (result i32) - local.get $160 - local.get $161 - i32.eq - else - local.get $160 - local.get $161 - call $~lib/string/String.__eq - end - local.set $162 - local.get $161 - call $~lib/rt/pure/__release - local.get $160 - call $~lib/rt/pure/__release - local.get $162 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -22523,33 +17166,8 @@ i64.const 9223372036854775807 call $~lib/util/number/itoa64 local.tee $160 - call $~lib/rt/pure/__retain - local.set $161 i32.const 14592 - call $~lib/rt/pure/__retain - local.set $162 - local.get $161 - i32.eqz - local.get $162 - i32.eqz - i32.or - if (result i32) - local.get $161 - local.get $162 - i32.eq - else - local.get $161 - local.get $162 - call $~lib/string/String.__eq - end - local.set $163 - local.get $162 - call $~lib/rt/pure/__release - local.get $161 - call $~lib/rt/pure/__release - local.get $163 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -22562,33 +17180,8 @@ i64.const -9223372036854775808 call $~lib/util/number/itoa64 local.tee $161 - call $~lib/rt/pure/__retain - local.set $162 i32.const 14656 - call $~lib/rt/pure/__retain - local.set $163 - local.get $162 - i32.eqz - local.get $163 - i32.eqz - i32.or - if (result i32) - local.get $162 - local.get $163 - i32.eq - else - local.get $162 - local.get $163 - call $~lib/string/String.__eq - end - local.set $164 - local.get $163 - call $~lib/rt/pure/__release - local.get $162 - call $~lib/rt/pure/__release - local.get $164 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -22601,33 +17194,8 @@ f64.const 0 call $~lib/util/number/dtoa local.tee $162 - call $~lib/rt/pure/__retain - local.set $163 i32.const 14720 - call $~lib/rt/pure/__retain - local.set $164 - local.get $163 - i32.eqz - local.get $164 - i32.eqz - i32.or - if (result i32) - local.get $163 - local.get $164 - i32.eq - else - local.get $163 - local.get $164 - call $~lib/string/String.__eq - end - local.set $165 - local.get $164 - call $~lib/rt/pure/__release - local.get $163 - call $~lib/rt/pure/__release - local.get $165 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -22640,33 +17208,8 @@ f64.const -0 call $~lib/util/number/dtoa local.tee $163 - call $~lib/rt/pure/__retain - local.set $164 i32.const 14720 - call $~lib/rt/pure/__retain - local.set $165 - local.get $164 - i32.eqz - local.get $165 - i32.eqz - i32.or - if (result i32) - local.get $164 - local.get $165 - i32.eq - else - local.get $164 - local.get $165 - call $~lib/string/String.__eq - end - local.set $166 - local.get $165 - call $~lib/rt/pure/__release - local.get $164 - call $~lib/rt/pure/__release - local.get $166 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -22679,33 +17222,8 @@ f64.const nan:0x8000000000000 call $~lib/util/number/dtoa local.tee $164 - call $~lib/rt/pure/__retain - local.set $165 i32.const 4832 - call $~lib/rt/pure/__retain - local.set $166 - local.get $165 - i32.eqz - local.get $166 - i32.eqz - i32.or - if (result i32) - local.get $165 - local.get $166 - i32.eq - else - local.get $165 - local.get $166 - call $~lib/string/String.__eq - end - local.set $167 - local.get $166 - call $~lib/rt/pure/__release - local.get $165 - call $~lib/rt/pure/__release - local.get $167 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -22718,33 +17236,8 @@ f64.const inf call $~lib/util/number/dtoa local.tee $165 - call $~lib/rt/pure/__retain - local.set $166 i32.const 14752 - call $~lib/rt/pure/__retain - local.set $167 - local.get $166 - i32.eqz - local.get $167 - i32.eqz - i32.or - if (result i32) - local.get $166 - local.get $167 - i32.eq - else - local.get $166 - local.get $167 - call $~lib/string/String.__eq - end - local.set $168 - local.get $167 - call $~lib/rt/pure/__release - local.get $166 - call $~lib/rt/pure/__release - local.get $168 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -22757,33 +17250,8 @@ f64.const -inf call $~lib/util/number/dtoa local.tee $166 - call $~lib/rt/pure/__retain - local.set $167 i32.const 6048 - call $~lib/rt/pure/__retain - local.set $168 - local.get $167 - i32.eqz - local.get $168 - i32.eqz - i32.or - if (result i32) - local.get $167 - local.get $168 - i32.eq - else - local.get $167 - local.get $168 - call $~lib/string/String.__eq - end - local.set $169 - local.get $168 - call $~lib/rt/pure/__release - local.get $167 - call $~lib/rt/pure/__release - local.get $169 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -22796,33 +17264,8 @@ f64.const 2.220446049250313e-16 call $~lib/util/number/dtoa local.tee $167 - call $~lib/rt/pure/__retain - local.set $168 i32.const 5344 - call $~lib/rt/pure/__retain - local.set $169 - local.get $168 - i32.eqz - local.get $169 - i32.eqz - i32.or - if (result i32) - local.get $168 - local.get $169 - i32.eq - else - local.get $168 - local.get $169 - call $~lib/string/String.__eq - end - local.set $170 - local.get $169 - call $~lib/rt/pure/__release - local.get $168 - call $~lib/rt/pure/__release - local.get $170 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -22835,33 +17278,8 @@ f64.const -2.220446049250313e-16 call $~lib/util/number/dtoa local.tee $168 - call $~lib/rt/pure/__retain - local.set $169 i32.const 15760 - call $~lib/rt/pure/__retain - local.set $170 - local.get $169 - i32.eqz - local.get $170 - i32.eqz - i32.or - if (result i32) - local.get $169 - local.get $170 - i32.eq - else - local.get $169 - local.get $170 - call $~lib/string/String.__eq - end - local.set $171 - local.get $170 - call $~lib/rt/pure/__release - local.get $169 - call $~lib/rt/pure/__release - local.get $171 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -22874,33 +17292,8 @@ f64.const 1797693134862315708145274e284 call $~lib/util/number/dtoa local.tee $169 - call $~lib/rt/pure/__retain - local.set $170 i32.const 5408 - call $~lib/rt/pure/__retain - local.set $171 - local.get $170 - i32.eqz - local.get $171 - i32.eqz - i32.or - if (result i32) - local.get $170 - local.get $171 - i32.eq - else - local.get $170 - local.get $171 - call $~lib/string/String.__eq - end - local.set $172 - local.get $171 - call $~lib/rt/pure/__release - local.get $170 - call $~lib/rt/pure/__release - local.get $172 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -22909,37 +17302,12 @@ i32.const 1 call $~lib/builtins/abort unreachable - end - f64.const -1797693134862315708145274e284 - call $~lib/util/number/dtoa - local.tee $170 - call $~lib/rt/pure/__retain - local.set $171 - i32.const 15824 - call $~lib/rt/pure/__retain - local.set $172 - local.get $171 - i32.eqz - local.get $172 - i32.eqz - i32.or - if (result i32) - local.get $171 - local.get $172 - i32.eq - else - local.get $171 - local.get $172 - call $~lib/string/String.__eq - end - local.set $173 - local.get $172 - call $~lib/rt/pure/__release - local.get $171 - call $~lib/rt/pure/__release - local.get $173 - i32.const 0 - i32.ne + end + f64.const -1797693134862315708145274e284 + call $~lib/util/number/dtoa + local.tee $170 + i32.const 15824 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -22952,33 +17320,8 @@ f64.const 4185580496821356722454785e274 call $~lib/util/number/dtoa local.tee $171 - call $~lib/rt/pure/__retain - local.set $172 i32.const 15888 - call $~lib/rt/pure/__retain - local.set $173 - local.get $172 - i32.eqz - local.get $173 - i32.eqz - i32.or - if (result i32) - local.get $172 - local.get $173 - i32.eq - else - local.get $172 - local.get $173 - call $~lib/string/String.__eq - end - local.set $174 - local.get $173 - call $~lib/rt/pure/__release - local.get $172 - call $~lib/rt/pure/__release - local.get $174 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -22991,33 +17334,8 @@ f64.const 2.2250738585072014e-308 call $~lib/util/number/dtoa local.tee $172 - call $~lib/rt/pure/__retain - local.set $173 i32.const 15952 - call $~lib/rt/pure/__retain - local.set $174 - local.get $173 - i32.eqz - local.get $174 - i32.eqz - i32.or - if (result i32) - local.get $173 - local.get $174 - i32.eq - else - local.get $173 - local.get $174 - call $~lib/string/String.__eq - end - local.set $175 - local.get $174 - call $~lib/rt/pure/__release - local.get $173 - call $~lib/rt/pure/__release - local.get $175 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -23030,33 +17348,8 @@ f64.const 4.940656e-318 call $~lib/util/number/dtoa local.tee $173 - call $~lib/rt/pure/__retain - local.set $174 i32.const 16016 - call $~lib/rt/pure/__retain - local.set $175 - local.get $174 - i32.eqz - local.get $175 - i32.eqz - i32.or - if (result i32) - local.get $174 - local.get $175 - i32.eq - else - local.get $174 - local.get $175 - call $~lib/string/String.__eq - end - local.set $176 - local.get $175 - call $~lib/rt/pure/__release - local.get $174 - call $~lib/rt/pure/__release - local.get $176 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -23069,33 +17362,8 @@ f64.const 9060801153433600 call $~lib/util/number/dtoa local.tee $174 - call $~lib/rt/pure/__retain - local.set $175 i32.const 16064 - call $~lib/rt/pure/__retain - local.set $176 - local.get $175 - i32.eqz - local.get $176 - i32.eqz - i32.or - if (result i32) - local.get $175 - local.get $176 - i32.eq - else - local.get $175 - local.get $176 - call $~lib/string/String.__eq - end - local.set $177 - local.get $176 - call $~lib/rt/pure/__release - local.get $175 - call $~lib/rt/pure/__release - local.get $177 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -23108,33 +17376,8 @@ f64.const 4708356024711512064 call $~lib/util/number/dtoa local.tee $175 - call $~lib/rt/pure/__retain - local.set $176 i32.const 16128 - call $~lib/rt/pure/__retain - local.set $177 - local.get $176 - i32.eqz - local.get $177 - i32.eqz - i32.or - if (result i32) - local.get $176 - local.get $177 - i32.eq - else - local.get $176 - local.get $177 - call $~lib/string/String.__eq - end - local.set $178 - local.get $177 - call $~lib/rt/pure/__release - local.get $176 - call $~lib/rt/pure/__release - local.get $178 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -23147,33 +17390,8 @@ f64.const 9409340012568248320 call $~lib/util/number/dtoa local.tee $176 - call $~lib/rt/pure/__retain - local.set $177 i32.const 16192 - call $~lib/rt/pure/__retain - local.set $178 - local.get $177 - i32.eqz - local.get $178 - i32.eqz - i32.or - if (result i32) - local.get $177 - local.get $178 - i32.eq - else - local.get $177 - local.get $178 - call $~lib/string/String.__eq - end - local.set $179 - local.get $178 - call $~lib/rt/pure/__release - local.get $177 - call $~lib/rt/pure/__release - local.get $179 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -23186,33 +17404,8 @@ f64.const 5e-324 call $~lib/util/number/dtoa local.tee $177 - call $~lib/rt/pure/__retain - local.set $178 i32.const 5472 - call $~lib/rt/pure/__retain - local.set $179 - local.get $178 - i32.eqz - local.get $179 - i32.eqz - i32.or - if (result i32) - local.get $178 - local.get $179 - i32.eq - else - local.get $178 - local.get $179 - call $~lib/string/String.__eq - end - local.set $180 - local.get $179 - call $~lib/rt/pure/__release - local.get $178 - call $~lib/rt/pure/__release - local.get $180 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -23225,33 +17418,8 @@ f64.const 1 call $~lib/util/number/dtoa local.tee $178 - call $~lib/rt/pure/__retain - local.set $179 i32.const 16256 - call $~lib/rt/pure/__retain - local.set $180 - local.get $179 - i32.eqz - local.get $180 - i32.eqz - i32.or - if (result i32) - local.get $179 - local.get $180 - i32.eq - else - local.get $179 - local.get $180 - call $~lib/string/String.__eq - end - local.set $181 - local.get $180 - call $~lib/rt/pure/__release - local.get $179 - call $~lib/rt/pure/__release - local.get $181 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -23264,33 +17432,8 @@ f64.const 0.1 call $~lib/util/number/dtoa local.tee $179 - call $~lib/rt/pure/__retain - local.set $180 i32.const 2480 - call $~lib/rt/pure/__retain - local.set $181 - local.get $180 - i32.eqz - local.get $181 - i32.eqz - i32.or - if (result i32) - local.get $180 - local.get $181 - i32.eq - else - local.get $180 - local.get $181 - call $~lib/string/String.__eq - end - local.set $182 - local.get $181 - call $~lib/rt/pure/__release - local.get $180 - call $~lib/rt/pure/__release - local.get $182 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -23303,33 +17446,8 @@ f64.const -1 call $~lib/util/number/dtoa local.tee $180 - call $~lib/rt/pure/__retain - local.set $181 i32.const 16288 - call $~lib/rt/pure/__retain - local.set $182 - local.get $181 - i32.eqz - local.get $182 - i32.eqz - i32.or - if (result i32) - local.get $181 - local.get $182 - i32.eq - else - local.get $181 - local.get $182 - call $~lib/string/String.__eq - end - local.set $183 - local.get $182 - call $~lib/rt/pure/__release - local.get $181 - call $~lib/rt/pure/__release - local.get $183 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -23342,33 +17460,8 @@ f64.const -0.1 call $~lib/util/number/dtoa local.tee $181 - call $~lib/rt/pure/__retain - local.set $182 i32.const 16320 - call $~lib/rt/pure/__retain - local.set $183 - local.get $182 - i32.eqz - local.get $183 - i32.eqz - i32.or - if (result i32) - local.get $182 - local.get $183 - i32.eq - else - local.get $182 - local.get $183 - call $~lib/string/String.__eq - end - local.set $184 - local.get $183 - call $~lib/rt/pure/__release - local.get $182 - call $~lib/rt/pure/__release - local.get $184 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -23381,33 +17474,8 @@ f64.const 1e6 call $~lib/util/number/dtoa local.tee $182 - call $~lib/rt/pure/__retain - local.set $183 i32.const 16352 - call $~lib/rt/pure/__retain - local.set $184 - local.get $183 - i32.eqz - local.get $184 - i32.eqz - i32.or - if (result i32) - local.get $183 - local.get $184 - i32.eq - else - local.get $183 - local.get $184 - call $~lib/string/String.__eq - end - local.set $185 - local.get $184 - call $~lib/rt/pure/__release - local.get $183 - call $~lib/rt/pure/__release - local.get $185 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -23420,72 +17488,22 @@ f64.const 1e-06 call $~lib/util/number/dtoa local.tee $183 - call $~lib/rt/pure/__retain - local.set $184 i32.const 16400 - call $~lib/rt/pure/__retain - local.set $185 - local.get $184 - i32.eqz - local.get $185 - i32.eqz - i32.or - if (result i32) - local.get $184 - local.get $185 - i32.eq - else - local.get $184 - local.get $185 - call $~lib/string/String.__eq - end - local.set $186 - local.get $185 - call $~lib/rt/pure/__release - local.get $184 - call $~lib/rt/pure/__release - local.get $186 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 i32.const 80 i32.const 563 i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -1e6 - call $~lib/util/number/dtoa - local.tee $184 - call $~lib/rt/pure/__retain - local.set $185 - i32.const 16432 - call $~lib/rt/pure/__retain - local.set $186 - local.get $185 - i32.eqz - local.get $186 - i32.eqz - i32.or - if (result i32) - local.get $185 - local.get $186 - i32.eq - else - local.get $185 - local.get $186 - call $~lib/string/String.__eq + call $~lib/builtins/abort + unreachable end - local.set $187 - local.get $186 - call $~lib/rt/pure/__release - local.get $185 - call $~lib/rt/pure/__release - local.get $187 - i32.const 0 - i32.ne + f64.const -1e6 + call $~lib/util/number/dtoa + local.tee $184 + i32.const 16432 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -23498,33 +17516,8 @@ f64.const -1e-06 call $~lib/util/number/dtoa local.tee $185 - call $~lib/rt/pure/__retain - local.set $186 i32.const 16480 - call $~lib/rt/pure/__retain - local.set $187 - local.get $186 - i32.eqz - local.get $187 - i32.eqz - i32.or - if (result i32) - local.get $186 - local.get $187 - i32.eq - else - local.get $186 - local.get $187 - call $~lib/string/String.__eq - end - local.set $188 - local.get $187 - call $~lib/rt/pure/__release - local.get $186 - call $~lib/rt/pure/__release - local.get $188 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -23537,33 +17530,8 @@ f64.const 1e7 call $~lib/util/number/dtoa local.tee $186 - call $~lib/rt/pure/__retain - local.set $187 i32.const 16528 - call $~lib/rt/pure/__retain - local.set $188 - local.get $187 - i32.eqz - local.get $188 - i32.eqz - i32.or - if (result i32) - local.get $187 - local.get $188 - i32.eq - else - local.get $187 - local.get $188 - call $~lib/string/String.__eq - end - local.set $189 - local.get $188 - call $~lib/rt/pure/__release - local.get $187 - call $~lib/rt/pure/__release - local.get $189 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -23576,33 +17544,8 @@ f64.const 1e-07 call $~lib/util/number/dtoa local.tee $187 - call $~lib/rt/pure/__retain - local.set $188 i32.const 16576 - call $~lib/rt/pure/__retain - local.set $189 - local.get $188 - i32.eqz - local.get $189 - i32.eqz - i32.or - if (result i32) - local.get $188 - local.get $189 - i32.eq - else - local.get $188 - local.get $189 - call $~lib/string/String.__eq - end - local.set $190 - local.get $189 - call $~lib/rt/pure/__release - local.get $188 - call $~lib/rt/pure/__release - local.get $190 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -23615,33 +17558,8 @@ f64.const 1.e+308 call $~lib/util/number/dtoa local.tee $188 - call $~lib/rt/pure/__retain - local.set $189 i32.const 2704 - call $~lib/rt/pure/__retain - local.set $190 - local.get $189 - i32.eqz - local.get $190 - i32.eqz - i32.or - if (result i32) - local.get $189 - local.get $190 - i32.eq - else - local.get $189 - local.get $190 - call $~lib/string/String.__eq - end - local.set $191 - local.get $190 - call $~lib/rt/pure/__release - local.get $189 - call $~lib/rt/pure/__release - local.get $191 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -23654,33 +17572,8 @@ f64.const -1.e+308 call $~lib/util/number/dtoa local.tee $189 - call $~lib/rt/pure/__retain - local.set $190 i32.const 16608 - call $~lib/rt/pure/__retain - local.set $191 - local.get $190 - i32.eqz - local.get $191 - i32.eqz - i32.or - if (result i32) - local.get $190 - local.get $191 - i32.eq - else - local.get $190 - local.get $191 - call $~lib/string/String.__eq - end - local.set $192 - local.get $191 - call $~lib/rt/pure/__release - local.get $190 - call $~lib/rt/pure/__release - local.get $192 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -23693,33 +17586,8 @@ f64.const inf call $~lib/util/number/dtoa local.tee $190 - call $~lib/rt/pure/__retain - local.set $191 i32.const 14752 - call $~lib/rt/pure/__retain - local.set $192 - local.get $191 - i32.eqz - local.get $192 - i32.eqz - i32.or - if (result i32) - local.get $191 - local.get $192 - i32.eq - else - local.get $191 - local.get $192 - call $~lib/string/String.__eq - end - local.set $193 - local.get $192 - call $~lib/rt/pure/__release - local.get $191 - call $~lib/rt/pure/__release - local.get $193 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -23732,33 +17600,8 @@ f64.const -inf call $~lib/util/number/dtoa local.tee $191 - call $~lib/rt/pure/__retain - local.set $192 i32.const 6048 - call $~lib/rt/pure/__retain - local.set $193 - local.get $192 - i32.eqz - local.get $193 - i32.eqz - i32.or - if (result i32) - local.get $192 - local.get $193 - i32.eq - else - local.get $192 - local.get $193 - call $~lib/string/String.__eq - end - local.set $194 - local.get $193 - call $~lib/rt/pure/__release - local.get $192 - call $~lib/rt/pure/__release - local.get $194 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -23771,33 +17614,8 @@ f64.const 1e-308 call $~lib/util/number/dtoa local.tee $192 - call $~lib/rt/pure/__retain - local.set $193 i32.const 16640 - call $~lib/rt/pure/__retain - local.set $194 - local.get $193 - i32.eqz - local.get $194 - i32.eqz - i32.or - if (result i32) - local.get $193 - local.get $194 - i32.eq - else - local.get $193 - local.get $194 - call $~lib/string/String.__eq - end - local.set $195 - local.get $194 - call $~lib/rt/pure/__release - local.get $193 - call $~lib/rt/pure/__release - local.get $195 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -23810,33 +17628,8 @@ f64.const -1e-308 call $~lib/util/number/dtoa local.tee $193 - call $~lib/rt/pure/__retain - local.set $194 i32.const 16672 - call $~lib/rt/pure/__retain - local.set $195 - local.get $194 - i32.eqz - local.get $195 - i32.eqz - i32.or - if (result i32) - local.get $194 - local.get $195 - i32.eq - else - local.get $194 - local.get $195 - call $~lib/string/String.__eq - end - local.set $196 - local.get $195 - call $~lib/rt/pure/__release - local.get $194 - call $~lib/rt/pure/__release - local.get $196 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -23849,33 +17642,8 @@ f64.const 1e-323 call $~lib/util/number/dtoa local.tee $194 - call $~lib/rt/pure/__retain - local.set $195 i32.const 16704 - call $~lib/rt/pure/__retain - local.set $196 - local.get $195 - i32.eqz - local.get $196 - i32.eqz - i32.or - if (result i32) - local.get $195 - local.get $196 - i32.eq - else - local.get $195 - local.get $196 - call $~lib/string/String.__eq - end - local.set $197 - local.get $196 - call $~lib/rt/pure/__release - local.get $195 - call $~lib/rt/pure/__release - local.get $197 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -23888,33 +17656,8 @@ f64.const -1e-323 call $~lib/util/number/dtoa local.tee $195 - call $~lib/rt/pure/__retain - local.set $196 i32.const 16736 - call $~lib/rt/pure/__retain - local.set $197 - local.get $196 - i32.eqz - local.get $197 - i32.eqz - i32.or - if (result i32) - local.get $196 - local.get $197 - i32.eq - else - local.get $196 - local.get $197 - call $~lib/string/String.__eq - end - local.set $198 - local.get $197 - call $~lib/rt/pure/__release - local.get $196 - call $~lib/rt/pure/__release - local.get $198 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -23927,72 +17670,22 @@ f64.const 0 call $~lib/util/number/dtoa local.tee $196 - call $~lib/rt/pure/__retain - local.set $197 i32.const 14720 - call $~lib/rt/pure/__retain - local.set $198 - local.get $197 - i32.eqz - local.get $198 - i32.eqz - i32.or - if (result i32) - local.get $197 - local.get $198 - i32.eq - else - local.get $197 - local.get $198 - call $~lib/string/String.__eq - end - local.set $199 - local.get $198 - call $~lib/rt/pure/__release - local.get $197 - call $~lib/rt/pure/__release - local.get $199 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 i32.const 80 - i32.const 577 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 4294967272 - call $~lib/util/number/dtoa - local.tee $197 - call $~lib/rt/pure/__retain - local.set $198 - i32.const 16768 - call $~lib/rt/pure/__retain - local.set $199 - local.get $198 - i32.eqz - local.get $199 - i32.eqz - i32.or - if (result i32) - local.get $198 - local.get $199 - i32.eq - else - local.get $198 - local.get $199 - call $~lib/string/String.__eq - end - local.set $200 - local.get $199 - call $~lib/rt/pure/__release - local.get $198 - call $~lib/rt/pure/__release - local.get $200 - i32.const 0 - i32.ne + i32.const 577 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 4294967272 + call $~lib/util/number/dtoa + local.tee $197 + i32.const 16768 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -24005,33 +17698,8 @@ f64.const 1.2312145673456234e-08 call $~lib/util/number/dtoa local.tee $198 - call $~lib/rt/pure/__retain - local.set $199 i32.const 16816 - call $~lib/rt/pure/__retain - local.set $200 - local.get $199 - i32.eqz - local.get $200 - i32.eqz - i32.or - if (result i32) - local.get $199 - local.get $200 - i32.eq - else - local.get $199 - local.get $200 - call $~lib/string/String.__eq - end - local.set $201 - local.get $200 - call $~lib/rt/pure/__release - local.get $199 - call $~lib/rt/pure/__release - local.get $201 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -24044,33 +17712,8 @@ f64.const 555555555.5555556 call $~lib/util/number/dtoa local.tee $199 - call $~lib/rt/pure/__retain - local.set $200 i32.const 16880 - call $~lib/rt/pure/__retain - local.set $201 - local.get $200 - i32.eqz - local.get $201 - i32.eqz - i32.or - if (result i32) - local.get $200 - local.get $201 - i32.eq - else - local.get $200 - local.get $201 - call $~lib/string/String.__eq - end - local.set $202 - local.get $201 - call $~lib/rt/pure/__release - local.get $200 - call $~lib/rt/pure/__release - local.get $202 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -24083,33 +17726,8 @@ f64.const 0.9999999999999999 call $~lib/util/number/dtoa local.tee $200 - call $~lib/rt/pure/__retain - local.set $201 i32.const 16944 - call $~lib/rt/pure/__retain - local.set $202 - local.get $201 - i32.eqz - local.get $202 - i32.eqz - i32.or - if (result i32) - local.get $201 - local.get $202 - i32.eq - else - local.get $201 - local.get $202 - call $~lib/string/String.__eq - end - local.set $203 - local.get $202 - call $~lib/rt/pure/__release - local.get $201 - call $~lib/rt/pure/__release - local.get $203 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -24122,33 +17740,8 @@ f64.const 1 call $~lib/util/number/dtoa local.tee $201 - call $~lib/rt/pure/__retain - local.set $202 i32.const 16256 - call $~lib/rt/pure/__retain - local.set $203 - local.get $202 - i32.eqz - local.get $203 - i32.eqz - i32.or - if (result i32) - local.get $202 - local.get $203 - i32.eq - else - local.get $202 - local.get $203 - call $~lib/string/String.__eq - end - local.set $204 - local.get $203 - call $~lib/rt/pure/__release - local.get $202 - call $~lib/rt/pure/__release - local.get $204 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -24161,33 +17754,8 @@ f64.const 12.34 call $~lib/util/number/dtoa local.tee $202 - call $~lib/rt/pure/__retain - local.set $203 i32.const 17008 - call $~lib/rt/pure/__retain - local.set $204 - local.get $203 - i32.eqz - local.get $204 - i32.eqz - i32.or - if (result i32) - local.get $203 - local.get $204 - i32.eq - else - local.get $203 - local.get $204 - call $~lib/string/String.__eq - end - local.set $205 - local.get $204 - call $~lib/rt/pure/__release - local.get $203 - call $~lib/rt/pure/__release - local.get $205 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -24200,33 +17768,8 @@ f64.const 0.3333333333333333 call $~lib/util/number/dtoa local.tee $203 - call $~lib/rt/pure/__retain - local.set $204 i32.const 17040 - call $~lib/rt/pure/__retain - local.set $205 - local.get $204 - i32.eqz - local.get $205 - i32.eqz - i32.or - if (result i32) - local.get $204 - local.get $205 - i32.eq - else - local.get $204 - local.get $205 - call $~lib/string/String.__eq - end - local.set $206 - local.get $205 - call $~lib/rt/pure/__release - local.get $204 - call $~lib/rt/pure/__release - local.get $206 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -24239,33 +17782,8 @@ f64.const 1234e17 call $~lib/util/number/dtoa local.tee $204 - call $~lib/rt/pure/__retain - local.set $205 i32.const 17104 - call $~lib/rt/pure/__retain - local.set $206 - local.get $205 - i32.eqz - local.get $206 - i32.eqz - i32.or - if (result i32) - local.get $205 - local.get $206 - i32.eq - else - local.get $205 - local.get $206 - call $~lib/string/String.__eq - end - local.set $207 - local.get $206 - call $~lib/rt/pure/__release - local.get $205 - call $~lib/rt/pure/__release - local.get $207 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -24278,33 +17796,8 @@ f64.const 1234e18 call $~lib/util/number/dtoa local.tee $205 - call $~lib/rt/pure/__retain - local.set $206 i32.const 17168 - call $~lib/rt/pure/__retain - local.set $207 - local.get $206 - i32.eqz - local.get $207 - i32.eqz - i32.or - if (result i32) - local.get $206 - local.get $207 - i32.eq - else - local.get $206 - local.get $207 - call $~lib/string/String.__eq - end - local.set $208 - local.get $207 - call $~lib/rt/pure/__release - local.get $206 - call $~lib/rt/pure/__release - local.get $208 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -24317,33 +17810,8 @@ f64.const 2.71828 call $~lib/util/number/dtoa local.tee $206 - call $~lib/rt/pure/__retain - local.set $207 i32.const 17216 - call $~lib/rt/pure/__retain - local.set $208 - local.get $207 - i32.eqz - local.get $208 - i32.eqz - i32.or - if (result i32) - local.get $207 - local.get $208 - i32.eq - else - local.get $207 - local.get $208 - call $~lib/string/String.__eq - end - local.set $209 - local.get $208 - call $~lib/rt/pure/__release - local.get $207 - call $~lib/rt/pure/__release - local.get $209 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -24356,33 +17824,8 @@ f64.const 0.0271828 call $~lib/util/number/dtoa local.tee $207 - call $~lib/rt/pure/__retain - local.set $208 i32.const 17248 - call $~lib/rt/pure/__retain - local.set $209 - local.get $208 - i32.eqz - local.get $209 - i32.eqz - i32.or - if (result i32) - local.get $208 - local.get $209 - i32.eq - else - local.get $208 - local.get $209 - call $~lib/string/String.__eq - end - local.set $210 - local.get $209 - call $~lib/rt/pure/__release - local.get $208 - call $~lib/rt/pure/__release - local.get $210 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -24395,33 +17838,8 @@ f64.const 271.828 call $~lib/util/number/dtoa local.tee $208 - call $~lib/rt/pure/__retain - local.set $209 i32.const 17296 - call $~lib/rt/pure/__retain - local.set $210 - local.get $209 - i32.eqz - local.get $210 - i32.eqz - i32.or - if (result i32) - local.get $209 - local.get $210 - i32.eq - else - local.get $209 - local.get $210 - call $~lib/string/String.__eq - end - local.set $211 - local.get $210 - call $~lib/rt/pure/__release - local.get $209 - call $~lib/rt/pure/__release - local.get $211 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -24434,33 +17852,8 @@ f64.const 1.1e+128 call $~lib/util/number/dtoa local.tee $209 - call $~lib/rt/pure/__retain - local.set $210 i32.const 17328 - call $~lib/rt/pure/__retain - local.set $211 - local.get $210 - i32.eqz - local.get $211 - i32.eqz - i32.or - if (result i32) - local.get $210 - local.get $211 - i32.eq - else - local.get $210 - local.get $211 - call $~lib/string/String.__eq - end - local.set $212 - local.get $211 - call $~lib/rt/pure/__release - local.get $210 - call $~lib/rt/pure/__release - local.get $212 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -24473,33 +17866,8 @@ f64.const 1.1e-64 call $~lib/util/number/dtoa local.tee $210 - call $~lib/rt/pure/__retain - local.set $211 i32.const 17360 - call $~lib/rt/pure/__retain - local.set $212 - local.get $211 - i32.eqz - local.get $212 - i32.eqz - i32.or - if (result i32) - local.get $211 - local.get $212 - i32.eq - else - local.get $211 - local.get $212 - call $~lib/string/String.__eq - end - local.set $213 - local.get $212 - call $~lib/rt/pure/__release - local.get $211 - call $~lib/rt/pure/__release - local.get $213 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -24512,33 +17880,8 @@ f64.const 0.000035689 call $~lib/util/number/dtoa local.tee $211 - call $~lib/rt/pure/__retain - local.set $212 i32.const 17392 - call $~lib/rt/pure/__retain - local.set $213 - local.get $212 - i32.eqz - local.get $213 - i32.eqz - i32.or - if (result i32) - local.get $212 - local.get $213 - i32.eq - else - local.get $212 - local.get $213 - call $~lib/string/String.__eq - end - local.set $214 - local.get $213 - call $~lib/rt/pure/__release - local.get $212 - call $~lib/rt/pure/__release - local.get $214 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -24614,12 +17957,12 @@ call $~lib/rt/pure/__release local.get $31 call $~lib/rt/pure/__release - local.get $32 - call $~lib/rt/pure/__release local.get $33 call $~lib/rt/pure/__release local.get $34 call $~lib/rt/pure/__release + local.get $35 + call $~lib/rt/pure/__release local.get $36 call $~lib/rt/pure/__release local.get $37 @@ -24973,11 +18316,11 @@ local.get $211 call $~lib/rt/pure/__release ) - (func $std/string/getString (; 91 ;) (result i32) + (func $std/string/getString (; 93 ;) (result i32) global.get $std/string/str call $~lib/rt/pure/__retain ) - (func $~start (; 92 ;) + (func $~start (; 94 ;) global.get $~started if return @@ -24987,7 +18330,7 @@ end call $start:std/string ) - (func $~lib/rt/pure/decrement (; 93 ;) (param $0 i32) + (func $~lib/rt/pure/decrement (; 95 ;) (param $0 i32) (local $1 i32) (local $2 i32) local.get $0 @@ -25064,10 +18407,10 @@ i32.store offset=4 end ) - (func $~lib/rt/pure/__collect (; 94 ;) + (func $~lib/rt/pure/__collect (; 96 ;) return ) - (func $~lib/rt/pure/__visit (; 95 ;) (param $0 i32) (param $1 i32) + (func $~lib/rt/pure/__visit (; 97 ;) (param $0 i32) (param $1 i32) local.get $0 global.get $~lib/heap/__heap_base i32.lt_u @@ -25091,10 +18434,10 @@ i32.sub call $~lib/rt/pure/decrement ) - (func $~lib/staticarray/StaticArray#__visit_impl (; 96 ;) (param $0 i32) (param $1 i32) + (func $~lib/staticarray/StaticArray#__visit_impl (; 98 ;) (param $0 i32) (param $1 i32) nop ) - (func $~lib/array/Array<~lib/string/String>#__visit_impl (; 97 ;) (param $0 i32) (param $1 i32) + (func $~lib/array/Array<~lib/string/String>#__visit_impl (; 99 ;) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -25137,22 +18480,22 @@ local.get $1 call $~lib/rt/pure/__visit ) - (func $~lib/array/Array#__visit_impl (; 98 ;) (param $0 i32) (param $1 i32) + (func $~lib/array/Array#__visit_impl (; 100 ;) (param $0 i32) (param $1 i32) local.get $0 i32.load local.get $1 call $~lib/rt/pure/__visit ) - (func $~lib/staticarray/StaticArray#__visit_impl (; 99 ;) (param $0 i32) (param $1 i32) + (func $~lib/staticarray/StaticArray#__visit_impl (; 101 ;) (param $0 i32) (param $1 i32) nop ) - (func $~lib/staticarray/StaticArray#__visit_impl (; 100 ;) (param $0 i32) (param $1 i32) + (func $~lib/staticarray/StaticArray#__visit_impl (; 102 ;) (param $0 i32) (param $1 i32) nop ) - (func $~lib/staticarray/StaticArray#__visit_impl (; 101 ;) (param $0 i32) (param $1 i32) + (func $~lib/staticarray/StaticArray#__visit_impl (; 103 ;) (param $0 i32) (param $1 i32) nop ) - (func $~lib/rt/__visit_members (; 102 ;) (param $0 i32) (param $1 i32) + (func $~lib/rt/__visit_members (; 104 ;) (param $0 i32) (param $1 i32) (local $2 i32) block $switch$1$default block $switch$1$case$10 diff --git a/tests/compiler/std/symbol.optimized.wat b/tests/compiler/std/symbol.optimized.wat index b019c53ff1..e619d8050a 100644 --- a/tests/compiler/std/symbol.optimized.wat +++ b/tests/compiler/std/symbol.optimized.wat @@ -483,7 +483,7 @@ end i32.const 0 ) - (func $~lib/string/String.__eq (; 9 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/string/String#_eq (; 9 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) local.get $0 call $~lib/string/String#get:length @@ -512,39 +512,31 @@ i32.shl i32.add i32.load - local.set $1 + local.set $0 loop $while-continue|0 - local.get $1 + local.get $0 if - local.get $1 + local.get $0 i32.load offset=8 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $1 + local.get $0 i32.load - local.tee $0 - if (result i32) - local.get $0 - i32.const 1040 - call $~lib/string/String.__eq - else - local.get $0 - i32.const 1040 - i32.eq - end + i32.const 1040 + call $~lib/string/String#_eq end if - local.get $1 + local.get $0 return end - local.get $1 + local.get $0 i32.load offset=8 i32.const -2 i32.and - local.set $1 + local.set $0 br $while-continue|0 end end @@ -1025,14 +1017,16 @@ ) (func $~lib/symbol/_Symbol.for (; 17 ;) (result i32) (local $0 i32) + (local $1 i32) global.get $~lib/symbol/stringToId + local.tee $0 if - global.get $~lib/symbol/stringToId + local.get $0 i32.const 1040 call $~lib/util/hash/hashStr call $~lib/map/Map<~lib/string/String,usize>#find if - global.get $~lib/symbol/stringToId + local.get $0 i32.const 1040 call $~lib/util/hash/hashStr call $~lib/map/Map<~lib/string/String,usize>#find @@ -1079,46 +1073,46 @@ i32.const 24 i32.const 4 call $~lib/rt/stub/__alloc - local.tee $0 + local.tee $1 i32.const 0 i32.store - local.get $0 + local.get $1 i32.const 0 i32.store offset=4 - local.get $0 + local.get $1 i32.const 0 i32.store offset=8 - local.get $0 + local.get $1 i32.const 0 i32.store offset=12 - local.get $0 + local.get $1 i32.const 0 i32.store offset=16 - local.get $0 + local.get $1 i32.const 0 i32.store offset=20 - local.get $0 + local.get $1 call $~lib/map/Map<~lib/string/String,usize>#clear - local.get $0 + local.get $1 global.set $~lib/symbol/idToString end global.get $~lib/symbol/nextId - local.tee $0 + local.tee $1 i32.const 1 i32.add global.set $~lib/symbol/nextId - local.get $0 + local.get $1 i32.eqz if unreachable end - global.get $~lib/symbol/stringToId local.get $0 + local.get $1 call $~lib/map/Map<~lib/string/String,usize>#set global.get $~lib/symbol/idToString - local.get $0 + local.get $1 call $~lib/map/Map#set - local.get $0 + local.get $1 ) (func $~lib/map/Map#has (; 18 ;) (param $0 i32) (param $1 i32) (result i32) local.get $0 @@ -1149,16 +1143,18 @@ i32.load offset=4 ) (func $~lib/symbol/_Symbol.keyFor (; 20 ;) (param $0 i32) (result i32) + (local $1 i32) global.get $~lib/symbol/idToString + local.tee $1 if (result i32) - global.get $~lib/symbol/idToString + local.get $1 local.get $0 call $~lib/map/Map#has else i32.const 0 end if (result i32) - global.get $~lib/symbol/idToString + local.get $1 local.get $0 call $~lib/map/Map#get else @@ -1338,7 +1334,7 @@ end end ) - (func $~lib/string/String.__concat (; 22 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/string/String._add (; 22 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -1453,13 +1449,12 @@ i32.const 1344 end end - call $~lib/string/String.__concat + call $~lib/string/String._add i32.const 1872 - call $~lib/string/String.__concat + call $~lib/string/String._add ) (func $start:std/symbol (; 24 ;) (local $0 i32) - (local $1 i32) call $~lib/symbol/Symbol global.set $std/symbol/sym1 call $~lib/symbol/Symbol @@ -1501,6 +1496,19 @@ call $~lib/symbol/_Symbol.keyFor global.set $std/symbol/key2 global.get $std/symbol/key1 + local.tee $0 + i32.eqz + i32.const 1 + i32.or + if (result i32) + local.get $0 + i32.eqz + else + local.get $0 + i32.const 0 + call $~lib/string/String#_eq + end + i32.eqz if i32.const 0 i32.const 1072 @@ -1510,6 +1518,19 @@ unreachable end global.get $std/symbol/key2 + local.tee $0 + i32.eqz + i32.const 1 + i32.or + if (result i32) + local.get $0 + i32.eqz + else + local.get $0 + i32.const 0 + call $~lib/string/String#_eq + end + i32.eqz if i32.const 0 i32.const 1072 @@ -1547,16 +1568,8 @@ local.get $0 global.set $std/symbol/key4 global.get $std/symbol/key3 - local.tee $0 - if (result i32) - local.get $0 - i32.const 1040 - call $~lib/string/String.__eq - else - local.get $0 - i32.const 1040 - i32.eq - end + i32.const 1040 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -1567,21 +1580,8 @@ unreachable end global.get $std/symbol/key3 - local.tee $0 - i32.eqz global.get $std/symbol/key4 - local.tee $1 - i32.eqz - i32.or - if (result i32) - local.get $0 - local.get $1 - i32.eq - else - local.get $0 - local.get $1 - call $~lib/string/String.__eq - end + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -1593,18 +1593,8 @@ end call $~lib/symbol/Symbol call $~lib/symbol/_Symbol#toString - local.tee $1 - local.set $0 - local.get $1 - if (result i32) - local.get $0 - i32.const 1904 - call $~lib/string/String.__eq - else - local.get $0 - i32.const 1904 - i32.eq - end + i32.const 1904 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -1616,18 +1606,8 @@ end global.get $std/symbol/sym3 call $~lib/symbol/_Symbol#toString - local.tee $1 - local.set $0 - local.get $1 - if (result i32) - local.get $0 - i32.const 1936 - call $~lib/string/String.__eq - else - local.get $0 - i32.const 1936 - i32.eq - end + i32.const 1936 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -1643,18 +1623,8 @@ global.set $std/symbol/isConcatSpreadable i32.const 1 call $~lib/symbol/_Symbol#toString - local.tee $1 - local.set $0 - local.get $1 - if (result i32) - local.get $0 - i32.const 1984 - call $~lib/string/String.__eq - else - local.get $0 - i32.const 1984 - i32.eq - end + i32.const 1984 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -1666,18 +1636,8 @@ end global.get $std/symbol/isConcatSpreadable call $~lib/symbol/_Symbol#toString - local.tee $1 - local.set $0 - local.get $1 - if (result i32) - local.get $0 - i32.const 2048 - call $~lib/string/String.__eq - else - local.get $0 - i32.const 2048 - i32.eq - end + i32.const 2048 + call $~lib/string/String#_eq i32.eqz if i32.const 0 diff --git a/tests/compiler/std/symbol.untouched.wat b/tests/compiler/std/symbol.untouched.wat index cbeb13f598..f8e55bde95 100644 --- a/tests/compiler/std/symbol.untouched.wat +++ b/tests/compiler/std/symbol.untouched.wat @@ -750,12 +750,9 @@ call $~lib/rt/stub/__release local.get $7 ) - (func $~lib/string/String.__eq (; 15 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/string/String#_eq (; 15 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) - local.get $0 - call $~lib/rt/stub/__retain - local.set $0 local.get $1 call $~lib/rt/stub/__retain local.set $1 @@ -769,8 +766,6 @@ if i32.const 0 local.set $3 - local.get $0 - call $~lib/rt/stub/__release local.get $1 call $~lib/rt/stub/__release local.get $3 @@ -784,8 +779,6 @@ call $~lib/util/string/compareImpl i32.eqz local.set $3 - local.get $0 - call $~lib/rt/stub/__release local.get $1 call $~lib/rt/stub/__release local.get $3 @@ -794,8 +787,6 @@ (local $3 i32) (local $4 i32) (local $5 i32) - (local $6 i32) - (local $7 i32) local.get $1 call $~lib/rt/stub/__retain local.set $1 @@ -823,40 +814,17 @@ if (result i32) local.get $3 i32.load - call $~lib/rt/stub/__retain - local.set $6 local.get $1 - call $~lib/rt/stub/__retain - local.set $5 - local.get $6 - i32.eqz - local.get $5 - i32.eqz - i32.or - if (result i32) - local.get $6 - local.get $5 - i32.eq - else - local.get $6 - local.get $5 - call $~lib/string/String.__eq - end - local.set $7 - local.get $5 - call $~lib/rt/stub/__release - local.get $6 - call $~lib/rt/stub/__release - local.get $7 + call $~lib/string/String#_eq else i32.const 0 end if local.get $3 - local.set $6 + local.set $5 local.get $1 call $~lib/rt/stub/__release - local.get $6 + local.get $5 return end local.get $3 @@ -1599,68 +1567,90 @@ (func $~lib/symbol/_Symbol.for (; 25 ;) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) + (local $3 i32) + (local $4 i32) local.get $0 call $~lib/rt/stub/__retain local.set $0 global.get $~lib/symbol/stringToId + call $~lib/rt/stub/__retain + local.set $1 + local.get $1 i32.eqz if i32.const 0 call $~lib/map/Map<~lib/string/String,usize>#constructor - local.set $1 - global.get $~lib/symbol/stringToId - call $~lib/rt/stub/__release + local.set $2 local.get $1 + call $~lib/rt/stub/__release + local.get $2 + local.tee $1 + local.tee $2 + global.get $~lib/symbol/stringToId + local.tee $3 + i32.ne + if + local.get $2 + call $~lib/rt/stub/__retain + local.set $2 + local.get $3 + call $~lib/rt/stub/__release + end + local.get $2 global.set $~lib/symbol/stringToId i32.const 0 call $~lib/map/Map#constructor - local.set $1 + local.set $3 global.get $~lib/symbol/idToString call $~lib/rt/stub/__release - local.get $1 + local.get $3 global.set $~lib/symbol/idToString else - global.get $~lib/symbol/stringToId + local.get $1 local.get $0 call $~lib/map/Map<~lib/string/String,usize>#has if - global.get $~lib/symbol/stringToId + local.get $1 local.get $0 call $~lib/map/Map<~lib/string/String,usize>#get - local.set $1 + local.set $3 local.get $0 call $~lib/rt/stub/__release local.get $1 + call $~lib/rt/stub/__release + local.get $3 return end end global.get $~lib/symbol/nextId - local.tee $1 + local.tee $3 i32.const 1 i32.add global.set $~lib/symbol/nextId - local.get $1 - local.set $2 - local.get $2 + local.get $3 + local.set $4 + local.get $4 i32.eqz if unreachable end - global.get $~lib/symbol/stringToId + local.get $1 local.get $0 - local.get $2 + local.get $4 call $~lib/map/Map<~lib/string/String,usize>#set call $~lib/rt/stub/__release global.get $~lib/symbol/idToString - local.get $2 + local.get $4 local.get $0 call $~lib/map/Map#set call $~lib/rt/stub/__release - local.get $2 - local.set $1 + local.get $4 + local.set $3 local.get $0 call $~lib/rt/stub/__release local.get $1 + call $~lib/rt/stub/__release + local.get $3 ) (func $~lib/map/Map#has (; 26 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) @@ -1706,24 +1696,33 @@ call $~lib/rt/stub/__retain ) (func $~lib/symbol/_Symbol.keyFor (; 28 ;) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) global.get $~lib/symbol/idToString + call $~lib/rt/stub/__retain + local.set $1 + local.get $1 i32.const 0 i32.ne if (result i32) - global.get $~lib/symbol/idToString + local.get $1 local.get $0 call $~lib/map/Map#has else i32.const 0 end if (result i32) - global.get $~lib/symbol/idToString + local.get $1 local.get $0 call $~lib/map/Map#get else i32.const 0 call $~lib/rt/stub/__retain end + local.set $2 + local.get $1 + call $~lib/rt/stub/__release + local.get $2 ) (func $~lib/util/memory/memcpy (; 29 ;) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) @@ -3025,7 +3024,7 @@ call $~lib/rt/stub/__release local.get $5 ) - (func $~lib/string/String.__concat (; 32 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/string/String._add (; 32 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) local.get $0 call $~lib/rt/stub/__retain @@ -3231,10 +3230,10 @@ end i32.const 800 local.get $2 - call $~lib/string/String.__concat + call $~lib/string/String._add local.tee $3 i32.const 864 - call $~lib/string/String.__concat + call $~lib/string/String._add local.tee $4 local.set $5 local.get $3 @@ -3248,9 +3247,6 @@ (local $1 i32) (local $2 i32) (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) i32.const 32 call $~lib/symbol/Symbol global.set $std/symbol/sym1 @@ -3304,8 +3300,21 @@ call $~lib/symbol/_Symbol.keyFor global.set $std/symbol/key2 global.get $std/symbol/key1 + local.tee $0 + i32.eqz i32.const 0 - i32.eq + local.tee $1 + i32.eqz + i32.or + if (result i32) + local.get $0 + local.get $1 + i32.eq + else + local.get $0 + local.get $1 + call $~lib/string/String#_eq + end i32.eqz if i32.const 0 @@ -3316,8 +3325,21 @@ unreachable end global.get $std/symbol/key2 + local.tee $0 + i32.eqz i32.const 0 - i32.eq + local.tee $1 + i32.eqz + i32.or + if (result i32) + local.get $0 + local.get $1 + i32.eq + else + local.get $0 + local.get $1 + call $~lib/string/String#_eq + end i32.eqz if i32.const 0 @@ -3358,33 +3380,8 @@ call $~lib/rt/stub/__retain global.set $std/symbol/key4 global.get $std/symbol/key3 - call $~lib/rt/stub/__retain - local.set $1 i32.const 32 - call $~lib/rt/stub/__retain - local.set $0 - local.get $1 - i32.eqz - local.get $0 - i32.eqz - i32.or - if (result i32) - local.get $1 - local.get $0 - i32.eq - else - local.get $1 - local.get $0 - call $~lib/string/String.__eq - end - local.set $2 - local.get $0 - call $~lib/rt/stub/__release - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -3395,33 +3392,8 @@ unreachable end global.get $std/symbol/key3 - call $~lib/rt/stub/__retain - local.set $0 global.get $std/symbol/key4 - call $~lib/rt/stub/__retain - local.set $2 - local.get $0 - i32.eqz - local.get $2 - i32.eqz - i32.or - if (result i32) - local.get $0 - local.get $2 - i32.eq - else - local.get $0 - local.get $2 - call $~lib/string/String.__eq - end - local.set $1 - local.get $2 - call $~lib/rt/stub/__release - local.get $0 - call $~lib/rt/stub/__release - local.get $1 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -3435,33 +3407,8 @@ call $~lib/symbol/Symbol call $~lib/symbol/_Symbol#toString local.tee $0 - call $~lib/rt/stub/__retain - local.set $2 i32.const 896 - call $~lib/rt/stub/__retain - local.set $1 - local.get $2 - i32.eqz - local.get $1 - i32.eqz - i32.or - if (result i32) - local.get $2 - local.get $1 - i32.eq - else - local.get $2 - local.get $1 - call $~lib/string/String.__eq - end - local.set $3 - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - call $~lib/rt/stub/__release - local.get $3 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -3473,34 +3420,9 @@ end global.get $std/symbol/sym3 call $~lib/symbol/_Symbol#toString - local.tee $2 - call $~lib/rt/stub/__retain - local.set $1 + local.tee $1 i32.const 928 - call $~lib/rt/stub/__retain - local.set $3 - local.get $1 - i32.eqz - local.get $3 - i32.eqz - i32.or - if (result i32) - local.get $1 - local.get $3 - i32.eq - else - local.get $1 - local.get $3 - call $~lib/string/String.__eq - end - local.set $4 - local.get $3 - call $~lib/rt/stub/__release - local.get $1 - call $~lib/rt/stub/__release - local.get $4 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -3516,34 +3438,9 @@ global.set $std/symbol/isConcatSpreadable global.get $std/symbol/hasInstance call $~lib/symbol/_Symbol#toString - local.tee $1 - call $~lib/rt/stub/__retain - local.set $3 + local.tee $2 i32.const 976 - call $~lib/rt/stub/__retain - local.set $4 - local.get $3 - i32.eqz - local.get $4 - i32.eqz - i32.or - if (result i32) - local.get $3 - local.get $4 - i32.eq - else - local.get $3 - local.get $4 - call $~lib/string/String.__eq - end - local.set $5 - local.get $4 - call $~lib/rt/stub/__release - local.get $3 - call $~lib/rt/stub/__release - local.get $5 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -3556,33 +3453,8 @@ global.get $std/symbol/isConcatSpreadable call $~lib/symbol/_Symbol#toString local.tee $3 - call $~lib/rt/stub/__retain - local.set $4 i32.const 1040 - call $~lib/rt/stub/__retain - local.set $5 - local.get $4 - i32.eqz - local.get $5 - i32.eqz - i32.or - if (result i32) - local.get $4 - local.get $5 - i32.eq - else - local.get $4 - local.get $5 - call $~lib/string/String.__eq - end - local.set $6 - local.get $5 - call $~lib/rt/stub/__release - local.get $4 - call $~lib/rt/stub/__release - local.get $6 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 diff --git a/tests/compiler/std/typedarray.optimized.wat b/tests/compiler/std/typedarray.optimized.wat index c5d415ad0f..d1762dd832 100644 --- a/tests/compiler/std/typedarray.optimized.wat +++ b/tests/compiler/std/typedarray.optimized.wat @@ -1,6 +1,6 @@ (module - (type $none_=>_none (func)) (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) + (type $none_=>_none (func)) (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) (type $i32_=>_i32 (func (param i32) (result i32))) (type $i32_i32_=>_none (func (param i32 i32))) @@ -16659,7 +16659,7 @@ end i32.const 0 ) - (func $~lib/string/String.__eq (; 246 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/string/String#_eq (; 246 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) local.get $0 call $~lib/string/String#get:length @@ -16677,87 +16677,7 @@ call $~lib/util/string/compareImpl i32.eqz ) - (func $std/typedarray/testArrayJoinAndToString<~lib/typedarray/Int8Array,i8> (; 247 ;) - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - i32.const 5 - call $~lib/typedarray/Int8Array#constructor - local.tee $0 - local.get $0 - i32.const 0 - i32.const 1 - call $~lib/typedarray/Int8Array#__set - local.get $0 - i32.const 1 - i32.const 2 - call $~lib/typedarray/Int8Array#__set - local.get $0 - i32.const 2 - i32.const 3 - call $~lib/typedarray/Int8Array#__set - local.get $0 - i32.const 3 - i32.const 4 - call $~lib/typedarray/Int8Array#__set - local.get $0 - i32.const 4 - i32.const 5 - call $~lib/typedarray/Int8Array#__set - local.get $0 - call $~lib/typedarray/Int8Array#join - local.tee $3 - local.set $1 - local.get $3 - if (result i32) - local.get $1 - i32.const 3008 - call $~lib/string/String.__eq - else - local.get $1 - i32.const 3008 - i32.eq - end - i32.eqz - if - i32.const 0 - i32.const 1312 - i32.const 629 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - call $~lib/typedarray/Int8Array#join - local.tee $1 - local.set $2 - local.get $1 - if (result i32) - local.get $2 - i32.const 3008 - call $~lib/string/String.__eq - else - local.get $2 - i32.const 3008 - i32.eq - end - i32.eqz - if - i32.const 0 - i32.const 1312 - i32.const 630 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $3 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - ) - (func $~lib/util/number/utoa32 (; 248 ;) (param $0 i32) (result i32) + (func $~lib/util/number/utoa32 (; 247 ;) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) local.get $0 @@ -16780,7 +16700,7 @@ local.get $2 call $~lib/rt/pure/__retain ) - (func $~lib/util/number/itoa_stream (; 249 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/util/number/itoa_stream (; 248 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 local.get $1 i32.const 1 @@ -16815,7 +16735,7 @@ call $~lib/util/number/utoa_simple local.get $1 ) - (func $~lib/util/string/joinIntegerArray (; 250 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/util/string/joinIntegerArray (; 249 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -16916,174 +16836,14 @@ end local.get $1 ) - (func $~lib/typedarray/Uint8Array#join (; 251 ;) (param $0 i32) (result i32) + (func $~lib/typedarray/Uint8Array#join (; 250 ;) (param $0 i32) (result i32) local.get $0 i32.load offset=4 local.get $0 i32.load offset=8 call $~lib/util/string/joinIntegerArray ) - (func $std/typedarray/testArrayJoinAndToString<~lib/typedarray/Uint8Array,u8> (; 252 ;) - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - i32.const 5 - call $~lib/typedarray/Uint8Array#constructor - local.tee $0 - local.get $0 - i32.const 0 - i32.const 1 - call $~lib/typedarray/Uint8Array#__set - local.get $0 - i32.const 1 - i32.const 2 - call $~lib/typedarray/Uint8Array#__set - local.get $0 - i32.const 2 - i32.const 3 - call $~lib/typedarray/Uint8Array#__set - local.get $0 - i32.const 3 - i32.const 4 - call $~lib/typedarray/Uint8Array#__set - local.get $0 - i32.const 4 - i32.const 5 - call $~lib/typedarray/Uint8Array#__set - local.get $0 - call $~lib/typedarray/Uint8Array#join - local.tee $3 - local.set $1 - local.get $3 - if (result i32) - local.get $1 - i32.const 3008 - call $~lib/string/String.__eq - else - local.get $1 - i32.const 3008 - i32.eq - end - i32.eqz - if - i32.const 0 - i32.const 1312 - i32.const 629 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - call $~lib/typedarray/Uint8Array#join - local.tee $1 - local.set $2 - local.get $1 - if (result i32) - local.get $2 - i32.const 3008 - call $~lib/string/String.__eq - else - local.get $2 - i32.const 3008 - i32.eq - end - i32.eqz - if - i32.const 0 - i32.const 1312 - i32.const 630 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $3 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - ) - (func $std/typedarray/testArrayJoinAndToString<~lib/typedarray/Uint8ClampedArray,u8> (; 253 ;) - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - i32.const 5 - call $~lib/typedarray/Uint8ClampedArray#constructor - local.tee $0 - local.get $0 - i32.const 0 - i32.const 1 - call $~lib/typedarray/Uint8ClampedArray#__set - local.get $0 - i32.const 1 - i32.const 2 - call $~lib/typedarray/Uint8ClampedArray#__set - local.get $0 - i32.const 2 - i32.const 3 - call $~lib/typedarray/Uint8ClampedArray#__set - local.get $0 - i32.const 3 - i32.const 4 - call $~lib/typedarray/Uint8ClampedArray#__set - local.get $0 - i32.const 4 - i32.const 5 - call $~lib/typedarray/Uint8ClampedArray#__set - local.get $0 - call $~lib/typedarray/Uint8Array#join - local.tee $3 - local.set $1 - local.get $3 - if (result i32) - local.get $1 - i32.const 3008 - call $~lib/string/String.__eq - else - local.get $1 - i32.const 3008 - i32.eq - end - i32.eqz - if - i32.const 0 - i32.const 1312 - i32.const 629 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - call $~lib/typedarray/Uint8Array#join - local.tee $1 - local.set $2 - local.get $1 - if (result i32) - local.get $2 - i32.const 3008 - call $~lib/string/String.__eq - else - local.get $2 - i32.const 3008 - i32.eq - end - i32.eqz - if - i32.const 0 - i32.const 1312 - i32.const 630 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $3 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - ) - (func $~lib/util/number/itoa_stream (; 254 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/util/number/itoa_stream (; 251 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 local.get $1 i32.const 1 @@ -17149,7 +16909,7 @@ call $~lib/util/number/utoa_simple local.get $1 ) - (func $~lib/util/string/joinIntegerArray (; 255 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/util/string/joinIntegerArray (; 252 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -17254,7 +17014,7 @@ end local.get $1 ) - (func $~lib/typedarray/Int16Array#join (; 256 ;) (param $0 i32) (result i32) + (func $~lib/typedarray/Int16Array#join (; 253 ;) (param $0 i32) (result i32) local.get $0 i32.load offset=4 local.get $0 @@ -17263,128 +17023,48 @@ i32.shr_u call $~lib/util/string/joinIntegerArray ) - (func $std/typedarray/testArrayJoinAndToString<~lib/typedarray/Int16Array,i16> (; 257 ;) - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - i32.const 5 - call $~lib/typedarray/Int16Array#constructor - local.tee $0 + (func $~lib/util/number/itoa_stream (; 254 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 - i32.const 0 + local.get $1 i32.const 1 - call $~lib/typedarray/Int16Array#__set + i32.shl + i32.add + local.set $0 + local.get $2 + i32.const 65535 + i32.and + i32.const 10 + i32.lt_u + if + local.get $0 + local.get $2 + i32.const 65535 + i32.and + i32.const 48 + i32.or + i32.store16 + i32.const 1 + return + end + local.get $2 + i32.const 65535 + i32.and + local.tee $2 + call $~lib/util/number/decimalCount32 + local.set $1 local.get $0 - i32.const 1 - i32.const 2 - call $~lib/typedarray/Int16Array#__set - local.get $0 - i32.const 2 - i32.const 3 - call $~lib/typedarray/Int16Array#__set - local.get $0 - i32.const 3 - i32.const 4 - call $~lib/typedarray/Int16Array#__set - local.get $0 - i32.const 4 - i32.const 5 - call $~lib/typedarray/Int16Array#__set - local.get $0 - call $~lib/typedarray/Int16Array#join - local.tee $3 - local.set $1 - local.get $3 - if (result i32) - local.get $1 - i32.const 3008 - call $~lib/string/String.__eq - else - local.get $1 - i32.const 3008 - i32.eq - end - i32.eqz - if - i32.const 0 - i32.const 1312 - i32.const 629 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - call $~lib/typedarray/Int16Array#join - local.tee $1 - local.set $2 - local.get $1 - if (result i32) - local.get $2 - i32.const 3008 - call $~lib/string/String.__eq - else - local.get $2 - i32.const 3008 - i32.eq - end - i32.eqz - if - i32.const 0 - i32.const 1312 - i32.const 630 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $3 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - ) - (func $~lib/util/number/itoa_stream (; 258 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - local.get $0 - local.get $1 - i32.const 1 - i32.shl - i32.add - local.set $0 - local.get $2 - i32.const 65535 - i32.and - i32.const 10 - i32.lt_u - if - local.get $0 - local.get $2 - i32.const 65535 - i32.and - i32.const 48 - i32.or - i32.store16 - i32.const 1 - return - end - local.get $2 - i32.const 65535 - i32.and - local.tee $2 - call $~lib/util/number/decimalCount32 - local.set $1 - local.get $0 - local.get $2 - local.get $1 - call $~lib/util/number/utoa_simple - local.get $1 - ) - (func $~lib/util/string/joinIntegerArray (; 259 ;) (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 $1 + local.get $2 + local.get $1 + call $~lib/util/number/utoa_simple + local.get $1 + ) + (func $~lib/util/string/joinIntegerArray (; 255 ;) (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 $1 i32.const 1 i32.sub local.tee $3 @@ -17483,7 +17163,7 @@ end local.get $1 ) - (func $~lib/typedarray/Uint16Array#join (; 260 ;) (param $0 i32) (result i32) + (func $~lib/typedarray/Uint16Array#join (; 256 ;) (param $0 i32) (result i32) local.get $0 i32.load offset=4 local.get $0 @@ -17492,87 +17172,7 @@ i32.shr_u call $~lib/util/string/joinIntegerArray ) - (func $std/typedarray/testArrayJoinAndToString<~lib/typedarray/Uint16Array,u16> (; 261 ;) - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - i32.const 5 - call $~lib/typedarray/Uint16Array#constructor - local.tee $0 - local.get $0 - i32.const 0 - i32.const 1 - call $~lib/typedarray/Uint16Array#__set - local.get $0 - i32.const 1 - i32.const 2 - call $~lib/typedarray/Uint16Array#__set - local.get $0 - i32.const 2 - i32.const 3 - call $~lib/typedarray/Uint16Array#__set - local.get $0 - i32.const 3 - i32.const 4 - call $~lib/typedarray/Uint16Array#__set - local.get $0 - i32.const 4 - i32.const 5 - call $~lib/typedarray/Uint16Array#__set - local.get $0 - call $~lib/typedarray/Uint16Array#join - local.tee $3 - local.set $1 - local.get $3 - if (result i32) - local.get $1 - i32.const 3008 - call $~lib/string/String.__eq - else - local.get $1 - i32.const 3008 - i32.eq - end - i32.eqz - if - i32.const 0 - i32.const 1312 - i32.const 629 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - call $~lib/typedarray/Uint16Array#join - local.tee $1 - local.set $2 - local.get $1 - if (result i32) - local.get $2 - i32.const 3008 - call $~lib/string/String.__eq - else - local.get $2 - i32.const 3008 - i32.eq - end - i32.eqz - if - i32.const 0 - i32.const 1312 - i32.const 630 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $3 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - ) - (func $~lib/util/number/itoa_stream (; 262 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/util/number/itoa_stream (; 257 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 local.get $1 i32.const 1 @@ -17620,7 +17220,7 @@ call $~lib/util/number/utoa_simple local.get $0 ) - (func $~lib/util/string/joinIntegerArray (; 263 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/util/string/joinIntegerArray (; 258 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -17725,7 +17325,7 @@ end local.get $1 ) - (func $~lib/typedarray/Int32Array#join (; 264 ;) (param $0 i32) (result i32) + (func $~lib/typedarray/Int32Array#join (; 259 ;) (param $0 i32) (result i32) local.get $0 i32.load offset=4 local.get $0 @@ -17734,87 +17334,7 @@ i32.shr_u call $~lib/util/string/joinIntegerArray ) - (func $std/typedarray/testArrayJoinAndToString<~lib/typedarray/Int32Array,i32> (; 265 ;) - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - i32.const 5 - call $~lib/typedarray/Int32Array#constructor - local.tee $0 - local.get $0 - i32.const 0 - i32.const 1 - call $~lib/typedarray/Int32Array#__set - local.get $0 - i32.const 1 - i32.const 2 - call $~lib/typedarray/Int32Array#__set - local.get $0 - i32.const 2 - i32.const 3 - call $~lib/typedarray/Int32Array#__set - local.get $0 - i32.const 3 - i32.const 4 - call $~lib/typedarray/Int32Array#__set - local.get $0 - i32.const 4 - i32.const 5 - call $~lib/typedarray/Int32Array#__set - local.get $0 - call $~lib/typedarray/Int32Array#join - local.tee $3 - local.set $1 - local.get $3 - if (result i32) - local.get $1 - i32.const 3008 - call $~lib/string/String.__eq - else - local.get $1 - i32.const 3008 - i32.eq - end - i32.eqz - if - i32.const 0 - i32.const 1312 - i32.const 629 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - call $~lib/typedarray/Int32Array#join - local.tee $1 - local.set $2 - local.get $1 - if (result i32) - local.get $2 - i32.const 3008 - call $~lib/string/String.__eq - else - local.get $2 - i32.const 3008 - i32.eq - end - i32.eqz - if - i32.const 0 - i32.const 1312 - i32.const 630 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $3 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - ) - (func $~lib/util/number/itoa_stream (; 266 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/util/number/itoa_stream (; 260 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 local.get $1 i32.const 1 @@ -17841,7 +17361,7 @@ call $~lib/util/number/utoa_simple local.get $0 ) - (func $~lib/util/string/joinIntegerArray (; 267 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/util/string/joinIntegerArray (; 261 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -17946,7 +17466,7 @@ end local.get $1 ) - (func $~lib/typedarray/Uint32Array#join (; 268 ;) (param $0 i32) (result i32) + (func $~lib/typedarray/Uint32Array#join (; 262 ;) (param $0 i32) (result i32) local.get $0 i32.load offset=4 local.get $0 @@ -17955,96 +17475,16 @@ i32.shr_u call $~lib/util/string/joinIntegerArray ) - (func $std/typedarray/testArrayJoinAndToString<~lib/typedarray/Uint32Array,u32> (; 269 ;) - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - i32.const 5 - call $~lib/typedarray/Uint32Array#constructor - local.tee $0 + (func $~lib/util/number/decimalCount64High (; 263 ;) (param $0 i64) (result i32) local.get $0 - i32.const 0 - i32.const 1 - call $~lib/typedarray/Uint32Array#__set + i64.const 100000000000 + i64.ge_u + i32.const 10 + i32.add local.get $0 - i32.const 1 - i32.const 2 - call $~lib/typedarray/Uint32Array#__set - local.get $0 - i32.const 2 - i32.const 3 - call $~lib/typedarray/Uint32Array#__set - local.get $0 - i32.const 3 - i32.const 4 - call $~lib/typedarray/Uint32Array#__set - local.get $0 - i32.const 4 - i32.const 5 - call $~lib/typedarray/Uint32Array#__set - local.get $0 - call $~lib/typedarray/Uint32Array#join - local.tee $3 - local.set $1 - local.get $3 - if (result i32) - local.get $1 - i32.const 3008 - call $~lib/string/String.__eq - else - local.get $1 - i32.const 3008 - i32.eq - end - i32.eqz - if - i32.const 0 - i32.const 1312 - i32.const 629 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - call $~lib/typedarray/Uint32Array#join - local.tee $1 - local.set $2 - local.get $1 - if (result i32) - local.get $2 - i32.const 3008 - call $~lib/string/String.__eq - else - local.get $2 - i32.const 3008 - i32.eq - end - i32.eqz - if - i32.const 0 - i32.const 1312 - i32.const 630 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $3 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - ) - (func $~lib/util/number/decimalCount64High (; 270 ;) (param $0 i64) (result i32) - local.get $0 - i64.const 100000000000 - i64.ge_u - i32.const 10 - i32.add - local.get $0 - i64.const 10000000000 - i64.ge_u - i32.add + i64.const 10000000000 + i64.ge_u + i32.add local.get $0 i64.const 100000000000000 i64.ge_u @@ -18081,7 +17521,7 @@ i64.lt_u select ) - (func $~lib/util/number/utoa_simple (; 271 ;) (param $0 i32) (param $1 i64) (param $2 i32) + (func $~lib/util/number/utoa_simple (; 264 ;) (param $0 i32) (param $1 i64) (param $2 i32) (local $3 i32) loop $do-continue|0 local.get $1 @@ -18111,7 +17551,7 @@ br_if $do-continue|0 end ) - (func $~lib/util/number/itoa_stream (; 272 ;) (param $0 i32) (param $1 i32) (param $2 i64) (result i32) + (func $~lib/util/number/itoa_stream (; 265 ;) (param $0 i32) (param $1 i32) (param $2 i64) (result i32) (local $3 i32) local.get $0 local.get $1 @@ -18177,7 +17617,7 @@ end local.get $0 ) - (func $~lib/util/string/joinIntegerArray (; 273 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/util/string/joinIntegerArray (; 266 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i64) (local $4 i32) @@ -18341,7 +17781,7 @@ end local.get $1 ) - (func $~lib/typedarray/Int64Array#join (; 274 ;) (param $0 i32) (result i32) + (func $~lib/typedarray/Int64Array#join (; 267 ;) (param $0 i32) (result i32) local.get $0 i32.load offset=4 local.get $0 @@ -18350,87 +17790,7 @@ i32.shr_u call $~lib/util/string/joinIntegerArray ) - (func $std/typedarray/testArrayJoinAndToString<~lib/typedarray/Int64Array,i64> (; 275 ;) - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - i32.const 5 - call $~lib/typedarray/Int64Array#constructor - local.tee $0 - local.get $0 - i32.const 0 - i64.const 1 - call $~lib/typedarray/Int64Array#__set - local.get $0 - i32.const 1 - i64.const 2 - call $~lib/typedarray/Int64Array#__set - local.get $0 - i32.const 2 - i64.const 3 - call $~lib/typedarray/Int64Array#__set - local.get $0 - i32.const 3 - i64.const 4 - call $~lib/typedarray/Int64Array#__set - local.get $0 - i32.const 4 - i64.const 5 - call $~lib/typedarray/Int64Array#__set - local.get $0 - call $~lib/typedarray/Int64Array#join - local.tee $3 - local.set $1 - local.get $3 - if (result i32) - local.get $1 - i32.const 3008 - call $~lib/string/String.__eq - else - local.get $1 - i32.const 3008 - i32.eq - end - i32.eqz - if - i32.const 0 - i32.const 1312 - i32.const 629 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - call $~lib/typedarray/Int64Array#join - local.tee $1 - local.set $2 - local.get $1 - if (result i32) - local.get $2 - i32.const 3008 - call $~lib/string/String.__eq - else - local.get $2 - i32.const 3008 - i32.eq - end - i32.eqz - if - i32.const 0 - i32.const 1312 - i32.const 630 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $3 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - ) - (func $~lib/util/number/itoa_stream (; 276 ;) (param $0 i32) (param $1 i32) (param $2 i64) (result i32) + (func $~lib/util/number/itoa_stream (; 268 ;) (param $0 i32) (param $1 i32) (param $2 i64) (result i32) (local $3 i32) local.get $0 local.get $1 @@ -18473,7 +17833,7 @@ end local.get $1 ) - (func $~lib/util/string/joinIntegerArray (; 277 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/util/string/joinIntegerArray (; 269 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i64) @@ -18616,7 +17976,7 @@ end local.get $1 ) - (func $~lib/typedarray/Uint64Array#join (; 278 ;) (param $0 i32) (result i32) + (func $~lib/typedarray/Uint64Array#join (; 270 ;) (param $0 i32) (result i32) local.get $0 i32.load offset=4 local.get $0 @@ -18625,87 +17985,7 @@ i32.shr_u call $~lib/util/string/joinIntegerArray ) - (func $std/typedarray/testArrayJoinAndToString<~lib/typedarray/Uint64Array,u64> (; 279 ;) - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - i32.const 5 - call $~lib/typedarray/Uint64Array#constructor - local.tee $0 - local.get $0 - i32.const 0 - i64.const 1 - call $~lib/typedarray/Uint64Array#__set - local.get $0 - i32.const 1 - i64.const 2 - call $~lib/typedarray/Uint64Array#__set - local.get $0 - i32.const 2 - i64.const 3 - call $~lib/typedarray/Uint64Array#__set - local.get $0 - i32.const 3 - i64.const 4 - call $~lib/typedarray/Uint64Array#__set - local.get $0 - i32.const 4 - i64.const 5 - call $~lib/typedarray/Uint64Array#__set - local.get $0 - call $~lib/typedarray/Uint64Array#join - local.tee $3 - local.set $1 - local.get $3 - if (result i32) - local.get $1 - i32.const 3008 - call $~lib/string/String.__eq - else - local.get $1 - i32.const 3008 - i32.eq - end - i32.eqz - if - i32.const 0 - i32.const 1312 - i32.const 629 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - call $~lib/typedarray/Uint64Array#join - local.tee $1 - local.set $2 - local.get $1 - if (result i32) - local.get $2 - i32.const 3008 - call $~lib/string/String.__eq - else - local.get $2 - i32.const 3008 - i32.eq - end - i32.eqz - if - i32.const 0 - i32.const 1312 - i32.const 630 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $3 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - ) - (func $~lib/util/number/genDigits (; 280 ;) (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 (; 271 ;) (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) @@ -19096,7 +18376,7 @@ local.get $6 end ) - (func $~lib/util/number/prettify (; 281 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/util/number/prettify (; 272 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $2 i32.eqz @@ -19341,7 +18621,7 @@ end end ) - (func $~lib/util/number/dtoa_core (; 282 ;) (param $0 i32) (param $1 f64) (result i32) + (func $~lib/util/number/dtoa_core (; 273 ;) (param $0 i32) (param $1 f64) (result i32) (local $2 i64) (local $3 i64) (local $4 i32) @@ -19633,7 +18913,7 @@ local.get $7 i32.add ) - (func $~lib/util/number/dtoa (; 283 ;) (param $0 f64) (result i32) + (func $~lib/util/number/dtoa (; 274 ;) (param $0 f64) (result i32) (local $1 i32) (local $2 i32) local.get $0 @@ -19687,7 +18967,7 @@ call $~lib/rt/tlsf/checkUsedBlock call $~lib/rt/tlsf/freeBlock ) - (func $~lib/util/number/dtoa_stream (; 284 ;) (param $0 i32) (param $1 i32) (param $2 f64) (result i32) + (func $~lib/util/number/dtoa_stream (; 275 ;) (param $0 i32) (param $1 i32) (param $2 f64) (result i32) local.get $0 local.get $1 i32.const 1 @@ -19762,7 +19042,7 @@ local.get $2 call $~lib/util/number/dtoa_core ) - (func $~lib/util/string/joinFloatArray (; 285 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/util/string/joinFloatArray (; 276 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -19870,7 +19150,7 @@ end local.get $1 ) - (func $~lib/typedarray/Float32Array#join (; 286 ;) (param $0 i32) (result i32) + (func $~lib/typedarray/Float32Array#join (; 277 ;) (param $0 i32) (result i32) local.get $0 i32.load offset=4 local.get $0 @@ -19879,109 +19159,29 @@ i32.shr_u call $~lib/util/string/joinFloatArray ) - (func $std/typedarray/testArrayJoinAndToString<~lib/typedarray/Float32Array,f32> (; 287 ;) - (local $0 i32) - (local $1 i32) + (func $~lib/util/string/joinFloatArray (; 278 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) - i32.const 5 - call $~lib/typedarray/Float32Array#constructor - local.tee $0 - local.get $0 - i32.const 0 - f32.const 1 - call $~lib/typedarray/Float32Array#__set - local.get $0 + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $1 i32.const 1 - f32.const 2 - call $~lib/typedarray/Float32Array#__set - local.get $0 - i32.const 2 - f32.const 3 - call $~lib/typedarray/Float32Array#__set - local.get $0 - i32.const 3 - f32.const 4 - call $~lib/typedarray/Float32Array#__set - local.get $0 - i32.const 4 - f32.const 5 - call $~lib/typedarray/Float32Array#__set - local.get $0 - call $~lib/typedarray/Float32Array#join + i32.sub local.tee $3 - local.set $1 - local.get $3 - if (result i32) - local.get $1 - i32.const 4176 - call $~lib/string/String.__eq - else - local.get $1 - i32.const 4176 - i32.eq + i32.const 0 + i32.lt_s + if + i32.const 2928 + return end + local.get $3 i32.eqz if - i32.const 0 - i32.const 1312 - i32.const 626 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - call $~lib/typedarray/Float32Array#join - local.tee $1 - local.set $2 - local.get $1 - if (result i32) - local.get $2 - i32.const 4176 - call $~lib/string/String.__eq - else - local.get $2 - i32.const 4176 - i32.eq - end - i32.eqz - if - i32.const 0 - i32.const 1312 - i32.const 627 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $3 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - ) - (func $~lib/util/string/joinFloatArray (; 288 ;) (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 $1 - i32.const 1 - i32.sub - local.tee $3 - i32.const 0 - i32.lt_s - if - i32.const 2928 - return - end - local.get $3 - i32.eqz - if - local.get $0 - f64.load - call $~lib/util/number/dtoa - return + local.get $0 + f64.load + call $~lib/util/number/dtoa + return end local.get $3 i32.const 2976 @@ -20064,7 +19264,7 @@ end local.get $1 ) - (func $~lib/typedarray/Float64Array#join (; 289 ;) (param $0 i32) (result i32) + (func $~lib/typedarray/Float64Array#join (; 279 ;) (param $0 i32) (result i32) local.get $0 i32.load offset=4 local.get $0 @@ -20073,87 +19273,7 @@ i32.shr_u call $~lib/util/string/joinFloatArray ) - (func $std/typedarray/testArrayJoinAndToString<~lib/typedarray/Float64Array,f64> (; 290 ;) - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - i32.const 5 - call $~lib/typedarray/Float64Array#constructor - local.tee $0 - local.get $0 - i32.const 0 - f64.const 1 - call $~lib/typedarray/Float64Array#__set - local.get $0 - i32.const 1 - f64.const 2 - call $~lib/typedarray/Float64Array#__set - local.get $0 - i32.const 2 - f64.const 3 - call $~lib/typedarray/Float64Array#__set - local.get $0 - i32.const 3 - f64.const 4 - call $~lib/typedarray/Float64Array#__set - local.get $0 - i32.const 4 - f64.const 5 - call $~lib/typedarray/Float64Array#__set - local.get $0 - call $~lib/typedarray/Float64Array#join - local.tee $3 - local.set $1 - local.get $3 - if (result i32) - local.get $1 - i32.const 4176 - call $~lib/string/String.__eq - else - local.get $1 - i32.const 4176 - i32.eq - end - i32.eqz - if - i32.const 0 - i32.const 1312 - i32.const 626 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - call $~lib/typedarray/Float64Array#join - local.tee $1 - local.set $2 - local.get $1 - if (result i32) - local.get $2 - i32.const 4176 - call $~lib/string/String.__eq - else - local.get $2 - i32.const 4176 - i32.eq - end - i32.eqz - if - i32.const 0 - i32.const 1312 - i32.const 627 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $3 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - ) - (func $~lib/arraybuffer/ArrayBuffer#constructor (; 291 ;) (param $0 i32) (result i32) + (func $~lib/arraybuffer/ArrayBuffer#constructor (; 280 ;) (param $0 i32) (result i32) (local $1 i32) local.get $0 i32.const 1073741808 @@ -20176,7 +19296,7 @@ local.get $1 call $~lib/rt/pure/__retain ) - (func $~lib/typedarray/Uint8Array.wrap|trampoline (; 292 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Uint8Array.wrap|trampoline (; 281 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) block $2of2 @@ -20264,7 +19384,7 @@ local.get $2 call $~lib/rt/pure/__retain ) - (func $~lib/arraybuffer/ArrayBuffer#slice (; 293 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/arraybuffer/ArrayBuffer#slice (; 282 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $0 i32.const 16 @@ -20334,7 +19454,7 @@ local.get $3 call $~lib/rt/pure/__retain ) - (func $std/typedarray/testArrayWrap<~lib/typedarray/Int8Array,i8> (; 294 ;) + (func $std/typedarray/testArrayWrap<~lib/typedarray/Int8Array,i8> (; 283 ;) (local $0 i32) (local $1 i32) (local $2 i32) @@ -20450,7 +19570,7 @@ local.get $0 call $~lib/rt/pure/__release ) - (func $std/typedarray/testArrayWrap<~lib/typedarray/Uint8Array,u8> (; 295 ;) + (func $std/typedarray/testArrayWrap<~lib/typedarray/Uint8Array,u8> (; 284 ;) (local $0 i32) (local $1 i32) (local $2 i32) @@ -20534,7 +19654,7 @@ local.get $4 call $~lib/rt/pure/__release ) - (func $std/typedarray/testArrayWrap<~lib/typedarray/Uint8ClampedArray,u8> (; 296 ;) + (func $std/typedarray/testArrayWrap<~lib/typedarray/Uint8ClampedArray,u8> (; 285 ;) (local $0 i32) (local $1 i32) (local $2 i32) @@ -20648,7 +19768,7 @@ local.get $0 call $~lib/rt/pure/__release ) - (func $std/typedarray/testArrayWrap<~lib/typedarray/Int16Array,i16> (; 297 ;) + (func $std/typedarray/testArrayWrap<~lib/typedarray/Int16Array,i16> (; 286 ;) (local $0 i32) (local $1 i32) (local $2 i32) @@ -20773,7 +19893,7 @@ local.get $2 call $~lib/rt/pure/__release ) - (func $std/typedarray/testArrayWrap<~lib/typedarray/Uint16Array,u16> (; 298 ;) + (func $std/typedarray/testArrayWrap<~lib/typedarray/Uint16Array,u16> (; 287 ;) (local $0 i32) (local $1 i32) (local $2 i32) @@ -20896,7 +20016,7 @@ local.get $2 call $~lib/rt/pure/__release ) - (func $std/typedarray/testArrayWrap<~lib/typedarray/Int32Array,i32> (; 299 ;) + (func $std/typedarray/testArrayWrap<~lib/typedarray/Int32Array,i32> (; 288 ;) (local $0 i32) (local $1 i32) (local $2 i32) @@ -21017,7 +20137,7 @@ local.get $2 call $~lib/rt/pure/__release ) - (func $std/typedarray/testArrayWrap<~lib/typedarray/Uint32Array,u32> (; 300 ;) + (func $std/typedarray/testArrayWrap<~lib/typedarray/Uint32Array,u32> (; 289 ;) (local $0 i32) (local $1 i32) (local $2 i32) @@ -21138,7 +20258,7 @@ local.get $2 call $~lib/rt/pure/__release ) - (func $std/typedarray/testArrayWrap<~lib/typedarray/Int64Array,i64> (; 301 ;) + (func $std/typedarray/testArrayWrap<~lib/typedarray/Int64Array,i64> (; 290 ;) (local $0 i32) (local $1 i32) (local $2 i32) @@ -21260,7 +20380,7 @@ local.get $2 call $~lib/rt/pure/__release ) - (func $std/typedarray/testArrayWrap<~lib/typedarray/Uint64Array,u64> (; 302 ;) + (func $std/typedarray/testArrayWrap<~lib/typedarray/Uint64Array,u64> (; 291 ;) (local $0 i32) (local $1 i32) (local $2 i32) @@ -21382,7 +20502,7 @@ local.get $2 call $~lib/rt/pure/__release ) - (func $std/typedarray/testArrayWrap<~lib/typedarray/Float32Array,f32> (; 303 ;) + (func $std/typedarray/testArrayWrap<~lib/typedarray/Float32Array,f32> (; 292 ;) (local $0 i32) (local $1 i32) (local $2 i32) @@ -21504,7 +20624,7 @@ local.get $2 call $~lib/rt/pure/__release ) - (func $std/typedarray/testArrayWrap<~lib/typedarray/Float64Array,f64> (; 304 ;) + (func $std/typedarray/testArrayWrap<~lib/typedarray/Float64Array,f64> (; 293 ;) (local $0 i32) (local $1 i32) (local $2 i32) @@ -21626,7 +20746,7 @@ local.get $2 call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Int8Array#set<~lib/array/Array> (; 305 ;) (param $0 i32) + (func $~lib/typedarray/Int8Array#set<~lib/array/Array> (; 294 ;) (param $0 i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -21675,7 +20795,7 @@ end end ) - (func $std/typedarray/valuesEqual<~lib/typedarray/Int8Array> (; 306 ;) (param $0 i32) (param $1 i32) + (func $std/typedarray/valuesEqual<~lib/typedarray/Int8Array> (; 295 ;) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -21735,7 +20855,7 @@ end end ) - (func $~lib/typedarray/Int8Array#set<~lib/typedarray/Int64Array> (; 307 ;) (param $0 i32) (param $1 i32) + (func $~lib/typedarray/Int8Array#set<~lib/typedarray/Int64Array> (; 296 ;) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) local.get $1 @@ -21791,7 +20911,7 @@ end end ) - (func $~lib/typedarray/Int8Array#set<~lib/typedarray/Uint8Array> (; 308 ;) (param $0 i32) (param $1 i32) + (func $~lib/typedarray/Int8Array#set<~lib/typedarray/Uint8Array> (; 297 ;) (param $0 i32) (param $1 i32) local.get $1 i32.load offset=8 local.get $0 @@ -21813,7 +20933,7 @@ i32.load offset=8 call $~lib/memory/memory.copy ) - (func $~lib/typedarray/Int8Array#set<~lib/typedarray/Int16Array> (; 309 ;) (param $0 i32) (param $1 i32) + (func $~lib/typedarray/Int8Array#set<~lib/typedarray/Int16Array> (; 298 ;) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) local.get $1 @@ -21869,7 +20989,7 @@ end end ) - (func $~lib/typedarray/Int8Array#set<~lib/array/Array> (; 310 ;) (param $0 i32) + (func $~lib/typedarray/Int8Array#set<~lib/array/Array> (; 299 ;) (param $0 i32) i32.const 4588 i32.load i32.const 7 @@ -21895,7 +21015,7 @@ i32.load call $~lib/memory/memory.copy ) - (func $std/typedarray/testTypedArraySet<~lib/typedarray/Int8Array> (; 311 ;) + (func $std/typedarray/testTypedArraySet<~lib/typedarray/Int8Array> (; 300 ;) (local $0 i32) (local $1 i32) (local $2 i32) @@ -22149,14 +21269,14 @@ call $~lib/builtins/abort unreachable ) - (func $~lib/array/Array#__unchecked_get (; 312 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#__unchecked_get (; 301 ;) (param $0 i32) (param $1 i32) (result i32) local.get $0 i32.load offset=4 local.get $1 i32.add i32.load8_u ) - (func $std/typedarray/valuesEqual<~lib/typedarray/Uint8Array> (; 313 ;) (param $0 i32) (param $1 i32) + (func $std/typedarray/valuesEqual<~lib/typedarray/Uint8Array> (; 302 ;) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -22216,7 +21336,7 @@ end end ) - (func $std/typedarray/testTypedArraySet<~lib/typedarray/Uint8Array> (; 314 ;) + (func $std/typedarray/testTypedArraySet<~lib/typedarray/Uint8Array> (; 303 ;) (local $0 i32) (local $1 i32) (local $2 i32) @@ -22470,7 +21590,7 @@ call $~lib/builtins/abort unreachable ) - (func $std/typedarray/valuesEqual<~lib/typedarray/Uint8ClampedArray> (; 315 ;) (param $0 i32) (param $1 i32) + (func $std/typedarray/valuesEqual<~lib/typedarray/Uint8ClampedArray> (; 304 ;) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -22530,7 +21650,7 @@ end end ) - (func $~lib/typedarray/Uint8ClampedArray#set<~lib/typedarray/Int64Array> (; 316 ;) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/typedarray/Uint8ClampedArray#set<~lib/typedarray/Int64Array> (; 305 ;) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i64) local.get $2 @@ -22614,7 +21734,7 @@ end end ) - (func $~lib/typedarray/Uint8ClampedArray#set<~lib/typedarray/Int16Array> (; 317 ;) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/typedarray/Uint8ClampedArray#set<~lib/typedarray/Int16Array> (; 306 ;) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) local.get $2 @@ -22694,7 +21814,7 @@ end end ) - (func $std/typedarray/testTypedArraySet<~lib/typedarray/Uint8ClampedArray> (; 318 ;) + (func $std/typedarray/testTypedArraySet<~lib/typedarray/Uint8ClampedArray> (; 307 ;) (local $0 i32) (local $1 i32) (local $2 i32) @@ -23063,7 +22183,7 @@ call $~lib/builtins/abort unreachable ) - (func $~lib/typedarray/Int16Array#set<~lib/array/Array> (; 319 ;) (param $0 i32) + (func $~lib/typedarray/Int16Array#set<~lib/array/Array> (; 308 ;) (param $0 i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -23116,7 +22236,7 @@ end end ) - (func $std/typedarray/valuesEqual<~lib/typedarray/Int16Array> (; 320 ;) (param $0 i32) (param $1 i32) + (func $std/typedarray/valuesEqual<~lib/typedarray/Int16Array> (; 309 ;) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -23186,7 +22306,7 @@ end end ) - (func $~lib/typedarray/Int16Array#set<~lib/typedarray/Int64Array> (; 321 ;) (param $0 i32) (param $1 i32) + (func $~lib/typedarray/Int16Array#set<~lib/typedarray/Int64Array> (; 310 ;) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) local.get $1 @@ -23246,7 +22366,7 @@ end end ) - (func $~lib/typedarray/Int16Array#set<~lib/typedarray/Uint8Array> (; 322 ;) (param $0 i32) (param $1 i32) + (func $~lib/typedarray/Int16Array#set<~lib/typedarray/Uint8Array> (; 311 ;) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) local.get $1 @@ -23296,7 +22416,7 @@ end end ) - (func $~lib/typedarray/Int16Array#set<~lib/typedarray/Int16Array> (; 323 ;) (param $0 i32) (param $1 i32) + (func $~lib/typedarray/Int16Array#set<~lib/typedarray/Int16Array> (; 312 ;) (param $0 i32) (param $1 i32) local.get $1 i32.load offset=8 i32.const 1 @@ -23326,7 +22446,7 @@ i32.load offset=8 call $~lib/memory/memory.copy ) - (func $~lib/typedarray/Int16Array#set<~lib/array/Array> (; 324 ;) (param $0 i32) + (func $~lib/typedarray/Int16Array#set<~lib/array/Array> (; 313 ;) (param $0 i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -23381,7 +22501,7 @@ end end ) - (func $std/typedarray/testTypedArraySet<~lib/typedarray/Int16Array> (; 325 ;) + (func $std/typedarray/testTypedArraySet<~lib/typedarray/Int16Array> (; 314 ;) (local $0 i32) (local $1 i32) (local $2 i32) @@ -23643,7 +22763,7 @@ call $~lib/builtins/abort unreachable ) - (func $std/typedarray/valuesEqual<~lib/typedarray/Uint16Array> (; 326 ;) (param $0 i32) (param $1 i32) + (func $std/typedarray/valuesEqual<~lib/typedarray/Uint16Array> (; 315 ;) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -23713,7 +22833,7 @@ end end ) - (func $std/typedarray/testTypedArraySet<~lib/typedarray/Uint16Array> (; 327 ;) + (func $std/typedarray/testTypedArraySet<~lib/typedarray/Uint16Array> (; 316 ;) (local $0 i32) (local $1 i32) (local $2 i32) @@ -23975,7 +23095,7 @@ call $~lib/builtins/abort unreachable ) - (func $~lib/typedarray/Int32Array#set<~lib/array/Array> (; 328 ;) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/typedarray/Int32Array#set<~lib/array/Array> (; 317 ;) (param $0 i32) (param $1 i32) (param $2 i32) local.get $2 i32.const 0 i32.lt_s @@ -24016,7 +23136,7 @@ i32.load offset=8 call $~lib/memory/memory.copy ) - (func $std/typedarray/valuesEqual<~lib/typedarray/Int32Array> (; 329 ;) (param $0 i32) (param $1 i32) + (func $std/typedarray/valuesEqual<~lib/typedarray/Int32Array> (; 318 ;) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -24078,7 +23198,7 @@ end end ) - (func $~lib/typedarray/Int32Array#set<~lib/typedarray/Int64Array> (; 330 ;) (param $0 i32) (param $1 i32) + (func $~lib/typedarray/Int32Array#set<~lib/typedarray/Int64Array> (; 319 ;) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) local.get $1 @@ -24138,7 +23258,7 @@ end end ) - (func $~lib/typedarray/Int32Array#set<~lib/typedarray/Uint8Array> (; 331 ;) (param $0 i32) (param $1 i32) + (func $~lib/typedarray/Int32Array#set<~lib/typedarray/Uint8Array> (; 320 ;) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) local.get $1 @@ -24188,7 +23308,7 @@ end end ) - (func $~lib/typedarray/Int32Array#set<~lib/typedarray/Int16Array> (; 332 ;) (param $0 i32) (param $1 i32) + (func $~lib/typedarray/Int32Array#set<~lib/typedarray/Int16Array> (; 321 ;) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) local.get $1 @@ -24248,7 +23368,7 @@ end end ) - (func $~lib/typedarray/Int32Array#set<~lib/array/Array> (; 333 ;) (param $0 i32) + (func $~lib/typedarray/Int32Array#set<~lib/array/Array> (; 322 ;) (param $0 i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -24303,7 +23423,7 @@ end end ) - (func $std/typedarray/testTypedArraySet<~lib/typedarray/Int32Array> (; 334 ;) + (func $std/typedarray/testTypedArraySet<~lib/typedarray/Int32Array> (; 323 ;) (local $0 i32) (local $1 i32) (local $2 i32) @@ -24566,7 +23686,7 @@ call $~lib/builtins/abort unreachable ) - (func $std/typedarray/valuesEqual<~lib/typedarray/Uint32Array> (; 335 ;) (param $0 i32) (param $1 i32) + (func $std/typedarray/valuesEqual<~lib/typedarray/Uint32Array> (; 324 ;) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -24628,7 +23748,7 @@ end end ) - (func $std/typedarray/testTypedArraySet<~lib/typedarray/Uint32Array> (; 336 ;) + (func $std/typedarray/testTypedArraySet<~lib/typedarray/Uint32Array> (; 325 ;) (local $0 i32) (local $1 i32) (local $2 i32) @@ -24891,7 +24011,7 @@ call $~lib/builtins/abort unreachable ) - (func $~lib/typedarray/Int64Array#set<~lib/array/Array> (; 337 ;) (param $0 i32) + (func $~lib/typedarray/Int64Array#set<~lib/array/Array> (; 326 ;) (param $0 i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -24944,7 +24064,7 @@ end end ) - (func $~lib/array/Array#__unchecked_get (; 338 ;) (param $0 i32) (param $1 i32) (result i64) + (func $~lib/array/Array#__unchecked_get (; 327 ;) (param $0 i32) (param $1 i32) (result i64) local.get $0 i32.load offset=4 local.get $1 @@ -24953,7 +24073,7 @@ i32.add i64.load ) - (func $std/typedarray/valuesEqual<~lib/typedarray/Int64Array> (; 339 ;) (param $0 i32) (param $1 i32) + (func $std/typedarray/valuesEqual<~lib/typedarray/Int64Array> (; 328 ;) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i64) @@ -25015,7 +24135,7 @@ end end ) - (func $~lib/typedarray/Int64Array#set<~lib/typedarray/Int64Array> (; 340 ;) (param $0 i32) (param $1 i32) + (func $~lib/typedarray/Int64Array#set<~lib/typedarray/Int64Array> (; 329 ;) (param $0 i32) (param $1 i32) local.get $1 i32.load offset=8 i32.const 3 @@ -25045,7 +24165,7 @@ i32.load offset=8 call $~lib/memory/memory.copy ) - (func $~lib/typedarray/Int64Array#set<~lib/typedarray/Uint8Array> (; 341 ;) (param $0 i32) (param $1 i32) + (func $~lib/typedarray/Int64Array#set<~lib/typedarray/Uint8Array> (; 330 ;) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) local.get $1 @@ -25095,7 +24215,7 @@ end end ) - (func $~lib/typedarray/Int64Array#set<~lib/typedarray/Int16Array> (; 342 ;) (param $0 i32) (param $1 i32) + (func $~lib/typedarray/Int64Array#set<~lib/typedarray/Int16Array> (; 331 ;) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) local.get $1 @@ -25155,7 +24275,7 @@ end end ) - (func $~lib/typedarray/Int64Array#set<~lib/array/Array> (; 343 ;) (param $0 i32) + (func $~lib/typedarray/Int64Array#set<~lib/array/Array> (; 332 ;) (param $0 i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -25210,7 +24330,7 @@ end end ) - (func $std/typedarray/testTypedArraySet<~lib/typedarray/Int64Array> (; 344 ;) + (func $std/typedarray/testTypedArraySet<~lib/typedarray/Int64Array> (; 333 ;) (local $0 i32) (local $1 i32) (local $2 i32) @@ -25472,7 +24592,7 @@ call $~lib/builtins/abort unreachable ) - (func $std/typedarray/valuesEqual<~lib/typedarray/Uint64Array> (; 345 ;) (param $0 i32) (param $1 i32) + (func $std/typedarray/valuesEqual<~lib/typedarray/Uint64Array> (; 334 ;) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i64) @@ -25534,7 +24654,7 @@ end end ) - (func $std/typedarray/testTypedArraySet<~lib/typedarray/Uint64Array> (; 346 ;) + (func $std/typedarray/testTypedArraySet<~lib/typedarray/Uint64Array> (; 335 ;) (local $0 i32) (local $1 i32) (local $2 i32) @@ -25796,7 +24916,7 @@ call $~lib/builtins/abort unreachable ) - (func $std/typedarray/valuesEqual<~lib/typedarray/Float32Array> (; 347 ;) (param $0 i32) (param $1 i32) + (func $std/typedarray/valuesEqual<~lib/typedarray/Float32Array> (; 336 ;) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 f32) (local $4 i32) @@ -25866,7 +24986,7 @@ end end ) - (func $std/typedarray/testTypedArraySet<~lib/typedarray/Float32Array> (; 348 ;) + (func $std/typedarray/testTypedArraySet<~lib/typedarray/Float32Array> (; 337 ;) (local $0 i32) (local $1 i32) (local $2 i32) @@ -26227,7 +25347,7 @@ call $~lib/builtins/abort unreachable ) - (func $std/typedarray/valuesEqual<~lib/typedarray/Float64Array> (; 349 ;) (param $0 i32) (param $1 i32) + (func $std/typedarray/valuesEqual<~lib/typedarray/Float64Array> (; 338 ;) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 f64) (local $4 i32) @@ -26295,7 +25415,7 @@ end end ) - (func $std/typedarray/testTypedArraySet<~lib/typedarray/Float64Array> (; 350 ;) + (func $std/typedarray/testTypedArraySet<~lib/typedarray/Float64Array> (; 339 ;) (local $0 i32) (local $1 i32) (local $2 i32) @@ -26700,7 +25820,7 @@ call $~lib/builtins/abort unreachable ) - (func $start:std/typedarray (; 351 ;) + (func $start:std/typedarray (; 340 ;) (local $0 i32) (local $1 i32) (local $2 i32) @@ -28516,3946 +27636,4429 @@ br $for-loop|0 end end - block $folding-inner12 - block $folding-inner11 - block $folding-inner10 - block $folding-inner9 - block $folding-inner8 - block $folding-inner7 - block $folding-inner6 - block $folding-inner5 - block $folding-inner4 - block $folding-inner3 - block $folding-inner2 - block $folding-inner1 - block $folding-inner0 - local.get $1 - i32.const 255 - i32.and - i32.const 6 - i32.ne - br_if $folding-inner0 - local.get $29 - call $~lib/rt/pure/__release - i32.const 3 - call $~lib/typedarray/Uint8Array#constructor - local.tee $1 - i32.const 0 - i32.const 1 - call $~lib/typedarray/Uint8Array#__set - local.get $1 - i32.const 1 - i32.const 2 - call $~lib/typedarray/Uint8Array#__set - local.get $1 - i32.const 2 - i32.const 3 - call $~lib/typedarray/Uint8Array#__set - local.get $1 - i32.const 3 - call $~lib/typedarray/Uint8Array#reduce - i32.const 255 - i32.and - i32.const 6 - i32.ne - br_if $folding-inner0 - local.get $1 - call $~lib/rt/pure/__release - i32.const 3 - call $~lib/typedarray/Uint8ClampedArray#constructor - local.tee $1 - i32.const 0 - i32.const 1 - call $~lib/typedarray/Uint8ClampedArray#__set - local.get $1 - i32.const 1 - i32.const 2 - call $~lib/typedarray/Uint8ClampedArray#__set - local.get $1 - i32.const 2 - i32.const 3 - call $~lib/typedarray/Uint8ClampedArray#__set - local.get $1 - i32.const 4 - call $~lib/typedarray/Uint8Array#reduce - i32.const 255 - i32.and - i32.const 6 - i32.ne - br_if $folding-inner0 - local.get $1 - call $~lib/rt/pure/__release - i32.const 3 - call $~lib/typedarray/Int16Array#constructor - local.tee $29 - i32.const 0 - i32.const 1 - call $~lib/typedarray/Int16Array#__set - local.get $29 - i32.const 1 - i32.const 2 - call $~lib/typedarray/Int16Array#__set - local.get $29 - i32.const 2 - i32.const 3 - call $~lib/typedarray/Int16Array#__set - i32.const 0 - local.set $0 - i32.const 0 - local.set $1 - local.get $29 - i32.load offset=4 - local.set $28 - local.get $29 - i32.load offset=8 - i32.const 1 - i32.shr_u - local.set $27 - loop $for-loop|00 - local.get $0 - local.get $27 - i32.lt_s - if - i32.const 4 - global.set $~argumentsLength - local.get $1 - local.get $28 - local.get $0 - i32.const 1 - i32.shl - i32.add - i32.load16_s - i32.add - local.set $1 - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|00 - end - end - local.get $1 - i32.const 65535 - i32.and - i32.const 6 - i32.ne - br_if $folding-inner0 - local.get $29 - call $~lib/rt/pure/__release - i32.const 3 - call $~lib/typedarray/Uint16Array#constructor - local.tee $29 - i32.const 0 - i32.const 1 - call $~lib/typedarray/Uint16Array#__set - local.get $29 - i32.const 1 - i32.const 2 - call $~lib/typedarray/Uint16Array#__set - local.get $29 - i32.const 2 - i32.const 3 - call $~lib/typedarray/Uint16Array#__set - i32.const 0 - local.set $0 - i32.const 0 - local.set $1 - local.get $29 - i32.load offset=4 - local.set $28 - local.get $29 - i32.load offset=8 - i32.const 1 - i32.shr_u - local.set $27 - loop $for-loop|01 - local.get $0 - local.get $27 - i32.lt_s - if - i32.const 4 - global.set $~argumentsLength - local.get $1 - local.get $28 - local.get $0 - i32.const 1 - i32.shl - i32.add - i32.load16_u - i32.add - local.set $1 - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|01 - end - end - local.get $1 - i32.const 65535 - i32.and - i32.const 6 - i32.ne - br_if $folding-inner0 - local.get $29 - call $~lib/rt/pure/__release - i32.const 3 - call $~lib/typedarray/Int32Array#constructor - local.tee $1 - i32.const 0 - i32.const 1 - call $~lib/typedarray/Int32Array#__set - local.get $1 - i32.const 1 - i32.const 2 - call $~lib/typedarray/Int32Array#__set - local.get $1 - i32.const 2 - i32.const 3 - call $~lib/typedarray/Int32Array#__set - local.get $1 - i32.const 7 - call $~lib/typedarray/Int32Array#reduce - i32.const 6 - i32.ne - br_if $folding-inner0 - local.get $1 - call $~lib/rt/pure/__release - i32.const 3 - call $~lib/typedarray/Uint32Array#constructor - local.tee $1 - i32.const 0 - i32.const 1 - call $~lib/typedarray/Uint32Array#__set - local.get $1 - i32.const 1 - i32.const 2 - call $~lib/typedarray/Uint32Array#__set - local.get $1 - i32.const 2 - i32.const 3 - call $~lib/typedarray/Uint32Array#__set - local.get $1 - i32.const 8 - call $~lib/typedarray/Int32Array#reduce - i32.const 6 - i32.ne - br_if $folding-inner0 - local.get $1 - call $~lib/rt/pure/__release - i32.const 3 - call $~lib/typedarray/Int64Array#constructor - local.tee $1 - i32.const 0 - i64.const 1 - call $~lib/typedarray/Int64Array#__set - local.get $1 - i32.const 1 - i64.const 2 - call $~lib/typedarray/Int64Array#__set - local.get $1 - i32.const 2 - i64.const 3 - call $~lib/typedarray/Int64Array#__set - local.get $1 - i32.const 9 - call $~lib/typedarray/Int64Array#reduce - i64.const 6 - i64.ne - br_if $folding-inner0 - local.get $1 - call $~lib/rt/pure/__release - i32.const 3 - call $~lib/typedarray/Uint64Array#constructor - local.tee $1 - i32.const 0 - i64.const 1 - call $~lib/typedarray/Uint64Array#__set - local.get $1 - i32.const 1 - i64.const 2 - call $~lib/typedarray/Uint64Array#__set - local.get $1 - i32.const 2 - i64.const 3 - call $~lib/typedarray/Uint64Array#__set - local.get $1 - i32.const 10 - call $~lib/typedarray/Int64Array#reduce - i64.const 6 - i64.ne - br_if $folding-inner0 - local.get $1 - call $~lib/rt/pure/__release - i32.const 3 - call $~lib/typedarray/Float32Array#constructor - local.tee $0 - i32.const 0 - f32.const 1 - call $~lib/typedarray/Float32Array#__set - local.get $0 - i32.const 1 - f32.const 2 - call $~lib/typedarray/Float32Array#__set - local.get $0 - i32.const 2 - f32.const 3 - call $~lib/typedarray/Float32Array#__set - i32.const 0 - local.set $1 - local.get $0 - i32.load offset=4 - local.set $29 - local.get $0 - i32.load offset=8 - i32.const 2 - i32.shr_u - local.set $28 - loop $for-loop|02 - local.get $1 - local.get $28 - i32.lt_s - if - i32.const 4 - global.set $~argumentsLength - local.get $21 - local.get $29 - local.get $1 - i32.const 2 - i32.shl - i32.add - f32.load - f32.add - local.set $21 - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|02 - end - end - local.get $21 - f32.const 6 - f32.ne - br_if $folding-inner0 - local.get $0 - call $~lib/rt/pure/__release - i32.const 3 - call $~lib/typedarray/Float64Array#constructor - local.tee $0 - i32.const 0 - f64.const 1 - call $~lib/typedarray/Float64Array#__set - local.get $0 - i32.const 1 - f64.const 2 - call $~lib/typedarray/Float64Array#__set - local.get $0 - i32.const 2 - f64.const 3 - call $~lib/typedarray/Float64Array#__set - i32.const 0 - local.set $1 - f64.const 0 - local.set $22 - local.get $0 - i32.load offset=4 - local.set $29 - local.get $0 - i32.load offset=8 - i32.const 3 - i32.shr_u - local.set $28 - loop $for-loop|03 - local.get $1 - local.get $28 - i32.lt_s - if - i32.const 4 - global.set $~argumentsLength - local.get $22 - local.get $29 - local.get $1 - i32.const 3 - i32.shl - i32.add - f64.load - f64.add - local.set $22 - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|03 - end - end - local.get $22 - f64.const 6 - f64.ne - br_if $folding-inner0 - local.get $0 - call $~lib/rt/pure/__release - i32.const 3 - call $~lib/typedarray/Int8Array#constructor - local.tee $29 - i32.const 0 - i32.const 1 - call $~lib/typedarray/Int8Array#__set - local.get $29 - i32.const 1 - i32.const 2 - call $~lib/typedarray/Int8Array#__set - local.get $29 - i32.const 2 - i32.const 3 - call $~lib/typedarray/Int8Array#__set - i32.const 0 - local.set $0 - local.get $29 - i32.load offset=4 - local.set $28 - local.get $29 - i32.load offset=8 - i32.const 1 - i32.sub - local.set $1 - loop $for-loop|04 - local.get $1 - i32.const 0 - i32.ge_s - if - i32.const 4 - global.set $~argumentsLength - local.get $0 - local.get $1 - local.get $28 - i32.add - i32.load8_s - i32.add - local.set $0 - local.get $1 - i32.const 1 - i32.sub - local.set $1 - br $for-loop|04 - end - end - local.get $0 - i32.const 255 - i32.and - i32.const 6 - i32.ne - br_if $folding-inner1 - local.get $29 - call $~lib/rt/pure/__release - i32.const 3 - call $~lib/typedarray/Uint8Array#constructor - local.tee $1 - i32.const 0 - i32.const 1 - call $~lib/typedarray/Uint8Array#__set - local.get $1 - i32.const 1 - i32.const 2 - call $~lib/typedarray/Uint8Array#__set - local.get $1 - i32.const 2 - i32.const 3 - call $~lib/typedarray/Uint8Array#__set - local.get $1 - i32.const 14 - call $~lib/typedarray/Uint8Array#reduceRight - i32.const 255 - i32.and - i32.const 6 - i32.ne - br_if $folding-inner1 - local.get $1 - call $~lib/rt/pure/__release - i32.const 3 - call $~lib/typedarray/Uint8ClampedArray#constructor - local.tee $1 - i32.const 0 - i32.const 1 - call $~lib/typedarray/Uint8ClampedArray#__set - local.get $1 - i32.const 1 - i32.const 2 - call $~lib/typedarray/Uint8ClampedArray#__set - local.get $1 - i32.const 2 - i32.const 3 - call $~lib/typedarray/Uint8ClampedArray#__set - local.get $1 - i32.const 15 - call $~lib/typedarray/Uint8Array#reduceRight - i32.const 255 - i32.and - i32.const 6 - i32.ne - br_if $folding-inner1 - local.get $1 - call $~lib/rt/pure/__release - i32.const 3 - call $~lib/typedarray/Int16Array#constructor - local.tee $29 - i32.const 0 - i32.const 1 - call $~lib/typedarray/Int16Array#__set - local.get $29 - i32.const 1 - i32.const 2 - call $~lib/typedarray/Int16Array#__set - local.get $29 - i32.const 2 - i32.const 3 - call $~lib/typedarray/Int16Array#__set - i32.const 0 - local.set $0 - local.get $29 - i32.load offset=4 - local.set $28 - local.get $29 - i32.load offset=8 - i32.const 1 - i32.shr_u - i32.const 1 - i32.sub - local.set $1 - loop $for-loop|05 - local.get $1 - i32.const 0 - i32.ge_s - if - i32.const 4 - global.set $~argumentsLength - local.get $0 - local.get $28 - local.get $1 - i32.const 1 - i32.shl - i32.add - i32.load16_s - i32.add - local.set $0 - local.get $1 - i32.const 1 - i32.sub - local.set $1 - br $for-loop|05 - end - end - local.get $0 - i32.const 65535 - i32.and - i32.const 6 - i32.ne - br_if $folding-inner1 - local.get $29 - call $~lib/rt/pure/__release - i32.const 3 - call $~lib/typedarray/Uint16Array#constructor - local.tee $29 - i32.const 0 - i32.const 1 - call $~lib/typedarray/Uint16Array#__set - local.get $29 - i32.const 1 - i32.const 2 - call $~lib/typedarray/Uint16Array#__set - local.get $29 - i32.const 2 - i32.const 3 - call $~lib/typedarray/Uint16Array#__set - i32.const 0 - local.set $0 - local.get $29 - i32.load offset=4 - local.set $28 - local.get $29 - i32.load offset=8 - i32.const 1 - i32.shr_u - i32.const 1 - i32.sub - local.set $1 - loop $for-loop|06 - local.get $1 - i32.const 0 - i32.ge_s - if - i32.const 4 - global.set $~argumentsLength - local.get $0 - local.get $28 - local.get $1 - i32.const 1 - i32.shl - i32.add - i32.load16_u - i32.add - local.set $0 - local.get $1 - i32.const 1 - i32.sub - local.set $1 - br $for-loop|06 - end - end - local.get $0 - i32.const 65535 - i32.and - i32.const 6 - i32.ne - br_if $folding-inner1 - local.get $29 - call $~lib/rt/pure/__release - i32.const 3 - call $~lib/typedarray/Int32Array#constructor - local.tee $1 - i32.const 0 - i32.const 1 - call $~lib/typedarray/Int32Array#__set - local.get $1 - i32.const 1 - i32.const 2 - call $~lib/typedarray/Int32Array#__set - local.get $1 - i32.const 2 - i32.const 3 - call $~lib/typedarray/Int32Array#__set - local.get $1 - i32.const 18 - call $~lib/typedarray/Int32Array#reduceRight - i32.const 6 - i32.ne - br_if $folding-inner1 - local.get $1 - call $~lib/rt/pure/__release - i32.const 3 - call $~lib/typedarray/Uint32Array#constructor - local.tee $1 - i32.const 0 - i32.const 1 - call $~lib/typedarray/Uint32Array#__set - local.get $1 - i32.const 1 - i32.const 2 - call $~lib/typedarray/Uint32Array#__set - local.get $1 - i32.const 2 - i32.const 3 - call $~lib/typedarray/Uint32Array#__set - local.get $1 - i32.const 19 - call $~lib/typedarray/Int32Array#reduceRight - i32.const 6 - i32.ne - br_if $folding-inner1 - local.get $1 - call $~lib/rt/pure/__release - i32.const 3 - call $~lib/typedarray/Int64Array#constructor - local.tee $1 - i32.const 0 - i64.const 1 - call $~lib/typedarray/Int64Array#__set - local.get $1 - i32.const 1 - i64.const 2 - call $~lib/typedarray/Int64Array#__set - local.get $1 - i32.const 2 - i64.const 3 - call $~lib/typedarray/Int64Array#__set - local.get $1 - i32.const 20 - call $~lib/typedarray/Int64Array#reduceRight - i64.const 6 - i64.ne - br_if $folding-inner1 - local.get $1 - call $~lib/rt/pure/__release - i32.const 3 - call $~lib/typedarray/Uint64Array#constructor - local.tee $1 - i32.const 0 - i64.const 1 - call $~lib/typedarray/Uint64Array#__set - local.get $1 - i32.const 1 - i64.const 2 - call $~lib/typedarray/Uint64Array#__set - local.get $1 - i32.const 2 - i64.const 3 - call $~lib/typedarray/Uint64Array#__set - local.get $1 - i32.const 21 - call $~lib/typedarray/Int64Array#reduceRight - i64.const 6 - i64.ne - br_if $folding-inner1 - local.get $1 - call $~lib/rt/pure/__release - i32.const 3 - call $~lib/typedarray/Float32Array#constructor - local.tee $1 - i32.const 0 - f32.const 1 - call $~lib/typedarray/Float32Array#__set - local.get $1 - i32.const 1 - f32.const 2 - call $~lib/typedarray/Float32Array#__set - local.get $1 - i32.const 2 - f32.const 3 - call $~lib/typedarray/Float32Array#__set - f32.const 0 - local.set $21 - local.get $1 - i32.load offset=4 - local.set $29 - local.get $1 - i32.load offset=8 - i32.const 2 - i32.shr_u - i32.const 1 - i32.sub - local.set $0 - loop $for-loop|07 - local.get $0 - i32.const 0 - i32.ge_s - if - i32.const 4 - global.set $~argumentsLength - local.get $21 - local.get $29 - local.get $0 - i32.const 2 - i32.shl - i32.add - f32.load - f32.add - local.set $21 - local.get $0 - i32.const 1 - i32.sub - local.set $0 - br $for-loop|07 - end - end - local.get $21 - f32.const 6 - f32.ne - br_if $folding-inner1 - local.get $1 - call $~lib/rt/pure/__release - i32.const 3 - call $~lib/typedarray/Float64Array#constructor - local.tee $1 - i32.const 0 - f64.const 1 - call $~lib/typedarray/Float64Array#__set - local.get $1 - i32.const 1 - f64.const 2 - call $~lib/typedarray/Float64Array#__set - local.get $1 - i32.const 2 - f64.const 3 - call $~lib/typedarray/Float64Array#__set - f64.const 0 - local.set $22 - local.get $1 - i32.load offset=4 - local.set $29 - local.get $1 - i32.load offset=8 - i32.const 3 - i32.shr_u - i32.const 1 - i32.sub - local.set $0 - loop $for-loop|08 - local.get $0 - i32.const 0 - i32.ge_s - if - i32.const 4 - global.set $~argumentsLength - local.get $22 - local.get $29 - local.get $0 - i32.const 3 - i32.shl - i32.add - f64.load - f64.add - local.set $22 - local.get $0 - i32.const 1 - i32.sub - local.set $0 - br $for-loop|08 - end - end - local.get $22 - f64.const 6 - f64.ne - br_if $folding-inner1 - local.get $1 - call $~lib/rt/pure/__release - i32.const 3 - call $~lib/typedarray/Int8Array#constructor - local.tee $0 - i32.const 0 - i32.const 1 - call $~lib/typedarray/Int8Array#__set - local.get $0 - i32.const 1 - i32.const 2 - call $~lib/typedarray/Int8Array#__set - local.get $0 - i32.const 2 - i32.const 3 - call $~lib/typedarray/Int8Array#__set - i32.const 0 - local.set $1 - local.get $0 - i32.load offset=8 - local.set $28 - local.get $0 - i32.load offset=4 - local.set $25 - i32.const 12 - i32.const 3 - call $~lib/rt/tlsf/__alloc - local.set $29 - local.get $28 - i32.const 0 - call $~lib/rt/tlsf/__alloc - local.set $27 - loop $for-loop|09 - local.get $1 - local.get $28 - i32.lt_s - if - i32.const 3 - global.set $~argumentsLength - local.get $1 - local.get $27 - i32.add - local.get $1 - local.get $25 - i32.add - i32.load8_s - local.tee $26 - local.get $26 - i32.mul - i32.store8 - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|09 - end - end - local.get $29 - local.get $27 - call $~lib/rt/pure/__retain - i32.store - local.get $29 - local.get $27 - i32.store offset=4 - local.get $29 - local.get $28 - i32.store offset=8 - local.get $29 - call $~lib/rt/pure/__retain - local.tee $1 - i32.const 0 - call $~lib/typedarray/Int8Array#__get - i32.const 1 - i32.ne - br_if $folding-inner2 - local.get $1 - i32.const 1 - call $~lib/typedarray/Int8Array#__get - i32.const 4 - i32.ne - br_if $folding-inner3 - local.get $1 - i32.const 2 - call $~lib/typedarray/Int8Array#__get - i32.const 9 - i32.ne - br_if $folding-inner4 - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - i32.const 3 - call $~lib/typedarray/Uint8Array#constructor - local.tee $0 - i32.const 0 - i32.const 1 - call $~lib/typedarray/Uint8Array#__set - local.get $0 - i32.const 1 - i32.const 2 - call $~lib/typedarray/Uint8Array#__set - local.get $0 - i32.const 2 - i32.const 3 - call $~lib/typedarray/Uint8Array#__set - i32.const 0 - local.set $1 - local.get $0 - i32.load offset=8 - local.set $28 - local.get $0 - i32.load offset=4 - local.set $25 - i32.const 12 - i32.const 4 - call $~lib/rt/tlsf/__alloc - local.set $29 - local.get $28 - i32.const 0 - call $~lib/rt/tlsf/__alloc - local.set $27 - loop $for-loop|010 - local.get $1 - local.get $28 - i32.lt_s - if - i32.const 3 - global.set $~argumentsLength - local.get $1 - local.get $27 - i32.add - local.get $1 - local.get $25 - i32.add - i32.load8_u - local.tee $26 - local.get $26 - i32.mul - i32.store8 - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|010 - end - end - local.get $29 - local.get $27 - call $~lib/rt/pure/__retain - i32.store - local.get $29 - local.get $27 - i32.store offset=4 - local.get $29 - local.get $28 - i32.store offset=8 - local.get $29 - call $~lib/rt/pure/__retain - local.tee $1 - i32.const 0 - call $~lib/typedarray/Uint8Array#__get - i32.const 1 - i32.ne - br_if $folding-inner2 - local.get $1 - i32.const 1 - call $~lib/typedarray/Uint8Array#__get - i32.const 4 - i32.ne - br_if $folding-inner3 - local.get $1 - i32.const 2 - call $~lib/typedarray/Uint8Array#__get - i32.const 9 - i32.ne - br_if $folding-inner4 - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - i32.const 3 - call $~lib/typedarray/Uint8ClampedArray#constructor - local.tee $0 - i32.const 0 - i32.const 1 - call $~lib/typedarray/Uint8ClampedArray#__set - local.get $0 - i32.const 1 - i32.const 2 - call $~lib/typedarray/Uint8ClampedArray#__set - local.get $0 - i32.const 2 - i32.const 3 - call $~lib/typedarray/Uint8ClampedArray#__set - i32.const 0 - local.set $1 - local.get $0 - i32.load offset=8 - local.set $28 - local.get $0 - i32.load offset=4 - local.set $25 - i32.const 12 - i32.const 5 - call $~lib/rt/tlsf/__alloc - local.set $29 - local.get $28 - i32.const 0 - call $~lib/rt/tlsf/__alloc - local.set $27 - loop $for-loop|011 - local.get $1 - local.get $28 - i32.lt_s - if - i32.const 3 - global.set $~argumentsLength - local.get $1 - local.get $27 - i32.add - local.get $1 - local.get $25 - i32.add - i32.load8_u - local.tee $26 - local.get $26 - i32.mul - i32.store8 - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|011 - end - end - local.get $29 - local.get $27 - call $~lib/rt/pure/__retain - i32.store - local.get $29 - local.get $27 - i32.store offset=4 - local.get $29 - local.get $28 - i32.store offset=8 - local.get $29 - call $~lib/rt/pure/__retain - local.tee $1 - i32.const 0 - call $~lib/typedarray/Uint8ClampedArray#__get - i32.const 1 - i32.ne - br_if $folding-inner2 - local.get $1 - i32.const 1 - call $~lib/typedarray/Uint8ClampedArray#__get - i32.const 4 - i32.ne - br_if $folding-inner3 - local.get $1 - i32.const 2 - call $~lib/typedarray/Uint8ClampedArray#__get - i32.const 9 - i32.ne - br_if $folding-inner4 - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - i32.const 3 - call $~lib/typedarray/Int16Array#constructor - local.tee $0 - i32.const 0 - i32.const 1 - call $~lib/typedarray/Int16Array#__set - local.get $0 - i32.const 1 - i32.const 2 - call $~lib/typedarray/Int16Array#__set - local.get $0 - i32.const 2 - i32.const 3 - call $~lib/typedarray/Int16Array#__set - i32.const 0 - local.set $1 - local.get $0 - i32.load offset=8 - i32.const 1 - i32.shr_u - local.set $27 - local.get $0 - i32.load offset=4 - local.set $25 - i32.const 12 - i32.const 6 - call $~lib/rt/tlsf/__alloc - local.set $29 - local.get $27 - i32.const 1 - i32.shl - local.tee $26 - i32.const 0 - call $~lib/rt/tlsf/__alloc - local.set $28 - loop $for-loop|012 - local.get $1 - local.get $27 - i32.lt_s - if - i32.const 3 - global.set $~argumentsLength - local.get $25 - local.get $1 - i32.const 1 - i32.shl - local.tee $24 - i32.add - i32.load16_s - local.tee $23 - local.get $23 - i32.mul - local.set $23 - local.get $24 - local.get $28 - i32.add - local.get $23 - i32.store16 - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|012 - end - end - local.get $29 - local.get $28 - call $~lib/rt/pure/__retain - i32.store - local.get $29 - local.get $28 - i32.store offset=4 - local.get $29 - local.get $26 - i32.store offset=8 - local.get $29 - call $~lib/rt/pure/__retain - local.tee $1 - i32.const 0 - call $~lib/typedarray/Int16Array#__get - i32.const 1 - i32.ne - br_if $folding-inner2 - local.get $1 - i32.const 1 - call $~lib/typedarray/Int16Array#__get - i32.const 4 - i32.ne - br_if $folding-inner3 - local.get $1 - i32.const 2 - call $~lib/typedarray/Int16Array#__get - i32.const 9 - i32.ne - br_if $folding-inner4 - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - i32.const 3 - call $~lib/typedarray/Uint16Array#constructor - local.tee $0 - i32.const 0 - i32.const 1 - call $~lib/typedarray/Uint16Array#__set - local.get $0 - i32.const 1 - i32.const 2 - call $~lib/typedarray/Uint16Array#__set - local.get $0 - i32.const 2 - i32.const 3 - call $~lib/typedarray/Uint16Array#__set - i32.const 0 - local.set $1 - local.get $0 - i32.load offset=8 - i32.const 1 - i32.shr_u - local.set $27 - local.get $0 - i32.load offset=4 - local.set $25 - i32.const 12 - i32.const 7 - call $~lib/rt/tlsf/__alloc - local.set $29 - local.get $27 - i32.const 1 - i32.shl - local.tee $26 - i32.const 0 - call $~lib/rt/tlsf/__alloc - local.set $28 - loop $for-loop|013 - local.get $1 - local.get $27 - i32.lt_s - if - i32.const 3 - global.set $~argumentsLength - local.get $25 - local.get $1 - i32.const 1 - i32.shl - local.tee $24 - i32.add - i32.load16_u - local.tee $23 - local.get $23 - i32.mul - local.set $23 - local.get $24 - local.get $28 - i32.add - local.get $23 - i32.store16 - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|013 - end - end - local.get $29 - local.get $28 - call $~lib/rt/pure/__retain - i32.store - local.get $29 - local.get $28 - i32.store offset=4 - local.get $29 - local.get $26 - i32.store offset=8 - local.get $29 - call $~lib/rt/pure/__retain - local.tee $1 - i32.const 0 - call $~lib/typedarray/Uint16Array#__get - i32.const 1 - i32.ne - br_if $folding-inner2 - local.get $1 - i32.const 1 - call $~lib/typedarray/Uint16Array#__get - i32.const 4 - i32.ne - br_if $folding-inner3 - local.get $1 - i32.const 2 - call $~lib/typedarray/Uint16Array#__get - i32.const 9 - i32.ne - br_if $folding-inner4 - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - i32.const 3 - call $~lib/typedarray/Int32Array#constructor - local.tee $0 - i32.const 0 - i32.const 1 - call $~lib/typedarray/Int32Array#__set - local.get $0 - i32.const 1 - i32.const 2 - call $~lib/typedarray/Int32Array#__set - local.get $0 - i32.const 2 - i32.const 3 - call $~lib/typedarray/Int32Array#__set - i32.const 0 - local.set $1 - local.get $0 - i32.load offset=8 - i32.const 2 - i32.shr_u - local.set $27 - local.get $0 - i32.load offset=4 - local.set $25 - i32.const 12 - i32.const 8 - call $~lib/rt/tlsf/__alloc - local.set $29 - local.get $27 - i32.const 2 - i32.shl - local.tee $26 - i32.const 0 - call $~lib/rt/tlsf/__alloc - local.set $28 - loop $for-loop|014 - local.get $1 - local.get $27 - i32.lt_s - if - i32.const 3 - global.set $~argumentsLength - local.get $25 - local.get $1 - i32.const 2 - i32.shl - local.tee $24 - i32.add - i32.load - local.tee $23 - local.get $23 - i32.mul - local.set $23 - local.get $24 - local.get $28 - i32.add - local.get $23 - i32.store - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|014 - end - end - local.get $29 - local.get $28 - call $~lib/rt/pure/__retain - i32.store - local.get $29 - local.get $28 - i32.store offset=4 - local.get $29 - local.get $26 - i32.store offset=8 - local.get $29 - call $~lib/rt/pure/__retain - local.tee $1 - i32.const 0 - call $~lib/typedarray/Int32Array#__get - i32.const 1 - i32.ne - br_if $folding-inner2 - local.get $1 - i32.const 1 - call $~lib/typedarray/Int32Array#__get - i32.const 4 - i32.ne - br_if $folding-inner3 - local.get $1 - i32.const 2 - call $~lib/typedarray/Int32Array#__get - i32.const 9 - i32.ne - br_if $folding-inner4 - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - i32.const 3 - call $~lib/typedarray/Uint32Array#constructor - local.tee $0 - i32.const 0 - i32.const 1 - call $~lib/typedarray/Uint32Array#__set - local.get $0 - i32.const 1 - i32.const 2 - call $~lib/typedarray/Uint32Array#__set - local.get $0 - i32.const 2 - i32.const 3 - call $~lib/typedarray/Uint32Array#__set - i32.const 0 - local.set $1 - local.get $0 - i32.load offset=8 - i32.const 2 - i32.shr_u - local.set $27 - local.get $0 - i32.load offset=4 - local.set $25 - i32.const 12 - i32.const 9 - call $~lib/rt/tlsf/__alloc - local.set $29 - local.get $27 - i32.const 2 - i32.shl - local.tee $26 - i32.const 0 - call $~lib/rt/tlsf/__alloc - local.set $28 - loop $for-loop|015 - local.get $1 - local.get $27 - i32.lt_s - if - i32.const 3 - global.set $~argumentsLength - local.get $25 - local.get $1 - i32.const 2 - i32.shl - local.tee $24 - i32.add - i32.load - local.tee $23 - local.get $23 - i32.mul - local.set $23 - local.get $24 - local.get $28 - i32.add - local.get $23 - i32.store - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|015 - end - end - local.get $29 - local.get $28 - call $~lib/rt/pure/__retain - i32.store - local.get $29 - local.get $28 - i32.store offset=4 - local.get $29 - local.get $26 - i32.store offset=8 - local.get $29 - call $~lib/rt/pure/__retain - local.tee $1 - i32.const 0 - call $~lib/typedarray/Uint32Array#__get - i32.const 1 - i32.ne - br_if $folding-inner2 - local.get $1 - i32.const 1 - call $~lib/typedarray/Uint32Array#__get - i32.const 4 - i32.ne - br_if $folding-inner3 - local.get $1 - i32.const 2 - call $~lib/typedarray/Uint32Array#__get - i32.const 9 - i32.ne - br_if $folding-inner4 - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - i32.const 3 - call $~lib/typedarray/Int64Array#constructor - local.tee $0 - i32.const 0 - i64.const 1 - call $~lib/typedarray/Int64Array#__set - local.get $0 - i32.const 1 - i64.const 2 - call $~lib/typedarray/Int64Array#__set - local.get $0 - i32.const 2 - i64.const 3 - call $~lib/typedarray/Int64Array#__set - i32.const 0 - local.set $1 - local.get $0 - i32.load offset=8 - i32.const 3 - i32.shr_u - local.set $27 - local.get $0 - i32.load offset=4 - local.set $25 - i32.const 12 - i32.const 10 - call $~lib/rt/tlsf/__alloc - local.set $29 - local.get $27 - i32.const 3 - i32.shl - local.tee $26 - i32.const 0 - call $~lib/rt/tlsf/__alloc - local.set $28 - loop $for-loop|016 - local.get $1 - local.get $27 - i32.lt_s - if - i32.const 3 - global.set $~argumentsLength - local.get $25 - local.get $1 - i32.const 3 - i32.shl - local.tee $24 - i32.add - i64.load - local.tee $20 - local.get $20 - i64.mul - local.set $20 - local.get $24 - local.get $28 - i32.add - local.get $20 - i64.store - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|016 - end - end - local.get $29 - local.get $28 - call $~lib/rt/pure/__retain - i32.store - local.get $29 - local.get $28 - i32.store offset=4 - local.get $29 - local.get $26 - i32.store offset=8 - local.get $29 - call $~lib/rt/pure/__retain - local.tee $1 - i32.const 0 - call $~lib/typedarray/Int64Array#__get - i64.const 1 - i64.ne - br_if $folding-inner2 - local.get $1 - i32.const 1 - call $~lib/typedarray/Int64Array#__get - i64.const 4 - i64.ne - br_if $folding-inner3 - local.get $1 - i32.const 2 - call $~lib/typedarray/Int64Array#__get - i64.const 9 - i64.ne - br_if $folding-inner4 - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - i32.const 3 - call $~lib/typedarray/Uint64Array#constructor - local.tee $0 - i32.const 0 - i64.const 1 - call $~lib/typedarray/Uint64Array#__set - local.get $0 - i32.const 1 - i64.const 2 - call $~lib/typedarray/Uint64Array#__set - local.get $0 - i32.const 2 - i64.const 3 - call $~lib/typedarray/Uint64Array#__set - i32.const 0 - local.set $1 - local.get $0 - i32.load offset=8 - i32.const 3 - i32.shr_u - local.set $27 - local.get $0 - i32.load offset=4 - local.set $25 - i32.const 12 - i32.const 11 - call $~lib/rt/tlsf/__alloc - local.set $29 - local.get $27 - i32.const 3 - i32.shl - local.tee $26 - i32.const 0 - call $~lib/rt/tlsf/__alloc - local.set $28 - loop $for-loop|017 - local.get $1 - local.get $27 - i32.lt_s - if - i32.const 3 - global.set $~argumentsLength - local.get $25 - local.get $1 - i32.const 3 - i32.shl - local.tee $24 - i32.add - i64.load - local.tee $20 - local.get $20 - i64.mul - local.set $20 - local.get $24 - local.get $28 - i32.add - local.get $20 - i64.store - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|017 - end - end - local.get $29 - local.get $28 - call $~lib/rt/pure/__retain - i32.store - local.get $29 - local.get $28 - i32.store offset=4 - local.get $29 - local.get $26 - i32.store offset=8 - local.get $29 - call $~lib/rt/pure/__retain - local.tee $1 - i32.const 0 - call $~lib/typedarray/Uint64Array#__get - i64.const 1 - i64.ne - br_if $folding-inner2 - local.get $1 - i32.const 1 - call $~lib/typedarray/Uint64Array#__get - i64.const 4 - i64.ne - br_if $folding-inner3 - local.get $1 - i32.const 2 - call $~lib/typedarray/Uint64Array#__get - i64.const 9 - i64.ne - br_if $folding-inner4 - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - i32.const 3 - call $~lib/typedarray/Float32Array#constructor - local.tee $0 - i32.const 0 - f32.const 1 - call $~lib/typedarray/Float32Array#__set - local.get $0 - i32.const 1 - f32.const 2 - call $~lib/typedarray/Float32Array#__set - local.get $0 - i32.const 2 - f32.const 3 - call $~lib/typedarray/Float32Array#__set - i32.const 0 - local.set $1 - local.get $0 - i32.load offset=8 - i32.const 2 - i32.shr_u - local.set $27 - local.get $0 - i32.load offset=4 - local.set $25 - i32.const 12 - i32.const 12 - call $~lib/rt/tlsf/__alloc - local.set $29 - local.get $27 - i32.const 2 - i32.shl - local.tee $26 - i32.const 0 - call $~lib/rt/tlsf/__alloc - local.set $28 - loop $for-loop|018 - local.get $1 - local.get $27 - i32.lt_s - if - i32.const 3 - global.set $~argumentsLength - local.get $25 - local.get $1 - i32.const 2 - i32.shl - local.tee $24 - i32.add - f32.load - local.tee $21 - local.get $21 - f32.mul - local.set $21 - local.get $24 - local.get $28 - i32.add - local.get $21 - f32.store - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|018 - end - end - local.get $29 - local.get $28 - call $~lib/rt/pure/__retain - i32.store - local.get $29 - local.get $28 - i32.store offset=4 - local.get $29 - local.get $26 - i32.store offset=8 - local.get $29 - call $~lib/rt/pure/__retain - local.tee $1 - i32.const 0 - call $~lib/typedarray/Float32Array#__get - f32.const 1 - f32.ne - br_if $folding-inner2 - local.get $1 - i32.const 1 - call $~lib/typedarray/Float32Array#__get - f32.const 4 - f32.ne - br_if $folding-inner3 - local.get $1 - i32.const 2 - call $~lib/typedarray/Float32Array#__get - f32.const 9 - f32.ne - br_if $folding-inner4 - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - i32.const 3 - call $~lib/typedarray/Float64Array#constructor - local.tee $0 - i32.const 0 - f64.const 1 - call $~lib/typedarray/Float64Array#__set - local.get $0 - i32.const 1 - f64.const 2 - call $~lib/typedarray/Float64Array#__set - local.get $0 - i32.const 2 - f64.const 3 - call $~lib/typedarray/Float64Array#__set - i32.const 0 - local.set $1 - local.get $0 - i32.load offset=8 - i32.const 3 - i32.shr_u - local.set $27 - local.get $0 - i32.load offset=4 - local.set $25 - i32.const 12 - i32.const 13 - call $~lib/rt/tlsf/__alloc - local.set $29 - local.get $27 - i32.const 3 - i32.shl - local.tee $26 - i32.const 0 - call $~lib/rt/tlsf/__alloc - local.set $28 - loop $for-loop|019 - local.get $1 - local.get $27 - i32.lt_s - if - i32.const 3 - global.set $~argumentsLength - local.get $25 - local.get $1 - i32.const 3 - i32.shl - local.tee $24 - i32.add - f64.load - local.tee $22 - local.get $22 - f64.mul - local.set $22 - local.get $24 - local.get $28 - i32.add - local.get $22 - f64.store - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|019 - end - end - local.get $29 - local.get $28 - call $~lib/rt/pure/__retain - i32.store - local.get $29 - local.get $28 - i32.store offset=4 - local.get $29 - local.get $26 - i32.store offset=8 - local.get $29 - call $~lib/rt/pure/__retain - local.tee $1 - i32.const 0 - call $~lib/typedarray/Float64Array#__get - f64.const 1 - f64.ne - br_if $folding-inner2 - local.get $1 - i32.const 1 - call $~lib/typedarray/Float64Array#__get - f64.const 4 - f64.ne - br_if $folding-inner3 - local.get $1 - i32.const 2 - call $~lib/typedarray/Float64Array#__get - f64.const 9 - f64.ne - br_if $folding-inner4 - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - call $std/typedarray/testArrayFilter<~lib/typedarray/Int8Array,i8> - call $std/typedarray/testArrayFilter<~lib/typedarray/Uint8Array,u8> - call $std/typedarray/testArrayFilter<~lib/typedarray/Uint8ClampedArray,u8> - call $std/typedarray/testArrayFilter<~lib/typedarray/Int16Array,i16> - call $std/typedarray/testArrayFilter<~lib/typedarray/Uint16Array,u16> - call $std/typedarray/testArrayFilter<~lib/typedarray/Int32Array,i32> - call $std/typedarray/testArrayFilter<~lib/typedarray/Uint32Array,u32> - call $std/typedarray/testArrayFilter<~lib/typedarray/Int64Array,i64> - call $std/typedarray/testArrayFilter<~lib/typedarray/Uint64Array,u64> - call $std/typedarray/testArrayFilter<~lib/typedarray/Float32Array,f32> - call $std/typedarray/testArrayFilter<~lib/typedarray/Float64Array,f64> - i32.const 3 - call $~lib/typedarray/Int8Array#constructor - local.tee $1 - i32.const 0 - i32.const 2 - call $~lib/typedarray/Int8Array#__set - local.get $1 - i32.const 1 - i32.const 4 - call $~lib/typedarray/Int8Array#__set - local.get $1 - i32.const 2 - i32.const 6 - call $~lib/typedarray/Int8Array#__set - local.get $1 - i32.const 46 - call $~lib/typedarray/Int8Array#some - i32.eqz - br_if $folding-inner5 - local.get $1 - i32.const 47 - call $~lib/typedarray/Int8Array#some - br_if $folding-inner6 - local.get $1 - call $~lib/rt/pure/__release - i32.const 3 - call $~lib/typedarray/Uint8Array#constructor - local.tee $1 - i32.const 0 - i32.const 2 - call $~lib/typedarray/Uint8Array#__set - local.get $1 - i32.const 1 - i32.const 4 - call $~lib/typedarray/Uint8Array#__set - local.get $1 - i32.const 2 - i32.const 6 - call $~lib/typedarray/Uint8Array#__set - local.get $1 - i32.const 48 - call $~lib/typedarray/Uint8Array#some - i32.eqz - br_if $folding-inner5 - local.get $1 - i32.const 49 - call $~lib/typedarray/Uint8Array#some - br_if $folding-inner6 - local.get $1 - call $~lib/rt/pure/__release - i32.const 3 - call $~lib/typedarray/Uint8ClampedArray#constructor - local.tee $1 - i32.const 0 - i32.const 2 - call $~lib/typedarray/Uint8ClampedArray#__set - local.get $1 - i32.const 1 - i32.const 4 - call $~lib/typedarray/Uint8ClampedArray#__set - local.get $1 - i32.const 2 - i32.const 6 - call $~lib/typedarray/Uint8ClampedArray#__set - local.get $1 - i32.const 50 - call $~lib/typedarray/Uint8Array#some - i32.eqz - br_if $folding-inner5 - local.get $1 - i32.const 51 - call $~lib/typedarray/Uint8Array#some - br_if $folding-inner6 - local.get $1 - call $~lib/rt/pure/__release - i32.const 3 - call $~lib/typedarray/Int16Array#constructor - local.tee $1 - i32.const 0 - i32.const 2 - call $~lib/typedarray/Int16Array#__set - local.get $1 - i32.const 1 - i32.const 4 - call $~lib/typedarray/Int16Array#__set - local.get $1 - i32.const 2 - i32.const 6 - call $~lib/typedarray/Int16Array#__set - local.get $1 - i32.const 52 - call $~lib/typedarray/Int16Array#some - i32.eqz - br_if $folding-inner5 - local.get $1 - i32.const 53 - call $~lib/typedarray/Int16Array#some - br_if $folding-inner6 - local.get $1 - call $~lib/rt/pure/__release - i32.const 3 - call $~lib/typedarray/Uint16Array#constructor - local.tee $1 - i32.const 0 - i32.const 2 - call $~lib/typedarray/Uint16Array#__set - local.get $1 - i32.const 1 - i32.const 4 - call $~lib/typedarray/Uint16Array#__set - local.get $1 - i32.const 2 - i32.const 6 - call $~lib/typedarray/Uint16Array#__set - local.get $1 - i32.const 54 - call $~lib/typedarray/Uint16Array#some - i32.eqz - br_if $folding-inner5 - local.get $1 - i32.const 55 - call $~lib/typedarray/Uint16Array#some - br_if $folding-inner6 - local.get $1 - call $~lib/rt/pure/__release - i32.const 3 - call $~lib/typedarray/Int32Array#constructor - local.tee $1 - i32.const 0 - i32.const 2 - call $~lib/typedarray/Int32Array#__set - local.get $1 - i32.const 1 - i32.const 4 - call $~lib/typedarray/Int32Array#__set - local.get $1 - i32.const 2 - i32.const 6 - call $~lib/typedarray/Int32Array#__set - local.get $1 - i32.const 56 - call $~lib/typedarray/Int32Array#some - i32.eqz - br_if $folding-inner5 - local.get $1 - i32.const 57 - call $~lib/typedarray/Int32Array#some - br_if $folding-inner6 - local.get $1 - call $~lib/rt/pure/__release - i32.const 3 - call $~lib/typedarray/Uint32Array#constructor - local.tee $1 - i32.const 0 - i32.const 2 - call $~lib/typedarray/Uint32Array#__set - local.get $1 - i32.const 1 - i32.const 4 - call $~lib/typedarray/Uint32Array#__set - local.get $1 - i32.const 2 - i32.const 6 - call $~lib/typedarray/Uint32Array#__set - local.get $1 - i32.const 58 - call $~lib/typedarray/Int32Array#some - i32.eqz - br_if $folding-inner5 - local.get $1 - i32.const 59 - call $~lib/typedarray/Int32Array#some - br_if $folding-inner6 - local.get $1 - call $~lib/rt/pure/__release - i32.const 3 - call $~lib/typedarray/Int64Array#constructor - local.tee $1 - i32.const 0 - i64.const 2 - call $~lib/typedarray/Int64Array#__set - local.get $1 - i32.const 1 - i64.const 4 - call $~lib/typedarray/Int64Array#__set - local.get $1 - i32.const 2 - i64.const 6 - call $~lib/typedarray/Int64Array#__set - local.get $1 - i32.const 60 - call $~lib/typedarray/Int64Array#some - i32.eqz - br_if $folding-inner5 - local.get $1 - i32.const 61 - call $~lib/typedarray/Int64Array#some - br_if $folding-inner6 - local.get $1 - call $~lib/rt/pure/__release - i32.const 3 - call $~lib/typedarray/Uint64Array#constructor - local.tee $1 - i32.const 0 - i64.const 2 - call $~lib/typedarray/Uint64Array#__set - local.get $1 - i32.const 1 - i64.const 4 - call $~lib/typedarray/Uint64Array#__set - local.get $1 - i32.const 2 - i64.const 6 - call $~lib/typedarray/Uint64Array#__set - local.get $1 - i32.const 62 - call $~lib/typedarray/Int64Array#some - i32.eqz - br_if $folding-inner5 - local.get $1 - i32.const 63 - call $~lib/typedarray/Int64Array#some - br_if $folding-inner6 - local.get $1 - call $~lib/rt/pure/__release - i32.const 3 - call $~lib/typedarray/Float32Array#constructor - local.tee $1 - i32.const 0 - f32.const 2 - call $~lib/typedarray/Float32Array#__set - local.get $1 - i32.const 1 - f32.const 4 - call $~lib/typedarray/Float32Array#__set - local.get $1 - i32.const 2 - f32.const 6 - call $~lib/typedarray/Float32Array#__set - local.get $1 - i32.const 64 - call $~lib/typedarray/Float32Array#some - i32.eqz - br_if $folding-inner5 - local.get $1 - i32.const 65 - call $~lib/typedarray/Float32Array#some - br_if $folding-inner6 - local.get $1 - call $~lib/rt/pure/__release - i32.const 3 - call $~lib/typedarray/Float64Array#constructor - local.tee $1 - i32.const 0 - f64.const 2 - call $~lib/typedarray/Float64Array#__set - local.get $1 - i32.const 1 - f64.const 4 - call $~lib/typedarray/Float64Array#__set - local.get $1 - i32.const 2 - f64.const 6 - call $~lib/typedarray/Float64Array#__set - local.get $1 - i32.const 66 - call $~lib/typedarray/Float64Array#some - i32.eqz - br_if $folding-inner5 - local.get $1 - i32.const 67 - call $~lib/typedarray/Float64Array#some - br_if $folding-inner6 - local.get $1 - call $~lib/rt/pure/__release - i32.const 3 - call $~lib/typedarray/Int8Array#constructor - local.tee $1 - i32.const 0 - i32.const 1 - call $~lib/typedarray/Int8Array#__set - local.get $1 - i32.const 1 - i32.const 2 - call $~lib/typedarray/Int8Array#__set - local.get $1 - i32.const 2 - i32.const 3 - call $~lib/typedarray/Int8Array#__set - local.get $1 - i32.const 68 - call $~lib/typedarray/Int8Array#findIndex - i32.const 1 - i32.ne - br_if $folding-inner7 - local.get $1 - i32.const 69 - call $~lib/typedarray/Int8Array#findIndex - i32.const -1 - i32.ne - br_if $folding-inner8 - local.get $1 - call $~lib/rt/pure/__release - i32.const 3 - call $~lib/typedarray/Uint8Array#constructor - local.tee $1 - i32.const 0 - i32.const 1 - call $~lib/typedarray/Uint8Array#__set - local.get $1 - i32.const 1 - i32.const 2 - call $~lib/typedarray/Uint8Array#__set - local.get $1 - i32.const 2 - i32.const 3 - call $~lib/typedarray/Uint8Array#__set - local.get $1 - i32.const 70 - call $~lib/typedarray/Uint8Array#findIndex - i32.const 1 - i32.ne - br_if $folding-inner7 - local.get $1 - i32.const 71 - call $~lib/typedarray/Uint8Array#findIndex - i32.const -1 - i32.ne - br_if $folding-inner8 - local.get $1 - call $~lib/rt/pure/__release - i32.const 3 - call $~lib/typedarray/Uint8ClampedArray#constructor - local.tee $1 - i32.const 0 - i32.const 1 - call $~lib/typedarray/Uint8ClampedArray#__set - local.get $1 - i32.const 1 - i32.const 2 - call $~lib/typedarray/Uint8ClampedArray#__set - local.get $1 - i32.const 2 - i32.const 3 - call $~lib/typedarray/Uint8ClampedArray#__set - local.get $1 - i32.const 72 - call $~lib/typedarray/Uint8Array#findIndex - i32.const 1 - i32.ne - br_if $folding-inner7 - local.get $1 - i32.const 73 - call $~lib/typedarray/Uint8Array#findIndex - i32.const -1 - i32.ne - br_if $folding-inner8 - local.get $1 - call $~lib/rt/pure/__release - i32.const 3 - call $~lib/typedarray/Int16Array#constructor - local.tee $1 - i32.const 0 - i32.const 1 - call $~lib/typedarray/Int16Array#__set - local.get $1 - i32.const 1 - i32.const 2 - call $~lib/typedarray/Int16Array#__set - local.get $1 - i32.const 2 - i32.const 3 - call $~lib/typedarray/Int16Array#__set - local.get $1 - i32.const 74 - call $~lib/typedarray/Int16Array#findIndex - i32.const 1 - i32.ne - br_if $folding-inner7 - local.get $1 - i32.const 75 - call $~lib/typedarray/Int16Array#findIndex - i32.const -1 - i32.ne - br_if $folding-inner8 - local.get $1 - call $~lib/rt/pure/__release - i32.const 3 - call $~lib/typedarray/Uint16Array#constructor - local.tee $1 - i32.const 0 - i32.const 1 - call $~lib/typedarray/Uint16Array#__set - local.get $1 - i32.const 1 - i32.const 2 - call $~lib/typedarray/Uint16Array#__set - local.get $1 - i32.const 2 - i32.const 3 - call $~lib/typedarray/Uint16Array#__set - local.get $1 - i32.const 76 - call $~lib/typedarray/Uint16Array#findIndex - i32.const 1 - i32.ne - br_if $folding-inner7 - local.get $1 - i32.const 77 - call $~lib/typedarray/Uint16Array#findIndex - i32.const -1 - i32.ne - br_if $folding-inner8 - local.get $1 - call $~lib/rt/pure/__release - i32.const 3 - call $~lib/typedarray/Int32Array#constructor - local.tee $1 - i32.const 0 - i32.const 1 - call $~lib/typedarray/Int32Array#__set - local.get $1 - i32.const 1 - i32.const 2 - call $~lib/typedarray/Int32Array#__set - local.get $1 - i32.const 2 - i32.const 3 - call $~lib/typedarray/Int32Array#__set - local.get $1 - i32.const 78 - call $~lib/typedarray/Int32Array#findIndex - i32.const 1 - i32.ne - br_if $folding-inner7 - local.get $1 - i32.const 79 - call $~lib/typedarray/Int32Array#findIndex - i32.const -1 - i32.ne - br_if $folding-inner8 - local.get $1 - call $~lib/rt/pure/__release - i32.const 3 - call $~lib/typedarray/Uint32Array#constructor - local.tee $1 - i32.const 0 - i32.const 1 - call $~lib/typedarray/Uint32Array#__set - local.get $1 - i32.const 1 - i32.const 2 - call $~lib/typedarray/Uint32Array#__set - local.get $1 - i32.const 2 - i32.const 3 - call $~lib/typedarray/Uint32Array#__set - local.get $1 - i32.const 80 - call $~lib/typedarray/Int32Array#findIndex - i32.const 1 - i32.ne - br_if $folding-inner7 - local.get $1 - i32.const 81 - call $~lib/typedarray/Int32Array#findIndex - i32.const -1 - i32.ne - br_if $folding-inner8 - local.get $1 - call $~lib/rt/pure/__release - i32.const 3 - call $~lib/typedarray/Int64Array#constructor - local.tee $1 - i32.const 0 - i64.const 1 - call $~lib/typedarray/Int64Array#__set - local.get $1 - i32.const 1 - i64.const 2 - call $~lib/typedarray/Int64Array#__set - local.get $1 - i32.const 2 - i64.const 3 - call $~lib/typedarray/Int64Array#__set - local.get $1 - i32.const 82 - call $~lib/typedarray/Int64Array#findIndex - i32.const 1 - i32.ne - br_if $folding-inner7 - local.get $1 - i32.const 83 - call $~lib/typedarray/Int64Array#findIndex - i32.const -1 - i32.ne - br_if $folding-inner8 - local.get $1 - call $~lib/rt/pure/__release - i32.const 3 - call $~lib/typedarray/Uint64Array#constructor - local.tee $1 - i32.const 0 - i64.const 1 - call $~lib/typedarray/Uint64Array#__set - local.get $1 - i32.const 1 - i64.const 2 - call $~lib/typedarray/Uint64Array#__set - local.get $1 - i32.const 2 - i64.const 3 - call $~lib/typedarray/Uint64Array#__set - local.get $1 - i32.const 84 - call $~lib/typedarray/Int64Array#findIndex - i32.const 1 - i32.ne - br_if $folding-inner7 - local.get $1 - i32.const 85 - call $~lib/typedarray/Int64Array#findIndex - i32.const -1 - i32.ne - br_if $folding-inner8 - local.get $1 - call $~lib/rt/pure/__release - i32.const 3 - call $~lib/typedarray/Float32Array#constructor - local.tee $1 - i32.const 0 - f32.const 1 - call $~lib/typedarray/Float32Array#__set - local.get $1 - i32.const 1 - f32.const 2 - call $~lib/typedarray/Float32Array#__set - local.get $1 - i32.const 2 - f32.const 3 - call $~lib/typedarray/Float32Array#__set - local.get $1 - i32.const 86 - call $~lib/typedarray/Float32Array#findIndex - i32.const 1 - i32.ne - br_if $folding-inner7 - local.get $1 - i32.const 87 - call $~lib/typedarray/Float32Array#findIndex - i32.const -1 - i32.ne - br_if $folding-inner8 - local.get $1 - call $~lib/rt/pure/__release - i32.const 3 - call $~lib/typedarray/Float64Array#constructor - local.tee $1 - i32.const 0 - f64.const 1 - call $~lib/typedarray/Float64Array#__set - local.get $1 - i32.const 1 - f64.const 2 - call $~lib/typedarray/Float64Array#__set - local.get $1 - i32.const 2 - f64.const 3 - call $~lib/typedarray/Float64Array#__set - local.get $1 - i32.const 88 - call $~lib/typedarray/Float64Array#findIndex - i32.const 1 - i32.ne - br_if $folding-inner7 - local.get $1 - i32.const 89 - call $~lib/typedarray/Float64Array#findIndex - i32.const -1 - i32.ne - br_if $folding-inner8 - local.get $1 - call $~lib/rt/pure/__release - i32.const 3 - call $~lib/typedarray/Int8Array#constructor - local.tee $1 - i32.const 0 - i32.const 2 - call $~lib/typedarray/Int8Array#__set - local.get $1 - i32.const 1 - i32.const 4 - call $~lib/typedarray/Int8Array#__set - local.get $1 - i32.const 2 - i32.const 6 - call $~lib/typedarray/Int8Array#__set - local.get $1 - i32.const 90 - call $~lib/typedarray/Int8Array#every - i32.eqz - br_if $folding-inner9 - local.get $1 - i32.const 91 - call $~lib/typedarray/Int8Array#every - br_if $folding-inner10 - local.get $1 - call $~lib/rt/pure/__release - i32.const 3 - call $~lib/typedarray/Uint8Array#constructor - local.tee $1 - i32.const 0 - i32.const 2 - call $~lib/typedarray/Uint8Array#__set - local.get $1 - i32.const 1 - i32.const 4 - call $~lib/typedarray/Uint8Array#__set - local.get $1 - i32.const 2 - i32.const 6 - call $~lib/typedarray/Uint8Array#__set - local.get $1 - i32.const 92 - call $~lib/typedarray/Uint8Array#every - i32.eqz - br_if $folding-inner9 - local.get $1 - i32.const 93 - call $~lib/typedarray/Uint8Array#every - br_if $folding-inner10 - local.get $1 - call $~lib/rt/pure/__release - i32.const 3 - call $~lib/typedarray/Uint8ClampedArray#constructor - local.tee $1 - i32.const 0 - i32.const 2 - call $~lib/typedarray/Uint8ClampedArray#__set - local.get $1 - i32.const 1 - i32.const 4 - call $~lib/typedarray/Uint8ClampedArray#__set - local.get $1 - i32.const 2 - i32.const 6 - call $~lib/typedarray/Uint8ClampedArray#__set - local.get $1 - i32.const 94 - call $~lib/typedarray/Uint8Array#every - i32.eqz - br_if $folding-inner9 - local.get $1 - i32.const 95 - call $~lib/typedarray/Uint8Array#every - br_if $folding-inner10 - local.get $1 - call $~lib/rt/pure/__release - i32.const 3 - call $~lib/typedarray/Int16Array#constructor - local.tee $1 - i32.const 0 - i32.const 2 - call $~lib/typedarray/Int16Array#__set - local.get $1 - i32.const 1 - i32.const 4 - call $~lib/typedarray/Int16Array#__set - local.get $1 - i32.const 2 - i32.const 6 - call $~lib/typedarray/Int16Array#__set - local.get $1 - i32.const 96 - call $~lib/typedarray/Int16Array#every - i32.eqz - br_if $folding-inner9 - local.get $1 - i32.const 97 - call $~lib/typedarray/Int16Array#every - br_if $folding-inner10 - local.get $1 - call $~lib/rt/pure/__release - i32.const 3 - call $~lib/typedarray/Uint16Array#constructor - local.tee $1 - i32.const 0 - i32.const 2 - call $~lib/typedarray/Uint16Array#__set - local.get $1 - i32.const 1 - i32.const 4 - call $~lib/typedarray/Uint16Array#__set - local.get $1 - i32.const 2 - i32.const 6 - call $~lib/typedarray/Uint16Array#__set - local.get $1 - i32.const 98 - call $~lib/typedarray/Uint16Array#every - i32.eqz - br_if $folding-inner9 - local.get $1 - i32.const 99 - call $~lib/typedarray/Uint16Array#every - br_if $folding-inner10 - local.get $1 - call $~lib/rt/pure/__release - i32.const 3 - call $~lib/typedarray/Int32Array#constructor - local.tee $1 - i32.const 0 - i32.const 2 - call $~lib/typedarray/Int32Array#__set - local.get $1 - i32.const 1 - i32.const 4 - call $~lib/typedarray/Int32Array#__set - local.get $1 - i32.const 2 - i32.const 6 - call $~lib/typedarray/Int32Array#__set - local.get $1 - i32.const 100 - call $~lib/typedarray/Int32Array#every - i32.eqz - br_if $folding-inner9 - local.get $1 - i32.const 101 - call $~lib/typedarray/Int32Array#every - br_if $folding-inner10 - local.get $1 - call $~lib/rt/pure/__release - i32.const 3 - call $~lib/typedarray/Uint32Array#constructor - local.tee $1 - i32.const 0 - i32.const 2 - call $~lib/typedarray/Uint32Array#__set - local.get $1 - i32.const 1 - i32.const 4 - call $~lib/typedarray/Uint32Array#__set - local.get $1 - i32.const 2 - i32.const 6 - call $~lib/typedarray/Uint32Array#__set - local.get $1 - i32.const 102 - call $~lib/typedarray/Int32Array#every - i32.eqz - br_if $folding-inner9 - local.get $1 - i32.const 103 - call $~lib/typedarray/Int32Array#every - br_if $folding-inner10 - local.get $1 - call $~lib/rt/pure/__release - i32.const 3 - call $~lib/typedarray/Int64Array#constructor - local.tee $1 - i32.const 0 - i64.const 2 - call $~lib/typedarray/Int64Array#__set - local.get $1 - i32.const 1 - i64.const 4 - call $~lib/typedarray/Int64Array#__set - local.get $1 - i32.const 2 - i64.const 6 - call $~lib/typedarray/Int64Array#__set - local.get $1 - i32.const 104 - call $~lib/typedarray/Int64Array#every - i32.eqz - br_if $folding-inner9 - local.get $1 - i32.const 105 - call $~lib/typedarray/Int64Array#every - br_if $folding-inner10 - local.get $1 - call $~lib/rt/pure/__release - i32.const 3 - call $~lib/typedarray/Uint64Array#constructor - local.tee $1 - i32.const 0 - i64.const 2 - call $~lib/typedarray/Uint64Array#__set - local.get $1 - i32.const 1 - i64.const 4 - call $~lib/typedarray/Uint64Array#__set - local.get $1 - i32.const 2 - i64.const 6 - call $~lib/typedarray/Uint64Array#__set - local.get $1 - i32.const 106 - call $~lib/typedarray/Int64Array#every - i32.eqz - br_if $folding-inner9 - local.get $1 - i32.const 107 - call $~lib/typedarray/Int64Array#every - br_if $folding-inner10 - local.get $1 - call $~lib/rt/pure/__release - i32.const 3 - call $~lib/typedarray/Float32Array#constructor - local.tee $1 - i32.const 0 - f32.const 2 - call $~lib/typedarray/Float32Array#__set - local.get $1 - i32.const 1 - f32.const 4 - call $~lib/typedarray/Float32Array#__set - local.get $1 - i32.const 2 - f32.const 6 - call $~lib/typedarray/Float32Array#__set - local.get $1 - i32.const 108 - call $~lib/typedarray/Float32Array#every - i32.eqz - br_if $folding-inner9 - local.get $1 - i32.const 109 - call $~lib/typedarray/Float32Array#every - br_if $folding-inner10 - local.get $1 - call $~lib/rt/pure/__release - i32.const 3 - call $~lib/typedarray/Float64Array#constructor - local.tee $1 - i32.const 0 - f64.const 2 - call $~lib/typedarray/Float64Array#__set - local.get $1 - i32.const 1 - f64.const 4 - call $~lib/typedarray/Float64Array#__set - local.get $1 - i32.const 2 - f64.const 6 - call $~lib/typedarray/Float64Array#__set - local.get $1 - i32.const 110 - call $~lib/typedarray/Float64Array#every - i32.eqz - br_if $folding-inner9 - local.get $1 - i32.const 111 - call $~lib/typedarray/Float64Array#every - br_if $folding-inner10 - local.get $1 - call $~lib/rt/pure/__release - i32.const 0 - global.set $std/typedarray/forEachCallCount - i32.const 3 - call $~lib/typedarray/Int8Array#constructor - local.tee $0 - global.set $std/typedarray/forEachSelf - local.get $0 - i32.const 0 - i32.const 2704 - i32.const 0 - call $~lib/array/Array#__get - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s - call $~lib/typedarray/Int8Array#__set - local.get $0 - i32.const 1 - i32.const 2704 - i32.const 1 - call $~lib/array/Array#__get - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s - call $~lib/typedarray/Int8Array#__set - local.get $0 - i32.const 2 - i32.const 2704 - i32.const 2 - call $~lib/array/Array#__get - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s - call $~lib/typedarray/Int8Array#__set - i32.const 0 - local.set $1 - local.get $0 - i32.load offset=4 - local.set $29 - local.get $0 - i32.load offset=8 - local.set $28 - loop $for-loop|020 - local.get $1 - local.get $28 - i32.lt_s - if - i32.const 3 - global.set $~argumentsLength - local.get $1 - local.get $29 - i32.add - i32.load8_s - local.get $1 - local.get $0 - call $std/typedarray/testArrayForEach<~lib/typedarray/Int8Array,i8>~anonymous|0 - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|020 - end - end - global.get $std/typedarray/forEachCallCount - i32.const 3 - i32.ne - br_if $folding-inner11 - local.get $0 - call $~lib/rt/pure/__release - i32.const 0 - global.set $std/typedarray/forEachCallCount - i32.const 3 - call $~lib/typedarray/Uint8Array#constructor - local.tee $1 - global.set $std/typedarray/forEachSelf - local.get $1 - i32.const 0 - i32.const 2704 - i32.const 0 - call $~lib/array/Array#__get - i32.const 255 - i32.and - call $~lib/typedarray/Uint8Array#__set - local.get $1 - i32.const 1 - i32.const 2704 - i32.const 1 - call $~lib/array/Array#__get - i32.const 255 - i32.and - call $~lib/typedarray/Uint8Array#__set - local.get $1 - i32.const 2 - i32.const 2704 - i32.const 2 - call $~lib/array/Array#__get - i32.const 255 - i32.and - call $~lib/typedarray/Uint8Array#__set - local.get $1 - i32.const 113 - call $~lib/typedarray/Uint8Array#forEach - global.get $std/typedarray/forEachCallCount - i32.const 3 - i32.ne - br_if $folding-inner11 - local.get $1 - call $~lib/rt/pure/__release - i32.const 0 - global.set $std/typedarray/forEachCallCount - i32.const 3 - call $~lib/typedarray/Uint8ClampedArray#constructor - local.tee $1 - global.set $std/typedarray/forEachSelf - local.get $1 - i32.const 0 - i32.const 2704 - i32.const 0 - call $~lib/array/Array#__get - i32.const 255 - i32.and - call $~lib/typedarray/Uint8ClampedArray#__set - local.get $1 - i32.const 1 - i32.const 2704 - i32.const 1 - call $~lib/array/Array#__get - i32.const 255 - i32.and - call $~lib/typedarray/Uint8ClampedArray#__set - local.get $1 - i32.const 2 - i32.const 2704 - i32.const 2 - call $~lib/array/Array#__get - i32.const 255 - i32.and - call $~lib/typedarray/Uint8ClampedArray#__set - local.get $1 - i32.const 114 - call $~lib/typedarray/Uint8Array#forEach - global.get $std/typedarray/forEachCallCount - i32.const 3 - i32.ne - br_if $folding-inner11 - local.get $1 - call $~lib/rt/pure/__release - i32.const 0 - global.set $std/typedarray/forEachCallCount - i32.const 3 - call $~lib/typedarray/Int16Array#constructor - local.tee $0 - global.set $std/typedarray/forEachSelf - local.get $0 - i32.const 0 - i32.const 2704 - i32.const 0 - call $~lib/array/Array#__get - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s - call $~lib/typedarray/Int16Array#__set - local.get $0 - i32.const 1 - i32.const 2704 - i32.const 1 - call $~lib/array/Array#__get - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s - call $~lib/typedarray/Int16Array#__set - local.get $0 - i32.const 2 - i32.const 2704 - i32.const 2 - call $~lib/array/Array#__get - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s - call $~lib/typedarray/Int16Array#__set - i32.const 0 - local.set $1 - local.get $0 - i32.load offset=4 - local.set $29 - local.get $0 - i32.load offset=8 - i32.const 1 - i32.shr_u - local.set $28 - loop $for-loop|021 - local.get $1 - local.get $28 - i32.lt_s - if - i32.const 3 - global.set $~argumentsLength - local.get $29 - local.get $1 - i32.const 1 - i32.shl - i32.add - i32.load16_s - local.get $1 - local.get $0 - call $std/typedarray/testArrayForEach<~lib/typedarray/Int16Array,i16>~anonymous|0 - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|021 - end - end - global.get $std/typedarray/forEachCallCount - i32.const 3 - i32.ne - br_if $folding-inner11 - local.get $0 - call $~lib/rt/pure/__release - i32.const 0 - global.set $std/typedarray/forEachCallCount - i32.const 3 - call $~lib/typedarray/Uint16Array#constructor - local.tee $0 - global.set $std/typedarray/forEachSelf - local.get $0 - i32.const 0 - i32.const 2704 - i32.const 0 - call $~lib/array/Array#__get - i32.const 65535 - i32.and - call $~lib/typedarray/Uint16Array#__set - local.get $0 - i32.const 1 - i32.const 2704 - i32.const 1 - call $~lib/array/Array#__get - i32.const 65535 - i32.and - call $~lib/typedarray/Uint16Array#__set - local.get $0 - i32.const 2 - i32.const 2704 - i32.const 2 - call $~lib/array/Array#__get - i32.const 65535 - i32.and - call $~lib/typedarray/Uint16Array#__set - i32.const 0 - local.set $1 - local.get $0 - i32.load offset=4 - local.set $29 - local.get $0 - i32.load offset=8 - i32.const 1 - i32.shr_u - local.set $28 - loop $for-loop|022 - local.get $1 - local.get $28 - i32.lt_s - if - i32.const 3 - global.set $~argumentsLength - local.get $29 - local.get $1 - i32.const 1 - i32.shl - i32.add - i32.load16_u - local.get $1 - local.get $0 - call $std/typedarray/testArrayForEach<~lib/typedarray/Int16Array,i16>~anonymous|0 - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|022 - end - end - global.get $std/typedarray/forEachCallCount - i32.const 3 - i32.ne - br_if $folding-inner11 - local.get $0 - call $~lib/rt/pure/__release - i32.const 0 - global.set $std/typedarray/forEachCallCount - i32.const 3 - call $~lib/typedarray/Int32Array#constructor - local.tee $1 - global.set $std/typedarray/forEachSelf - local.get $1 - i32.const 0 - i32.const 2704 - i32.const 0 - call $~lib/array/Array#__get - call $~lib/typedarray/Int32Array#__set - local.get $1 - i32.const 1 - i32.const 2704 - i32.const 1 - call $~lib/array/Array#__get - call $~lib/typedarray/Int32Array#__set - local.get $1 - i32.const 2 - i32.const 2704 - i32.const 2 - call $~lib/array/Array#__get - call $~lib/typedarray/Int32Array#__set - local.get $1 - i32.const 117 - call $~lib/typedarray/Int32Array#forEach - global.get $std/typedarray/forEachCallCount - i32.const 3 - i32.ne - br_if $folding-inner11 - local.get $1 - call $~lib/rt/pure/__release - i32.const 0 - global.set $std/typedarray/forEachCallCount - i32.const 3 - call $~lib/typedarray/Uint32Array#constructor - local.tee $1 - global.set $std/typedarray/forEachSelf - local.get $1 - i32.const 0 - i32.const 2704 - i32.const 0 - call $~lib/array/Array#__get - call $~lib/typedarray/Uint32Array#__set - local.get $1 - i32.const 1 - i32.const 2704 - i32.const 1 - call $~lib/array/Array#__get - call $~lib/typedarray/Uint32Array#__set - local.get $1 - i32.const 2 - i32.const 2704 - i32.const 2 - call $~lib/array/Array#__get - call $~lib/typedarray/Uint32Array#__set - local.get $1 - i32.const 118 - call $~lib/typedarray/Int32Array#forEach - global.get $std/typedarray/forEachCallCount - i32.const 3 - i32.ne - br_if $folding-inner11 - local.get $1 - call $~lib/rt/pure/__release - i32.const 0 - global.set $std/typedarray/forEachCallCount - i32.const 3 - call $~lib/typedarray/Int64Array#constructor - local.tee $1 - global.set $std/typedarray/forEachSelf - local.get $1 - i32.const 0 - i32.const 2704 - i32.const 0 - call $~lib/array/Array#__get - i64.extend_i32_s - call $~lib/typedarray/Int64Array#__set - local.get $1 - i32.const 1 - i32.const 2704 - i32.const 1 - call $~lib/array/Array#__get - i64.extend_i32_s - call $~lib/typedarray/Int64Array#__set - local.get $1 - i32.const 2 - i32.const 2704 - i32.const 2 - call $~lib/array/Array#__get - i64.extend_i32_s - call $~lib/typedarray/Int64Array#__set - local.get $1 - i32.const 119 - call $~lib/typedarray/Int64Array#forEach - global.get $std/typedarray/forEachCallCount - i32.const 3 - i32.ne - br_if $folding-inner11 - local.get $1 - call $~lib/rt/pure/__release - i32.const 0 - global.set $std/typedarray/forEachCallCount - i32.const 3 - call $~lib/typedarray/Uint64Array#constructor - local.tee $1 - global.set $std/typedarray/forEachSelf - local.get $1 - i32.const 0 - i32.const 2704 - i32.const 0 - call $~lib/array/Array#__get - i64.extend_i32_s - call $~lib/typedarray/Uint64Array#__set - local.get $1 - i32.const 1 - i32.const 2704 - i32.const 1 - call $~lib/array/Array#__get - i64.extend_i32_s - call $~lib/typedarray/Uint64Array#__set - local.get $1 - i32.const 2 - i32.const 2704 - i32.const 2 - call $~lib/array/Array#__get - i64.extend_i32_s - call $~lib/typedarray/Uint64Array#__set - local.get $1 - i32.const 120 - call $~lib/typedarray/Int64Array#forEach - global.get $std/typedarray/forEachCallCount - i32.const 3 - i32.ne - br_if $folding-inner11 - local.get $1 - call $~lib/rt/pure/__release - i32.const 0 - global.set $std/typedarray/forEachCallCount - i32.const 3 - call $~lib/typedarray/Float32Array#constructor - local.tee $0 - global.set $std/typedarray/forEachSelf - local.get $0 - i32.const 0 - i32.const 2704 - i32.const 0 - call $~lib/array/Array#__get - f32.convert_i32_s - call $~lib/typedarray/Float32Array#__set - local.get $0 - i32.const 1 - i32.const 2704 - i32.const 1 - call $~lib/array/Array#__get - f32.convert_i32_s - call $~lib/typedarray/Float32Array#__set - local.get $0 - i32.const 2 - i32.const 2704 - i32.const 2 - call $~lib/array/Array#__get - f32.convert_i32_s - call $~lib/typedarray/Float32Array#__set - i32.const 0 - local.set $1 - local.get $0 - i32.load offset=4 - local.set $29 - local.get $0 - i32.load offset=8 - i32.const 2 - i32.shr_u - local.set $28 - loop $for-loop|023 - local.get $1 - local.get $28 - i32.lt_s - if - i32.const 3 - global.set $~argumentsLength - local.get $29 - local.get $1 - i32.const 2 - i32.shl - i32.add - f32.load - local.get $1 - local.get $0 - call $std/typedarray/testArrayForEach<~lib/typedarray/Float32Array,f32>~anonymous|0 - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|023 - end - end - global.get $std/typedarray/forEachCallCount - i32.const 3 - i32.ne - br_if $folding-inner11 - local.get $0 - call $~lib/rt/pure/__release - i32.const 0 - global.set $std/typedarray/forEachCallCount - i32.const 3 - call $~lib/typedarray/Float64Array#constructor - local.tee $0 - global.set $std/typedarray/forEachSelf - local.get $0 - i32.const 0 - i32.const 2704 - i32.const 0 - call $~lib/array/Array#__get - f64.convert_i32_s - call $~lib/typedarray/Float64Array#__set - local.get $0 - i32.const 1 - i32.const 2704 - i32.const 1 - call $~lib/array/Array#__get - f64.convert_i32_s - call $~lib/typedarray/Float64Array#__set - local.get $0 - i32.const 2 - i32.const 2704 - i32.const 2 - call $~lib/array/Array#__get - f64.convert_i32_s - call $~lib/typedarray/Float64Array#__set - i32.const 0 - local.set $1 - local.get $0 - i32.load offset=4 - local.set $29 - local.get $0 - i32.load offset=8 - i32.const 3 - i32.shr_u - local.set $28 - loop $for-loop|024 - local.get $1 - local.get $28 - i32.lt_s - if - i32.const 3 - global.set $~argumentsLength - local.get $29 - local.get $1 - i32.const 3 - i32.shl - i32.add - f64.load - local.get $1 - local.get $0 - call $std/typedarray/testArrayForEach<~lib/typedarray/Float64Array,f64>~anonymous|0 - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|024 - end - end - global.get $std/typedarray/forEachCallCount - i32.const 3 - i32.ne - br_if $folding-inner11 - local.get $0 - call $~lib/rt/pure/__release - call $std/typedarray/testArrayReverse<~lib/typedarray/Int8Array,i8> - call $std/typedarray/testArrayReverse<~lib/typedarray/Uint8Array,u8> - call $std/typedarray/testArrayReverse<~lib/typedarray/Uint8ClampedArray,u8> - call $std/typedarray/testArrayReverse<~lib/typedarray/Int16Array,i16> - call $std/typedarray/testArrayReverse<~lib/typedarray/Uint16Array,u16> - call $std/typedarray/testArrayReverse<~lib/typedarray/Int32Array,i32> - call $std/typedarray/testArrayReverse<~lib/typedarray/Uint32Array,u32> - call $std/typedarray/testArrayReverse<~lib/typedarray/Int64Array,i64> - call $std/typedarray/testArrayReverse<~lib/typedarray/Uint64Array,u64> - call $std/typedarray/testArrayReverse<~lib/typedarray/Float32Array,f32> - call $std/typedarray/testArrayReverse<~lib/typedarray/Float64Array,f64> - call $std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Int8Array,i8> - call $std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Uint8Array,u8> - call $std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Uint8ClampedArray,u8> - call $std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Int16Array,i16> - call $std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Uint16Array,u16> - call $std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Int32Array,i32> - call $std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Uint32Array,u32> - call $std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Int64Array,i64> - call $std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Uint64Array,u64> - call $std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Float32Array,f32> - call $std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Float64Array,f64> - i32.const 1 - call $~lib/typedarray/Float64Array#constructor - local.tee $29 - i32.const 0 - f64.const nan:0x8000000000000 - call $~lib/typedarray/Float64Array#__set - local.get $29 - f64.const nan:0x8000000000000 - i32.const 0 - call $~lib/typedarray/Float64Array#indexOf - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 607 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - local.set $1 - i32.const 0 - local.set $0 - block $~lib/typedarray/INCLUDES<~lib/typedarray/Float64Array,f64>|inlined.0 - local.get $29 - i32.load offset=8 - i32.const 3 - i32.shr_u - local.tee $28 - if (result i32) - i32.const 0 - local.get $28 - i32.ge_s - else - i32.const 1 - end - br_if $~lib/typedarray/INCLUDES<~lib/typedarray/Float64Array,f64>|inlined.0 - local.get $29 - i32.load offset=4 - local.set $25 - loop $while-continue|0 - local.get $1 - local.get $28 - i32.lt_s - if - local.get $25 - local.get $1 - i32.const 3 - i32.shl - i32.add - f64.load - local.tee $22 - f64.const nan:0x8000000000000 - f64.eq - if (result i32) + block $folding-inner16 + block $folding-inner15 + block $folding-inner14 + block $folding-inner13 + block $folding-inner12 + block $folding-inner11 + block $folding-inner10 + block $folding-inner9 + block $folding-inner8 + block $folding-inner7 + block $folding-inner6 + block $folding-inner5 + block $folding-inner4 + block $folding-inner3 + block $folding-inner2 + block $folding-inner1 + block $folding-inner0 + local.get $1 + i32.const 255 + i32.and + i32.const 6 + i32.ne + br_if $folding-inner0 + local.get $29 + call $~lib/rt/pure/__release + i32.const 3 + call $~lib/typedarray/Uint8Array#constructor + local.tee $1 + i32.const 0 + i32.const 1 + call $~lib/typedarray/Uint8Array#__set + local.get $1 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Uint8Array#__set + local.get $1 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Uint8Array#__set + local.get $1 + i32.const 3 + call $~lib/typedarray/Uint8Array#reduce + i32.const 255 + i32.and + i32.const 6 + i32.ne + br_if $folding-inner0 + local.get $1 + call $~lib/rt/pure/__release + i32.const 3 + call $~lib/typedarray/Uint8ClampedArray#constructor + local.tee $1 + i32.const 0 + i32.const 1 + call $~lib/typedarray/Uint8ClampedArray#__set + local.get $1 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Uint8ClampedArray#__set + local.get $1 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Uint8ClampedArray#__set + local.get $1 + i32.const 4 + call $~lib/typedarray/Uint8Array#reduce + i32.const 255 + i32.and + i32.const 6 + i32.ne + br_if $folding-inner0 + local.get $1 + call $~lib/rt/pure/__release + i32.const 3 + call $~lib/typedarray/Int16Array#constructor + local.tee $29 + i32.const 0 + i32.const 1 + call $~lib/typedarray/Int16Array#__set + local.get $29 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Int16Array#__set + local.get $29 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Int16Array#__set + i32.const 0 + local.set $0 + i32.const 0 + local.set $1 + local.get $29 + i32.load offset=4 + local.set $28 + local.get $29 + i32.load offset=8 + i32.const 1 + i32.shr_u + local.set $27 + loop $for-loop|00 + local.get $0 + local.get $27 + i32.lt_s + if + i32.const 4 + global.set $~argumentsLength + local.get $1 + local.get $28 + local.get $0 + i32.const 1 + i32.shl + i32.add + i32.load16_s + i32.add + local.set $1 + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|00 + end + end + local.get $1 + i32.const 65535 + i32.and + i32.const 6 + i32.ne + br_if $folding-inner0 + local.get $29 + call $~lib/rt/pure/__release + i32.const 3 + call $~lib/typedarray/Uint16Array#constructor + local.tee $29 + i32.const 0 + i32.const 1 + call $~lib/typedarray/Uint16Array#__set + local.get $29 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Uint16Array#__set + local.get $29 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Uint16Array#__set + i32.const 0 + local.set $0 + i32.const 0 + local.set $1 + local.get $29 + i32.load offset=4 + local.set $28 + local.get $29 + i32.load offset=8 + i32.const 1 + i32.shr_u + local.set $27 + loop $for-loop|01 + local.get $0 + local.get $27 + i32.lt_s + if + i32.const 4 + global.set $~argumentsLength + local.get $1 + local.get $28 + local.get $0 + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.add + local.set $1 + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|01 + end + end + local.get $1 + i32.const 65535 + i32.and + i32.const 6 + i32.ne + br_if $folding-inner0 + local.get $29 + call $~lib/rt/pure/__release + i32.const 3 + call $~lib/typedarray/Int32Array#constructor + local.tee $1 + i32.const 0 + i32.const 1 + call $~lib/typedarray/Int32Array#__set + local.get $1 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Int32Array#__set + local.get $1 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Int32Array#__set + local.get $1 + i32.const 7 + call $~lib/typedarray/Int32Array#reduce + i32.const 6 + i32.ne + br_if $folding-inner0 + local.get $1 + call $~lib/rt/pure/__release + i32.const 3 + call $~lib/typedarray/Uint32Array#constructor + local.tee $1 + i32.const 0 + i32.const 1 + call $~lib/typedarray/Uint32Array#__set + local.get $1 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Uint32Array#__set + local.get $1 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Uint32Array#__set + local.get $1 + i32.const 8 + call $~lib/typedarray/Int32Array#reduce + i32.const 6 + i32.ne + br_if $folding-inner0 + local.get $1 + call $~lib/rt/pure/__release + i32.const 3 + call $~lib/typedarray/Int64Array#constructor + local.tee $1 + i32.const 0 + i64.const 1 + call $~lib/typedarray/Int64Array#__set + local.get $1 + i32.const 1 + i64.const 2 + call $~lib/typedarray/Int64Array#__set + local.get $1 + i32.const 2 + i64.const 3 + call $~lib/typedarray/Int64Array#__set + local.get $1 + i32.const 9 + call $~lib/typedarray/Int64Array#reduce + i64.const 6 + i64.ne + br_if $folding-inner0 + local.get $1 + call $~lib/rt/pure/__release + i32.const 3 + call $~lib/typedarray/Uint64Array#constructor + local.tee $1 + i32.const 0 + i64.const 1 + call $~lib/typedarray/Uint64Array#__set + local.get $1 + i32.const 1 + i64.const 2 + call $~lib/typedarray/Uint64Array#__set + local.get $1 + i32.const 2 + i64.const 3 + call $~lib/typedarray/Uint64Array#__set + local.get $1 + i32.const 10 + call $~lib/typedarray/Int64Array#reduce + i64.const 6 + i64.ne + br_if $folding-inner0 + local.get $1 + call $~lib/rt/pure/__release + i32.const 3 + call $~lib/typedarray/Float32Array#constructor + local.tee $0 + i32.const 0 + f32.const 1 + call $~lib/typedarray/Float32Array#__set + local.get $0 + i32.const 1 + f32.const 2 + call $~lib/typedarray/Float32Array#__set + local.get $0 + i32.const 2 + f32.const 3 + call $~lib/typedarray/Float32Array#__set + i32.const 0 + local.set $1 + local.get $0 + i32.load offset=4 + local.set $29 + local.get $0 + i32.load offset=8 + i32.const 2 + i32.shr_u + local.set $28 + loop $for-loop|02 + local.get $1 + local.get $28 + i32.lt_s + if + i32.const 4 + global.set $~argumentsLength + local.get $21 + local.get $29 + local.get $1 + i32.const 2 + i32.shl + i32.add + f32.load + f32.add + local.set $21 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|02 + end + end + local.get $21 + f32.const 6 + f32.ne + br_if $folding-inner0 + local.get $0 + call $~lib/rt/pure/__release + i32.const 3 + call $~lib/typedarray/Float64Array#constructor + local.tee $0 + i32.const 0 + f64.const 1 + call $~lib/typedarray/Float64Array#__set + local.get $0 + i32.const 1 + f64.const 2 + call $~lib/typedarray/Float64Array#__set + local.get $0 + i32.const 2 + f64.const 3 + call $~lib/typedarray/Float64Array#__set + i32.const 0 + local.set $1 + f64.const 0 + local.set $22 + local.get $0 + i32.load offset=4 + local.set $29 + local.get $0 + i32.load offset=8 + i32.const 3 + i32.shr_u + local.set $28 + loop $for-loop|03 + local.get $1 + local.get $28 + i32.lt_s + if + i32.const 4 + global.set $~argumentsLength + local.get $22 + local.get $29 + local.get $1 + i32.const 3 + i32.shl + i32.add + f64.load + f64.add + local.set $22 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|03 + end + end + local.get $22 + f64.const 6 + f64.ne + br_if $folding-inner0 + local.get $0 + call $~lib/rt/pure/__release + i32.const 3 + call $~lib/typedarray/Int8Array#constructor + local.tee $29 + i32.const 0 + i32.const 1 + call $~lib/typedarray/Int8Array#__set + local.get $29 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Int8Array#__set + local.get $29 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Int8Array#__set + i32.const 0 + local.set $0 + local.get $29 + i32.load offset=4 + local.set $28 + local.get $29 + i32.load offset=8 + i32.const 1 + i32.sub + local.set $1 + loop $for-loop|04 + local.get $1 + i32.const 0 + i32.ge_s + if + i32.const 4 + global.set $~argumentsLength + local.get $0 + local.get $1 + local.get $28 + i32.add + i32.load8_s + i32.add + local.set $0 + local.get $1 + i32.const 1 + i32.sub + local.set $1 + br $for-loop|04 + end + end + local.get $0 + i32.const 255 + i32.and + i32.const 6 + i32.ne + br_if $folding-inner1 + local.get $29 + call $~lib/rt/pure/__release + i32.const 3 + call $~lib/typedarray/Uint8Array#constructor + local.tee $1 + i32.const 0 + i32.const 1 + call $~lib/typedarray/Uint8Array#__set + local.get $1 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Uint8Array#__set + local.get $1 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Uint8Array#__set + local.get $1 + i32.const 14 + call $~lib/typedarray/Uint8Array#reduceRight + i32.const 255 + i32.and + i32.const 6 + i32.ne + br_if $folding-inner1 + local.get $1 + call $~lib/rt/pure/__release + i32.const 3 + call $~lib/typedarray/Uint8ClampedArray#constructor + local.tee $1 + i32.const 0 + i32.const 1 + call $~lib/typedarray/Uint8ClampedArray#__set + local.get $1 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Uint8ClampedArray#__set + local.get $1 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Uint8ClampedArray#__set + local.get $1 + i32.const 15 + call $~lib/typedarray/Uint8Array#reduceRight + i32.const 255 + i32.and + i32.const 6 + i32.ne + br_if $folding-inner1 + local.get $1 + call $~lib/rt/pure/__release + i32.const 3 + call $~lib/typedarray/Int16Array#constructor + local.tee $29 + i32.const 0 + i32.const 1 + call $~lib/typedarray/Int16Array#__set + local.get $29 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Int16Array#__set + local.get $29 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Int16Array#__set + i32.const 0 + local.set $0 + local.get $29 + i32.load offset=4 + local.set $28 + local.get $29 + i32.load offset=8 + i32.const 1 + i32.shr_u + i32.const 1 + i32.sub + local.set $1 + loop $for-loop|05 + local.get $1 + i32.const 0 + i32.ge_s + if + i32.const 4 + global.set $~argumentsLength + local.get $0 + local.get $28 + local.get $1 + i32.const 1 + i32.shl + i32.add + i32.load16_s + i32.add + local.set $0 + local.get $1 + i32.const 1 + i32.sub + local.set $1 + br $for-loop|05 + end + end + local.get $0 + i32.const 65535 + i32.and + i32.const 6 + i32.ne + br_if $folding-inner1 + local.get $29 + call $~lib/rt/pure/__release + i32.const 3 + call $~lib/typedarray/Uint16Array#constructor + local.tee $29 + i32.const 0 + i32.const 1 + call $~lib/typedarray/Uint16Array#__set + local.get $29 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Uint16Array#__set + local.get $29 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Uint16Array#__set + i32.const 0 + local.set $0 + local.get $29 + i32.load offset=4 + local.set $28 + local.get $29 + i32.load offset=8 + i32.const 1 + i32.shr_u + i32.const 1 + i32.sub + local.set $1 + loop $for-loop|06 + local.get $1 + i32.const 0 + i32.ge_s + if + i32.const 4 + global.set $~argumentsLength + local.get $0 + local.get $28 + local.get $1 + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.add + local.set $0 + local.get $1 + i32.const 1 + i32.sub + local.set $1 + br $for-loop|06 + end + end + local.get $0 + i32.const 65535 + i32.and + i32.const 6 + i32.ne + br_if $folding-inner1 + local.get $29 + call $~lib/rt/pure/__release + i32.const 3 + call $~lib/typedarray/Int32Array#constructor + local.tee $1 + i32.const 0 + i32.const 1 + call $~lib/typedarray/Int32Array#__set + local.get $1 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Int32Array#__set + local.get $1 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Int32Array#__set + local.get $1 + i32.const 18 + call $~lib/typedarray/Int32Array#reduceRight + i32.const 6 + i32.ne + br_if $folding-inner1 + local.get $1 + call $~lib/rt/pure/__release + i32.const 3 + call $~lib/typedarray/Uint32Array#constructor + local.tee $1 + i32.const 0 + i32.const 1 + call $~lib/typedarray/Uint32Array#__set + local.get $1 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Uint32Array#__set + local.get $1 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Uint32Array#__set + local.get $1 + i32.const 19 + call $~lib/typedarray/Int32Array#reduceRight + i32.const 6 + i32.ne + br_if $folding-inner1 + local.get $1 + call $~lib/rt/pure/__release + i32.const 3 + call $~lib/typedarray/Int64Array#constructor + local.tee $1 + i32.const 0 + i64.const 1 + call $~lib/typedarray/Int64Array#__set + local.get $1 + i32.const 1 + i64.const 2 + call $~lib/typedarray/Int64Array#__set + local.get $1 + i32.const 2 + i64.const 3 + call $~lib/typedarray/Int64Array#__set + local.get $1 + i32.const 20 + call $~lib/typedarray/Int64Array#reduceRight + i64.const 6 + i64.ne + br_if $folding-inner1 + local.get $1 + call $~lib/rt/pure/__release + i32.const 3 + call $~lib/typedarray/Uint64Array#constructor + local.tee $1 + i32.const 0 + i64.const 1 + call $~lib/typedarray/Uint64Array#__set + local.get $1 + i32.const 1 + i64.const 2 + call $~lib/typedarray/Uint64Array#__set + local.get $1 + i32.const 2 + i64.const 3 + call $~lib/typedarray/Uint64Array#__set + local.get $1 + i32.const 21 + call $~lib/typedarray/Int64Array#reduceRight + i64.const 6 + i64.ne + br_if $folding-inner1 + local.get $1 + call $~lib/rt/pure/__release + i32.const 3 + call $~lib/typedarray/Float32Array#constructor + local.tee $1 + i32.const 0 + f32.const 1 + call $~lib/typedarray/Float32Array#__set + local.get $1 + i32.const 1 + f32.const 2 + call $~lib/typedarray/Float32Array#__set + local.get $1 + i32.const 2 + f32.const 3 + call $~lib/typedarray/Float32Array#__set + f32.const 0 + local.set $21 + local.get $1 + i32.load offset=4 + local.set $29 + local.get $1 + i32.load offset=8 + i32.const 2 + i32.shr_u + i32.const 1 + i32.sub + local.set $0 + loop $for-loop|07 + local.get $0 + i32.const 0 + i32.ge_s + if + i32.const 4 + global.set $~argumentsLength + local.get $21 + local.get $29 + local.get $0 + i32.const 2 + i32.shl + i32.add + f32.load + f32.add + local.set $21 + local.get $0 + i32.const 1 + i32.sub + local.set $0 + br $for-loop|07 + end + end + local.get $21 + f32.const 6 + f32.ne + br_if $folding-inner1 + local.get $1 + call $~lib/rt/pure/__release + i32.const 3 + call $~lib/typedarray/Float64Array#constructor + local.tee $1 + i32.const 0 + f64.const 1 + call $~lib/typedarray/Float64Array#__set + local.get $1 + i32.const 1 + f64.const 2 + call $~lib/typedarray/Float64Array#__set + local.get $1 + i32.const 2 + f64.const 3 + call $~lib/typedarray/Float64Array#__set + f64.const 0 + local.set $22 + local.get $1 + i32.load offset=4 + local.set $29 + local.get $1 + i32.load offset=8 + i32.const 3 + i32.shr_u + i32.const 1 + i32.sub + local.set $0 + loop $for-loop|08 + local.get $0 + i32.const 0 + i32.ge_s + if + i32.const 4 + global.set $~argumentsLength + local.get $22 + local.get $29 + local.get $0 + i32.const 3 + i32.shl + i32.add + f64.load + f64.add + local.set $22 + local.get $0 + i32.const 1 + i32.sub + local.set $0 + br $for-loop|08 + end + end + local.get $22 + f64.const 6 + f64.ne + br_if $folding-inner1 + local.get $1 + call $~lib/rt/pure/__release + i32.const 3 + call $~lib/typedarray/Int8Array#constructor + local.tee $0 + i32.const 0 + i32.const 1 + call $~lib/typedarray/Int8Array#__set + local.get $0 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Int8Array#__set + local.get $0 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Int8Array#__set + i32.const 0 + local.set $1 + local.get $0 + i32.load offset=8 + local.set $28 + local.get $0 + i32.load offset=4 + local.set $25 + i32.const 12 + i32.const 3 + call $~lib/rt/tlsf/__alloc + local.set $29 + local.get $28 + i32.const 0 + call $~lib/rt/tlsf/__alloc + local.set $27 + loop $for-loop|09 + local.get $1 + local.get $28 + i32.lt_s + if + i32.const 3 + global.set $~argumentsLength + local.get $1 + local.get $27 + i32.add + local.get $1 + local.get $25 + i32.add + i32.load8_s + local.tee $26 + local.get $26 + i32.mul + i32.store8 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|09 + end + end + local.get $29 + local.get $27 + call $~lib/rt/pure/__retain + i32.store + local.get $29 + local.get $27 + i32.store offset=4 + local.get $29 + local.get $28 + i32.store offset=8 + local.get $29 + call $~lib/rt/pure/__retain + local.tee $1 + i32.const 0 + call $~lib/typedarray/Int8Array#__get + i32.const 1 + i32.ne + br_if $folding-inner2 + local.get $1 + i32.const 1 + call $~lib/typedarray/Int8Array#__get + i32.const 4 + i32.ne + br_if $folding-inner3 + local.get $1 + i32.const 2 + call $~lib/typedarray/Int8Array#__get + i32.const 9 + i32.ne + br_if $folding-inner4 + local.get $0 + call $~lib/rt/pure/__release + local.get $1 + call $~lib/rt/pure/__release + i32.const 3 + call $~lib/typedarray/Uint8Array#constructor + local.tee $0 + i32.const 0 i32.const 1 - else - local.get $22 - local.get $22 + call $~lib/typedarray/Uint8Array#__set + local.get $0 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Uint8Array#__set + local.get $0 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Uint8Array#__set + i32.const 0 + local.set $1 + local.get $0 + i32.load offset=8 + local.set $28 + local.get $0 + i32.load offset=4 + local.set $25 + i32.const 12 + i32.const 4 + call $~lib/rt/tlsf/__alloc + local.set $29 + local.get $28 + i32.const 0 + call $~lib/rt/tlsf/__alloc + local.set $27 + loop $for-loop|010 + local.get $1 + local.get $28 + i32.lt_s + if + i32.const 3 + global.set $~argumentsLength + local.get $1 + local.get $27 + i32.add + local.get $1 + local.get $25 + i32.add + i32.load8_u + local.tee $26 + local.get $26 + i32.mul + i32.store8 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|010 + end + end + local.get $29 + local.get $27 + call $~lib/rt/pure/__retain + i32.store + local.get $29 + local.get $27 + i32.store offset=4 + local.get $29 + local.get $28 + i32.store offset=8 + local.get $29 + call $~lib/rt/pure/__retain + local.tee $1 + i32.const 0 + call $~lib/typedarray/Uint8Array#__get + i32.const 1 + i32.ne + br_if $folding-inner2 + local.get $1 + i32.const 1 + call $~lib/typedarray/Uint8Array#__get + i32.const 4 + i32.ne + br_if $folding-inner3 + local.get $1 + i32.const 2 + call $~lib/typedarray/Uint8Array#__get + i32.const 9 + i32.ne + br_if $folding-inner4 + local.get $0 + call $~lib/rt/pure/__release + local.get $1 + call $~lib/rt/pure/__release + i32.const 3 + call $~lib/typedarray/Uint8ClampedArray#constructor + local.tee $0 + i32.const 0 + i32.const 1 + call $~lib/typedarray/Uint8ClampedArray#__set + local.get $0 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Uint8ClampedArray#__set + local.get $0 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Uint8ClampedArray#__set + i32.const 0 + local.set $1 + local.get $0 + i32.load offset=8 + local.set $28 + local.get $0 + i32.load offset=4 + local.set $25 + i32.const 12 + i32.const 5 + call $~lib/rt/tlsf/__alloc + local.set $29 + local.get $28 + i32.const 0 + call $~lib/rt/tlsf/__alloc + local.set $27 + loop $for-loop|011 + local.get $1 + local.get $28 + i32.lt_s + if + i32.const 3 + global.set $~argumentsLength + local.get $1 + local.get $27 + i32.add + local.get $1 + local.get $25 + i32.add + i32.load8_u + local.tee $26 + local.get $26 + i32.mul + i32.store8 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|011 + end + end + local.get $29 + local.get $27 + call $~lib/rt/pure/__retain + i32.store + local.get $29 + local.get $27 + i32.store offset=4 + local.get $29 + local.get $28 + i32.store offset=8 + local.get $29 + call $~lib/rt/pure/__retain + local.tee $1 + i32.const 0 + call $~lib/typedarray/Uint8ClampedArray#__get + i32.const 1 + i32.ne + br_if $folding-inner2 + local.get $1 + i32.const 1 + call $~lib/typedarray/Uint8ClampedArray#__get + i32.const 4 + i32.ne + br_if $folding-inner3 + local.get $1 + i32.const 2 + call $~lib/typedarray/Uint8ClampedArray#__get + i32.const 9 + i32.ne + br_if $folding-inner4 + local.get $0 + call $~lib/rt/pure/__release + local.get $1 + call $~lib/rt/pure/__release + i32.const 3 + call $~lib/typedarray/Int16Array#constructor + local.tee $0 + i32.const 0 + i32.const 1 + call $~lib/typedarray/Int16Array#__set + local.get $0 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Int16Array#__set + local.get $0 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Int16Array#__set + i32.const 0 + local.set $1 + local.get $0 + i32.load offset=8 + i32.const 1 + i32.shr_u + local.set $27 + local.get $0 + i32.load offset=4 + local.set $25 + i32.const 12 + i32.const 6 + call $~lib/rt/tlsf/__alloc + local.set $29 + local.get $27 + i32.const 1 + i32.shl + local.tee $26 + i32.const 0 + call $~lib/rt/tlsf/__alloc + local.set $28 + loop $for-loop|012 + local.get $1 + local.get $27 + i32.lt_s + if + i32.const 3 + global.set $~argumentsLength + local.get $25 + local.get $1 + i32.const 1 + i32.shl + local.tee $24 + i32.add + i32.load16_s + local.tee $23 + local.get $23 + i32.mul + local.set $23 + local.get $24 + local.get $28 + i32.add + local.get $23 + i32.store16 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|012 + end + end + local.get $29 + local.get $28 + call $~lib/rt/pure/__retain + i32.store + local.get $29 + local.get $28 + i32.store offset=4 + local.get $29 + local.get $26 + i32.store offset=8 + local.get $29 + call $~lib/rt/pure/__retain + local.tee $1 + i32.const 0 + call $~lib/typedarray/Int16Array#__get + i32.const 1 + i32.ne + br_if $folding-inner2 + local.get $1 + i32.const 1 + call $~lib/typedarray/Int16Array#__get + i32.const 4 + i32.ne + br_if $folding-inner3 + local.get $1 + i32.const 2 + call $~lib/typedarray/Int16Array#__get + i32.const 9 + i32.ne + br_if $folding-inner4 + local.get $0 + call $~lib/rt/pure/__release + local.get $1 + call $~lib/rt/pure/__release + i32.const 3 + call $~lib/typedarray/Uint16Array#constructor + local.tee $0 + i32.const 0 + i32.const 1 + call $~lib/typedarray/Uint16Array#__set + local.get $0 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Uint16Array#__set + local.get $0 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Uint16Array#__set + i32.const 0 + local.set $1 + local.get $0 + i32.load offset=8 + i32.const 1 + i32.shr_u + local.set $27 + local.get $0 + i32.load offset=4 + local.set $25 + i32.const 12 + i32.const 7 + call $~lib/rt/tlsf/__alloc + local.set $29 + local.get $27 + i32.const 1 + i32.shl + local.tee $26 + i32.const 0 + call $~lib/rt/tlsf/__alloc + local.set $28 + loop $for-loop|013 + local.get $1 + local.get $27 + i32.lt_s + if + i32.const 3 + global.set $~argumentsLength + local.get $25 + local.get $1 + i32.const 1 + i32.shl + local.tee $24 + i32.add + i32.load16_u + local.tee $23 + local.get $23 + i32.mul + local.set $23 + local.get $24 + local.get $28 + i32.add + local.get $23 + i32.store16 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|013 + end + end + local.get $29 + local.get $28 + call $~lib/rt/pure/__retain + i32.store + local.get $29 + local.get $28 + i32.store offset=4 + local.get $29 + local.get $26 + i32.store offset=8 + local.get $29 + call $~lib/rt/pure/__retain + local.tee $1 + i32.const 0 + call $~lib/typedarray/Uint16Array#__get + i32.const 1 + i32.ne + br_if $folding-inner2 + local.get $1 + i32.const 1 + call $~lib/typedarray/Uint16Array#__get + i32.const 4 + i32.ne + br_if $folding-inner3 + local.get $1 + i32.const 2 + call $~lib/typedarray/Uint16Array#__get + i32.const 9 + i32.ne + br_if $folding-inner4 + local.get $0 + call $~lib/rt/pure/__release + local.get $1 + call $~lib/rt/pure/__release + i32.const 3 + call $~lib/typedarray/Int32Array#constructor + local.tee $0 + i32.const 0 + i32.const 1 + call $~lib/typedarray/Int32Array#__set + local.get $0 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Int32Array#__set + local.get $0 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Int32Array#__set + i32.const 0 + local.set $1 + local.get $0 + i32.load offset=8 + i32.const 2 + i32.shr_u + local.set $27 + local.get $0 + i32.load offset=4 + local.set $25 + i32.const 12 + i32.const 8 + call $~lib/rt/tlsf/__alloc + local.set $29 + local.get $27 + i32.const 2 + i32.shl + local.tee $26 + i32.const 0 + call $~lib/rt/tlsf/__alloc + local.set $28 + loop $for-loop|014 + local.get $1 + local.get $27 + i32.lt_s + if + i32.const 3 + global.set $~argumentsLength + local.get $25 + local.get $1 + i32.const 2 + i32.shl + local.tee $24 + i32.add + i32.load + local.tee $23 + local.get $23 + i32.mul + local.set $23 + local.get $24 + local.get $28 + i32.add + local.get $23 + i32.store + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|014 + end + end + local.get $29 + local.get $28 + call $~lib/rt/pure/__retain + i32.store + local.get $29 + local.get $28 + i32.store offset=4 + local.get $29 + local.get $26 + i32.store offset=8 + local.get $29 + call $~lib/rt/pure/__retain + local.tee $1 + i32.const 0 + call $~lib/typedarray/Int32Array#__get + i32.const 1 + i32.ne + br_if $folding-inner2 + local.get $1 + i32.const 1 + call $~lib/typedarray/Int32Array#__get + i32.const 4 + i32.ne + br_if $folding-inner3 + local.get $1 + i32.const 2 + call $~lib/typedarray/Int32Array#__get + i32.const 9 + i32.ne + br_if $folding-inner4 + local.get $0 + call $~lib/rt/pure/__release + local.get $1 + call $~lib/rt/pure/__release + i32.const 3 + call $~lib/typedarray/Uint32Array#constructor + local.tee $0 + i32.const 0 + i32.const 1 + call $~lib/typedarray/Uint32Array#__set + local.get $0 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Uint32Array#__set + local.get $0 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Uint32Array#__set + i32.const 0 + local.set $1 + local.get $0 + i32.load offset=8 + i32.const 2 + i32.shr_u + local.set $27 + local.get $0 + i32.load offset=4 + local.set $25 + i32.const 12 + i32.const 9 + call $~lib/rt/tlsf/__alloc + local.set $29 + local.get $27 + i32.const 2 + i32.shl + local.tee $26 + i32.const 0 + call $~lib/rt/tlsf/__alloc + local.set $28 + loop $for-loop|015 + local.get $1 + local.get $27 + i32.lt_s + if + i32.const 3 + global.set $~argumentsLength + local.get $25 + local.get $1 + i32.const 2 + i32.shl + local.tee $24 + i32.add + i32.load + local.tee $23 + local.get $23 + i32.mul + local.set $23 + local.get $24 + local.get $28 + i32.add + local.get $23 + i32.store + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|015 + end + end + local.get $29 + local.get $28 + call $~lib/rt/pure/__retain + i32.store + local.get $29 + local.get $28 + i32.store offset=4 + local.get $29 + local.get $26 + i32.store offset=8 + local.get $29 + call $~lib/rt/pure/__retain + local.tee $1 + i32.const 0 + call $~lib/typedarray/Uint32Array#__get + i32.const 1 + i32.ne + br_if $folding-inner2 + local.get $1 + i32.const 1 + call $~lib/typedarray/Uint32Array#__get + i32.const 4 + i32.ne + br_if $folding-inner3 + local.get $1 + i32.const 2 + call $~lib/typedarray/Uint32Array#__get + i32.const 9 + i32.ne + br_if $folding-inner4 + local.get $0 + call $~lib/rt/pure/__release + local.get $1 + call $~lib/rt/pure/__release + i32.const 3 + call $~lib/typedarray/Int64Array#constructor + local.tee $0 + i32.const 0 + i64.const 1 + call $~lib/typedarray/Int64Array#__set + local.get $0 + i32.const 1 + i64.const 2 + call $~lib/typedarray/Int64Array#__set + local.get $0 + i32.const 2 + i64.const 3 + call $~lib/typedarray/Int64Array#__set + i32.const 0 + local.set $1 + local.get $0 + i32.load offset=8 + i32.const 3 + i32.shr_u + local.set $27 + local.get $0 + i32.load offset=4 + local.set $25 + i32.const 12 + i32.const 10 + call $~lib/rt/tlsf/__alloc + local.set $29 + local.get $27 + i32.const 3 + i32.shl + local.tee $26 + i32.const 0 + call $~lib/rt/tlsf/__alloc + local.set $28 + loop $for-loop|016 + local.get $1 + local.get $27 + i32.lt_s + if + i32.const 3 + global.set $~argumentsLength + local.get $25 + local.get $1 + i32.const 3 + i32.shl + local.tee $24 + i32.add + i64.load + local.tee $20 + local.get $20 + i64.mul + local.set $20 + local.get $24 + local.get $28 + i32.add + local.get $20 + i64.store + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|016 + end + end + local.get $29 + local.get $28 + call $~lib/rt/pure/__retain + i32.store + local.get $29 + local.get $28 + i32.store offset=4 + local.get $29 + local.get $26 + i32.store offset=8 + local.get $29 + call $~lib/rt/pure/__retain + local.tee $1 + i32.const 0 + call $~lib/typedarray/Int64Array#__get + i64.const 1 + i64.ne + br_if $folding-inner2 + local.get $1 + i32.const 1 + call $~lib/typedarray/Int64Array#__get + i64.const 4 + i64.ne + br_if $folding-inner3 + local.get $1 + i32.const 2 + call $~lib/typedarray/Int64Array#__get + i64.const 9 + i64.ne + br_if $folding-inner4 + local.get $0 + call $~lib/rt/pure/__release + local.get $1 + call $~lib/rt/pure/__release + i32.const 3 + call $~lib/typedarray/Uint64Array#constructor + local.tee $0 + i32.const 0 + i64.const 1 + call $~lib/typedarray/Uint64Array#__set + local.get $0 + i32.const 1 + i64.const 2 + call $~lib/typedarray/Uint64Array#__set + local.get $0 + i32.const 2 + i64.const 3 + call $~lib/typedarray/Uint64Array#__set + i32.const 0 + local.set $1 + local.get $0 + i32.load offset=8 + i32.const 3 + i32.shr_u + local.set $27 + local.get $0 + i32.load offset=4 + local.set $25 + i32.const 12 + i32.const 11 + call $~lib/rt/tlsf/__alloc + local.set $29 + local.get $27 + i32.const 3 + i32.shl + local.tee $26 + i32.const 0 + call $~lib/rt/tlsf/__alloc + local.set $28 + loop $for-loop|017 + local.get $1 + local.get $27 + i32.lt_s + if + i32.const 3 + global.set $~argumentsLength + local.get $25 + local.get $1 + i32.const 3 + i32.shl + local.tee $24 + i32.add + i64.load + local.tee $20 + local.get $20 + i64.mul + local.set $20 + local.get $24 + local.get $28 + i32.add + local.get $20 + i64.store + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|017 + end + end + local.get $29 + local.get $28 + call $~lib/rt/pure/__retain + i32.store + local.get $29 + local.get $28 + i32.store offset=4 + local.get $29 + local.get $26 + i32.store offset=8 + local.get $29 + call $~lib/rt/pure/__retain + local.tee $1 + i32.const 0 + call $~lib/typedarray/Uint64Array#__get + i64.const 1 + i64.ne + br_if $folding-inner2 + local.get $1 + i32.const 1 + call $~lib/typedarray/Uint64Array#__get + i64.const 4 + i64.ne + br_if $folding-inner3 + local.get $1 + i32.const 2 + call $~lib/typedarray/Uint64Array#__get + i64.const 9 + i64.ne + br_if $folding-inner4 + local.get $0 + call $~lib/rt/pure/__release + local.get $1 + call $~lib/rt/pure/__release + i32.const 3 + call $~lib/typedarray/Float32Array#constructor + local.tee $0 + i32.const 0 + f32.const 1 + call $~lib/typedarray/Float32Array#__set + local.get $0 + i32.const 1 + f32.const 2 + call $~lib/typedarray/Float32Array#__set + local.get $0 + i32.const 2 + f32.const 3 + call $~lib/typedarray/Float32Array#__set + i32.const 0 + local.set $1 + local.get $0 + i32.load offset=8 + i32.const 2 + i32.shr_u + local.set $27 + local.get $0 + i32.load offset=4 + local.set $25 + i32.const 12 + i32.const 12 + call $~lib/rt/tlsf/__alloc + local.set $29 + local.get $27 + i32.const 2 + i32.shl + local.tee $26 + i32.const 0 + call $~lib/rt/tlsf/__alloc + local.set $28 + loop $for-loop|018 + local.get $1 + local.get $27 + i32.lt_s + if + i32.const 3 + global.set $~argumentsLength + local.get $25 + local.get $1 + i32.const 2 + i32.shl + local.tee $24 + i32.add + f32.load + local.tee $21 + local.get $21 + f32.mul + local.set $21 + local.get $24 + local.get $28 + i32.add + local.get $21 + f32.store + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|018 + end + end + local.get $29 + local.get $28 + call $~lib/rt/pure/__retain + i32.store + local.get $29 + local.get $28 + i32.store offset=4 + local.get $29 + local.get $26 + i32.store offset=8 + local.get $29 + call $~lib/rt/pure/__retain + local.tee $1 + i32.const 0 + call $~lib/typedarray/Float32Array#__get + f32.const 1 + f32.ne + br_if $folding-inner2 + local.get $1 + i32.const 1 + call $~lib/typedarray/Float32Array#__get + f32.const 4 + f32.ne + br_if $folding-inner3 + local.get $1 + i32.const 2 + call $~lib/typedarray/Float32Array#__get + f32.const 9 + f32.ne + br_if $folding-inner4 + local.get $0 + call $~lib/rt/pure/__release + local.get $1 + call $~lib/rt/pure/__release + i32.const 3 + call $~lib/typedarray/Float64Array#constructor + local.tee $0 + i32.const 0 + f64.const 1 + call $~lib/typedarray/Float64Array#__set + local.get $0 + i32.const 1 + f64.const 2 + call $~lib/typedarray/Float64Array#__set + local.get $0 + i32.const 2 + f64.const 3 + call $~lib/typedarray/Float64Array#__set + i32.const 0 + local.set $1 + local.get $0 + i32.load offset=8 + i32.const 3 + i32.shr_u + local.set $27 + local.get $0 + i32.load offset=4 + local.set $25 + i32.const 12 + i32.const 13 + call $~lib/rt/tlsf/__alloc + local.set $29 + local.get $27 + i32.const 3 + i32.shl + local.tee $26 + i32.const 0 + call $~lib/rt/tlsf/__alloc + local.set $28 + loop $for-loop|019 + local.get $1 + local.get $27 + i32.lt_s + if + i32.const 3 + global.set $~argumentsLength + local.get $25 + local.get $1 + i32.const 3 + i32.shl + local.tee $24 + i32.add + f64.load + local.tee $22 + local.get $22 + f64.mul + local.set $22 + local.get $24 + local.get $28 + i32.add + local.get $22 + f64.store + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|019 + end + end + local.get $29 + local.get $28 + call $~lib/rt/pure/__retain + i32.store + local.get $29 + local.get $28 + i32.store offset=4 + local.get $29 + local.get $26 + i32.store offset=8 + local.get $29 + call $~lib/rt/pure/__retain + local.tee $1 + i32.const 0 + call $~lib/typedarray/Float64Array#__get + f64.const 1 f64.ne - end - if + br_if $folding-inner2 + local.get $1 + i32.const 1 + call $~lib/typedarray/Float64Array#__get + f64.const 4 + f64.ne + br_if $folding-inner3 + local.get $1 + i32.const 2 + call $~lib/typedarray/Float64Array#__get + f64.const 9 + f64.ne + br_if $folding-inner4 + local.get $0 + call $~lib/rt/pure/__release + local.get $1 + call $~lib/rt/pure/__release + call $std/typedarray/testArrayFilter<~lib/typedarray/Int8Array,i8> + call $std/typedarray/testArrayFilter<~lib/typedarray/Uint8Array,u8> + call $std/typedarray/testArrayFilter<~lib/typedarray/Uint8ClampedArray,u8> + call $std/typedarray/testArrayFilter<~lib/typedarray/Int16Array,i16> + call $std/typedarray/testArrayFilter<~lib/typedarray/Uint16Array,u16> + call $std/typedarray/testArrayFilter<~lib/typedarray/Int32Array,i32> + call $std/typedarray/testArrayFilter<~lib/typedarray/Uint32Array,u32> + call $std/typedarray/testArrayFilter<~lib/typedarray/Int64Array,i64> + call $std/typedarray/testArrayFilter<~lib/typedarray/Uint64Array,u64> + call $std/typedarray/testArrayFilter<~lib/typedarray/Float32Array,f32> + call $std/typedarray/testArrayFilter<~lib/typedarray/Float64Array,f64> + i32.const 3 + call $~lib/typedarray/Int8Array#constructor + local.tee $1 + i32.const 0 + i32.const 2 + call $~lib/typedarray/Int8Array#__set + local.get $1 + i32.const 1 + i32.const 4 + call $~lib/typedarray/Int8Array#__set + local.get $1 + i32.const 2 + i32.const 6 + call $~lib/typedarray/Int8Array#__set + local.get $1 + i32.const 46 + call $~lib/typedarray/Int8Array#some + i32.eqz + br_if $folding-inner5 + local.get $1 + i32.const 47 + call $~lib/typedarray/Int8Array#some + br_if $folding-inner6 + local.get $1 + call $~lib/rt/pure/__release + i32.const 3 + call $~lib/typedarray/Uint8Array#constructor + local.tee $1 + i32.const 0 + i32.const 2 + call $~lib/typedarray/Uint8Array#__set + local.get $1 + i32.const 1 + i32.const 4 + call $~lib/typedarray/Uint8Array#__set + local.get $1 + i32.const 2 + i32.const 6 + call $~lib/typedarray/Uint8Array#__set + local.get $1 + i32.const 48 + call $~lib/typedarray/Uint8Array#some + i32.eqz + br_if $folding-inner5 + local.get $1 + i32.const 49 + call $~lib/typedarray/Uint8Array#some + br_if $folding-inner6 + local.get $1 + call $~lib/rt/pure/__release + i32.const 3 + call $~lib/typedarray/Uint8ClampedArray#constructor + local.tee $1 + i32.const 0 + i32.const 2 + call $~lib/typedarray/Uint8ClampedArray#__set + local.get $1 + i32.const 1 + i32.const 4 + call $~lib/typedarray/Uint8ClampedArray#__set + local.get $1 + i32.const 2 + i32.const 6 + call $~lib/typedarray/Uint8ClampedArray#__set + local.get $1 + i32.const 50 + call $~lib/typedarray/Uint8Array#some + i32.eqz + br_if $folding-inner5 + local.get $1 + i32.const 51 + call $~lib/typedarray/Uint8Array#some + br_if $folding-inner6 + local.get $1 + call $~lib/rt/pure/__release + i32.const 3 + call $~lib/typedarray/Int16Array#constructor + local.tee $1 + i32.const 0 + i32.const 2 + call $~lib/typedarray/Int16Array#__set + local.get $1 + i32.const 1 + i32.const 4 + call $~lib/typedarray/Int16Array#__set + local.get $1 + i32.const 2 + i32.const 6 + call $~lib/typedarray/Int16Array#__set + local.get $1 + i32.const 52 + call $~lib/typedarray/Int16Array#some + i32.eqz + br_if $folding-inner5 + local.get $1 + i32.const 53 + call $~lib/typedarray/Int16Array#some + br_if $folding-inner6 + local.get $1 + call $~lib/rt/pure/__release + i32.const 3 + call $~lib/typedarray/Uint16Array#constructor + local.tee $1 + i32.const 0 + i32.const 2 + call $~lib/typedarray/Uint16Array#__set + local.get $1 + i32.const 1 + i32.const 4 + call $~lib/typedarray/Uint16Array#__set + local.get $1 + i32.const 2 + i32.const 6 + call $~lib/typedarray/Uint16Array#__set + local.get $1 + i32.const 54 + call $~lib/typedarray/Uint16Array#some + i32.eqz + br_if $folding-inner5 + local.get $1 + i32.const 55 + call $~lib/typedarray/Uint16Array#some + br_if $folding-inner6 + local.get $1 + call $~lib/rt/pure/__release + i32.const 3 + call $~lib/typedarray/Int32Array#constructor + local.tee $1 + i32.const 0 + i32.const 2 + call $~lib/typedarray/Int32Array#__set + local.get $1 + i32.const 1 + i32.const 4 + call $~lib/typedarray/Int32Array#__set + local.get $1 + i32.const 2 + i32.const 6 + call $~lib/typedarray/Int32Array#__set + local.get $1 + i32.const 56 + call $~lib/typedarray/Int32Array#some + i32.eqz + br_if $folding-inner5 + local.get $1 + i32.const 57 + call $~lib/typedarray/Int32Array#some + br_if $folding-inner6 + local.get $1 + call $~lib/rt/pure/__release + i32.const 3 + call $~lib/typedarray/Uint32Array#constructor + local.tee $1 + i32.const 0 + i32.const 2 + call $~lib/typedarray/Uint32Array#__set + local.get $1 + i32.const 1 + i32.const 4 + call $~lib/typedarray/Uint32Array#__set + local.get $1 + i32.const 2 + i32.const 6 + call $~lib/typedarray/Uint32Array#__set + local.get $1 + i32.const 58 + call $~lib/typedarray/Int32Array#some + i32.eqz + br_if $folding-inner5 + local.get $1 + i32.const 59 + call $~lib/typedarray/Int32Array#some + br_if $folding-inner6 + local.get $1 + call $~lib/rt/pure/__release + i32.const 3 + call $~lib/typedarray/Int64Array#constructor + local.tee $1 + i32.const 0 + i64.const 2 + call $~lib/typedarray/Int64Array#__set + local.get $1 + i32.const 1 + i64.const 4 + call $~lib/typedarray/Int64Array#__set + local.get $1 + i32.const 2 + i64.const 6 + call $~lib/typedarray/Int64Array#__set + local.get $1 + i32.const 60 + call $~lib/typedarray/Int64Array#some + i32.eqz + br_if $folding-inner5 + local.get $1 + i32.const 61 + call $~lib/typedarray/Int64Array#some + br_if $folding-inner6 + local.get $1 + call $~lib/rt/pure/__release + i32.const 3 + call $~lib/typedarray/Uint64Array#constructor + local.tee $1 + i32.const 0 + i64.const 2 + call $~lib/typedarray/Uint64Array#__set + local.get $1 + i32.const 1 + i64.const 4 + call $~lib/typedarray/Uint64Array#__set + local.get $1 + i32.const 2 + i64.const 6 + call $~lib/typedarray/Uint64Array#__set + local.get $1 + i32.const 62 + call $~lib/typedarray/Int64Array#some + i32.eqz + br_if $folding-inner5 + local.get $1 + i32.const 63 + call $~lib/typedarray/Int64Array#some + br_if $folding-inner6 + local.get $1 + call $~lib/rt/pure/__release + i32.const 3 + call $~lib/typedarray/Float32Array#constructor + local.tee $1 + i32.const 0 + f32.const 2 + call $~lib/typedarray/Float32Array#__set + local.get $1 + i32.const 1 + f32.const 4 + call $~lib/typedarray/Float32Array#__set + local.get $1 + i32.const 2 + f32.const 6 + call $~lib/typedarray/Float32Array#__set + local.get $1 + i32.const 64 + call $~lib/typedarray/Float32Array#some + i32.eqz + br_if $folding-inner5 + local.get $1 + i32.const 65 + call $~lib/typedarray/Float32Array#some + br_if $folding-inner6 + local.get $1 + call $~lib/rt/pure/__release + i32.const 3 + call $~lib/typedarray/Float64Array#constructor + local.tee $1 + i32.const 0 + f64.const 2 + call $~lib/typedarray/Float64Array#__set + local.get $1 + i32.const 1 + f64.const 4 + call $~lib/typedarray/Float64Array#__set + local.get $1 + i32.const 2 + f64.const 6 + call $~lib/typedarray/Float64Array#__set + local.get $1 + i32.const 66 + call $~lib/typedarray/Float64Array#some + i32.eqz + br_if $folding-inner5 + local.get $1 + i32.const 67 + call $~lib/typedarray/Float64Array#some + br_if $folding-inner6 + local.get $1 + call $~lib/rt/pure/__release + i32.const 3 + call $~lib/typedarray/Int8Array#constructor + local.tee $1 + i32.const 0 + i32.const 1 + call $~lib/typedarray/Int8Array#__set + local.get $1 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Int8Array#__set + local.get $1 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Int8Array#__set + local.get $1 + i32.const 68 + call $~lib/typedarray/Int8Array#findIndex + i32.const 1 + i32.ne + br_if $folding-inner7 + local.get $1 + i32.const 69 + call $~lib/typedarray/Int8Array#findIndex + i32.const -1 + i32.ne + br_if $folding-inner8 + local.get $1 + call $~lib/rt/pure/__release + i32.const 3 + call $~lib/typedarray/Uint8Array#constructor + local.tee $1 + i32.const 0 + i32.const 1 + call $~lib/typedarray/Uint8Array#__set + local.get $1 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Uint8Array#__set + local.get $1 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Uint8Array#__set + local.get $1 + i32.const 70 + call $~lib/typedarray/Uint8Array#findIndex + i32.const 1 + i32.ne + br_if $folding-inner7 + local.get $1 + i32.const 71 + call $~lib/typedarray/Uint8Array#findIndex + i32.const -1 + i32.ne + br_if $folding-inner8 + local.get $1 + call $~lib/rt/pure/__release + i32.const 3 + call $~lib/typedarray/Uint8ClampedArray#constructor + local.tee $1 + i32.const 0 + i32.const 1 + call $~lib/typedarray/Uint8ClampedArray#__set + local.get $1 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Uint8ClampedArray#__set + local.get $1 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Uint8ClampedArray#__set + local.get $1 + i32.const 72 + call $~lib/typedarray/Uint8Array#findIndex + i32.const 1 + i32.ne + br_if $folding-inner7 + local.get $1 + i32.const 73 + call $~lib/typedarray/Uint8Array#findIndex + i32.const -1 + i32.ne + br_if $folding-inner8 + local.get $1 + call $~lib/rt/pure/__release + i32.const 3 + call $~lib/typedarray/Int16Array#constructor + local.tee $1 + i32.const 0 + i32.const 1 + call $~lib/typedarray/Int16Array#__set + local.get $1 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Int16Array#__set + local.get $1 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Int16Array#__set + local.get $1 + i32.const 74 + call $~lib/typedarray/Int16Array#findIndex + i32.const 1 + i32.ne + br_if $folding-inner7 + local.get $1 + i32.const 75 + call $~lib/typedarray/Int16Array#findIndex + i32.const -1 + i32.ne + br_if $folding-inner8 + local.get $1 + call $~lib/rt/pure/__release + i32.const 3 + call $~lib/typedarray/Uint16Array#constructor + local.tee $1 + i32.const 0 + i32.const 1 + call $~lib/typedarray/Uint16Array#__set + local.get $1 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Uint16Array#__set + local.get $1 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Uint16Array#__set + local.get $1 + i32.const 76 + call $~lib/typedarray/Uint16Array#findIndex + i32.const 1 + i32.ne + br_if $folding-inner7 + local.get $1 + i32.const 77 + call $~lib/typedarray/Uint16Array#findIndex + i32.const -1 + i32.ne + br_if $folding-inner8 + local.get $1 + call $~lib/rt/pure/__release + i32.const 3 + call $~lib/typedarray/Int32Array#constructor + local.tee $1 + i32.const 0 + i32.const 1 + call $~lib/typedarray/Int32Array#__set + local.get $1 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Int32Array#__set + local.get $1 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Int32Array#__set + local.get $1 + i32.const 78 + call $~lib/typedarray/Int32Array#findIndex + i32.const 1 + i32.ne + br_if $folding-inner7 + local.get $1 + i32.const 79 + call $~lib/typedarray/Int32Array#findIndex + i32.const -1 + i32.ne + br_if $folding-inner8 + local.get $1 + call $~lib/rt/pure/__release + i32.const 3 + call $~lib/typedarray/Uint32Array#constructor + local.tee $1 + i32.const 0 + i32.const 1 + call $~lib/typedarray/Uint32Array#__set + local.get $1 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Uint32Array#__set + local.get $1 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Uint32Array#__set + local.get $1 + i32.const 80 + call $~lib/typedarray/Int32Array#findIndex + i32.const 1 + i32.ne + br_if $folding-inner7 + local.get $1 + i32.const 81 + call $~lib/typedarray/Int32Array#findIndex + i32.const -1 + i32.ne + br_if $folding-inner8 + local.get $1 + call $~lib/rt/pure/__release + i32.const 3 + call $~lib/typedarray/Int64Array#constructor + local.tee $1 + i32.const 0 + i64.const 1 + call $~lib/typedarray/Int64Array#__set + local.get $1 + i32.const 1 + i64.const 2 + call $~lib/typedarray/Int64Array#__set + local.get $1 + i32.const 2 + i64.const 3 + call $~lib/typedarray/Int64Array#__set + local.get $1 + i32.const 82 + call $~lib/typedarray/Int64Array#findIndex + i32.const 1 + i32.ne + br_if $folding-inner7 + local.get $1 + i32.const 83 + call $~lib/typedarray/Int64Array#findIndex + i32.const -1 + i32.ne + br_if $folding-inner8 + local.get $1 + call $~lib/rt/pure/__release + i32.const 3 + call $~lib/typedarray/Uint64Array#constructor + local.tee $1 + i32.const 0 + i64.const 1 + call $~lib/typedarray/Uint64Array#__set + local.get $1 + i32.const 1 + i64.const 2 + call $~lib/typedarray/Uint64Array#__set + local.get $1 + i32.const 2 + i64.const 3 + call $~lib/typedarray/Uint64Array#__set + local.get $1 + i32.const 84 + call $~lib/typedarray/Int64Array#findIndex + i32.const 1 + i32.ne + br_if $folding-inner7 + local.get $1 + i32.const 85 + call $~lib/typedarray/Int64Array#findIndex + i32.const -1 + i32.ne + br_if $folding-inner8 + local.get $1 + call $~lib/rt/pure/__release + i32.const 3 + call $~lib/typedarray/Float32Array#constructor + local.tee $1 + i32.const 0 + f32.const 1 + call $~lib/typedarray/Float32Array#__set + local.get $1 + i32.const 1 + f32.const 2 + call $~lib/typedarray/Float32Array#__set + local.get $1 + i32.const 2 + f32.const 3 + call $~lib/typedarray/Float32Array#__set + local.get $1 + i32.const 86 + call $~lib/typedarray/Float32Array#findIndex + i32.const 1 + i32.ne + br_if $folding-inner7 + local.get $1 + i32.const 87 + call $~lib/typedarray/Float32Array#findIndex + i32.const -1 + i32.ne + br_if $folding-inner8 + local.get $1 + call $~lib/rt/pure/__release + i32.const 3 + call $~lib/typedarray/Float64Array#constructor + local.tee $1 + i32.const 0 + f64.const 1 + call $~lib/typedarray/Float64Array#__set + local.get $1 + i32.const 1 + f64.const 2 + call $~lib/typedarray/Float64Array#__set + local.get $1 + i32.const 2 + f64.const 3 + call $~lib/typedarray/Float64Array#__set + local.get $1 + i32.const 88 + call $~lib/typedarray/Float64Array#findIndex + i32.const 1 + i32.ne + br_if $folding-inner7 + local.get $1 + i32.const 89 + call $~lib/typedarray/Float64Array#findIndex + i32.const -1 + i32.ne + br_if $folding-inner8 + local.get $1 + call $~lib/rt/pure/__release + i32.const 3 + call $~lib/typedarray/Int8Array#constructor + local.tee $1 + i32.const 0 + i32.const 2 + call $~lib/typedarray/Int8Array#__set + local.get $1 + i32.const 1 + i32.const 4 + call $~lib/typedarray/Int8Array#__set + local.get $1 + i32.const 2 + i32.const 6 + call $~lib/typedarray/Int8Array#__set + local.get $1 + i32.const 90 + call $~lib/typedarray/Int8Array#every + i32.eqz + br_if $folding-inner9 + local.get $1 + i32.const 91 + call $~lib/typedarray/Int8Array#every + br_if $folding-inner10 + local.get $1 + call $~lib/rt/pure/__release + i32.const 3 + call $~lib/typedarray/Uint8Array#constructor + local.tee $1 + i32.const 0 + i32.const 2 + call $~lib/typedarray/Uint8Array#__set + local.get $1 + i32.const 1 + i32.const 4 + call $~lib/typedarray/Uint8Array#__set + local.get $1 + i32.const 2 + i32.const 6 + call $~lib/typedarray/Uint8Array#__set + local.get $1 + i32.const 92 + call $~lib/typedarray/Uint8Array#every + i32.eqz + br_if $folding-inner9 + local.get $1 + i32.const 93 + call $~lib/typedarray/Uint8Array#every + br_if $folding-inner10 + local.get $1 + call $~lib/rt/pure/__release + i32.const 3 + call $~lib/typedarray/Uint8ClampedArray#constructor + local.tee $1 + i32.const 0 + i32.const 2 + call $~lib/typedarray/Uint8ClampedArray#__set + local.get $1 + i32.const 1 + i32.const 4 + call $~lib/typedarray/Uint8ClampedArray#__set + local.get $1 + i32.const 2 + i32.const 6 + call $~lib/typedarray/Uint8ClampedArray#__set + local.get $1 + i32.const 94 + call $~lib/typedarray/Uint8Array#every + i32.eqz + br_if $folding-inner9 + local.get $1 + i32.const 95 + call $~lib/typedarray/Uint8Array#every + br_if $folding-inner10 + local.get $1 + call $~lib/rt/pure/__release + i32.const 3 + call $~lib/typedarray/Int16Array#constructor + local.tee $1 + i32.const 0 + i32.const 2 + call $~lib/typedarray/Int16Array#__set + local.get $1 + i32.const 1 + i32.const 4 + call $~lib/typedarray/Int16Array#__set + local.get $1 + i32.const 2 + i32.const 6 + call $~lib/typedarray/Int16Array#__set + local.get $1 + i32.const 96 + call $~lib/typedarray/Int16Array#every + i32.eqz + br_if $folding-inner9 + local.get $1 + i32.const 97 + call $~lib/typedarray/Int16Array#every + br_if $folding-inner10 + local.get $1 + call $~lib/rt/pure/__release + i32.const 3 + call $~lib/typedarray/Uint16Array#constructor + local.tee $1 + i32.const 0 + i32.const 2 + call $~lib/typedarray/Uint16Array#__set + local.get $1 + i32.const 1 + i32.const 4 + call $~lib/typedarray/Uint16Array#__set + local.get $1 + i32.const 2 + i32.const 6 + call $~lib/typedarray/Uint16Array#__set + local.get $1 + i32.const 98 + call $~lib/typedarray/Uint16Array#every + i32.eqz + br_if $folding-inner9 + local.get $1 + i32.const 99 + call $~lib/typedarray/Uint16Array#every + br_if $folding-inner10 + local.get $1 + call $~lib/rt/pure/__release + i32.const 3 + call $~lib/typedarray/Int32Array#constructor + local.tee $1 + i32.const 0 + i32.const 2 + call $~lib/typedarray/Int32Array#__set + local.get $1 + i32.const 1 + i32.const 4 + call $~lib/typedarray/Int32Array#__set + local.get $1 + i32.const 2 + i32.const 6 + call $~lib/typedarray/Int32Array#__set + local.get $1 + i32.const 100 + call $~lib/typedarray/Int32Array#every + i32.eqz + br_if $folding-inner9 + local.get $1 + i32.const 101 + call $~lib/typedarray/Int32Array#every + br_if $folding-inner10 + local.get $1 + call $~lib/rt/pure/__release + i32.const 3 + call $~lib/typedarray/Uint32Array#constructor + local.tee $1 + i32.const 0 + i32.const 2 + call $~lib/typedarray/Uint32Array#__set + local.get $1 + i32.const 1 + i32.const 4 + call $~lib/typedarray/Uint32Array#__set + local.get $1 + i32.const 2 + i32.const 6 + call $~lib/typedarray/Uint32Array#__set + local.get $1 + i32.const 102 + call $~lib/typedarray/Int32Array#every + i32.eqz + br_if $folding-inner9 + local.get $1 + i32.const 103 + call $~lib/typedarray/Int32Array#every + br_if $folding-inner10 + local.get $1 + call $~lib/rt/pure/__release + i32.const 3 + call $~lib/typedarray/Int64Array#constructor + local.tee $1 + i32.const 0 + i64.const 2 + call $~lib/typedarray/Int64Array#__set + local.get $1 + i32.const 1 + i64.const 4 + call $~lib/typedarray/Int64Array#__set + local.get $1 + i32.const 2 + i64.const 6 + call $~lib/typedarray/Int64Array#__set + local.get $1 + i32.const 104 + call $~lib/typedarray/Int64Array#every + i32.eqz + br_if $folding-inner9 + local.get $1 + i32.const 105 + call $~lib/typedarray/Int64Array#every + br_if $folding-inner10 + local.get $1 + call $~lib/rt/pure/__release + i32.const 3 + call $~lib/typedarray/Uint64Array#constructor + local.tee $1 + i32.const 0 + i64.const 2 + call $~lib/typedarray/Uint64Array#__set + local.get $1 + i32.const 1 + i64.const 4 + call $~lib/typedarray/Uint64Array#__set + local.get $1 + i32.const 2 + i64.const 6 + call $~lib/typedarray/Uint64Array#__set + local.get $1 + i32.const 106 + call $~lib/typedarray/Int64Array#every + i32.eqz + br_if $folding-inner9 + local.get $1 + i32.const 107 + call $~lib/typedarray/Int64Array#every + br_if $folding-inner10 + local.get $1 + call $~lib/rt/pure/__release + i32.const 3 + call $~lib/typedarray/Float32Array#constructor + local.tee $1 + i32.const 0 + f32.const 2 + call $~lib/typedarray/Float32Array#__set + local.get $1 + i32.const 1 + f32.const 4 + call $~lib/typedarray/Float32Array#__set + local.get $1 + i32.const 2 + f32.const 6 + call $~lib/typedarray/Float32Array#__set + local.get $1 + i32.const 108 + call $~lib/typedarray/Float32Array#every + i32.eqz + br_if $folding-inner9 + local.get $1 + i32.const 109 + call $~lib/typedarray/Float32Array#every + br_if $folding-inner10 + local.get $1 + call $~lib/rt/pure/__release + i32.const 3 + call $~lib/typedarray/Float64Array#constructor + local.tee $1 + i32.const 0 + f64.const 2 + call $~lib/typedarray/Float64Array#__set + local.get $1 + i32.const 1 + f64.const 4 + call $~lib/typedarray/Float64Array#__set + local.get $1 + i32.const 2 + f64.const 6 + call $~lib/typedarray/Float64Array#__set + local.get $1 + i32.const 110 + call $~lib/typedarray/Float64Array#every + i32.eqz + br_if $folding-inner9 + local.get $1 + i32.const 111 + call $~lib/typedarray/Float64Array#every + br_if $folding-inner10 + local.get $1 + call $~lib/rt/pure/__release + i32.const 0 + global.set $std/typedarray/forEachCallCount + i32.const 3 + call $~lib/typedarray/Int8Array#constructor + local.tee $0 + global.set $std/typedarray/forEachSelf + local.get $0 + i32.const 0 + i32.const 2704 + i32.const 0 + call $~lib/array/Array#__get + i32.const 24 + i32.shl + i32.const 24 + i32.shr_s + call $~lib/typedarray/Int8Array#__set + local.get $0 + i32.const 1 + i32.const 2704 + i32.const 1 + call $~lib/array/Array#__get + i32.const 24 + i32.shl + i32.const 24 + i32.shr_s + call $~lib/typedarray/Int8Array#__set + local.get $0 + i32.const 2 + i32.const 2704 + i32.const 2 + call $~lib/array/Array#__get + i32.const 24 + i32.shl + i32.const 24 + i32.shr_s + call $~lib/typedarray/Int8Array#__set + i32.const 0 + local.set $1 + local.get $0 + i32.load offset=4 + local.set $29 + local.get $0 + i32.load offset=8 + local.set $28 + loop $for-loop|020 + local.get $1 + local.get $28 + i32.lt_s + if + i32.const 3 + global.set $~argumentsLength + local.get $1 + local.get $29 + i32.add + i32.load8_s + local.get $1 + local.get $0 + call $std/typedarray/testArrayForEach<~lib/typedarray/Int8Array,i8>~anonymous|0 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|020 + end + end + global.get $std/typedarray/forEachCallCount + i32.const 3 + i32.ne + br_if $folding-inner11 + local.get $0 + call $~lib/rt/pure/__release + i32.const 0 + global.set $std/typedarray/forEachCallCount + i32.const 3 + call $~lib/typedarray/Uint8Array#constructor + local.tee $1 + global.set $std/typedarray/forEachSelf + local.get $1 + i32.const 0 + i32.const 2704 + i32.const 0 + call $~lib/array/Array#__get + i32.const 255 + i32.and + call $~lib/typedarray/Uint8Array#__set + local.get $1 + i32.const 1 + i32.const 2704 + i32.const 1 + call $~lib/array/Array#__get + i32.const 255 + i32.and + call $~lib/typedarray/Uint8Array#__set + local.get $1 + i32.const 2 + i32.const 2704 + i32.const 2 + call $~lib/array/Array#__get + i32.const 255 + i32.and + call $~lib/typedarray/Uint8Array#__set + local.get $1 + i32.const 113 + call $~lib/typedarray/Uint8Array#forEach + global.get $std/typedarray/forEachCallCount + i32.const 3 + i32.ne + br_if $folding-inner11 + local.get $1 + call $~lib/rt/pure/__release + i32.const 0 + global.set $std/typedarray/forEachCallCount + i32.const 3 + call $~lib/typedarray/Uint8ClampedArray#constructor + local.tee $1 + global.set $std/typedarray/forEachSelf + local.get $1 + i32.const 0 + i32.const 2704 + i32.const 0 + call $~lib/array/Array#__get + i32.const 255 + i32.and + call $~lib/typedarray/Uint8ClampedArray#__set + local.get $1 + i32.const 1 + i32.const 2704 + i32.const 1 + call $~lib/array/Array#__get + i32.const 255 + i32.and + call $~lib/typedarray/Uint8ClampedArray#__set + local.get $1 + i32.const 2 + i32.const 2704 + i32.const 2 + call $~lib/array/Array#__get + i32.const 255 + i32.and + call $~lib/typedarray/Uint8ClampedArray#__set + local.get $1 + i32.const 114 + call $~lib/typedarray/Uint8Array#forEach + global.get $std/typedarray/forEachCallCount + i32.const 3 + i32.ne + br_if $folding-inner11 + local.get $1 + call $~lib/rt/pure/__release + i32.const 0 + global.set $std/typedarray/forEachCallCount + i32.const 3 + call $~lib/typedarray/Int16Array#constructor + local.tee $0 + global.set $std/typedarray/forEachSelf + local.get $0 + i32.const 0 + i32.const 2704 + i32.const 0 + call $~lib/array/Array#__get + i32.const 16 + i32.shl + i32.const 16 + i32.shr_s + call $~lib/typedarray/Int16Array#__set + local.get $0 + i32.const 1 + i32.const 2704 + i32.const 1 + call $~lib/array/Array#__get + i32.const 16 + i32.shl + i32.const 16 + i32.shr_s + call $~lib/typedarray/Int16Array#__set + local.get $0 + i32.const 2 + i32.const 2704 + i32.const 2 + call $~lib/array/Array#__get + i32.const 16 + i32.shl + i32.const 16 + i32.shr_s + call $~lib/typedarray/Int16Array#__set + i32.const 0 + local.set $1 + local.get $0 + i32.load offset=4 + local.set $29 + local.get $0 + i32.load offset=8 + i32.const 1 + i32.shr_u + local.set $28 + loop $for-loop|021 + local.get $1 + local.get $28 + i32.lt_s + if + i32.const 3 + global.set $~argumentsLength + local.get $29 + local.get $1 + i32.const 1 + i32.shl + i32.add + i32.load16_s + local.get $1 + local.get $0 + call $std/typedarray/testArrayForEach<~lib/typedarray/Int16Array,i16>~anonymous|0 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|021 + end + end + global.get $std/typedarray/forEachCallCount + i32.const 3 + i32.ne + br_if $folding-inner11 + local.get $0 + call $~lib/rt/pure/__release + i32.const 0 + global.set $std/typedarray/forEachCallCount + i32.const 3 + call $~lib/typedarray/Uint16Array#constructor + local.tee $0 + global.set $std/typedarray/forEachSelf + local.get $0 + i32.const 0 + i32.const 2704 + i32.const 0 + call $~lib/array/Array#__get + i32.const 65535 + i32.and + call $~lib/typedarray/Uint16Array#__set + local.get $0 + i32.const 1 + i32.const 2704 + i32.const 1 + call $~lib/array/Array#__get + i32.const 65535 + i32.and + call $~lib/typedarray/Uint16Array#__set + local.get $0 + i32.const 2 + i32.const 2704 + i32.const 2 + call $~lib/array/Array#__get + i32.const 65535 + i32.and + call $~lib/typedarray/Uint16Array#__set + i32.const 0 + local.set $1 + local.get $0 + i32.load offset=4 + local.set $29 + local.get $0 + i32.load offset=8 + i32.const 1 + i32.shr_u + local.set $28 + loop $for-loop|022 + local.get $1 + local.get $28 + i32.lt_s + if + i32.const 3 + global.set $~argumentsLength + local.get $29 + local.get $1 + i32.const 1 + i32.shl + i32.add + i32.load16_u + local.get $1 + local.get $0 + call $std/typedarray/testArrayForEach<~lib/typedarray/Int16Array,i16>~anonymous|0 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|022 + end + end + global.get $std/typedarray/forEachCallCount + i32.const 3 + i32.ne + br_if $folding-inner11 + local.get $0 + call $~lib/rt/pure/__release + i32.const 0 + global.set $std/typedarray/forEachCallCount + i32.const 3 + call $~lib/typedarray/Int32Array#constructor + local.tee $1 + global.set $std/typedarray/forEachSelf + local.get $1 + i32.const 0 + i32.const 2704 + i32.const 0 + call $~lib/array/Array#__get + call $~lib/typedarray/Int32Array#__set + local.get $1 + i32.const 1 + i32.const 2704 + i32.const 1 + call $~lib/array/Array#__get + call $~lib/typedarray/Int32Array#__set + local.get $1 + i32.const 2 + i32.const 2704 + i32.const 2 + call $~lib/array/Array#__get + call $~lib/typedarray/Int32Array#__set + local.get $1 + i32.const 117 + call $~lib/typedarray/Int32Array#forEach + global.get $std/typedarray/forEachCallCount + i32.const 3 + i32.ne + br_if $folding-inner11 + local.get $1 + call $~lib/rt/pure/__release + i32.const 0 + global.set $std/typedarray/forEachCallCount + i32.const 3 + call $~lib/typedarray/Uint32Array#constructor + local.tee $1 + global.set $std/typedarray/forEachSelf + local.get $1 + i32.const 0 + i32.const 2704 + i32.const 0 + call $~lib/array/Array#__get + call $~lib/typedarray/Uint32Array#__set + local.get $1 + i32.const 1 + i32.const 2704 + i32.const 1 + call $~lib/array/Array#__get + call $~lib/typedarray/Uint32Array#__set + local.get $1 + i32.const 2 + i32.const 2704 + i32.const 2 + call $~lib/array/Array#__get + call $~lib/typedarray/Uint32Array#__set + local.get $1 + i32.const 118 + call $~lib/typedarray/Int32Array#forEach + global.get $std/typedarray/forEachCallCount + i32.const 3 + i32.ne + br_if $folding-inner11 + local.get $1 + call $~lib/rt/pure/__release + i32.const 0 + global.set $std/typedarray/forEachCallCount + i32.const 3 + call $~lib/typedarray/Int64Array#constructor + local.tee $1 + global.set $std/typedarray/forEachSelf + local.get $1 + i32.const 0 + i32.const 2704 + i32.const 0 + call $~lib/array/Array#__get + i64.extend_i32_s + call $~lib/typedarray/Int64Array#__set + local.get $1 + i32.const 1 + i32.const 2704 + i32.const 1 + call $~lib/array/Array#__get + i64.extend_i32_s + call $~lib/typedarray/Int64Array#__set + local.get $1 + i32.const 2 + i32.const 2704 + i32.const 2 + call $~lib/array/Array#__get + i64.extend_i32_s + call $~lib/typedarray/Int64Array#__set + local.get $1 + i32.const 119 + call $~lib/typedarray/Int64Array#forEach + global.get $std/typedarray/forEachCallCount + i32.const 3 + i32.ne + br_if $folding-inner11 + local.get $1 + call $~lib/rt/pure/__release + i32.const 0 + global.set $std/typedarray/forEachCallCount + i32.const 3 + call $~lib/typedarray/Uint64Array#constructor + local.tee $1 + global.set $std/typedarray/forEachSelf + local.get $1 + i32.const 0 + i32.const 2704 + i32.const 0 + call $~lib/array/Array#__get + i64.extend_i32_s + call $~lib/typedarray/Uint64Array#__set + local.get $1 + i32.const 1 + i32.const 2704 + i32.const 1 + call $~lib/array/Array#__get + i64.extend_i32_s + call $~lib/typedarray/Uint64Array#__set + local.get $1 + i32.const 2 + i32.const 2704 + i32.const 2 + call $~lib/array/Array#__get + i64.extend_i32_s + call $~lib/typedarray/Uint64Array#__set + local.get $1 + i32.const 120 + call $~lib/typedarray/Int64Array#forEach + global.get $std/typedarray/forEachCallCount + i32.const 3 + i32.ne + br_if $folding-inner11 + local.get $1 + call $~lib/rt/pure/__release + i32.const 0 + global.set $std/typedarray/forEachCallCount + i32.const 3 + call $~lib/typedarray/Float32Array#constructor + local.tee $0 + global.set $std/typedarray/forEachSelf + local.get $0 + i32.const 0 + i32.const 2704 + i32.const 0 + call $~lib/array/Array#__get + f32.convert_i32_s + call $~lib/typedarray/Float32Array#__set + local.get $0 + i32.const 1 + i32.const 2704 i32.const 1 + call $~lib/array/Array#__get + f32.convert_i32_s + call $~lib/typedarray/Float32Array#__set + local.get $0 + i32.const 2 + i32.const 2704 + i32.const 2 + call $~lib/array/Array#__get + f32.convert_i32_s + call $~lib/typedarray/Float32Array#__set + i32.const 0 + local.set $1 + local.get $0 + i32.load offset=4 + local.set $29 + local.get $0 + i32.load offset=8 + i32.const 2 + i32.shr_u + local.set $28 + loop $for-loop|023 + local.get $1 + local.get $28 + i32.lt_s + if + i32.const 3 + global.set $~argumentsLength + local.get $29 + local.get $1 + i32.const 2 + i32.shl + i32.add + f32.load + local.get $1 + local.get $0 + call $std/typedarray/testArrayForEach<~lib/typedarray/Float32Array,f32>~anonymous|0 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|023 + end + end + global.get $std/typedarray/forEachCallCount + i32.const 3 + i32.ne + br_if $folding-inner11 + local.get $0 + call $~lib/rt/pure/__release + i32.const 0 + global.set $std/typedarray/forEachCallCount + i32.const 3 + call $~lib/typedarray/Float64Array#constructor + local.tee $0 + global.set $std/typedarray/forEachSelf + local.get $0 + i32.const 0 + i32.const 2704 + i32.const 0 + call $~lib/array/Array#__get + f64.convert_i32_s + call $~lib/typedarray/Float64Array#__set + local.get $0 + i32.const 1 + i32.const 2704 + i32.const 1 + call $~lib/array/Array#__get + f64.convert_i32_s + call $~lib/typedarray/Float64Array#__set + local.get $0 + i32.const 2 + i32.const 2704 + i32.const 2 + call $~lib/array/Array#__get + f64.convert_i32_s + call $~lib/typedarray/Float64Array#__set + i32.const 0 + local.set $1 + local.get $0 + i32.load offset=4 + local.set $29 + local.get $0 + i32.load offset=8 + i32.const 3 + i32.shr_u + local.set $28 + loop $for-loop|024 + local.get $1 + local.get $28 + i32.lt_s + if + i32.const 3 + global.set $~argumentsLength + local.get $29 + local.get $1 + i32.const 3 + i32.shl + i32.add + f64.load + local.get $1 + local.get $0 + call $std/typedarray/testArrayForEach<~lib/typedarray/Float64Array,f64>~anonymous|0 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|024 + end + end + global.get $std/typedarray/forEachCallCount + i32.const 3 + i32.ne + br_if $folding-inner11 + local.get $0 + call $~lib/rt/pure/__release + call $std/typedarray/testArrayReverse<~lib/typedarray/Int8Array,i8> + call $std/typedarray/testArrayReverse<~lib/typedarray/Uint8Array,u8> + call $std/typedarray/testArrayReverse<~lib/typedarray/Uint8ClampedArray,u8> + call $std/typedarray/testArrayReverse<~lib/typedarray/Int16Array,i16> + call $std/typedarray/testArrayReverse<~lib/typedarray/Uint16Array,u16> + call $std/typedarray/testArrayReverse<~lib/typedarray/Int32Array,i32> + call $std/typedarray/testArrayReverse<~lib/typedarray/Uint32Array,u32> + call $std/typedarray/testArrayReverse<~lib/typedarray/Int64Array,i64> + call $std/typedarray/testArrayReverse<~lib/typedarray/Uint64Array,u64> + call $std/typedarray/testArrayReverse<~lib/typedarray/Float32Array,f32> + call $std/typedarray/testArrayReverse<~lib/typedarray/Float64Array,f64> + call $std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Int8Array,i8> + call $std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Uint8Array,u8> + call $std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Uint8ClampedArray,u8> + call $std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Int16Array,i16> + call $std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Uint16Array,u16> + call $std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Int32Array,i32> + call $std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Uint32Array,u32> + call $std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Int64Array,i64> + call $std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Uint64Array,u64> + call $std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Float32Array,f32> + call $std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Float64Array,f64> + i32.const 1 + call $~lib/typedarray/Float64Array#constructor + local.tee $29 + i32.const 0 + f64.const nan:0x8000000000000 + call $~lib/typedarray/Float64Array#__set + local.get $29 + f64.const nan:0x8000000000000 + i32.const 0 + call $~lib/typedarray/Float64Array#indexOf + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1312 + i32.const 607 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + local.set $1 + i32.const 0 local.set $0 - br $~lib/typedarray/INCLUDES<~lib/typedarray/Float64Array,f64>|inlined.0 - end - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $while-continue|0 - end - end - end - local.get $0 - i32.const 0 - i32.ne - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 608 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - call $~lib/typedarray/Float32Array#constructor - local.tee $0 - i32.const 0 - f32.const nan:0x400000 - call $~lib/typedarray/Float32Array#__set - local.get $0 - f32.const nan:0x400000 - i32.const 0 - call $~lib/typedarray/Float32Array#indexOf - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 613 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - local.set $28 - i32.const 0 - local.set $1 - block $~lib/typedarray/INCLUDES<~lib/typedarray/Float32Array,f32>|inlined.0 - local.get $0 - i32.load offset=8 - i32.const 2 - i32.shr_u - local.tee $27 - if (result i32) - i32.const 0 - local.get $27 - i32.ge_s - else - i32.const 1 - end - br_if $~lib/typedarray/INCLUDES<~lib/typedarray/Float32Array,f32>|inlined.0 - local.get $0 - i32.load offset=4 - local.set $26 - loop $while-continue|025 - local.get $28 - local.get $27 - i32.lt_s - if - local.get $26 - local.get $28 - i32.const 2 - i32.shl - i32.add - f32.load - local.tee $21 - f32.const nan:0x400000 - f32.eq - if (result i32) + block $~lib/typedarray/INCLUDES<~lib/typedarray/Float64Array,f64>|inlined.0 + local.get $29 + i32.load offset=8 + i32.const 3 + i32.shr_u + local.tee $28 + if (result i32) + i32.const 0 + local.get $28 + i32.ge_s + else + i32.const 1 + end + br_if $~lib/typedarray/INCLUDES<~lib/typedarray/Float64Array,f64>|inlined.0 + local.get $29 + i32.load offset=4 + local.set $25 + loop $while-continue|0 + local.get $1 + local.get $28 + i32.lt_s + if + local.get $25 + local.get $1 + i32.const 3 + i32.shl + i32.add + f64.load + local.tee $22 + f64.const nan:0x8000000000000 + f64.eq + if (result i32) + i32.const 1 + else + local.get $22 + local.get $22 + f64.ne + end + if + i32.const 1 + local.set $0 + br $~lib/typedarray/INCLUDES<~lib/typedarray/Float64Array,f64>|inlined.0 + end + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $while-continue|0 + end + end + end + local.get $0 + i32.const 0 + i32.ne i32.const 1 - else - local.get $21 - local.get $21 - f32.ne - end - if + i32.ne + if + i32.const 0 + i32.const 1312 + i32.const 608 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + call $~lib/typedarray/Float32Array#constructor + local.tee $0 + i32.const 0 + f32.const nan:0x400000 + call $~lib/typedarray/Float32Array#__set + local.get $0 + f32.const nan:0x400000 + i32.const 0 + call $~lib/typedarray/Float32Array#indexOf + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1312 + i32.const 613 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + local.set $28 + i32.const 0 + local.set $1 + block $~lib/typedarray/INCLUDES<~lib/typedarray/Float32Array,f32>|inlined.0 + local.get $0 + i32.load offset=8 + i32.const 2 + i32.shr_u + local.tee $27 + if (result i32) + i32.const 0 + local.get $27 + i32.ge_s + else + i32.const 1 + end + br_if $~lib/typedarray/INCLUDES<~lib/typedarray/Float32Array,f32>|inlined.0 + local.get $0 + i32.load offset=4 + local.set $26 + loop $while-continue|025 + local.get $28 + local.get $27 + i32.lt_s + if + local.get $26 + local.get $28 + i32.const 2 + i32.shl + i32.add + f32.load + local.tee $21 + f32.const nan:0x400000 + f32.eq + if (result i32) + i32.const 1 + else + local.get $21 + local.get $21 + f32.ne + end + if + i32.const 1 + local.set $1 + br $~lib/typedarray/INCLUDES<~lib/typedarray/Float32Array,f32>|inlined.0 + end + local.get $28 + i32.const 1 + i32.add + local.set $28 + br $while-continue|025 + end + end + end + local.get $1 + i32.const 0 + i32.ne + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1312 + i32.const 614 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $29 + call $~lib/rt/pure/__release + local.get $0 + call $~lib/rt/pure/__release + i32.const 5 + call $~lib/typedarray/Int8Array#constructor + local.tee $1 + i32.const 0 + i32.const 1 + call $~lib/typedarray/Int8Array#__set + local.get $1 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Int8Array#__set + local.get $1 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Int8Array#__set + local.get $1 + i32.const 3 + i32.const 4 + call $~lib/typedarray/Int8Array#__set + local.get $1 + i32.const 4 + i32.const 5 + call $~lib/typedarray/Int8Array#__set + local.get $1 + call $~lib/typedarray/Int8Array#join + local.tee $0 + i32.const 3008 + call $~lib/string/String#_eq + i32.eqz + br_if $folding-inner12 + local.get $1 + call $~lib/typedarray/Int8Array#join + local.tee $29 + i32.const 3008 + call $~lib/string/String#_eq + i32.eqz + br_if $folding-inner13 + local.get $0 + call $~lib/rt/pure/__release + local.get $29 + call $~lib/rt/pure/__release + local.get $1 + call $~lib/rt/pure/__release + i32.const 5 + call $~lib/typedarray/Uint8Array#constructor + local.tee $1 + i32.const 0 + i32.const 1 + call $~lib/typedarray/Uint8Array#__set + local.get $1 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Uint8Array#__set + local.get $1 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Uint8Array#__set + local.get $1 + i32.const 3 + i32.const 4 + call $~lib/typedarray/Uint8Array#__set + local.get $1 + i32.const 4 + i32.const 5 + call $~lib/typedarray/Uint8Array#__set + local.get $1 + call $~lib/typedarray/Uint8Array#join + local.tee $0 + i32.const 3008 + call $~lib/string/String#_eq + i32.eqz + br_if $folding-inner12 + local.get $1 + call $~lib/typedarray/Uint8Array#join + local.tee $29 + i32.const 3008 + call $~lib/string/String#_eq + i32.eqz + br_if $folding-inner13 + local.get $0 + call $~lib/rt/pure/__release + local.get $29 + call $~lib/rt/pure/__release + local.get $1 + call $~lib/rt/pure/__release + i32.const 5 + call $~lib/typedarray/Uint8ClampedArray#constructor + local.tee $1 + i32.const 0 + i32.const 1 + call $~lib/typedarray/Uint8ClampedArray#__set + local.get $1 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Uint8ClampedArray#__set + local.get $1 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Uint8ClampedArray#__set + local.get $1 + i32.const 3 + i32.const 4 + call $~lib/typedarray/Uint8ClampedArray#__set + local.get $1 + i32.const 4 + i32.const 5 + call $~lib/typedarray/Uint8ClampedArray#__set + local.get $1 + call $~lib/typedarray/Uint8Array#join + local.tee $0 + i32.const 3008 + call $~lib/string/String#_eq + i32.eqz + br_if $folding-inner12 + local.get $1 + call $~lib/typedarray/Uint8Array#join + local.tee $29 + i32.const 3008 + call $~lib/string/String#_eq + i32.eqz + br_if $folding-inner13 + local.get $0 + call $~lib/rt/pure/__release + local.get $29 + call $~lib/rt/pure/__release + local.get $1 + call $~lib/rt/pure/__release + i32.const 5 + call $~lib/typedarray/Int16Array#constructor + local.tee $1 + i32.const 0 + i32.const 1 + call $~lib/typedarray/Int16Array#__set + local.get $1 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Int16Array#__set + local.get $1 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Int16Array#__set + local.get $1 + i32.const 3 + i32.const 4 + call $~lib/typedarray/Int16Array#__set + local.get $1 + i32.const 4 + i32.const 5 + call $~lib/typedarray/Int16Array#__set + local.get $1 + call $~lib/typedarray/Int16Array#join + local.tee $0 + i32.const 3008 + call $~lib/string/String#_eq + i32.eqz + br_if $folding-inner12 + local.get $1 + call $~lib/typedarray/Int16Array#join + local.tee $29 + i32.const 3008 + call $~lib/string/String#_eq + i32.eqz + br_if $folding-inner13 + local.get $0 + call $~lib/rt/pure/__release + local.get $29 + call $~lib/rt/pure/__release + local.get $1 + call $~lib/rt/pure/__release + i32.const 5 + call $~lib/typedarray/Uint16Array#constructor + local.tee $1 + i32.const 0 + i32.const 1 + call $~lib/typedarray/Uint16Array#__set + local.get $1 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Uint16Array#__set + local.get $1 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Uint16Array#__set + local.get $1 + i32.const 3 + i32.const 4 + call $~lib/typedarray/Uint16Array#__set + local.get $1 + i32.const 4 + i32.const 5 + call $~lib/typedarray/Uint16Array#__set + local.get $1 + call $~lib/typedarray/Uint16Array#join + local.tee $0 + i32.const 3008 + call $~lib/string/String#_eq + i32.eqz + br_if $folding-inner12 + local.get $1 + call $~lib/typedarray/Uint16Array#join + local.tee $29 + i32.const 3008 + call $~lib/string/String#_eq + i32.eqz + br_if $folding-inner13 + local.get $0 + call $~lib/rt/pure/__release + local.get $29 + call $~lib/rt/pure/__release + local.get $1 + call $~lib/rt/pure/__release + i32.const 5 + call $~lib/typedarray/Int32Array#constructor + local.tee $1 + i32.const 0 + i32.const 1 + call $~lib/typedarray/Int32Array#__set + local.get $1 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Int32Array#__set + local.get $1 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Int32Array#__set + local.get $1 + i32.const 3 + i32.const 4 + call $~lib/typedarray/Int32Array#__set + local.get $1 + i32.const 4 + i32.const 5 + call $~lib/typedarray/Int32Array#__set + local.get $1 + call $~lib/typedarray/Int32Array#join + local.tee $0 + i32.const 3008 + call $~lib/string/String#_eq + i32.eqz + br_if $folding-inner12 + local.get $1 + call $~lib/typedarray/Int32Array#join + local.tee $29 + i32.const 3008 + call $~lib/string/String#_eq + i32.eqz + br_if $folding-inner13 + local.get $0 + call $~lib/rt/pure/__release + local.get $29 + call $~lib/rt/pure/__release + local.get $1 + call $~lib/rt/pure/__release + i32.const 5 + call $~lib/typedarray/Uint32Array#constructor + local.tee $1 + i32.const 0 + i32.const 1 + call $~lib/typedarray/Uint32Array#__set + local.get $1 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Uint32Array#__set + local.get $1 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Uint32Array#__set + local.get $1 + i32.const 3 + i32.const 4 + call $~lib/typedarray/Uint32Array#__set + local.get $1 + i32.const 4 + i32.const 5 + call $~lib/typedarray/Uint32Array#__set + local.get $1 + call $~lib/typedarray/Uint32Array#join + local.tee $0 + i32.const 3008 + call $~lib/string/String#_eq + i32.eqz + br_if $folding-inner12 + local.get $1 + call $~lib/typedarray/Uint32Array#join + local.tee $29 + i32.const 3008 + call $~lib/string/String#_eq + i32.eqz + br_if $folding-inner13 + local.get $0 + call $~lib/rt/pure/__release + local.get $29 + call $~lib/rt/pure/__release + local.get $1 + call $~lib/rt/pure/__release + i32.const 5 + call $~lib/typedarray/Int64Array#constructor + local.tee $1 + i32.const 0 + i64.const 1 + call $~lib/typedarray/Int64Array#__set + local.get $1 + i32.const 1 + i64.const 2 + call $~lib/typedarray/Int64Array#__set + local.get $1 + i32.const 2 + i64.const 3 + call $~lib/typedarray/Int64Array#__set + local.get $1 + i32.const 3 + i64.const 4 + call $~lib/typedarray/Int64Array#__set + local.get $1 + i32.const 4 + i64.const 5 + call $~lib/typedarray/Int64Array#__set + local.get $1 + call $~lib/typedarray/Int64Array#join + local.tee $0 + i32.const 3008 + call $~lib/string/String#_eq + i32.eqz + br_if $folding-inner12 + local.get $1 + call $~lib/typedarray/Int64Array#join + local.tee $29 + i32.const 3008 + call $~lib/string/String#_eq + i32.eqz + br_if $folding-inner13 + local.get $0 + call $~lib/rt/pure/__release + local.get $29 + call $~lib/rt/pure/__release + local.get $1 + call $~lib/rt/pure/__release + i32.const 5 + call $~lib/typedarray/Uint64Array#constructor + local.tee $1 + i32.const 0 + i64.const 1 + call $~lib/typedarray/Uint64Array#__set + local.get $1 + i32.const 1 + i64.const 2 + call $~lib/typedarray/Uint64Array#__set + local.get $1 + i32.const 2 + i64.const 3 + call $~lib/typedarray/Uint64Array#__set + local.get $1 + i32.const 3 + i64.const 4 + call $~lib/typedarray/Uint64Array#__set + local.get $1 + i32.const 4 + i64.const 5 + call $~lib/typedarray/Uint64Array#__set + local.get $1 + call $~lib/typedarray/Uint64Array#join + local.tee $0 + i32.const 3008 + call $~lib/string/String#_eq + i32.eqz + br_if $folding-inner12 + local.get $1 + call $~lib/typedarray/Uint64Array#join + local.tee $29 + i32.const 3008 + call $~lib/string/String#_eq + i32.eqz + br_if $folding-inner13 + local.get $0 + call $~lib/rt/pure/__release + local.get $29 + call $~lib/rt/pure/__release + local.get $1 + call $~lib/rt/pure/__release + i32.const 5 + call $~lib/typedarray/Float32Array#constructor + local.tee $1 + i32.const 0 + f32.const 1 + call $~lib/typedarray/Float32Array#__set + local.get $1 + i32.const 1 + f32.const 2 + call $~lib/typedarray/Float32Array#__set + local.get $1 + i32.const 2 + f32.const 3 + call $~lib/typedarray/Float32Array#__set + local.get $1 + i32.const 3 + f32.const 4 + call $~lib/typedarray/Float32Array#__set + local.get $1 + i32.const 4 + f32.const 5 + call $~lib/typedarray/Float32Array#__set + local.get $1 + call $~lib/typedarray/Float32Array#join + local.tee $0 + i32.const 4176 + call $~lib/string/String#_eq + i32.eqz + br_if $folding-inner14 + local.get $1 + call $~lib/typedarray/Float32Array#join + local.tee $29 + i32.const 4176 + call $~lib/string/String#_eq + i32.eqz + br_if $folding-inner15 + local.get $0 + call $~lib/rt/pure/__release + local.get $29 + call $~lib/rt/pure/__release + local.get $1 + call $~lib/rt/pure/__release + i32.const 5 + call $~lib/typedarray/Float64Array#constructor + local.tee $1 + i32.const 0 + f64.const 1 + call $~lib/typedarray/Float64Array#__set + local.get $1 + i32.const 1 + f64.const 2 + call $~lib/typedarray/Float64Array#__set + local.get $1 + i32.const 2 + f64.const 3 + call $~lib/typedarray/Float64Array#__set + local.get $1 + i32.const 3 + f64.const 4 + call $~lib/typedarray/Float64Array#__set + local.get $1 + i32.const 4 + f64.const 5 + call $~lib/typedarray/Float64Array#__set + local.get $1 + call $~lib/typedarray/Float64Array#join + local.tee $0 + i32.const 4176 + call $~lib/string/String#_eq + i32.eqz + br_if $folding-inner14 + local.get $1 + call $~lib/typedarray/Float64Array#join + local.tee $29 + i32.const 4176 + call $~lib/string/String#_eq + i32.eqz + br_if $folding-inner15 + local.get $0 + call $~lib/rt/pure/__release + local.get $29 + call $~lib/rt/pure/__release + local.get $1 + call $~lib/rt/pure/__release + i32.const 0 + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $1 + i32.const 2 + global.set $~argumentsLength + local.get $1 + i32.const 0 + call $~lib/typedarray/Uint8Array.wrap|trampoline + local.tee $29 + i32.load offset=8 + if + i32.const 0 + i32.const 1312 + i32.const 691 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 2 + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $0 + local.get $1 + call $~lib/rt/pure/__release + i32.const 2 + global.set $~argumentsLength + local.get $0 + i32.const 2 + call $~lib/typedarray/Uint8Array.wrap|trampoline + local.set $1 + local.get $29 + call $~lib/rt/pure/__release + local.get $1 + i32.load offset=8 + if + i32.const 0 + i32.const 1312 + i32.const 695 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + call $~lib/rt/pure/__release + local.get $1 + call $~lib/rt/pure/__release + call $std/typedarray/testArrayWrap<~lib/typedarray/Int8Array,i8> + call $std/typedarray/testArrayWrap<~lib/typedarray/Uint8Array,u8> + call $std/typedarray/testArrayWrap<~lib/typedarray/Uint8ClampedArray,u8> + call $std/typedarray/testArrayWrap<~lib/typedarray/Int16Array,i16> + call $std/typedarray/testArrayWrap<~lib/typedarray/Uint16Array,u16> + call $std/typedarray/testArrayWrap<~lib/typedarray/Int32Array,i32> + call $std/typedarray/testArrayWrap<~lib/typedarray/Uint32Array,u32> + call $std/typedarray/testArrayWrap<~lib/typedarray/Int64Array,i64> + call $std/typedarray/testArrayWrap<~lib/typedarray/Uint64Array,u64> + call $std/typedarray/testArrayWrap<~lib/typedarray/Float32Array,f32> + call $std/typedarray/testArrayWrap<~lib/typedarray/Float64Array,f64> + call $std/typedarray/testTypedArraySet<~lib/typedarray/Int8Array> + call $std/typedarray/testTypedArraySet<~lib/typedarray/Uint8Array> + call $std/typedarray/testTypedArraySet<~lib/typedarray/Uint8ClampedArray> + call $std/typedarray/testTypedArraySet<~lib/typedarray/Int16Array> + call $std/typedarray/testTypedArraySet<~lib/typedarray/Uint16Array> + call $std/typedarray/testTypedArraySet<~lib/typedarray/Int32Array> + call $std/typedarray/testTypedArraySet<~lib/typedarray/Uint32Array> + call $std/typedarray/testTypedArraySet<~lib/typedarray/Int64Array> + call $std/typedarray/testTypedArraySet<~lib/typedarray/Uint64Array> + call $std/typedarray/testTypedArraySet<~lib/typedarray/Float32Array> + call $std/typedarray/testTypedArraySet<~lib/typedarray/Float64Array> + i32.const 10 + call $~lib/typedarray/Uint8ClampedArray#constructor + local.set $0 + i32.const 3 + call $~lib/typedarray/Float32Array#constructor + local.tee $29 + i32.const 0 + f32.const 400 + call $~lib/typedarray/Float32Array#__set + local.get $29 + i32.const 1 + f32.const nan:0x400000 + call $~lib/typedarray/Float32Array#__set + local.get $29 + i32.const 2 + f32.const inf + call $~lib/typedarray/Float32Array#__set + i32.const 4 + call $~lib/typedarray/Int64Array#constructor + local.tee $28 + i32.const 0 + i64.const -10 + call $~lib/typedarray/Int64Array#__set + local.get $28 i32.const 1 + i64.const 100 + call $~lib/typedarray/Int64Array#__set + local.get $28 + i32.const 2 + i64.const 10 + call $~lib/typedarray/Int64Array#__set + local.get $28 + i32.const 3 + i64.const 300 + call $~lib/typedarray/Int64Array#__set + i32.const 2 + call $~lib/typedarray/Int32Array#constructor + local.tee $27 + i32.const 0 + i32.const 300 + call $~lib/typedarray/Int32Array#__set + local.get $27 + i32.const 1 + i32.const -1 + call $~lib/typedarray/Int32Array#__set + i32.const 0 + local.set $1 + local.get $29 + i32.load offset=8 + i32.const 2 + i32.shr_u + i32.const 1 + i32.add + local.get $0 + i32.load offset=8 + i32.gt_s + br_if $folding-inner16 + local.get $0 + i32.load offset=4 + i32.const 1 + i32.add + local.set $26 + local.get $29 + i32.load offset=4 + local.set $24 + local.get $29 + i32.load offset=8 + i32.const 2 + i32.shr_u + local.set $23 + loop $for-loop|026 + local.get $1 + local.get $23 + i32.lt_s + if + local.get $1 + local.get $26 + i32.add + local.get $24 + local.get $1 + i32.const 2 + i32.shl + i32.add + f32.load + local.tee $21 + local.get $21 + f32.sub + f32.const 0 + f32.eq + if (result i32) + f32.const 0 + f32.const 255 + local.get $21 + f32.min + f32.max + i32.trunc_f32_u + else + i32.const 0 + end + i32.store8 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|026 + end + end + local.get $0 + local.get $28 + i32.const 4 + call $~lib/typedarray/Uint8ClampedArray#set<~lib/typedarray/Int64Array> + i32.const 0 local.set $1 - br $~lib/typedarray/INCLUDES<~lib/typedarray/Float32Array,f32>|inlined.0 + local.get $27 + i32.load offset=8 + i32.const 2 + i32.shr_u + i32.const 8 + i32.add + local.get $0 + i32.load offset=8 + i32.gt_s + br_if $folding-inner16 + local.get $0 + i32.load offset=4 + i32.const 8 + i32.add + local.set $26 + local.get $27 + i32.load offset=4 + local.set $24 + local.get $27 + i32.load offset=8 + i32.const 2 + i32.shr_u + local.set $23 + loop $for-loop|027 + local.get $1 + local.get $23 + i32.lt_s + if + local.get $1 + local.get $26 + i32.add + local.get $24 + local.get $1 + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $25 + i32.const 31 + i32.shr_s + i32.const -1 + i32.xor + local.get $25 + i32.const 255 + local.get $25 + i32.sub + i32.const 31 + i32.shr_s + i32.or + i32.and + i32.store8 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|027 + end + end + local.get $0 + i32.const 10 + i32.const 0 + i32.const 21 + i32.const 8352 + call $~lib/rt/__allocArray + call $~lib/rt/pure/__retain + local.tee $24 + call $std/typedarray/valuesEqual<~lib/typedarray/Uint8ClampedArray> + i32.const 4 + call $~lib/typedarray/Uint32Array#constructor + local.tee $1 + i32.const 0 + i32.const 1 + call $~lib/typedarray/Uint32Array#__set + local.get $1 + i32.const 1 + i32.const 300 + call $~lib/typedarray/Uint32Array#__set + local.get $1 + i32.const 2 + i32.const 100 + call $~lib/typedarray/Uint32Array#__set + local.get $1 + i32.const 3 + i32.const -1 + call $~lib/typedarray/Uint32Array#__set + i32.const 4 + call $~lib/typedarray/Int16Array#constructor + local.tee $25 + i32.const 0 + i32.const -10 + call $~lib/typedarray/Int16Array#__set + local.get $25 + i32.const 1 + i32.const 100 + call $~lib/typedarray/Int16Array#__set + local.get $25 + i32.const 2 + i32.const 10 + call $~lib/typedarray/Int16Array#__set + local.get $25 + i32.const 3 + i32.const 300 + call $~lib/typedarray/Int16Array#__set + i32.const 0 + local.set $26 + local.get $1 + i32.load offset=8 + i32.const 2 + i32.shr_u + local.get $0 + i32.load offset=8 + i32.gt_s + br_if $folding-inner16 + local.get $0 + i32.load offset=4 + local.set $23 + local.get $1 + i32.load offset=4 + local.set $19 + local.get $1 + i32.load offset=8 + i32.const 2 + i32.shr_u + local.set $18 + loop $for-loop|028 + local.get $26 + local.get $18 + i32.lt_s + if + local.get $23 + local.get $26 + i32.add + i32.const 255 + local.get $19 + local.get $26 + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $17 + i32.const 255 + local.get $17 + i32.lt_u + select + i32.store8 + local.get $26 + i32.const 1 + i32.add + local.set $26 + br $for-loop|028 + end + end + local.get $0 + local.get $25 + i32.const 5 + call $~lib/typedarray/Uint8ClampedArray#set<~lib/typedarray/Int16Array> + local.get $0 + i32.const 10 + i32.const 0 + i32.const 21 + i32.const 8384 + call $~lib/rt/__allocArray + call $~lib/rt/pure/__retain + local.tee $26 + call $std/typedarray/valuesEqual<~lib/typedarray/Uint8ClampedArray> + local.get $0 + call $~lib/rt/pure/__release + local.get $29 + call $~lib/rt/pure/__release + local.get $28 + call $~lib/rt/pure/__release + local.get $27 + call $~lib/rt/pure/__release + local.get $24 + call $~lib/rt/pure/__release + local.get $1 + call $~lib/rt/pure/__release + local.get $25 + call $~lib/rt/pure/__release + local.get $26 + call $~lib/rt/pure/__release + return end - local.get $28 - i32.const 1 - i32.add - local.set $28 - br $while-continue|025 + i32.const 0 + i32.const 1312 + i32.const 323 + i32.const 3 + call $~lib/builtins/abort + unreachable end + i32.const 0 + i32.const 1312 + i32.const 344 + i32.const 3 + call $~lib/builtins/abort + unreachable end - end - local.get $1 - i32.const 0 - i32.ne - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 614 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $29 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - call $std/typedarray/testArrayJoinAndToString<~lib/typedarray/Int8Array,i8> - call $std/typedarray/testArrayJoinAndToString<~lib/typedarray/Uint8Array,u8> - call $std/typedarray/testArrayJoinAndToString<~lib/typedarray/Uint8ClampedArray,u8> - call $std/typedarray/testArrayJoinAndToString<~lib/typedarray/Int16Array,i16> - call $std/typedarray/testArrayJoinAndToString<~lib/typedarray/Uint16Array,u16> - call $std/typedarray/testArrayJoinAndToString<~lib/typedarray/Int32Array,i32> - call $std/typedarray/testArrayJoinAndToString<~lib/typedarray/Uint32Array,u32> - call $std/typedarray/testArrayJoinAndToString<~lib/typedarray/Int64Array,i64> - call $std/typedarray/testArrayJoinAndToString<~lib/typedarray/Uint64Array,u64> - call $std/typedarray/testArrayJoinAndToString<~lib/typedarray/Float32Array,f32> - call $std/typedarray/testArrayJoinAndToString<~lib/typedarray/Float64Array,f64> - i32.const 0 - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $1 - i32.const 2 - global.set $~argumentsLength - local.get $1 - i32.const 0 - call $~lib/typedarray/Uint8Array.wrap|trampoline - local.tee $29 - i32.load offset=8 - if - i32.const 0 - i32.const 1312 - i32.const 691 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 2 - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $0 - local.get $1 - call $~lib/rt/pure/__release - i32.const 2 - global.set $~argumentsLength - local.get $0 - i32.const 2 - call $~lib/typedarray/Uint8Array.wrap|trampoline - local.set $1 - local.get $29 - call $~lib/rt/pure/__release - local.get $1 - i32.load offset=8 - if i32.const 0 i32.const 1312 - i32.const 695 + i32.const 365 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - call $std/typedarray/testArrayWrap<~lib/typedarray/Int8Array,i8> - call $std/typedarray/testArrayWrap<~lib/typedarray/Uint8Array,u8> - call $std/typedarray/testArrayWrap<~lib/typedarray/Uint8ClampedArray,u8> - call $std/typedarray/testArrayWrap<~lib/typedarray/Int16Array,i16> - call $std/typedarray/testArrayWrap<~lib/typedarray/Uint16Array,u16> - call $std/typedarray/testArrayWrap<~lib/typedarray/Int32Array,i32> - call $std/typedarray/testArrayWrap<~lib/typedarray/Uint32Array,u32> - call $std/typedarray/testArrayWrap<~lib/typedarray/Int64Array,i64> - call $std/typedarray/testArrayWrap<~lib/typedarray/Uint64Array,u64> - call $std/typedarray/testArrayWrap<~lib/typedarray/Float32Array,f32> - call $std/typedarray/testArrayWrap<~lib/typedarray/Float64Array,f64> - call $std/typedarray/testTypedArraySet<~lib/typedarray/Int8Array> - call $std/typedarray/testTypedArraySet<~lib/typedarray/Uint8Array> - call $std/typedarray/testTypedArraySet<~lib/typedarray/Uint8ClampedArray> - call $std/typedarray/testTypedArraySet<~lib/typedarray/Int16Array> - call $std/typedarray/testTypedArraySet<~lib/typedarray/Uint16Array> - call $std/typedarray/testTypedArraySet<~lib/typedarray/Int32Array> - call $std/typedarray/testTypedArraySet<~lib/typedarray/Uint32Array> - call $std/typedarray/testTypedArraySet<~lib/typedarray/Int64Array> - call $std/typedarray/testTypedArraySet<~lib/typedarray/Uint64Array> - call $std/typedarray/testTypedArraySet<~lib/typedarray/Float32Array> - call $std/typedarray/testTypedArraySet<~lib/typedarray/Float64Array> - i32.const 10 - call $~lib/typedarray/Uint8ClampedArray#constructor - local.set $0 - i32.const 3 - call $~lib/typedarray/Float32Array#constructor - local.tee $29 - i32.const 0 - f32.const 400 - call $~lib/typedarray/Float32Array#__set - local.get $29 - i32.const 1 - f32.const nan:0x400000 - call $~lib/typedarray/Float32Array#__set - local.get $29 - i32.const 2 - f32.const inf - call $~lib/typedarray/Float32Array#__set - i32.const 4 - call $~lib/typedarray/Int64Array#constructor - local.tee $28 - i32.const 0 - i64.const -10 - call $~lib/typedarray/Int64Array#__set - local.get $28 - i32.const 1 - i64.const 100 - call $~lib/typedarray/Int64Array#__set - local.get $28 - i32.const 2 - i64.const 10 - call $~lib/typedarray/Int64Array#__set - local.get $28 - i32.const 3 - i64.const 300 - call $~lib/typedarray/Int64Array#__set - i32.const 2 - call $~lib/typedarray/Int32Array#constructor - local.tee $27 - i32.const 0 - i32.const 300 - call $~lib/typedarray/Int32Array#__set - local.get $27 - i32.const 1 - i32.const -1 - call $~lib/typedarray/Int32Array#__set - i32.const 0 - local.set $1 - local.get $29 - i32.load offset=8 - i32.const 2 - i32.shr_u - i32.const 1 - i32.add - local.get $0 - i32.load offset=8 - i32.gt_s - br_if $folding-inner12 - local.get $0 - i32.load offset=4 - i32.const 1 - i32.add - local.set $26 - local.get $29 - i32.load offset=4 - local.set $24 - local.get $29 - i32.load offset=8 - i32.const 2 - i32.shr_u - local.set $23 - loop $for-loop|026 - local.get $1 - local.get $23 - i32.lt_s - if - local.get $1 - local.get $26 - i32.add - local.get $24 - local.get $1 - i32.const 2 - i32.shl - i32.add - f32.load - local.tee $21 - local.get $21 - f32.sub - f32.const 0 - f32.eq - if (result i32) - f32.const 0 - f32.const 255 - local.get $21 - f32.min - f32.max - i32.trunc_f32_u - else - i32.const 0 - end - i32.store8 - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|026 - end - end - local.get $0 - local.get $28 - i32.const 4 - call $~lib/typedarray/Uint8ClampedArray#set<~lib/typedarray/Int64Array> - i32.const 0 - local.set $1 - local.get $27 - i32.load offset=8 - i32.const 2 - i32.shr_u - i32.const 8 - i32.add - local.get $0 - i32.load offset=8 - i32.gt_s - br_if $folding-inner12 - local.get $0 - i32.load offset=4 - i32.const 8 - i32.add - local.set $26 - local.get $27 - i32.load offset=4 - local.set $24 - local.get $27 - i32.load offset=8 - i32.const 2 - i32.shr_u - local.set $23 - loop $for-loop|027 - local.get $1 - local.get $23 - i32.lt_s - if - local.get $1 - local.get $26 - i32.add - local.get $24 - local.get $1 - i32.const 2 - i32.shl - i32.add - i32.load - local.tee $25 - i32.const 31 - i32.shr_s - i32.const -1 - i32.xor - local.get $25 - i32.const 255 - local.get $25 - i32.sub - i32.const 31 - i32.shr_s - i32.or - i32.and - i32.store8 - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|027 - end - end - local.get $0 - i32.const 10 - i32.const 0 - i32.const 21 - i32.const 8352 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $24 - call $std/typedarray/valuesEqual<~lib/typedarray/Uint8ClampedArray> - i32.const 4 - call $~lib/typedarray/Uint32Array#constructor - local.tee $1 i32.const 0 - i32.const 1 - call $~lib/typedarray/Uint32Array#__set - local.get $1 - i32.const 1 - i32.const 300 - call $~lib/typedarray/Uint32Array#__set - local.get $1 - i32.const 2 - i32.const 100 - call $~lib/typedarray/Uint32Array#__set - local.get $1 + i32.const 1312 + i32.const 366 i32.const 3 - i32.const -1 - call $~lib/typedarray/Uint32Array#__set - i32.const 4 - call $~lib/typedarray/Int16Array#constructor - local.tee $25 - i32.const 0 - i32.const -10 - call $~lib/typedarray/Int16Array#__set - local.get $25 - i32.const 1 - i32.const 100 - call $~lib/typedarray/Int16Array#__set - local.get $25 - i32.const 2 - i32.const 10 - call $~lib/typedarray/Int16Array#__set - local.get $25 - i32.const 3 - i32.const 300 - call $~lib/typedarray/Int16Array#__set - i32.const 0 - local.set $26 - local.get $1 - i32.load offset=8 - i32.const 2 - i32.shr_u - local.get $0 - i32.load offset=8 - i32.gt_s - br_if $folding-inner12 - local.get $0 - i32.load offset=4 - local.set $23 - local.get $1 - i32.load offset=4 - local.set $19 - local.get $1 - i32.load offset=8 - i32.const 2 - i32.shr_u - local.set $18 - loop $for-loop|028 - local.get $26 - local.get $18 - i32.lt_s - if - local.get $23 - local.get $26 - i32.add - i32.const 255 - local.get $19 - local.get $26 - i32.const 2 - i32.shl - i32.add - i32.load - local.tee $17 - i32.const 255 - local.get $17 - i32.lt_u - select - i32.store8 - local.get $26 - i32.const 1 - i32.add - local.set $26 - br $for-loop|028 - end - end - local.get $0 - local.get $25 - i32.const 5 - call $~lib/typedarray/Uint8ClampedArray#set<~lib/typedarray/Int16Array> - local.get $0 - i32.const 10 - i32.const 0 - i32.const 21 - i32.const 8384 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $26 - call $std/typedarray/valuesEqual<~lib/typedarray/Uint8ClampedArray> - local.get $0 - call $~lib/rt/pure/__release - local.get $29 - call $~lib/rt/pure/__release - local.get $28 - call $~lib/rt/pure/__release - local.get $27 - call $~lib/rt/pure/__release - local.get $24 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $25 - call $~lib/rt/pure/__release - local.get $26 - call $~lib/rt/pure/__release - return + call $~lib/builtins/abort + unreachable end i32.const 0 i32.const 1312 - i32.const 323 + i32.const 367 i32.const 3 call $~lib/builtins/abort unreachable end i32.const 0 i32.const 1312 - i32.const 344 + i32.const 415 i32.const 3 call $~lib/builtins/abort unreachable end i32.const 0 i32.const 1312 - i32.const 365 + i32.const 417 i32.const 3 call $~lib/builtins/abort unreachable end i32.const 0 i32.const 1312 - i32.const 366 + i32.const 438 i32.const 3 call $~lib/builtins/abort unreachable end i32.const 0 i32.const 1312 - i32.const 367 + i32.const 440 i32.const 3 call $~lib/builtins/abort unreachable end i32.const 0 i32.const 1312 - i32.const 415 + i32.const 461 i32.const 3 call $~lib/builtins/abort unreachable end i32.const 0 i32.const 1312 - i32.const 417 + i32.const 463 i32.const 3 call $~lib/builtins/abort unreachable end i32.const 0 i32.const 1312 - i32.const 438 + i32.const 495 i32.const 3 call $~lib/builtins/abort unreachable end i32.const 0 i32.const 1312 - i32.const 440 - i32.const 3 + i32.const 629 + i32.const 5 call $~lib/builtins/abort unreachable end i32.const 0 i32.const 1312 - i32.const 461 - i32.const 3 + i32.const 630 + i32.const 5 call $~lib/builtins/abort unreachable end i32.const 0 i32.const 1312 - i32.const 463 - i32.const 3 + i32.const 626 + i32.const 5 call $~lib/builtins/abort unreachable end i32.const 0 i32.const 1312 - i32.const 495 - i32.const 3 + i32.const 627 + i32.const 5 call $~lib/builtins/abort unreachable end @@ -32466,7 +32069,7 @@ call $~lib/builtins/abort unreachable ) - (func $~start (; 352 ;) + (func $~start (; 341 ;) global.get $~started if return @@ -32476,7 +32079,7 @@ end call $start:std/typedarray ) - (func $~lib/rt/pure/decrement (; 353 ;) (param $0 i32) + (func $~lib/rt/pure/decrement (; 342 ;) (param $0 i32) (local $1 i32) (local $2 i32) local.get $0 @@ -32568,7 +32171,7 @@ i32.store offset=4 end ) - (func $~lib/rt/pure/__visit (; 354 ;) (param $0 i32) + (func $~lib/rt/pure/__visit (; 343 ;) (param $0 i32) local.get $0 i32.const 8396 i32.lt_u diff --git a/tests/compiler/std/typedarray.untouched.wat b/tests/compiler/std/typedarray.untouched.wat index 2235a5eb14..9642ce4242 100644 --- a/tests/compiler/std/typedarray.untouched.wat +++ b/tests/compiler/std/typedarray.untouched.wat @@ -32375,12 +32375,9 @@ call $~lib/rt/pure/__release local.get $7 ) - (func $~lib/string/String.__eq (; 483 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/string/String#_eq (; 483 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) - local.get $0 - call $~lib/rt/pure/__retain - local.set $0 local.get $1 call $~lib/rt/pure/__retain local.set $1 @@ -32394,8 +32391,6 @@ if i32.const 0 local.set $3 - local.get $0 - call $~lib/rt/pure/__release local.get $1 call $~lib/rt/pure/__release local.get $3 @@ -32409,8 +32404,6 @@ call $~lib/util/string/compareImpl i32.eqz local.set $3 - local.get $0 - call $~lib/rt/pure/__release local.get $1 call $~lib/rt/pure/__release local.get $3 @@ -32425,9 +32418,6 @@ (local $1 i32) (local $2 i32) (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) i32.const 0 i32.const 5 call $~lib/typedarray/Int8Array#constructor @@ -32458,33 +32448,8 @@ i32.const 2384 call $~lib/typedarray/Int8Array#join local.tee $2 - call $~lib/rt/pure/__retain - local.set $4 i32.const 2416 - call $~lib/rt/pure/__retain - local.set $3 - local.get $4 - i32.eqz - local.get $3 - i32.eqz - i32.or - if (result i32) - local.get $4 - local.get $3 - i32.eq - else - local.get $4 - local.get $3 - call $~lib/string/String.__eq - end - local.set $5 - local.get $3 - call $~lib/rt/pure/__release - local.get $4 - call $~lib/rt/pure/__release - local.get $5 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -32496,34 +32461,9 @@ end local.get $1 call $~lib/typedarray/Int8Array#toString - local.tee $4 - call $~lib/rt/pure/__retain - local.set $3 + local.tee $3 i32.const 2416 - call $~lib/rt/pure/__retain - local.set $5 - local.get $3 - i32.eqz - local.get $5 - i32.eqz - i32.or - if (result i32) - local.get $3 - local.get $5 - i32.eq - else - local.get $3 - local.get $5 - call $~lib/string/String.__eq - end - local.set $6 - local.get $5 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $6 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -32535,7 +32475,7 @@ end local.get $2 call $~lib/rt/pure/__release - local.get $4 + local.get $3 call $~lib/rt/pure/__release local.get $0 call $~lib/rt/pure/__release @@ -32805,9 +32745,6 @@ (local $1 i32) (local $2 i32) (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) i32.const 0 i32.const 5 call $~lib/typedarray/Uint8Array#constructor @@ -32838,33 +32775,8 @@ i32.const 2384 call $~lib/typedarray/Uint8Array#join local.tee $2 - call $~lib/rt/pure/__retain - local.set $4 i32.const 2416 - call $~lib/rt/pure/__retain - local.set $3 - local.get $4 - i32.eqz - local.get $3 - i32.eqz - i32.or - if (result i32) - local.get $4 - local.get $3 - i32.eq - else - local.get $4 - local.get $3 - call $~lib/string/String.__eq - end - local.set $5 - local.get $3 - call $~lib/rt/pure/__release - local.get $4 - call $~lib/rt/pure/__release - local.get $5 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -32876,34 +32788,9 @@ end local.get $1 call $~lib/typedarray/Uint8Array#toString - local.tee $4 - call $~lib/rt/pure/__retain - local.set $3 + local.tee $3 i32.const 2416 - call $~lib/rt/pure/__retain - local.set $5 - local.get $3 - i32.eqz - local.get $5 - i32.eqz - i32.or - if (result i32) - local.get $3 - local.get $5 - i32.eq - else - local.get $3 - local.get $5 - call $~lib/string/String.__eq - end - local.set $6 - local.get $5 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $6 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -32915,7 +32802,7 @@ end local.get $2 call $~lib/rt/pure/__release - local.get $4 + local.get $3 call $~lib/rt/pure/__release local.get $0 call $~lib/rt/pure/__release @@ -32948,9 +32835,6 @@ (local $1 i32) (local $2 i32) (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) i32.const 0 i32.const 5 call $~lib/typedarray/Uint8ClampedArray#constructor @@ -32981,33 +32865,8 @@ i32.const 2384 call $~lib/typedarray/Uint8ClampedArray#join local.tee $2 - call $~lib/rt/pure/__retain - local.set $4 i32.const 2416 - call $~lib/rt/pure/__retain - local.set $3 - local.get $4 - i32.eqz - local.get $3 - i32.eqz - i32.or - if (result i32) - local.get $4 - local.get $3 - i32.eq - else - local.get $4 - local.get $3 - call $~lib/string/String.__eq - end - local.set $5 - local.get $3 - call $~lib/rt/pure/__release - local.get $4 - call $~lib/rt/pure/__release - local.get $5 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -33019,34 +32878,9 @@ end local.get $1 call $~lib/typedarray/Uint8ClampedArray#toString - local.tee $4 - call $~lib/rt/pure/__retain - local.set $3 + local.tee $3 i32.const 2416 - call $~lib/rt/pure/__retain - local.set $5 - local.get $3 - i32.eqz - local.get $5 - i32.eqz - i32.or - if (result i32) - local.get $3 - local.get $5 - i32.eq - else - local.get $3 - local.get $5 - call $~lib/string/String.__eq - end - local.set $6 - local.get $5 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $6 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -33058,7 +32892,7 @@ end local.get $2 call $~lib/rt/pure/__release - local.get $4 + local.get $3 call $~lib/rt/pure/__release local.get $0 call $~lib/rt/pure/__release @@ -33328,9 +33162,6 @@ (local $1 i32) (local $2 i32) (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) i32.const 0 i32.const 5 call $~lib/typedarray/Int16Array#constructor @@ -33361,33 +33192,8 @@ i32.const 2384 call $~lib/typedarray/Int16Array#join local.tee $2 - call $~lib/rt/pure/__retain - local.set $4 i32.const 2416 - call $~lib/rt/pure/__retain - local.set $3 - local.get $4 - i32.eqz - local.get $3 - i32.eqz - i32.or - if (result i32) - local.get $4 - local.get $3 - i32.eq - else - local.get $4 - local.get $3 - call $~lib/string/String.__eq - end - local.set $5 - local.get $3 - call $~lib/rt/pure/__release - local.get $4 - call $~lib/rt/pure/__release - local.get $5 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -33399,34 +33205,9 @@ end local.get $1 call $~lib/typedarray/Int16Array#toString - local.tee $4 - call $~lib/rt/pure/__retain - local.set $3 + local.tee $3 i32.const 2416 - call $~lib/rt/pure/__retain - local.set $5 - local.get $3 - i32.eqz - local.get $5 - i32.eqz - i32.or - if (result i32) - local.get $3 - local.get $5 - i32.eq - else - local.get $3 - local.get $5 - call $~lib/string/String.__eq - end - local.set $6 - local.get $5 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $6 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -33438,7 +33219,7 @@ end local.get $2 call $~lib/rt/pure/__release - local.get $4 + local.get $3 call $~lib/rt/pure/__release local.get $0 call $~lib/rt/pure/__release @@ -33674,9 +33455,6 @@ (local $1 i32) (local $2 i32) (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) i32.const 0 i32.const 5 call $~lib/typedarray/Uint16Array#constructor @@ -33707,33 +33485,8 @@ i32.const 2384 call $~lib/typedarray/Uint16Array#join local.tee $2 - call $~lib/rt/pure/__retain - local.set $4 i32.const 2416 - call $~lib/rt/pure/__retain - local.set $3 - local.get $4 - i32.eqz - local.get $3 - i32.eqz - i32.or - if (result i32) - local.get $4 - local.get $3 - i32.eq - else - local.get $4 - local.get $3 - call $~lib/string/String.__eq - end - local.set $5 - local.get $3 - call $~lib/rt/pure/__release - local.get $4 - call $~lib/rt/pure/__release - local.get $5 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -33745,34 +33498,9 @@ end local.get $1 call $~lib/typedarray/Uint16Array#toString - local.tee $4 - call $~lib/rt/pure/__retain - local.set $3 + local.tee $3 i32.const 2416 - call $~lib/rt/pure/__retain - local.set $5 - local.get $3 - i32.eqz - local.get $5 - i32.eqz - i32.or - if (result i32) - local.get $3 - local.get $5 - i32.eq - else - local.get $3 - local.get $5 - call $~lib/string/String.__eq - end - local.set $6 - local.get $5 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $6 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -33784,7 +33512,7 @@ end local.get $2 call $~lib/rt/pure/__release - local.get $4 + local.get $3 call $~lib/rt/pure/__release local.get $0 call $~lib/rt/pure/__release @@ -34030,9 +33758,6 @@ (local $1 i32) (local $2 i32) (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) i32.const 0 i32.const 5 call $~lib/typedarray/Int32Array#constructor @@ -34063,33 +33788,8 @@ i32.const 2384 call $~lib/typedarray/Int32Array#join local.tee $2 - call $~lib/rt/pure/__retain - local.set $4 i32.const 2416 - call $~lib/rt/pure/__retain - local.set $3 - local.get $4 - i32.eqz - local.get $3 - i32.eqz - i32.or - if (result i32) - local.get $4 - local.get $3 - i32.eq - else - local.get $4 - local.get $3 - call $~lib/string/String.__eq - end - local.set $5 - local.get $3 - call $~lib/rt/pure/__release - local.get $4 - call $~lib/rt/pure/__release - local.get $5 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -34101,34 +33801,9 @@ end local.get $1 call $~lib/typedarray/Int32Array#toString - local.tee $4 - call $~lib/rt/pure/__retain - local.set $3 + local.tee $3 i32.const 2416 - call $~lib/rt/pure/__retain - local.set $5 - local.get $3 - i32.eqz - local.get $5 - i32.eqz - i32.or - if (result i32) - local.get $3 - local.get $5 - i32.eq - else - local.get $3 - local.get $5 - call $~lib/string/String.__eq - end - local.set $6 - local.get $5 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $6 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -34140,7 +33815,7 @@ end local.get $2 call $~lib/rt/pure/__release - local.get $4 + local.get $3 call $~lib/rt/pure/__release local.get $0 call $~lib/rt/pure/__release @@ -34366,9 +34041,6 @@ (local $1 i32) (local $2 i32) (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) i32.const 0 i32.const 5 call $~lib/typedarray/Uint32Array#constructor @@ -34394,77 +34066,27 @@ local.get $1 i32.const 4 i32.const 5 - call $~lib/typedarray/Uint32Array#__set - local.get $1 - i32.const 2384 - call $~lib/typedarray/Uint32Array#join - local.tee $2 - call $~lib/rt/pure/__retain - local.set $4 - i32.const 2416 - call $~lib/rt/pure/__retain - local.set $3 - local.get $4 - i32.eqz - local.get $3 - i32.eqz - i32.or - if (result i32) - local.get $4 - local.get $3 - i32.eq - else - local.get $4 - local.get $3 - call $~lib/string/String.__eq - end - local.set $5 - local.get $3 - call $~lib/rt/pure/__release - local.get $4 - call $~lib/rt/pure/__release - local.get $5 - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 629 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $1 - call $~lib/typedarray/Uint32Array#toString - local.tee $4 - call $~lib/rt/pure/__retain - local.set $3 - i32.const 2416 - call $~lib/rt/pure/__retain - local.set $5 - local.get $3 - i32.eqz - local.get $5 - i32.eqz - i32.or - if (result i32) - local.get $3 - local.get $5 - i32.eq - else - local.get $3 - local.get $5 - call $~lib/string/String.__eq + call $~lib/typedarray/Uint32Array#__set + local.get $1 + i32.const 2384 + call $~lib/typedarray/Uint32Array#join + local.tee $2 + i32.const 2416 + call $~lib/string/String#_eq + i32.eqz + if + i32.const 0 + i32.const 304 + i32.const 629 + i32.const 5 + call $~lib/builtins/abort + unreachable end - local.set $6 - local.get $5 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $6 - i32.const 0 - i32.ne + local.get $1 + call $~lib/typedarray/Uint32Array#toString + local.tee $3 + i32.const 2416 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -34476,7 +34098,7 @@ end local.get $2 call $~lib/rt/pure/__release - local.get $4 + local.get $3 call $~lib/rt/pure/__release local.get $0 call $~lib/rt/pure/__release @@ -35019,9 +34641,6 @@ (local $1 i32) (local $2 i32) (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) i32.const 0 i32.const 5 call $~lib/typedarray/Int64Array#constructor @@ -35052,33 +34671,8 @@ i32.const 2384 call $~lib/typedarray/Int64Array#join local.tee $2 - call $~lib/rt/pure/__retain - local.set $4 i32.const 2416 - call $~lib/rt/pure/__retain - local.set $3 - local.get $4 - i32.eqz - local.get $3 - i32.eqz - i32.or - if (result i32) - local.get $4 - local.get $3 - i32.eq - else - local.get $4 - local.get $3 - call $~lib/string/String.__eq - end - local.set $5 - local.get $3 - call $~lib/rt/pure/__release - local.get $4 - call $~lib/rt/pure/__release - local.get $5 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -35090,34 +34684,9 @@ end local.get $1 call $~lib/typedarray/Int64Array#toString - local.tee $4 - call $~lib/rt/pure/__retain - local.set $3 + local.tee $3 i32.const 2416 - call $~lib/rt/pure/__retain - local.set $5 - local.get $3 - i32.eqz - local.get $5 - i32.eqz - i32.or - if (result i32) - local.get $3 - local.get $5 - i32.eq - else - local.get $3 - local.get $5 - call $~lib/string/String.__eq - end - local.set $6 - local.get $5 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $6 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -35129,7 +34698,7 @@ end local.get $2 call $~lib/rt/pure/__release - local.get $4 + local.get $3 call $~lib/rt/pure/__release local.get $0 call $~lib/rt/pure/__release @@ -35447,9 +35016,6 @@ (local $1 i32) (local $2 i32) (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) i32.const 0 i32.const 5 call $~lib/typedarray/Uint64Array#constructor @@ -35480,33 +35046,8 @@ i32.const 2384 call $~lib/typedarray/Uint64Array#join local.tee $2 - call $~lib/rt/pure/__retain - local.set $4 i32.const 2416 - call $~lib/rt/pure/__retain - local.set $3 - local.get $4 - i32.eqz - local.get $3 - i32.eqz - i32.or - if (result i32) - local.get $4 - local.get $3 - i32.eq - else - local.get $4 - local.get $3 - call $~lib/string/String.__eq - end - local.set $5 - local.get $3 - call $~lib/rt/pure/__release - local.get $4 - call $~lib/rt/pure/__release - local.get $5 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -35518,34 +35059,9 @@ end local.get $1 call $~lib/typedarray/Uint64Array#toString - local.tee $4 - call $~lib/rt/pure/__retain - local.set $3 + local.tee $3 i32.const 2416 - call $~lib/rt/pure/__retain - local.set $5 - local.get $3 - i32.eqz - local.get $5 - i32.eqz - i32.or - if (result i32) - local.get $3 - local.get $5 - i32.eq - else - local.get $3 - local.get $5 - call $~lib/string/String.__eq - end - local.set $6 - local.get $5 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $6 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -35557,7 +35073,7 @@ end local.get $2 call $~lib/rt/pure/__release - local.get $4 + local.get $3 call $~lib/rt/pure/__release local.get $0 call $~lib/rt/pure/__release @@ -37121,9 +36637,6 @@ (local $1 i32) (local $2 i32) (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) i32.const 0 i32.const 5 call $~lib/typedarray/Float32Array#constructor @@ -37154,33 +36667,8 @@ i32.const 2384 call $~lib/typedarray/Float32Array#join local.tee $2 - call $~lib/rt/pure/__retain - local.set $4 i32.const 3584 - call $~lib/rt/pure/__retain - local.set $3 - local.get $4 - i32.eqz - local.get $3 - i32.eqz - i32.or - if (result i32) - local.get $4 - local.get $3 - i32.eq - else - local.get $4 - local.get $3 - call $~lib/string/String.__eq - end - local.set $5 - local.get $3 - call $~lib/rt/pure/__release - local.get $4 - call $~lib/rt/pure/__release - local.get $5 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -37192,34 +36680,9 @@ end local.get $1 call $~lib/typedarray/Float32Array#toString - local.tee $4 - call $~lib/rt/pure/__retain - local.set $3 + local.tee $3 i32.const 3584 - call $~lib/rt/pure/__retain - local.set $5 - local.get $3 - i32.eqz - local.get $5 - i32.eqz - i32.or - if (result i32) - local.get $3 - local.get $5 - i32.eq - else - local.get $3 - local.get $5 - call $~lib/string/String.__eq - end - local.set $6 - local.get $5 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $6 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -37231,7 +36694,7 @@ end local.get $2 call $~lib/rt/pure/__release - local.get $4 + local.get $3 call $~lib/rt/pure/__release local.get $0 call $~lib/rt/pure/__release @@ -37407,9 +36870,6 @@ (local $1 i32) (local $2 i32) (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) i32.const 0 i32.const 5 call $~lib/typedarray/Float64Array#constructor @@ -37440,33 +36900,8 @@ i32.const 2384 call $~lib/typedarray/Float64Array#join local.tee $2 - call $~lib/rt/pure/__retain - local.set $4 i32.const 3584 - call $~lib/rt/pure/__retain - local.set $3 - local.get $4 - i32.eqz - local.get $3 - i32.eqz - i32.or - if (result i32) - local.get $4 - local.get $3 - i32.eq - else - local.get $4 - local.get $3 - call $~lib/string/String.__eq - end - local.set $5 - local.get $3 - call $~lib/rt/pure/__release - local.get $4 - call $~lib/rt/pure/__release - local.get $5 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -37478,34 +36913,9 @@ end local.get $1 call $~lib/typedarray/Float64Array#toString - local.tee $4 - call $~lib/rt/pure/__retain - local.set $3 + local.tee $3 i32.const 3584 - call $~lib/rt/pure/__retain - local.set $5 - local.get $3 - i32.eqz - local.get $5 - i32.eqz - i32.or - if (result i32) - local.get $3 - local.get $5 - i32.eq - else - local.get $3 - local.get $5 - call $~lib/string/String.__eq - end - local.set $6 - local.get $5 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $6 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -37517,7 +36927,7 @@ end local.get $2 call $~lib/rt/pure/__release - local.get $4 + local.get $3 call $~lib/rt/pure/__release local.get $0 call $~lib/rt/pure/__release diff --git a/tests/compiler/typeof.optimized.wat b/tests/compiler/typeof.optimized.wat index 258431f5bb..8d5cb37a63 100644 --- a/tests/compiler/typeof.optimized.wat +++ b/tests/compiler/typeof.optimized.wat @@ -104,7 +104,7 @@ end i32.const 0 ) - (func $~lib/string/String.__eq (; 3 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/string/String#_eq (; 3 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) local.get $0 call $~lib/string/String#get:length @@ -127,7 +127,7 @@ (local $1 i32) i32.const 1040 i32.const 1040 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -139,7 +139,7 @@ end i32.const 1120 i32.const 1120 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -151,7 +151,7 @@ end i32.const 1120 i32.const 1120 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -163,7 +163,7 @@ end i32.const 1120 i32.const 1120 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -175,7 +175,7 @@ end i32.const 1152 i32.const 1152 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -187,7 +187,7 @@ end i32.const 1152 i32.const 1152 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -199,7 +199,7 @@ end i32.const 1184 i32.const 1184 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -211,7 +211,7 @@ end i32.const 1120 i32.const 1120 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -223,7 +223,7 @@ end i32.const 1040 i32.const 1040 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -235,7 +235,7 @@ end i32.const 1040 i32.const 1040 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -247,7 +247,7 @@ end i32.const 1040 i32.const 1040 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -259,7 +259,7 @@ end i32.const 1248 i32.const 1248 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -271,7 +271,7 @@ end i32.const 1184 i32.const 1184 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -283,7 +283,7 @@ end i32.const 1040 i32.const 1040 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -295,7 +295,7 @@ end i32.const 1040 i32.const 1040 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -307,7 +307,7 @@ end i32.const 1040 i32.const 1040 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -319,7 +319,7 @@ end i32.const 1040 i32.const 1040 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -331,7 +331,7 @@ end i32.const 1248 i32.const 1248 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -343,7 +343,7 @@ end i32.const 1152 i32.const 1152 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -409,7 +409,7 @@ global.set $typeof/c i32.const 1120 i32.const 1120 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -421,7 +421,7 @@ end i32.const 1152 i32.const 1152 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -433,7 +433,7 @@ end i32.const 1280 i32.const 1280 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -445,7 +445,7 @@ end i32.const 1280 i32.const 1280 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -457,7 +457,7 @@ end i32.const 1280 i32.const 1280 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 diff --git a/tests/compiler/typeof.untouched.wat b/tests/compiler/typeof.untouched.wat index 7a304a2115..a404e73055 100644 --- a/tests/compiler/typeof.untouched.wat +++ b/tests/compiler/typeof.untouched.wat @@ -169,12 +169,9 @@ call $~lib/rt/stub/__release local.get $7 ) - (func $~lib/string/String.__eq (; 5 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/string/String#_eq (; 5 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) - local.get $0 - call $~lib/rt/stub/__retain - local.set $0 local.get $1 call $~lib/rt/stub/__retain local.set $1 @@ -188,8 +185,6 @@ if i32.const 0 local.set $3 - local.get $0 - call $~lib/rt/stub/__release local.get $1 call $~lib/rt/stub/__release local.get $3 @@ -203,8 +198,6 @@ call $~lib/util/string/compareImpl i32.eqz local.set $3 - local.get $0 - call $~lib/rt/stub/__release local.get $1 call $~lib/rt/stub/__release local.get $3 @@ -332,37 +325,9 @@ local.get $0 ) (func $start:typeof (; 10 ;) - (local $0 i32) - (local $1 i32) - (local $2 i32) i32.const 32 - call $~lib/rt/stub/__retain - local.set $1 i32.const 32 - call $~lib/rt/stub/__retain - local.set $0 - local.get $1 - i32.eqz - local.get $0 - i32.eqz - i32.or - if (result i32) - local.get $1 - local.get $0 - i32.eq - else - local.get $1 - local.get $0 - call $~lib/string/String.__eq - end - local.set $2 - local.get $0 - call $~lib/rt/stub/__release - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -373,33 +338,8 @@ unreachable end i32.const 112 - call $~lib/rt/stub/__retain - local.set $0 i32.const 112 - call $~lib/rt/stub/__retain - local.set $2 - local.get $0 - i32.eqz - local.get $2 - i32.eqz - i32.or - if (result i32) - local.get $0 - local.get $2 - i32.eq - else - local.get $0 - local.get $2 - call $~lib/string/String.__eq - end - local.set $1 - local.get $2 - call $~lib/rt/stub/__release - local.get $0 - call $~lib/rt/stub/__release - local.get $1 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -410,33 +350,8 @@ unreachable end i32.const 112 - call $~lib/rt/stub/__retain - local.set $2 i32.const 112 - call $~lib/rt/stub/__retain - local.set $1 - local.get $2 - i32.eqz - local.get $1 - i32.eqz - i32.or - if (result i32) - local.get $2 - local.get $1 - i32.eq - else - local.get $2 - local.get $1 - call $~lib/string/String.__eq - end - local.set $0 - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - call $~lib/rt/stub/__release - local.get $0 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -447,33 +362,8 @@ unreachable end i32.const 112 - call $~lib/rt/stub/__retain - local.set $1 i32.const 112 - call $~lib/rt/stub/__retain - local.set $0 - local.get $1 - i32.eqz - local.get $0 - i32.eqz - i32.or - if (result i32) - local.get $1 - local.get $0 - i32.eq - else - local.get $1 - local.get $0 - call $~lib/string/String.__eq - end - local.set $2 - local.get $0 - call $~lib/rt/stub/__release - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -484,33 +374,8 @@ unreachable end i32.const 144 - call $~lib/rt/stub/__retain - local.set $0 i32.const 144 - call $~lib/rt/stub/__retain - local.set $2 - local.get $0 - i32.eqz - local.get $2 - i32.eqz - i32.or - if (result i32) - local.get $0 - local.get $2 - i32.eq - else - local.get $0 - local.get $2 - call $~lib/string/String.__eq - end - local.set $1 - local.get $2 - call $~lib/rt/stub/__release - local.get $0 - call $~lib/rt/stub/__release - local.get $1 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -521,33 +386,8 @@ unreachable end i32.const 144 - call $~lib/rt/stub/__retain - local.set $2 i32.const 144 - call $~lib/rt/stub/__retain - local.set $1 - local.get $2 - i32.eqz - local.get $1 - i32.eqz - i32.or - if (result i32) - local.get $2 - local.get $1 - i32.eq - else - local.get $2 - local.get $1 - call $~lib/string/String.__eq - end - local.set $0 - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - call $~lib/rt/stub/__release - local.get $0 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -558,33 +398,8 @@ unreachable end i32.const 176 - call $~lib/rt/stub/__retain - local.set $1 i32.const 176 - call $~lib/rt/stub/__retain - local.set $0 - local.get $1 - i32.eqz - local.get $0 - i32.eqz - i32.or - if (result i32) - local.get $1 - local.get $0 - i32.eq - else - local.get $1 - local.get $0 - call $~lib/string/String.__eq - end - local.set $2 - local.get $0 - call $~lib/rt/stub/__release - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -595,33 +410,8 @@ unreachable end i32.const 112 - call $~lib/rt/stub/__retain - local.set $0 i32.const 112 - call $~lib/rt/stub/__retain - local.set $2 - local.get $0 - i32.eqz - local.get $2 - i32.eqz - i32.or - if (result i32) - local.get $0 - local.get $2 - i32.eq - else - local.get $0 - local.get $2 - call $~lib/string/String.__eq - end - local.set $1 - local.get $2 - call $~lib/rt/stub/__release - local.get $0 - call $~lib/rt/stub/__release - local.get $1 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -632,33 +422,8 @@ unreachable end i32.const 32 - call $~lib/rt/stub/__retain - local.set $2 i32.const 32 - call $~lib/rt/stub/__retain - local.set $1 - local.get $2 - i32.eqz - local.get $1 - i32.eqz - i32.or - if (result i32) - local.get $2 - local.get $1 - i32.eq - else - local.get $2 - local.get $1 - call $~lib/string/String.__eq - end - local.set $0 - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - call $~lib/rt/stub/__release - local.get $0 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -669,33 +434,8 @@ unreachable end i32.const 32 - call $~lib/rt/stub/__retain - local.set $1 i32.const 32 - call $~lib/rt/stub/__retain - local.set $0 - local.get $1 - i32.eqz - local.get $0 - i32.eqz - i32.or - if (result i32) - local.get $1 - local.get $0 - i32.eq - else - local.get $1 - local.get $0 - call $~lib/string/String.__eq - end - local.set $2 - local.get $0 - call $~lib/rt/stub/__release - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -706,70 +446,20 @@ unreachable end i32.const 32 - call $~lib/rt/stub/__retain - local.set $0 i32.const 32 - call $~lib/rt/stub/__retain - local.set $2 - local.get $0 + call $~lib/string/String#_eq i32.eqz - local.get $2 - i32.eqz - i32.or - if (result i32) - local.get $0 - local.get $2 - i32.eq - else - local.get $0 - local.get $2 - call $~lib/string/String.__eq - end - local.set $1 - local.get $2 - call $~lib/rt/stub/__release - local.get $0 - call $~lib/rt/stub/__release - local.get $1 - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 64 - i32.const 23 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 240 - call $~lib/rt/stub/__retain - local.set $2 - i32.const 240 - call $~lib/rt/stub/__retain - local.set $1 - local.get $2 - i32.eqz - local.get $1 - i32.eqz - i32.or - if (result i32) - local.get $2 - local.get $1 - i32.eq - else - local.get $2 - local.get $1 - call $~lib/string/String.__eq - end - local.set $0 - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - call $~lib/rt/stub/__release - local.get $0 - i32.const 0 - i32.ne + if + i32.const 0 + i32.const 64 + i32.const 23 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 240 + i32.const 240 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -780,33 +470,8 @@ unreachable end i32.const 176 - call $~lib/rt/stub/__retain - local.set $1 i32.const 176 - call $~lib/rt/stub/__retain - local.set $0 - local.get $1 - i32.eqz - local.get $0 - i32.eqz - i32.or - if (result i32) - local.get $1 - local.get $0 - i32.eq - else - local.get $1 - local.get $0 - call $~lib/string/String.__eq - end - local.set $2 - local.get $0 - call $~lib/rt/stub/__release - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -817,33 +482,8 @@ unreachable end i32.const 32 - call $~lib/rt/stub/__retain - local.set $0 i32.const 32 - call $~lib/rt/stub/__retain - local.set $2 - local.get $0 - i32.eqz - local.get $2 - i32.eqz - i32.or - if (result i32) - local.get $0 - local.get $2 - i32.eq - else - local.get $0 - local.get $2 - call $~lib/string/String.__eq - end - local.set $1 - local.get $2 - call $~lib/rt/stub/__release - local.get $0 - call $~lib/rt/stub/__release - local.get $1 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -854,33 +494,8 @@ unreachable end i32.const 32 - call $~lib/rt/stub/__retain - local.set $2 i32.const 32 - call $~lib/rt/stub/__retain - local.set $1 - local.get $2 - i32.eqz - local.get $1 - i32.eqz - i32.or - if (result i32) - local.get $2 - local.get $1 - i32.eq - else - local.get $2 - local.get $1 - call $~lib/string/String.__eq - end - local.set $0 - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - call $~lib/rt/stub/__release - local.get $0 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -891,33 +506,8 @@ unreachable end i32.const 32 - call $~lib/rt/stub/__retain - local.set $1 i32.const 32 - call $~lib/rt/stub/__retain - local.set $0 - local.get $1 - i32.eqz - local.get $0 - i32.eqz - i32.or - if (result i32) - local.get $1 - local.get $0 - i32.eq - else - local.get $1 - local.get $0 - call $~lib/string/String.__eq - end - local.set $2 - local.get $0 - call $~lib/rt/stub/__release - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -928,33 +518,8 @@ unreachable end i32.const 32 - call $~lib/rt/stub/__retain - local.set $0 i32.const 32 - call $~lib/rt/stub/__retain - local.set $2 - local.get $0 - i32.eqz - local.get $2 - i32.eqz - i32.or - if (result i32) - local.get $0 - local.get $2 - i32.eq - else - local.get $0 - local.get $2 - call $~lib/string/String.__eq - end - local.set $1 - local.get $2 - call $~lib/rt/stub/__release - local.get $0 - call $~lib/rt/stub/__release - local.get $1 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -965,33 +530,8 @@ unreachable end i32.const 240 - call $~lib/rt/stub/__retain - local.set $2 i32.const 240 - call $~lib/rt/stub/__retain - local.set $1 - local.get $2 - i32.eqz - local.get $1 - i32.eqz - i32.or - if (result i32) - local.get $2 - local.get $1 - i32.eq - else - local.get $2 - local.get $1 - call $~lib/string/String.__eq - end - local.set $0 - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - call $~lib/rt/stub/__release - local.get $0 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -1002,33 +542,8 @@ unreachable end i32.const 144 - call $~lib/rt/stub/__retain - local.set $1 i32.const 144 - call $~lib/rt/stub/__retain - local.set $0 - local.get $1 - i32.eqz - local.get $0 - i32.eqz - i32.or - if (result i32) - local.get $1 - local.get $0 - i32.eq - else - local.get $1 - local.get $0 - call $~lib/string/String.__eq - end - local.set $2 - local.get $0 - call $~lib/rt/stub/__release - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -1052,33 +567,8 @@ call $typeof/SomeClass#constructor global.set $typeof/c i32.const 112 - call $~lib/rt/stub/__retain - local.set $0 i32.const 112 - call $~lib/rt/stub/__retain - local.set $2 - local.get $0 - i32.eqz - local.get $2 - i32.eqz - i32.or - if (result i32) - local.get $0 - local.get $2 - i32.eq - else - local.get $0 - local.get $2 - call $~lib/string/String.__eq - end - local.set $1 - local.get $2 - call $~lib/rt/stub/__release - local.get $0 - call $~lib/rt/stub/__release - local.get $1 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -1089,33 +579,8 @@ unreachable end i32.const 144 - call $~lib/rt/stub/__retain - local.set $2 i32.const 144 - call $~lib/rt/stub/__retain - local.set $1 - local.get $2 - i32.eqz - local.get $1 - i32.eqz - i32.or - if (result i32) - local.get $2 - local.get $1 - i32.eq - else - local.get $2 - local.get $1 - call $~lib/string/String.__eq - end - local.set $0 - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - call $~lib/rt/stub/__release - local.get $0 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -1126,33 +591,8 @@ unreachable end i32.const 272 - call $~lib/rt/stub/__retain - local.set $1 i32.const 272 - call $~lib/rt/stub/__retain - local.set $0 - local.get $1 - i32.eqz - local.get $0 - i32.eqz - i32.or - if (result i32) - local.get $1 - local.get $0 - i32.eq - else - local.get $1 - local.get $0 - call $~lib/string/String.__eq - end - local.set $2 - local.get $0 - call $~lib/rt/stub/__release - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -1163,33 +603,8 @@ unreachable end i32.const 272 - call $~lib/rt/stub/__retain - local.set $0 i32.const 272 - call $~lib/rt/stub/__retain - local.set $2 - local.get $0 - i32.eqz - local.get $2 - i32.eqz - i32.or - if (result i32) - local.get $0 - local.get $2 - i32.eq - else - local.get $0 - local.get $2 - call $~lib/string/String.__eq - end - local.set $1 - local.get $2 - call $~lib/rt/stub/__release - local.get $0 - call $~lib/rt/stub/__release - local.get $1 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -1200,33 +615,8 @@ unreachable end i32.const 272 - call $~lib/rt/stub/__retain - local.set $2 i32.const 272 - call $~lib/rt/stub/__retain - local.set $1 - local.get $2 - i32.eqz - local.get $1 - i32.eqz - i32.or - if (result i32) - local.get $2 - local.get $1 - i32.eq - else - local.get $2 - local.get $1 - call $~lib/string/String.__eq - end - local.set $0 - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - call $~lib/rt/stub/__release - local.get $0 - i32.const 0 - i32.ne + call $~lib/string/String#_eq i32.eqz if i32.const 0 diff --git a/tests/compiler/wasi/abort.untouched.wat b/tests/compiler/wasi/abort.untouched.wat index a29ce3be00..c8bf624ed3 100644 --- a/tests/compiler/wasi/abort.untouched.wat +++ b/tests/compiler/wasi/abort.untouched.wat @@ -2,14 +2,17 @@ (type $i32_=>_i32 (func (param i32) (result i32))) (type $none_=>_none (func)) (type $i32_=>_none (func (param i32))) + (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) (type $i32_i32_i32_i32_=>_i32 (func (param i32 i32 i32 i32) (result i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) + (type $i32_i32_i32_i32_i32_=>_i32 (func (param i32 i32 i32 i32 i32) (result i32))) (import "wasi_snapshot_preview1" "fd_write" (func $~lib/bindings/wasi_snapshot_preview1/fd_write (param i32 i32 i32 i32) (result i32))) (import "wasi_snapshot_preview1" "proc_exit" (func $~lib/bindings/wasi_snapshot_preview1/proc_exit (param i32))) (memory $0 1) (data (i32.const 16) "\16\00\00\00\01\00\00\00\01\00\00\00\16\00\00\00t\00h\00e\00 \00m\00e\00s\00s\00a\00g\00e\00") (data (i32.const 64) "\1a\00\00\00\01\00\00\00\01\00\00\00\1a\00\00\00w\00a\00s\00i\00/\00a\00b\00o\00r\00t\00.\00t\00s\00") (table $0 1 funcref) + (global $~lib/ASC_SHRINK_LEVEL i32 (i32.const 0)) (export "_start" (func $~start)) (export "memory" (memory $0)) (export "test" (func $wasi/abort/test)) @@ -24,7 +27,179 @@ i32.const 1 i32.shr_u ) - (func $~lib/string/String.UTF8.encodeUnsafe (; 4 ;) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (func $~lib/rt/stub/__release (; 4 ;) (param $0 i32) + nop + ) + (func $~lib/util/string/compareImpl (; 5 ;) (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) + (local $8 i32) + (local $9 i32) + (local $10 i32) + local.get $0 + call $~lib/rt/stub/__retain + local.set $0 + local.get $2 + call $~lib/rt/stub/__retain + local.set $2 + local.get $0 + local.get $1 + i32.const 1 + i32.shl + i32.add + local.set $5 + local.get $2 + local.get $3 + i32.const 1 + i32.shl + i32.add + local.set $6 + local.get $4 + i32.const 4 + i32.ge_u + if (result i32) + local.get $5 + i32.const 7 + i32.and + local.get $6 + i32.const 7 + i32.and + i32.or + i32.eqz + else + i32.const 0 + end + if + block $do-break|0 + loop $do-continue|0 + local.get $5 + i64.load + local.get $6 + i64.load + i64.ne + if + br $do-break|0 + end + local.get $5 + i32.const 8 + i32.add + local.set $5 + local.get $6 + i32.const 8 + i32.add + local.set $6 + local.get $4 + i32.const 4 + i32.sub + local.set $4 + local.get $4 + i32.const 4 + i32.ge_u + local.set $7 + local.get $7 + br_if $do-continue|0 + end + end + end + loop $while-continue|1 + local.get $4 + local.tee $7 + i32.const 1 + i32.sub + local.set $4 + local.get $7 + local.set $7 + local.get $7 + if + local.get $5 + i32.load16_u + local.set $8 + local.get $6 + i32.load16_u + local.set $9 + local.get $8 + local.get $9 + i32.ne + if + local.get $8 + local.get $9 + i32.sub + local.set $10 + local.get $0 + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release + local.get $10 + return + end + local.get $5 + i32.const 2 + i32.add + local.set $5 + local.get $6 + i32.const 2 + i32.add + local.set $6 + br $while-continue|1 + end + end + i32.const 0 + local.set $7 + local.get $0 + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release + local.get $7 + ) + (func $~lib/string/String#_eq (; 6 ;) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + local.get $1 + call $~lib/rt/stub/__retain + local.set $1 + local.get $0 + call $~lib/string/String#get:length + local.set $2 + local.get $2 + local.get $1 + call $~lib/string/String#get:length + i32.ne + if + i32.const 0 + local.set $3 + local.get $1 + call $~lib/rt/stub/__release + local.get $3 + return + end + local.get $0 + i32.const 0 + local.get $1 + i32.const 0 + local.get $2 + call $~lib/util/string/compareImpl + i32.eqz + local.set $3 + local.get $1 + call $~lib/rt/stub/__release + local.get $3 + ) + (func $~lib/string/String#_ne (; 7 ;) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $1 + call $~lib/rt/stub/__retain + local.set $1 + local.get $0 + local.get $1 + call $~lib/string/String#_eq + i32.eqz + local.set $2 + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + ) + (func $~lib/string/String.UTF8.encodeUnsafe (; 8 ;) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) (local $4 i32) (local $5 i32) (local $6 i32) @@ -240,7 +415,7 @@ local.get $2 i32.sub ) - (func $~lib/util/number/decimalCount32 (; 5 ;) (param $0 i32) (result i32) + (func $~lib/util/number/decimalCount32 (; 9 ;) (param $0 i32) (result i32) local.get $0 i32.const 100000 i32.lt_u @@ -295,10 +470,7 @@ end unreachable ) - (func $~lib/rt/stub/__release (; 6 ;) (param $0 i32) - nop - ) - (func $~lib/wasi/index/abort (; 7 ;) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) + (func $~lib/wasi/index/abort (; 10 ;) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (local $4 i32) (local $5 i32) (local $6 i32) @@ -323,8 +495,21 @@ i32.add local.set $4 local.get $0 + local.tee $5 + i32.eqz i32.const 0 - i32.ne + local.tee $6 + i32.eqz + i32.or + if (result i32) + local.get $5 + local.get $6 + i32.ne + else + local.get $5 + local.get $6 + call $~lib/string/String#_ne + end if local.get $4 local.get $0 @@ -344,8 +529,21 @@ i32.add local.set $4 local.get $1 + local.tee $5 + i32.eqz i32.const 0 - i32.ne + local.tee $6 + i32.eqz + i32.or + if (result i32) + local.get $5 + local.get $6 + i32.ne + else + local.get $5 + local.get $6 + call $~lib/string/String#_ne + end if local.get $4 local.get $1 @@ -367,9 +565,9 @@ i32.store8 local.get $2 call $~lib/util/number/decimalCount32 - local.set $6 + local.set $7 local.get $4 - local.get $6 + local.get $7 i32.add local.set $4 loop $do-continue|0 @@ -390,34 +588,34 @@ local.get $5 local.set $2 local.get $2 - local.set $7 - local.get $7 + local.set $6 + local.get $6 br_if $do-continue|0 end local.get $4 - local.get $6 + local.get $7 i32.add local.set $4 local.get $4 - local.tee $7 + local.tee $6 i32.const 1 i32.add local.set $4 - local.get $7 + local.get $6 i32.const 58 i32.store8 local.get $3 call $~lib/util/number/decimalCount32 - local.set $6 + local.set $7 local.get $4 - local.get $6 + local.get $7 i32.add local.set $4 loop $do-continue|1 local.get $3 i32.const 10 i32.div_u - local.set $7 + local.set $6 local.get $4 i32.const 1 i32.sub @@ -428,7 +626,7 @@ i32.rem_u i32.add i32.store8 - local.get $7 + local.get $6 local.set $3 local.get $3 local.set $8 @@ -436,7 +634,7 @@ br_if $do-continue|1 end local.get $4 - local.get $6 + local.get $7 i32.add local.set $4 local.get $4 @@ -464,7 +662,7 @@ local.get $1 call $~lib/rt/stub/__release ) - (func $wasi/abort/test (; 8 ;) + (func $wasi/abort/test (; 11 ;) i32.const 0 i32.eqz if @@ -476,7 +674,7 @@ unreachable end ) - (func $~start (; 9 ;) + (func $~start (; 12 ;) nop ) ) diff --git a/tests/compiler/wasi/seed.optimized.wat b/tests/compiler/wasi/seed.optimized.wat index 5ae5583204..20920ad83b 100644 --- a/tests/compiler/wasi/seed.optimized.wat +++ b/tests/compiler/wasi/seed.optimized.wat @@ -72,7 +72,15 @@ i32.shr_u i32.xor ) - (func $~lib/string/String.UTF8.encodeUnsafe (; 5 ;) (param $0 i32) (result i32) + (func $~lib/string/String#get:length (; 5 ;) (param $0 i32) (result i32) + local.get $0 + i32.const 16 + i32.sub + i32.load offset=12 + i32.const 1 + i32.shr_u + ) + (func $~lib/string/String.UTF8.encodeUnsafe (; 6 ;) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -247,7 +255,7 @@ i32.const 23 i32.sub ) - (func $~lib/util/number/decimalCount32 (; 6 ;) (param $0 i32) (result i32) + (func $~lib/util/number/decimalCount32 (; 7 ;) (param $0 i32) (result i32) local.get $0 i32.const 10 i32.ge_u @@ -289,7 +297,7 @@ i32.lt_u select ) - (func $~lib/wasi/index/abort (; 7 ;) + (func $~lib/wasi/index/abort (; 8 ;) (local $0 i32) (local $1 i32) (local $2 i32) @@ -308,20 +316,18 @@ i32.const 19 i32.const 544106784 i32.store - i32.const 1036 - i32.load - i32.const 1 - i32.shr_u + i32.const 1040 + call $~lib/string/String#get:length call $~lib/string/String.UTF8.encodeUnsafe i32.const 23 i32.add - local.tee $2 + local.tee $3 i32.const 40 i32.store8 i32.const 1406 call $~lib/util/number/decimalCount32 local.tee $4 - local.get $2 + local.get $3 i32.const 1 i32.add i32.add @@ -394,7 +400,7 @@ i32.const 255 call $~lib/bindings/wasi_snapshot_preview1/proc_exit ) - (func $~lib/math/NativeMath.random (; 8 ;) (result f64) + (func $~lib/math/NativeMath.random (; 9 ;) (result f64) (local $0 i64) (local $1 i64) global.get $~lib/math/random_seeded @@ -490,10 +496,10 @@ f64.const 1 f64.sub ) - (func $wasi/seed/test (; 9 ;) (result f64) + (func $wasi/seed/test (; 10 ;) (result f64) call $~lib/math/NativeMath.random ) - (func $~start (; 10 ;) + (func $~start (; 11 ;) nop ) ) diff --git a/tests/compiler/wasi/seed.untouched.wat b/tests/compiler/wasi/seed.untouched.wat index 87381d17e7..cd02d26226 100644 --- a/tests/compiler/wasi/seed.untouched.wat +++ b/tests/compiler/wasi/seed.untouched.wat @@ -1,12 +1,13 @@ (module (type $i32_=>_i32 (func (param i32) (result i32))) + (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) (type $none_=>_f64 (func (result f64))) (type $i32_=>_none (func (param i32))) (type $i32_i32_i32_i32_=>_i32 (func (param i32 i32 i32 i32) (result i32))) (type $none_=>_none (func)) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (type $i64_=>_none (func (param i64))) - (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) + (type $i32_i32_i32_i32_i32_=>_i32 (func (param i32 i32 i32 i32 i32) (result i32))) (type $i64_=>_i64 (func (param i64) (result i64))) (import "wasi_snapshot_preview1" "random_get" (func $~lib/bindings/wasi_snapshot_preview1/random_get (param i32 i32) (result i32))) (import "wasi_snapshot_preview1" "fd_write" (func $~lib/bindings/wasi_snapshot_preview1/fd_write (param i32 i32 i32 i32) (result i32))) @@ -19,6 +20,7 @@ (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 $~lib/ASC_SHRINK_LEVEL i32 (i32.const 0)) (export "_start" (func $~start)) (export "memory" (memory $0)) (export "test" (func $wasi/seed/test)) @@ -126,7 +128,179 @@ i32.const 1 i32.shr_u ) - (func $~lib/string/String.UTF8.encodeUnsafe (; 8 ;) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (func $~lib/rt/stub/__release (; 8 ;) (param $0 i32) + nop + ) + (func $~lib/util/string/compareImpl (; 9 ;) (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) + (local $8 i32) + (local $9 i32) + (local $10 i32) + local.get $0 + call $~lib/rt/stub/__retain + local.set $0 + local.get $2 + call $~lib/rt/stub/__retain + local.set $2 + local.get $0 + local.get $1 + i32.const 1 + i32.shl + i32.add + local.set $5 + local.get $2 + local.get $3 + i32.const 1 + i32.shl + i32.add + local.set $6 + local.get $4 + i32.const 4 + i32.ge_u + if (result i32) + local.get $5 + i32.const 7 + i32.and + local.get $6 + i32.const 7 + i32.and + i32.or + i32.eqz + else + i32.const 0 + end + if + block $do-break|0 + loop $do-continue|0 + local.get $5 + i64.load + local.get $6 + i64.load + i64.ne + if + br $do-break|0 + end + local.get $5 + i32.const 8 + i32.add + local.set $5 + local.get $6 + i32.const 8 + i32.add + local.set $6 + local.get $4 + i32.const 4 + i32.sub + local.set $4 + local.get $4 + i32.const 4 + i32.ge_u + local.set $7 + local.get $7 + br_if $do-continue|0 + end + end + end + loop $while-continue|1 + local.get $4 + local.tee $7 + i32.const 1 + i32.sub + local.set $4 + local.get $7 + local.set $7 + local.get $7 + if + local.get $5 + i32.load16_u + local.set $8 + local.get $6 + i32.load16_u + local.set $9 + local.get $8 + local.get $9 + i32.ne + if + local.get $8 + local.get $9 + i32.sub + local.set $10 + local.get $0 + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release + local.get $10 + return + end + local.get $5 + i32.const 2 + i32.add + local.set $5 + local.get $6 + i32.const 2 + i32.add + local.set $6 + br $while-continue|1 + end + end + i32.const 0 + local.set $7 + local.get $0 + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release + local.get $7 + ) + (func $~lib/string/String#_eq (; 10 ;) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + local.get $1 + call $~lib/rt/stub/__retain + local.set $1 + local.get $0 + call $~lib/string/String#get:length + local.set $2 + local.get $2 + local.get $1 + call $~lib/string/String#get:length + i32.ne + if + i32.const 0 + local.set $3 + local.get $1 + call $~lib/rt/stub/__release + local.get $3 + return + end + local.get $0 + i32.const 0 + local.get $1 + i32.const 0 + local.get $2 + call $~lib/util/string/compareImpl + i32.eqz + local.set $3 + local.get $1 + call $~lib/rt/stub/__release + local.get $3 + ) + (func $~lib/string/String#_ne (; 11 ;) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $1 + call $~lib/rt/stub/__retain + local.set $1 + local.get $0 + local.get $1 + call $~lib/string/String#_eq + i32.eqz + local.set $2 + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + ) + (func $~lib/string/String.UTF8.encodeUnsafe (; 12 ;) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) (local $4 i32) (local $5 i32) (local $6 i32) @@ -342,7 +516,7 @@ local.get $2 i32.sub ) - (func $~lib/util/number/decimalCount32 (; 9 ;) (param $0 i32) (result i32) + (func $~lib/util/number/decimalCount32 (; 13 ;) (param $0 i32) (result i32) local.get $0 i32.const 100000 i32.lt_u @@ -397,10 +571,7 @@ end unreachable ) - (func $~lib/rt/stub/__release (; 10 ;) (param $0 i32) - nop - ) - (func $~lib/wasi/index/abort (; 11 ;) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) + (func $~lib/wasi/index/abort (; 14 ;) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (local $4 i32) (local $5 i32) (local $6 i32) @@ -425,8 +596,21 @@ i32.add local.set $4 local.get $0 + local.tee $5 + i32.eqz i32.const 0 - i32.ne + local.tee $6 + i32.eqz + i32.or + if (result i32) + local.get $5 + local.get $6 + i32.ne + else + local.get $5 + local.get $6 + call $~lib/string/String#_ne + end if local.get $4 local.get $0 @@ -446,8 +630,21 @@ i32.add local.set $4 local.get $1 + local.tee $5 + i32.eqz i32.const 0 - i32.ne + local.tee $6 + i32.eqz + i32.or + if (result i32) + local.get $5 + local.get $6 + i32.ne + else + local.get $5 + local.get $6 + call $~lib/string/String#_ne + end if local.get $4 local.get $1 @@ -469,9 +666,9 @@ i32.store8 local.get $2 call $~lib/util/number/decimalCount32 - local.set $6 + local.set $7 local.get $4 - local.get $6 + local.get $7 i32.add local.set $4 loop $do-continue|0 @@ -492,34 +689,34 @@ local.get $5 local.set $2 local.get $2 - local.set $7 - local.get $7 + local.set $6 + local.get $6 br_if $do-continue|0 end local.get $4 - local.get $6 + local.get $7 i32.add local.set $4 local.get $4 - local.tee $7 + local.tee $6 i32.const 1 i32.add local.set $4 - local.get $7 + local.get $6 i32.const 58 i32.store8 local.get $3 call $~lib/util/number/decimalCount32 - local.set $6 + local.set $7 local.get $4 - local.get $6 + local.get $7 i32.add local.set $4 loop $do-continue|1 local.get $3 i32.const 10 i32.div_u - local.set $7 + local.set $6 local.get $4 i32.const 1 i32.sub @@ -530,7 +727,7 @@ i32.rem_u i32.add i32.store8 - local.get $7 + local.get $6 local.set $3 local.get $3 local.set $8 @@ -538,7 +735,7 @@ br_if $do-continue|1 end local.get $4 - local.get $6 + local.get $7 i32.add local.set $4 local.get $4 @@ -566,7 +763,7 @@ local.get $1 call $~lib/rt/stub/__release ) - (func $~lib/math/NativeMath.seedRandom (; 12 ;) (param $0 i64) + (func $~lib/math/NativeMath.seedRandom (; 15 ;) (param $0 i64) i32.const 1 global.set $~lib/math/random_seeded local.get $0 @@ -618,7 +815,7 @@ unreachable end ) - (func $~lib/math/NativeMath.random (; 13 ;) (result f64) + (func $~lib/math/NativeMath.random (; 16 ;) (result f64) (local $0 i64) (local $1 i64) (local $2 i64) @@ -670,10 +867,10 @@ f64.const 1 f64.sub ) - (func $wasi/seed/test (; 14 ;) (result f64) + (func $wasi/seed/test (; 17 ;) (result f64) call $~lib/math/NativeMath.random ) - (func $~start (; 15 ;) + (func $~start (; 18 ;) nop ) ) diff --git a/tests/compiler/wasi/trace.untouched.wat b/tests/compiler/wasi/trace.untouched.wat index deffdd1b59..ef80052803 100644 --- a/tests/compiler/wasi/trace.untouched.wat +++ b/tests/compiler/wasi/trace.untouched.wat @@ -1,13 +1,14 @@ (module (type $i32_=>_none (func (param i32))) + (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $i32_=>_i32 (func (param i32) (result i32))) (type $none_=>_none (func)) - (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) (type $i32_i32_i32_i32_=>_i32 (func (param i32 i32 i32 i32) (result i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (type $i32_i32_f64_f64_f64_f64_f64_=>_none (func (param i32 i32 f64 f64 f64 f64 f64))) (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) + (type $i32_i32_i32_i32_i32_=>_i32 (func (param i32 i32 i32 i32 i32) (result i32))) (type $i32_i32_f64_=>_i32 (func (param i32 i32 f64) (result i32))) (type $i32_i64_i32_i64_i32_i64_i32_=>_i32 (func (param i32 i64 i32 i64 i32 i64 i32) (result i32))) (type $i32_f64_=>_i32 (func (param i32 f64) (result i32))) @@ -3245,7 +3246,176 @@ local.get $2 call $~lib/util/number/dtoa_core ) - (func $~lib/wasi/index/abort (; 17 ;) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) + (func $~lib/util/string/compareImpl (; 17 ;) (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) + (local $8 i32) + (local $9 i32) + (local $10 i32) + local.get $0 + call $~lib/rt/stub/__retain + local.set $0 + local.get $2 + call $~lib/rt/stub/__retain + local.set $2 + local.get $0 + local.get $1 + i32.const 1 + i32.shl + i32.add + local.set $5 + local.get $2 + local.get $3 + i32.const 1 + i32.shl + i32.add + local.set $6 + local.get $4 + i32.const 4 + i32.ge_u + if (result i32) + local.get $5 + i32.const 7 + i32.and + local.get $6 + i32.const 7 + i32.and + i32.or + i32.eqz + else + i32.const 0 + end + if + block $do-break|0 + loop $do-continue|0 + local.get $5 + i64.load + local.get $6 + i64.load + i64.ne + if + br $do-break|0 + end + local.get $5 + i32.const 8 + i32.add + local.set $5 + local.get $6 + i32.const 8 + i32.add + local.set $6 + local.get $4 + i32.const 4 + i32.sub + local.set $4 + local.get $4 + i32.const 4 + i32.ge_u + local.set $7 + local.get $7 + br_if $do-continue|0 + end + end + end + loop $while-continue|1 + local.get $4 + local.tee $7 + i32.const 1 + i32.sub + local.set $4 + local.get $7 + local.set $7 + local.get $7 + if + local.get $5 + i32.load16_u + local.set $8 + local.get $6 + i32.load16_u + local.set $9 + local.get $8 + local.get $9 + i32.ne + if + local.get $8 + local.get $9 + i32.sub + local.set $10 + local.get $0 + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release + local.get $10 + return + end + local.get $5 + i32.const 2 + i32.add + local.set $5 + local.get $6 + i32.const 2 + i32.add + local.set $6 + br $while-continue|1 + end + end + i32.const 0 + local.set $7 + local.get $0 + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release + local.get $7 + ) + (func $~lib/string/String#_eq (; 18 ;) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + local.get $1 + call $~lib/rt/stub/__retain + local.set $1 + local.get $0 + call $~lib/string/String#get:length + local.set $2 + local.get $2 + local.get $1 + call $~lib/string/String#get:length + i32.ne + if + i32.const 0 + local.set $3 + local.get $1 + call $~lib/rt/stub/__release + local.get $3 + return + end + local.get $0 + i32.const 0 + local.get $1 + i32.const 0 + local.get $2 + call $~lib/util/string/compareImpl + i32.eqz + local.set $3 + local.get $1 + call $~lib/rt/stub/__release + local.get $3 + ) + (func $~lib/string/String#_ne (; 19 ;) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $1 + call $~lib/rt/stub/__retain + local.set $1 + local.get $0 + local.get $1 + call $~lib/string/String#_eq + i32.eqz + local.set $2 + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + ) + (func $~lib/wasi/index/abort (; 20 ;) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (local $4 i32) (local $5 i32) (local $6 i32) @@ -3270,8 +3440,21 @@ i32.add local.set $4 local.get $0 + local.tee $5 + i32.eqz i32.const 0 - i32.ne + local.tee $6 + i32.eqz + i32.or + if (result i32) + local.get $5 + local.get $6 + i32.ne + else + local.get $5 + local.get $6 + call $~lib/string/String#_ne + end if local.get $4 local.get $0 @@ -3291,8 +3474,21 @@ i32.add local.set $4 local.get $1 + local.tee $5 + i32.eqz i32.const 0 - i32.ne + local.tee $6 + i32.eqz + i32.or + if (result i32) + local.get $5 + local.get $6 + i32.ne + else + local.get $5 + local.get $6 + call $~lib/string/String#_ne + end if local.get $4 local.get $1 @@ -3314,9 +3510,9 @@ i32.store8 local.get $2 call $~lib/util/number/decimalCount32 - local.set $6 + local.set $7 local.get $4 - local.get $6 + local.get $7 i32.add local.set $4 loop $do-continue|0 @@ -3337,34 +3533,34 @@ local.get $5 local.set $2 local.get $2 - local.set $7 - local.get $7 + local.set $6 + local.get $6 br_if $do-continue|0 end local.get $4 - local.get $6 + local.get $7 i32.add local.set $4 local.get $4 - local.tee $7 + local.tee $6 i32.const 1 i32.add local.set $4 - local.get $7 + local.get $6 i32.const 58 i32.store8 local.get $3 call $~lib/util/number/decimalCount32 - local.set $6 + local.set $7 local.get $4 - local.get $6 + local.get $7 i32.add local.set $4 loop $do-continue|1 local.get $3 i32.const 10 i32.div_u - local.set $7 + local.set $6 local.get $4 i32.const 1 i32.sub @@ -3375,7 +3571,7 @@ i32.rem_u i32.add i32.store8 - local.get $7 + local.get $6 local.set $3 local.get $3 local.set $8 @@ -3383,7 +3579,7 @@ br_if $do-continue|1 end local.get $4 - local.get $6 + local.get $7 i32.add local.set $4 local.get $4 @@ -3411,7 +3607,7 @@ local.get $1 call $~lib/rt/stub/__release ) - (func $~lib/rt/stub/__free (; 18 ;) (param $0 i32) + (func $~lib/rt/stub/__free (; 21 ;) (param $0 i32) (local $1 i32) local.get $0 i32.const 0 @@ -3461,7 +3657,7 @@ global.set $~lib/rt/stub/offset end ) - (func $~lib/wasi/index/trace (; 19 ;) (param $0 i32) (param $1 i32) (param $2 f64) (param $3 f64) (param $4 f64) (param $5 f64) (param $6 f64) + (func $~lib/wasi/index/trace (; 22 ;) (param $0 i32) (param $1 i32) (param $2 f64) (param $3 f64) (param $4 f64) (param $5 f64) (param $6 f64) (local $7 i32) (local $8 i32) (local $9 i32) @@ -3670,7 +3866,7 @@ local.get $0 call $~lib/rt/stub/__release ) - (func $start:wasi/trace (; 20 ;) + (func $start:wasi/trace (; 23 ;) global.get $~lib/heap/__heap_base i32.const 15 i32.add @@ -3707,7 +3903,7 @@ f64.neg call $~lib/wasi/index/trace ) - (func $~start (; 21 ;) + (func $~start (; 24 ;) global.get $~started if return