diff --git a/std/assembly/index.d.ts b/std/assembly/index.d.ts index 8c55d070..2bba7613 100644 --- a/std/assembly/index.d.ts +++ b/std/assembly/index.d.ts @@ -1240,6 +1240,8 @@ declare class String { padStart(targetLength: i32, padString?: string): string; padEnd(targetLength: i32, padString?: string): string; repeat(count?: i32): string; + replace(search: string, replacement: string): string; + replaceAll(search: string, replacement: string): string; slice(beginIndex: i32, endIndex?: i32): string; split(separator?: string, limit?: i32): string[]; toString(): string; diff --git a/std/assembly/string.ts b/std/assembly/string.ts index 13319fe4..15160d97 100644 --- a/std/assembly/string.ts +++ b/std/assembly/string.ts @@ -43,7 +43,6 @@ import { idof } from "./builtins"; } @operator("[]") charAt(pos: i32): String { - assert(this !== null); if (pos >= this.length) return changetype(""); var out = __alloc(2, idof()); store(out, load(changetype(this) + (pos << 1))); @@ -81,7 +80,6 @@ import { idof } from "./builtins"; } endsWith(search: String, end: i32 = String.MAX_LENGTH): bool { - assert(this !== null); if (search === null) return false; end = min(max(end, 0), this.length); var searchLength = search.length; @@ -169,7 +167,6 @@ import { idof } from "./builtins"; } startsWith(search: String, start: i32 = 0): bool { - assert(this !== null); if (search === null) search = changetype("null"); var len = this.length; var searchStart = min(max(start, 0), len); @@ -180,7 +177,6 @@ import { idof } from "./builtins"; } substr(start: i32, length: i32 = i32.MAX_VALUE): String { // legacy - assert(this !== null); var intStart: isize = start; var end: isize = length; var size: isize = this.length; @@ -193,7 +189,6 @@ import { idof } from "./builtins"; } substring(start: i32, end: i32 = i32.MAX_VALUE): String { - assert(this !== null); var len: isize = this.length; var finalStart = min(max(start, 0), len); var finalEnd = min(max(end, 0), len); @@ -208,7 +203,6 @@ import { idof } from "./builtins"; } trim(): String { - assert(this !== null); var length = this.length; var size: usize = length << 1; while ( @@ -246,7 +240,6 @@ import { idof } from "./builtins"; } trimStart(): String { - assert(this !== null); var size = this.length << 1; var offset: usize = 0; while ( @@ -266,7 +259,6 @@ import { idof } from "./builtins"; } trimEnd(): String { - assert(this !== null); var originalSize = this.length << 1; var size = originalSize; while ( @@ -285,7 +277,6 @@ import { idof } from "./builtins"; } padStart(length: i32, pad: string = " "): String { - assert(this !== null); var thisSize = this.length << 1; var targetSize = length << 1; var padSize = pad.length << 1; @@ -306,7 +297,6 @@ import { idof } from "./builtins"; } padEnd(length: i32, pad: string = " "): String { - assert(this !== null); var thisSize = this.length << 1; var targetSize = length << 1; var padSize = pad.length << 1; @@ -327,7 +317,6 @@ import { idof } from "./builtins"; } repeat(count: i32 = 0): String { - assert(this !== null); var length = this.length; // Most browsers can't handle strings 1 << 28 chars or longer @@ -342,8 +331,121 @@ import { idof } from "./builtins"; return changetype(out); // retains } + replace(search: String, replacement: String): String { + var len: usize = this.length; + var slen: usize = search.length; + if (len <= slen) { + return len < slen ? this : select(replacement, this, search == this); + } + var index: isize = this.indexOf(search); + if (~index) { + let rlen: usize = replacement.length; + len -= slen; + let olen = len + rlen; + if (olen) { + let out = __alloc(olen << 1, idof()); + memory.copy(out, changetype(this), index << 1); + memory.copy( + out + (index << 1), + changetype(replacement), + rlen << 1 + ); + memory.copy( + out + ((index + rlen) << 1), + changetype(this) + ((index + slen) << 1), + (len - index) << 1 + ); + return changetype(out); + } + } + return this; + } + + replaceAll(search: String, replacement: String): String { + var len: usize = this.length; + var slen: usize = search.length; + if (len <= slen) { + return len < slen ? this : select(replacement, this, search == this); + } + var rlen: usize = replacement.length; + if (!slen) { + if (!rlen) return this; + // Special case: 'abc'.replaceAll('', '-') -> '-a-b-c-' + let out = __alloc((len + (len + 1) * rlen) << 1, idof()); + memory.copy(out, changetype(replacement), rlen << 1); + let offset = rlen; + for (let i: usize = 0; i < len; ++i) { + store( + changetype(out) + (offset++ << 1), + load(changetype(this) + (i << 1)) + ); + memory.copy( + out + (offset << 1), + changetype(replacement), + rlen << 1 + ); + offset += rlen; + } + return changetype(out); + } + var prev: isize = 0, next: isize = 0; + if (slen == rlen) { + // Fast path when search and replacement have same length + let size = len << 1; + let out = __alloc(size, idof()); + memory.copy(out, changetype(this), size); + while (~(next = this.indexOf(search, prev))) { + memory.copy(out + (next << 1), changetype(replacement), rlen << 1); + prev = next + slen; + } + return changetype(out); + } + var out: usize = 0, offset: usize = 0, resLen = len; + while (~(next = this.indexOf(search, prev))) { + if (!out) out = __alloc(len << 1, idof()); + if (offset > resLen) { + let newLength = resLen << 1; + out = __realloc(out, newLength << 1); + resLen = newLength; + } + let chunk = next - prev; + memory.copy( + out + (offset << 1), + changetype(this) + (prev << 1), + chunk << 1 + ); + offset += chunk; + memory.copy( + out + (offset << 1), + changetype(replacement), + rlen << 1 + ); + offset += rlen; + prev = next + slen; + } + if (offset) { + if (offset > resLen) { + let newLength = resLen << 1; + out = __realloc(out, newLength << 1); + resLen = newLength; + } + let rest = len - prev; + if (rest) { + memory.copy( + out + (offset << 1), + changetype(this) + (prev << 1), + rest << 1 + ); + } + rest += offset; + if (resLen > rest) out = __realloc(out, rest << 1); + return changetype(out); + } + return this; + } + slice(start: i32, end: i32 = i32.MAX_VALUE): String { - var len = this.length; + var len = this.length; start = start < 0 ? max(start + len, 0) : min(start, len); end = end < 0 ? max(end + len, 0) : min(end, len); len = end - start; @@ -354,7 +456,6 @@ import { idof } from "./builtins"; } split(separator: String | null = null, limit: i32 = i32.MAX_VALUE): String[] { - assert(this !== null); if (!limit) return changetype>(__allocArray(0, alignof(), idof>())); // retains if (separator === null) return [this]; var length: isize = this.length; @@ -380,7 +481,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)) != -1) { + while (~(end = this.indexOf(separator, start))) { let len = end - start; if (len > 0) { let out = __alloc(len << 1, idof()); diff --git a/std/portable/index.d.ts b/std/portable/index.d.ts index 174e6eab..ab049ee3 100644 --- a/std/portable/index.d.ts +++ b/std/portable/index.d.ts @@ -461,6 +461,7 @@ declare class String { padStart(targetLength: i32, padString?: string): string; padEnd(targetLength: i32, padString?: string): string; replace(search: string, replacement: string): string; + replaceAll(search: string, replacement: string): string; repeat(count?: i32): string; slice(beginIndex: i32, endIndex?: i32): string; split(separator?: string, limit?: i32): string[]; diff --git a/std/portable/index.js b/std/portable/index.js index acb7cdce..bc022e1d 100644 --- a/std/portable/index.js +++ b/std/portable/index.js @@ -196,6 +196,16 @@ String["fromCodePoints"] = function fromCodePoints(arr) { return String.fromCodePoint.apply(String, arr); }; +if (!String.prototype.replaceAll) { + Object.defineProperty(String.prototype, "replaceAll", { + value: function replaceAll(search, replacment) { + var res = this.split(search).join(replacment); + if (!search.length) res = replacment + res + replacment; + return res; + } + }); +} + globalScope["isInteger"] = Number.isInteger; globalScope["isFloat"] = function isFloat(arg) { diff --git a/tests/compiler/number.optimized.wat b/tests/compiler/number.optimized.wat index 35ba8c49..c4aedada 100644 --- a/tests/compiler/number.optimized.wat +++ b/tests/compiler/number.optimized.wat @@ -24,15 +24,14 @@ (data (i32.const 1152) "\10\00\00\00\01\00\00\00\04\00\00\00\10\00\00\00\d0\03\00\00\d0\03\00\00\ae\00\00\00W") (data (i32.const 1184) "(\00\00\00\01\00\00\00\00\00\00\00(\00\00\00\01\00\00\00\n\00\00\00d\00\00\00\e8\03\00\00\10\'\00\00\a0\86\01\00@B\0f\00\80\96\98\00\00\e1\f5\05\00\ca\9a;") (data (i32.const 1240) "\10\00\00\00\01\00\00\00\05\00\00\00\10\00\00\00\b0\04\00\00\b0\04\00\00(\00\00\00\n") - (data (i32.const 1272) "\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 1324) "\01\00\00\00\01") - (data (i32.const 1336) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\002\00.\000") - (data (i32.const 1360) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\003") - (data (i32.const 1384) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00-\005") - (data (i32.const 1408) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\004") - (data (i32.const 1432) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\002") - (data (i32.const 1456) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\00t\00r\00u\00e") - (data (i32.const 1480) "\n\00\00\00\01\00\00\00\01\00\00\00\n\00\00\00f\00a\00l\00s\00e") + (data (i32.const 1276) "\01\00\00\00\01") + (data (i32.const 1288) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\002\00.\000") + (data (i32.const 1312) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\003") + (data (i32.const 1336) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00-\005") + (data (i32.const 1360) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\004") + (data (i32.const 1384) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\002") + (data (i32.const 1408) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\00t\00r\00u\00e") + (data (i32.const 1432) "\n\00\00\00\01\00\00\00\01\00\00\00\n\00\00\00f\00a\00l\00s\00e") (global $number/a (mut i32) (i32.const 1)) (global $~lib/rt/stub/startOffset (mut i32) (i32.const 0)) (global $~lib/rt/stub/offset (mut i32) (i32.const 0)) @@ -1320,16 +1319,6 @@ (func $~lib/string/String#substring (; 14 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) - local.get $0 - i32.eqz - if - i32.const 0 - i32.const 1288 - i32.const 196 - i32.const 4 - call $~lib/builtins/abort - unreachable - end i32.const 0 local.get $0 call $~lib/string/String#get:length @@ -1372,7 +1361,7 @@ local.tee $2 i32.eqz if - i32.const 1336 + i32.const 1288 return end local.get $3 @@ -1432,8 +1421,8 @@ call $~lib/string/String#substring ) (func $~lib/number/Bool#toString (; 16 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - i32.const 1472 - i32.const 1496 + i32.const 1424 + i32.const 1448 local.get $0 select ) @@ -1488,7 +1477,7 @@ ) (func $start:number (; 21 ;) (type $FUNCSIG$v) (local $0 i32) - i32.const 1520 + i32.const 1472 global.set $~lib/rt/stub/startOffset global.get $~lib/rt/stub/startOffset global.set $~lib/rt/stub/offset @@ -1506,7 +1495,7 @@ unreachable end call $~lib/util/number/dtoa - i32.const 1352 + i32.const 1304 call $~lib/string/String.__eq i32.eqz if @@ -1519,7 +1508,7 @@ end i32.const 3 call $~lib/util/number/itoa32 - i32.const 1376 + i32.const 1328 call $~lib/string/String.__eq i32.eqz if @@ -1532,7 +1521,7 @@ end i32.const -5 call $~lib/util/number/itoa32 - i32.const 1400 + i32.const 1352 call $~lib/string/String.__eq i32.eqz if @@ -1545,7 +1534,7 @@ end i32.const 4 call $~lib/util/number/itoa32 - i32.const 1424 + i32.const 1376 call $~lib/string/String.__eq i32.eqz if @@ -1562,7 +1551,7 @@ global.set $number/a global.get $number/a call $~lib/util/number/itoa32 - i32.const 1448 + i32.const 1400 call $~lib/string/String.__eq i32.eqz if @@ -1592,7 +1581,7 @@ end i32.const 1 call $~lib/number/Bool#toString - i32.const 1472 + i32.const 1424 call $~lib/string/String.__eq i32.eqz if @@ -1605,7 +1594,7 @@ end i32.const 0 call $~lib/number/Bool#toString - i32.const 1496 + i32.const 1448 call $~lib/string/String.__eq i32.eqz if @@ -1641,7 +1630,7 @@ global.set $number/a local.get $0 call $~lib/util/number/itoa32 - i32.const 1448 + i32.const 1400 call $~lib/string/String.__eq i32.eqz if diff --git a/tests/compiler/number.untouched.wat b/tests/compiler/number.untouched.wat index 5668a545..fdc5689c 100644 --- a/tests/compiler/number.untouched.wat +++ b/tests/compiler/number.untouched.wat @@ -30,15 +30,14 @@ (data (i32.const 1600) "\10\00\00\00\01\00\00\00\05\00\00\00\10\00\00\00\90\05\00\00\90\05\00\00\ae\00\00\00W\00\00\00") (data (i32.const 1632) "(\00\00\00\01\00\00\00\00\00\00\00(\00\00\00\01\00\00\00\n\00\00\00d\00\00\00\e8\03\00\00\10\'\00\00\a0\86\01\00@B\0f\00\80\96\98\00\00\e1\f5\05\00\ca\9a;") (data (i32.const 1688) "\10\00\00\00\01\00\00\00\03\00\00\00\10\00\00\00p\06\00\00p\06\00\00(\00\00\00\n\00\00\00") - (data (i32.const 1720) "\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 1768) "\00\00\00\00\01\00\00\00\01\00\00\00\00\00\00\00") - (data (i32.const 1784) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\002\00.\000\00") - (data (i32.const 1808) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\003\00") - (data (i32.const 1832) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00-\005\00") - (data (i32.const 1856) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\004\00") - (data (i32.const 1880) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\002\00") - (data (i32.const 1904) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\00t\00r\00u\00e\00") - (data (i32.const 1928) "\n\00\00\00\01\00\00\00\01\00\00\00\n\00\00\00f\00a\00l\00s\00e\00") + (data (i32.const 1720) "\00\00\00\00\01\00\00\00\01\00\00\00\00\00\00\00") + (data (i32.const 1736) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\002\00.\000\00") + (data (i32.const 1760) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\003\00") + (data (i32.const 1784) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00-\005\00") + (data (i32.const 1808) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\004\00") + (data (i32.const 1832) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\002\00") + (data (i32.const 1856) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\00t\00r\00u\00e\00") + (data (i32.const 1880) "\n\00\00\00\01\00\00\00\01\00\00\00\n\00\00\00f\00a\00l\00s\00e\00") (table $0 1 funcref) (elem (i32.const 0) $null) (global $number/a (mut i32) (i32.const 1)) @@ -59,7 +58,7 @@ (global $~lib/builtins/f64.MIN_SAFE_INTEGER f64 (f64.const -9007199254740991)) (global $~lib/builtins/f64.MAX_SAFE_INTEGER f64 (f64.const 9007199254740991)) (global $~lib/builtins/f64.EPSILON f64 (f64.const 2.220446049250313e-16)) - (global $~lib/heap/__heap_base i32 (i32.const 1956)) + (global $~lib/heap/__heap_base i32 (i32.const 1908)) (export "memory" (memory $0)) (start $start) (func $~lib/rt/stub/__retain (; 1 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) @@ -3122,18 +3121,6 @@ (local $9 i32) (local $10 i32) local.get $0 - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 1736 - i32.const 196 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $0 call $~lib/string/String#get:length local.set $3 local.get $1 @@ -3197,7 +3184,7 @@ local.get $3 i32.eqz if - i32.const 1784 + i32.const 1736 call $~lib/rt/stub/__retain return end @@ -3302,11 +3289,11 @@ (local $2 i32) local.get $0 if (result i32) - i32.const 1920 + i32.const 1872 call $~lib/rt/stub/__retain local.tee $1 else - i32.const 1944 + i32.const 1896 call $~lib/rt/stub/__retain local.tee $2 end @@ -3416,7 +3403,7 @@ i32.const 0 call $~lib/number/F64#toString local.tee $1 - i32.const 1800 + i32.const 1752 call $~lib/string/String.__eq i32.eqz if @@ -3430,7 +3417,7 @@ i32.const 3 call $~lib/number/I32#toString local.tee $2 - i32.const 1824 + i32.const 1776 call $~lib/string/String.__eq i32.eqz if @@ -3444,7 +3431,7 @@ i32.const -5 call $~lib/number/I32#toString local.tee $3 - i32.const 1848 + i32.const 1800 call $~lib/string/String.__eq i32.eqz if @@ -3458,7 +3445,7 @@ i32.const 4 call $~lib/number/I32#toString local.tee $4 - i32.const 1872 + i32.const 1824 call $~lib/string/String.__eq i32.eqz if @@ -3476,7 +3463,7 @@ global.get $number/a call $~lib/number/I32#toString local.tee $5 - i32.const 1896 + i32.const 1848 call $~lib/string/String.__eq i32.eqz if @@ -3509,7 +3496,7 @@ i32.eqz call $~lib/number/Bool#toString local.tee $7 - i32.const 1920 + i32.const 1872 call $~lib/string/String.__eq i32.eqz if @@ -3524,7 +3511,7 @@ i32.eqz call $~lib/number/Bool#toString local.tee $8 - i32.const 1944 + i32.const 1896 call $~lib/string/String.__eq i32.eqz if @@ -3562,7 +3549,7 @@ local.get $10 call $~lib/number/I32#toString local.tee $10 - i32.const 1896 + i32.const 1848 call $~lib/string/String.__eq i32.eqz if diff --git a/tests/compiler/std/array-access.optimized.wat b/tests/compiler/std/array-access.optimized.wat index 0effe66d..55c05cde 100644 --- a/tests/compiler/std/array-access.optimized.wat +++ b/tests/compiler/std/array-access.optimized.wat @@ -10,8 +10,7 @@ (data (i32.const 120) "\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 168) "$\00\00\00\01\00\00\00\01\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") (data (i32.const 228) "\01\00\00\00\01") - (data (i32.const 240) "\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 288) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\00n\00u\00l\00l") + (data (i32.const 240) "\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)) @@ -140,16 +139,6 @@ (local $1 i32) (local $2 i32) (local $3 i32) - local.get $0 - i32.eqz - if - i32.const 0 - i32.const 256 - i32.const 172 - i32.const 4 - call $~lib/builtins/abort - unreachable - end i32.const 0 local.get $0 call $~lib/string/String#get:length diff --git a/tests/compiler/std/array-access.untouched.wat b/tests/compiler/std/array-access.untouched.wat index 41090631..4471a6c5 100644 --- a/tests/compiler/std/array-access.untouched.wat +++ b/tests/compiler/std/array-access.untouched.wat @@ -12,8 +12,7 @@ (data (i32.const 120) "\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 168) "$\00\00\00\01\00\00\00\01\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00") (data (i32.const 224) "\00\00\00\00\01\00\00\00\01\00\00\00\00\00\00\00") - (data (i32.const 240) "\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 288) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\00n\00u\00l\00l\00") + (data (i32.const 240) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\00n\00u\00l\00l\00") (table $0 1 funcref) (elem (i32.const 0) $null) (export "memory" (memory $0)) @@ -257,23 +256,11 @@ local.get $1 call $~lib/rt/stub/__retain drop - local.get $0 - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 256 - i32.const 172 - i32.const 4 - call $~lib/builtins/abort - unreachable - end local.get $1 i32.const 0 i32.eq if - i32.const 304 + i32.const 256 local.tee $3 local.get $1 local.tee $4 diff --git a/tests/compiler/std/array.optimized.wat b/tests/compiler/std/array.optimized.wat index d118d414..1dca1cd3 100644 --- a/tests/compiler/std/array.optimized.wat +++ b/tests/compiler/std/array.optimized.wat @@ -150,67 +150,66 @@ (data (i32.const 4236) "\01\00\00\00\01") (data (i32.const 4248) "\1c\00\00\00\01\00\00\00\00\00\00\00\1c\00\00\008\10\00\00P\10\00\008\10\00\00h\10\00\00\80\10\00\00\98\10") (data (i32.const 4296) "\1c\00\00\00\01\00\00\00\00\00\00\00\1c\00\00\00\98\10\00\008\10\00\008\10\00\00h\10\00\00P\10\00\00\80\10") - (data (i32.const 4344) "\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 4392) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\00n\00u\00l\00l") - (data (i32.const 4416) "\02\00\00\00\01\00\00\00\00\00\00\00\02\00\00\00\01") - (data (i32.const 4440) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\00t\00r\00u\00e") - (data (i32.const 4464) "\n\00\00\00\01\00\00\00\01\00\00\00\n\00\00\00f\00a\00l\00s\00e") - (data (i32.const 4496) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00,") - (data (i32.const 4520) "\14\00\00\00\01\00\00\00\01\00\00\00\14\00\00\00t\00r\00u\00e\00,\00f\00a\00l\00s\00e") - (data (i32.const 4560) "\0c\00\00\00\01\00\00\00\00\00\00\00\0c\00\00\00\01\00\00\00\fe\ff\ff\ff\fd\ff\ff\ff") - (data (i32.const 4592) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\000") - (data (i32.const 4616) "\n\00\00\00\01\00\00\00\01\00\00\00\n\00\00\001\00-\002\00-\003") - (data (i32.const 4648) "\0c\00\00\00\01\00\00\00\00\00\00\00\0c\00\00\00\01\00\00\00\02\00\00\00\03") - (data (i32.const 4680) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00-") - (data (i32.const 4704) "\08\00\00\00\01\00\00\00\00\00\00\00\08\00\00\00\00\00\00\80\00\00\00\80") - (data (i32.const 4728) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00_\00_") - (data (i32.const 4752) "0\00\00\00\01\00\00\00\01\00\00\000\00\00\00-\002\001\004\007\004\008\003\006\004\008\00_\00_\00-\002\001\004\007\004\008\003\006\004\008") - (data (i32.const 4816) "0\00\00\00\01\00\00\00\00\00\00\000") - (data (i32.const 4846) "\f0?\00\00\00\00\00\00\00\c0\00\00\00\00\00\00\f8\7f\00\00\00\00\00\00\f0\ff\00\00\00\00\00\00\f0\7f") - (data (i32.const 4880) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00,\00 ") - (data (i32.const 4904) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\000\00.\000") - (data (i32.const 4928) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00N\00a\00N") - (data (i32.const 4952) "\12\00\00\00\01\00\00\00\01\00\00\00\12\00\00\00-\00I\00n\00f\00i\00n\00i\00t\00y") - (data (i32.const 4992) "\10\00\00\00\01\00\00\00\01\00\00\00\10\00\00\00I\00n\00f\00i\00n\00i\00t\00y") - (data (i32.const 5024) "\b8\02\00\00\01\00\00\00\00\00\00\00\b8\02\00\00\88\02\1c\08\a0\d5\8f\fav\bf>\a2\7f\e1\ae\bav\acU0 \fb\16\8b\ea5\ce]J\89B\cf-;eU\aa\b0k\9a\dfE\1a=\03\cf\1a\e6\ca\c6\9a\c7\17\fep\abO\dc\bc\be\fc\b1w\ff\0c\d6kA\ef\91V\be<\fc\7f\90\ad\1f\d0\8d\83\9aU1(\\Q\d3\b5\c9\a6\ad\8f\acq\9d\cb\8b\ee#w\"\9c\eamSx@\91I\cc\aeW\ce\b6]y\12<\827V\fbM6\94\10\c2O\98H8o\ea\96\90\c7:\82%\cb\85t\d7\f4\97\bf\97\cd\cf\86\a0\e5\ac*\17\98\n4\ef\8e\b25*\fbg8\b2;?\c6\d2\df\d4\c8\84\ba\cd\d3\1a\'D\dd\c5\96\c9%\bb\ce\9fk\93\84\a5b}$l\ac\db\f6\da_\0dXf\ab\a3&\f1\c3\de\93\f8\e2\f3\b8\80\ff\aa\a8\ad\b5\b5\8bJ|l\05_b\87S0\c14`\ff\bc\c9U&\ba\91\8c\85N\96\bd~)p$w\f9\df\8f\b8\e5\b8\9f\bd\df\a6\94}t\88\cf_\a9\f8\cf\9b\a8\8f\93pD\b9k\15\0f\bf\f8\f0\08\8a\b611eU%\b0\cd\ac\7f{\d0\c6\e2?\99\06;+*\c4\10\\\e4\d3\92si\99$$\aa\0e\ca\00\83\f2\b5\87\fd\eb\1a\11\92d\08\e5\bc\cc\88Po\t\cc\bc\8c,e\19\e2X\17\b7\d1\00\00\00\00\00\00@\9c\00\00\00\00\10\a5\d4\e8\00\00b\ac\c5\ebx\ad\84\t\94\f8x9?\81\b3\15\07\c9{\ce\97\c0p\\\ea{\ce2~\8fh\80\e9\ab\a48\d2\d5E\"\9a\17&\'O\9f\'\fb\c4\d41\a2c\ed\a8\ad\c8\8c8e\de\b0\dbe\ab\1a\8e\08\c7\83\9a\1dqB\f9\1d]\c4X\e7\1b\a6,iM\92\ea\8dp\1ad\ee\01\daJw\ef\9a\99\a3m\a2\85k}\b4{x\t\f2w\18\ddy\a1\e4T\b4\c2\c5\9b[\92\86[\86=]\96\c8\c5S5\c8\b3\a0\97\fa\\\b4*\95\e3_\a0\99\bd\9fF\de%\8c9\db4\c2\9b\a5\\\9f\98\a3r\9a\c6\f6\ce\be\e9TS\bf\dc\b7\e2A\"\f2\17\f3\fc\88\a5x\\\d3\9b\ce \cc\dfS!{\f3Z\16\98:0\1f\97\dc\b5\a0\e2\96\b3\e3\\S\d1\d9\a8\a2\7f\e1\ae\bav\acU0 \fb\16\8b\ea5\ce]J\89B\cf-;eU\aa\b0k\9a\dfE\1a=\03\cf\1a\e6\ca\c6\9a\c7\17\fep\abO\dc\bc\be\fc\b1w\ff\0c\d6kA\ef\91V\be<\fc\7f\90\ad\1f\d0\8d\83\9aU1(\\Q\d3\b5\c9\a6\ad\8f\acq\9d\cb\8b\ee#w\"\9c\eamSx@\91I\cc\aeW\ce\b6]y\12<\827V\fbM6\94\10\c2O\98H8o\ea\96\90\c7:\82%\cb\85t\d7\f4\97\bf\97\cd\cf\86\a0\e5\ac*\17\98\n4\ef\8e\b25*\fbg8\b2;?\c6\d2\df\d4\c8\84\ba\cd\d3\1a\'D\dd\c5\96\c9%\bb\ce\9fk\93\84\a5b}$l\ac\db\f6\da_\0dXf\ab\a3&\f1\c3\de\93\f8\e2\f3\b8\80\ff\aa\a8\ad\b5\b5\8bJ|l\05_b\87S0\c14`\ff\bc\c9U&\ba\91\8c\85N\96\bd~)p$w\f9\df\8f\b8\e5\b8\9f\bd\df\a6\94}t\88\cf_\a9\f8\cf\9b\a8\8f\93pD\b9k\15\0f\bf\f8\f0\08\8a\b611eU%\b0\cd\ac\7f{\d0\c6\e2?\99\06;+*\c4\10\\\e4\d3\92si\99$$\aa\0e\ca\00\83\f2\b5\87\fd\eb\1a\11\92d\08\e5\bc\cc\88Po\t\cc\bc\8c,e\19\e2X\17\b7\d1\00\00\00\00\00\00@\9c\00\00\00\00\10\a5\d4\e8\00\00b\ac\c5\ebx\ad\84\t\94\f8x9?\81\b3\15\07\c9{\ce\97\c0p\\\ea{\ce2~\8fh\80\e9\ab\a48\d2\d5E\"\9a\17&\'O\9f\'\fb\c4\d41\a2c\ed\a8\ad\c8\8c8e\de\b0\dbe\ab\1a\8e\08\c7\83\9a\1dqB\f9\1d]\c4X\e7\1b\a6,iM\92\ea\8dp\1ad\ee\01\daJw\ef\9a\99\a3m\a2\85k}\b4{x\t\f2w\18\ddy\a1\e4T\b4\c2\c5\9b[\92\86[\86=]\96\c8\c5S5\c8\b3\a0\97\fa\\\b4*\95\e3_\a0\99\bd\9fF\de%\8c9\db4\c2\9b\a5\\\9f\98\a3r\9a\c6\f6\ce\be\e9TS\bf\dc\b7\e2A\"\f2\17\f3\fc\88\a5x\\\d3\9b\ce \cc\dfS!{\f3Z\16\98:0\1f\97\dc\b5\a0\e2\96\b3\e3\\S\d1\d9\a8~anonymous|0 $~lib/util/sort/COMPARATOR~anonymous|0 $~lib/util/sort/COMPARATOR~anonymous|0 $~lib/util/sort/COMPARATOR~anonymous|0 $~lib/util/sort/COMPARATOR~anonymous|0 $~lib/util/sort/COMPARATOR~anonymous|0 $start:std/array~anonymous|44 $~lib/util/sort/COMPARATOR~anonymous|0 $start:std/array~anonymous|44 $start:std/array~anonymous|47 $start:std/array~anonymous|48 $~lib/util/sort/COMPARATOR<~lib/string/String | null>~anonymous|0 $~lib/util/sort/COMPARATOR<~lib/string/String | null>~anonymous|0) (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) @@ -819,10 +818,10 @@ if unreachable end - i32.const 7472 + i32.const 7424 i32.const 0 i32.store - i32.const 9040 + i32.const 8992 i32.const 0 i32.store i32.const 0 @@ -836,7 +835,7 @@ local.get $0 i32.const 2 i32.shl - i32.const 7472 + i32.const 7424 i32.add i32.const 0 i32.store offset=4 @@ -855,7 +854,7 @@ i32.add i32.const 2 i32.shl - i32.const 7472 + i32.const 7424 i32.add i32.const 0 i32.store offset=96 @@ -873,13 +872,13 @@ br $loop|0 end end - i32.const 7472 - i32.const 9056 + i32.const 7424 + i32.const 9008 memory.size i32.const 16 i32.shl call $~lib/rt/tlsf/addMemory - i32.const 7472 + i32.const 7424 global.set $~lib/rt/tlsf/ROOT ) (func $~lib/rt/tlsf/prepareSize (; 10 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) @@ -1271,7 +1270,7 @@ ) (func $~lib/rt/pure/__retain (; 17 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 - i32.const 7460 + i32.const 7412 i32.gt_u if local.get $0 @@ -1309,7 +1308,7 @@ ) (func $~lib/rt/__typeinfo (; 19 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 - i32.const 7248 + i32.const 7200 i32.load i32.gt_u if @@ -1323,7 +1322,7 @@ local.get $0 i32.const 3 i32.shl - i32.const 7252 + i32.const 7204 i32.add i32.load ) @@ -1695,7 +1694,7 @@ ) (func $~lib/rt/pure/__release (; 25 ;) (type $FUNCSIG$vi) (param $0 i32) local.get $0 - i32.const 7460 + i32.const 7412 i32.gt_u if local.get $0 @@ -6768,16 +6767,16 @@ i32.eqz if local.get $1 - i32.const 4408 + i32.const 4360 i32.ne if - i32.const 4408 + i32.const 4360 call $~lib/rt/pure/__retain drop local.get $1 call $~lib/rt/pure/__release end - i32.const 4408 + i32.const 4360 local.set $1 end local.get $0 @@ -6827,7 +6826,7 @@ call $~lib/rt/pure/__retain drop local.get $0 - i32.const 4408 + i32.const 4360 local.get $0 select local.get $1 @@ -6922,16 +6921,6 @@ (func $~lib/string/String#substring (; 153 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) - local.get $0 - i32.eqz - if - i32.const 0 - i32.const 4360 - i32.const 196 - i32.const 4 - call $~lib/builtins/abort - unreachable - end i32.const 0 local.get $0 call $~lib/string/String#get:length @@ -7015,7 +7004,7 @@ (local $6 i32) (local $7 i32) (local $8 i32) - i32.const 4512 + i32.const 4464 call $~lib/rt/pure/__retain drop local.get $0 @@ -7028,7 +7017,7 @@ if i32.const 4248 call $~lib/rt/pure/__retain - i32.const 4512 + i32.const 4464 call $~lib/rt/pure/__release return end @@ -7038,17 +7027,17 @@ local.get $1 i32.eqz if - i32.const 4456 - i32.const 4480 + i32.const 4408 + i32.const 4432 local.get $3 i32.load8_u select call $~lib/rt/pure/__retain - i32.const 4512 + i32.const 4464 call $~lib/rt/pure/__release return end - i32.const 4512 + i32.const 4464 call $~lib/string/String#get:length local.tee $4 i32.const 5 @@ -7085,8 +7074,8 @@ i32.shl local.get $2 i32.add - i32.const 4456 - i32.const 4480 + i32.const 4408 + i32.const 4432 local.get $8 select local.get $6 @@ -7104,7 +7093,7 @@ i32.shl local.get $2 i32.add - i32.const 4512 + i32.const 4464 local.get $4 i32.const 1 i32.shl @@ -7135,8 +7124,8 @@ i32.shl local.get $2 i32.add - i32.const 4456 - i32.const 4480 + i32.const 4408 + i32.const 4432 local.get $3 select local.get $1 @@ -7153,13 +7142,13 @@ local.get $2 local.get $0 call $~lib/string/String#substring - i32.const 4512 + i32.const 4464 call $~lib/rt/pure/__release local.get $2 call $~lib/rt/pure/__release return end - i32.const 4512 + i32.const 4464 call $~lib/rt/pure/__release local.get $2 ) @@ -7245,7 +7234,7 @@ local.get $0 i32.eqz if - i32.const 4608 + i32.const 4560 call $~lib/rt/pure/__retain return end @@ -7467,7 +7456,7 @@ local.get $0 i32.eqz if - i32.const 4608 + i32.const 4560 call $~lib/rt/pure/__retain return end @@ -7689,7 +7678,7 @@ local.tee $7 call $~lib/util/number/decimalCount32 local.set $4 - i32.const 6068 + i32.const 6020 i32.load local.set $13 loop $continue|0 @@ -8416,7 +8405,7 @@ i32.shl i32.sub global.set $~lib/util/number/_K - i32.const 5756 + i32.const 5708 i32.load local.get $3 i32.const 3 @@ -8424,7 +8413,7 @@ i32.add i64.load global.set $~lib/util/number/_frc_pow - i32.const 5980 + i32.const 5932 i32.load local.get $3 i32.const 1 @@ -8595,7 +8584,7 @@ f64.const 0 f64.eq if - i32.const 4920 + i32.const 4872 call $~lib/rt/pure/__retain return end @@ -8606,12 +8595,12 @@ local.get $0 call $~lib/number/isNaN if - i32.const 4944 + i32.const 4896 call $~lib/rt/pure/__retain return end - i32.const 4968 - i32.const 5008 + i32.const 4920 + i32.const 4960 local.get $0 f64.const 0 f64.lt @@ -8690,8 +8679,8 @@ i32.add local.set $1 local.get $0 - i32.const 4968 - i32.const 5008 + i32.const 4920 + i32.const 4960 local.get $3 select local.get $1 @@ -8714,7 +8703,7 @@ (local $4 i32) (local $5 i32) (local $6 i32) - i32.const 4896 + i32.const 4848 call $~lib/rt/pure/__retain drop local.get $0 @@ -8727,7 +8716,7 @@ if i32.const 4248 call $~lib/rt/pure/__retain - i32.const 4896 + i32.const 4848 call $~lib/rt/pure/__release return end @@ -8744,11 +8733,11 @@ call $~lib/rt/pure/__retain local.get $0 call $~lib/rt/pure/__release - i32.const 4896 + i32.const 4848 call $~lib/rt/pure/__release return end - i32.const 4896 + i32.const 4848 call $~lib/string/String#get:length local.tee $4 i32.const 28 @@ -8790,7 +8779,7 @@ i32.shl local.get $1 i32.add - i32.const 4896 + i32.const 4848 local.get $4 i32.const 1 i32.shl @@ -8825,13 +8814,13 @@ local.get $1 local.get $0 call $~lib/string/String#substring - i32.const 4896 + i32.const 4848 call $~lib/rt/pure/__release local.get $1 call $~lib/rt/pure/__release return end - i32.const 4896 + i32.const 4848 call $~lib/rt/pure/__release local.get $1 ) @@ -9063,7 +9052,7 @@ (local $6 i32) (local $7 i32) (local $8 i32) - i32.const 4512 + i32.const 4464 call $~lib/rt/pure/__retain drop local.get $0 @@ -9076,7 +9065,7 @@ if i32.const 4248 call $~lib/rt/pure/__retain - i32.const 4512 + i32.const 4464 call $~lib/rt/pure/__release return end @@ -9086,13 +9075,13 @@ local.get $3 i32.eqz if - i32.const 6248 + i32.const 6200 call $~lib/rt/pure/__retain - i32.const 4512 + i32.const 4464 call $~lib/rt/pure/__release return end - i32.const 4512 + i32.const 4464 call $~lib/string/String#get:length local.tee $5 i32.const 15 @@ -9140,7 +9129,7 @@ i32.shl local.get $2 i32.add - i32.const 6248 + i32.const 6200 i32.const 30 call $~lib/memory/memory.copy local.get $1 @@ -9155,7 +9144,7 @@ i32.shl local.get $2 i32.add - i32.const 4512 + i32.const 4464 local.get $5 i32.const 1 i32.shl @@ -9184,7 +9173,7 @@ i32.shl local.get $2 i32.add - i32.const 6248 + i32.const 6200 i32.const 30 call $~lib/memory/memory.copy local.get $1 @@ -9199,7 +9188,7 @@ local.get $2 local.get $1 call $~lib/string/String#substring - i32.const 4512 + i32.const 4464 call $~lib/rt/pure/__release local.get $2 call $~lib/rt/pure/__release @@ -9207,7 +9196,7 @@ call $~lib/rt/pure/__release return end - i32.const 4512 + i32.const 4464 call $~lib/rt/pure/__release local.get $0 call $~lib/rt/pure/__release @@ -9215,7 +9204,7 @@ ) (func $~lib/array/Array#toString (; 176 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 - i32.const 4512 + i32.const 4464 call $~lib/array/Array#join ) (func $~lib/util/number/itoa_stream (; 177 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) @@ -9280,7 +9269,7 @@ (local $4 i32) (local $5 i32) (local $6 i32) - i32.const 4512 + i32.const 4464 call $~lib/rt/pure/__retain drop local.get $0 @@ -9293,7 +9282,7 @@ if i32.const 4248 call $~lib/rt/pure/__retain - i32.const 4512 + i32.const 4464 call $~lib/rt/pure/__release return end @@ -9310,11 +9299,11 @@ call $~lib/rt/pure/__retain local.get $0 call $~lib/rt/pure/__release - i32.const 4512 + i32.const 4464 call $~lib/rt/pure/__release return end - i32.const 4512 + i32.const 4464 call $~lib/string/String#get:length local.tee $4 i32.const 11 @@ -9354,7 +9343,7 @@ i32.shl local.get $1 i32.add - i32.const 4512 + i32.const 4464 local.get $4 i32.const 1 i32.shl @@ -9387,13 +9376,13 @@ local.get $1 local.get $0 call $~lib/string/String#substring - i32.const 4512 + i32.const 4464 call $~lib/rt/pure/__release local.get $1 call $~lib/rt/pure/__release return end - i32.const 4512 + i32.const 4464 call $~lib/rt/pure/__release local.get $1 ) @@ -9434,7 +9423,7 @@ (local $4 i32) (local $5 i32) (local $6 i32) - i32.const 4512 + i32.const 4464 call $~lib/rt/pure/__retain drop local.get $0 @@ -9447,7 +9436,7 @@ if i32.const 4248 call $~lib/rt/pure/__retain - i32.const 4512 + i32.const 4464 call $~lib/rt/pure/__release return end @@ -9464,11 +9453,11 @@ call $~lib/rt/pure/__retain local.get $0 call $~lib/rt/pure/__release - i32.const 4512 + i32.const 4464 call $~lib/rt/pure/__release return end - i32.const 4512 + i32.const 4464 call $~lib/string/String#get:length local.tee $4 i32.const 10 @@ -9510,7 +9499,7 @@ i32.shl local.get $1 i32.add - i32.const 4512 + i32.const 4464 local.get $4 i32.const 1 i32.shl @@ -9545,13 +9534,13 @@ local.get $1 local.get $0 call $~lib/string/String#substring - i32.const 4512 + i32.const 4464 call $~lib/rt/pure/__release local.get $1 call $~lib/rt/pure/__release return end - i32.const 4512 + i32.const 4464 call $~lib/rt/pure/__release local.get $1 ) @@ -9640,7 +9629,7 @@ local.get $0 i64.eqz if - i32.const 4608 + i32.const 4560 call $~lib/rt/pure/__retain return end @@ -9724,7 +9713,7 @@ (local $4 i32) (local $5 i32) (local $6 i32) - i32.const 4512 + i32.const 4464 call $~lib/rt/pure/__retain drop local.get $0 @@ -9737,7 +9726,7 @@ if i32.const 4248 call $~lib/rt/pure/__retain - i32.const 4512 + i32.const 4464 call $~lib/rt/pure/__release return end @@ -9754,11 +9743,11 @@ call $~lib/rt/pure/__retain local.get $0 call $~lib/rt/pure/__release - i32.const 4512 + i32.const 4464 call $~lib/rt/pure/__release return end - i32.const 4512 + i32.const 4464 call $~lib/string/String#get:length local.tee $4 i32.const 20 @@ -9800,7 +9789,7 @@ i32.shl local.get $1 i32.add - i32.const 4512 + i32.const 4464 local.get $4 i32.const 1 i32.shl @@ -9835,13 +9824,13 @@ local.get $1 local.get $0 call $~lib/string/String#substring - i32.const 4512 + i32.const 4464 call $~lib/rt/pure/__release local.get $1 call $~lib/rt/pure/__release return end - i32.const 4512 + i32.const 4464 call $~lib/rt/pure/__release local.get $1 ) @@ -9853,7 +9842,7 @@ local.get $0 i64.eqz if - i32.const 4608 + i32.const 4560 call $~lib/rt/pure/__retain return end @@ -9978,7 +9967,7 @@ (local $4 i32) (local $5 i32) (local $6 i32) - i32.const 4512 + i32.const 4464 call $~lib/rt/pure/__retain drop local.get $0 @@ -9991,7 +9980,7 @@ if i32.const 4248 call $~lib/rt/pure/__retain - i32.const 4512 + i32.const 4464 call $~lib/rt/pure/__release return end @@ -10008,11 +9997,11 @@ call $~lib/rt/pure/__retain local.get $0 call $~lib/rt/pure/__release - i32.const 4512 + i32.const 4464 call $~lib/rt/pure/__release return end - i32.const 4512 + i32.const 4464 call $~lib/string/String#get:length local.tee $4 i32.const 21 @@ -10054,7 +10043,7 @@ i32.shl local.get $1 i32.add - i32.const 4512 + i32.const 4464 local.get $4 i32.const 1 i32.shl @@ -10089,19 +10078,19 @@ local.get $1 local.get $0 call $~lib/string/String#substring - i32.const 4512 + i32.const 4464 call $~lib/rt/pure/__release local.get $1 call $~lib/rt/pure/__release return end - i32.const 4512 + i32.const 4464 call $~lib/rt/pure/__release local.get $1 ) (func $~lib/array/Array<~lib/string/String | null>#toString (; 189 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 - i32.const 4512 + i32.const 4464 call $~lib/array/Array<~lib/string/String>#join ) (func $~lib/array/Array<~lib/array/Array>#join_arr (; 190 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) @@ -10113,7 +10102,7 @@ (local $6 i32) (local $7 i32) (local $8 i32) - i32.const 4512 + i32.const 4464 call $~lib/rt/pure/__retain drop local.get $0 @@ -10126,14 +10115,14 @@ if i32.const 4248 call $~lib/rt/pure/__retain - i32.const 4512 + i32.const 4464 call $~lib/rt/pure/__release return end i32.const 4248 call $~lib/rt/pure/__retain local.set $2 - i32.const 4512 + i32.const 4464 call $~lib/string/String#get:length local.set $7 local.get $0 @@ -10157,13 +10146,13 @@ local.get $0 if (result i32) local.get $0 - i32.const 4512 + i32.const 4464 call $~lib/array/Array#join else i32.const 4248 call $~lib/rt/pure/__retain end - i32.const 4512 + i32.const 4464 call $~lib/rt/pure/__release local.get $2 call $~lib/rt/pure/__release @@ -10199,7 +10188,7 @@ local.get $2 local.tee $1 local.get $0 - i32.const 4512 + i32.const 4464 call $~lib/array/Array#join local.tee $6 call $~lib/string/String.__concat @@ -10223,7 +10212,7 @@ if local.get $2 local.tee $1 - i32.const 4512 + i32.const 4464 call $~lib/string/String.__concat local.tee $6 local.tee $2 @@ -10267,7 +10256,7 @@ local.get $2 local.tee $0 local.get $1 - i32.const 4512 + i32.const 4464 call $~lib/array/Array#join local.tee $3 call $~lib/string/String.__concat @@ -10287,7 +10276,7 @@ local.get $4 call $~lib/rt/pure/__release end - i32.const 4512 + i32.const 4464 call $~lib/rt/pure/__release local.get $1 call $~lib/rt/pure/__release @@ -10330,7 +10319,7 @@ (local $4 i32) (local $5 i32) (local $6 i32) - i32.const 4512 + i32.const 4464 call $~lib/rt/pure/__retain drop local.get $0 @@ -10343,7 +10332,7 @@ if i32.const 4248 call $~lib/rt/pure/__retain - i32.const 4512 + i32.const 4464 call $~lib/rt/pure/__release return end @@ -10360,11 +10349,11 @@ call $~lib/rt/pure/__retain local.get $0 call $~lib/rt/pure/__release - i32.const 4512 + i32.const 4464 call $~lib/rt/pure/__release return end - i32.const 4512 + i32.const 4464 call $~lib/string/String#get:length local.tee $4 i32.const 10 @@ -10404,7 +10393,7 @@ i32.shl local.get $1 i32.add - i32.const 4512 + i32.const 4464 local.get $4 i32.const 1 i32.shl @@ -10437,23 +10426,23 @@ local.get $1 local.get $0 call $~lib/string/String#substring - i32.const 4512 + i32.const 4464 call $~lib/rt/pure/__release local.get $1 call $~lib/rt/pure/__release return end - i32.const 4512 + i32.const 4464 call $~lib/rt/pure/__release local.get $1 ) (func $~lib/array/Array#join (; 193 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - i32.const 4512 + i32.const 4464 call $~lib/rt/pure/__retain drop local.get $0 call $~lib/array/Array#join_int - i32.const 4512 + i32.const 4464 call $~lib/rt/pure/__release ) (func $~lib/array/Array<~lib/array/Array>#join_arr (; 194 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) @@ -10465,7 +10454,7 @@ (local $6 i32) (local $7 i32) (local $8 i32) - i32.const 4512 + i32.const 4464 call $~lib/rt/pure/__retain drop local.get $0 @@ -10478,14 +10467,14 @@ if i32.const 4248 call $~lib/rt/pure/__retain - i32.const 4512 + i32.const 4464 call $~lib/rt/pure/__release return end i32.const 4248 call $~lib/rt/pure/__retain local.set $2 - i32.const 4512 + i32.const 4464 call $~lib/string/String#get:length local.set $7 local.get $0 @@ -10514,7 +10503,7 @@ i32.const 4248 call $~lib/rt/pure/__retain end - i32.const 4512 + i32.const 4464 call $~lib/rt/pure/__release local.get $2 call $~lib/rt/pure/__release @@ -10573,7 +10562,7 @@ if local.get $2 local.tee $1 - i32.const 4512 + i32.const 4464 call $~lib/string/String.__concat local.tee $6 local.tee $2 @@ -10636,7 +10625,7 @@ local.get $4 call $~lib/rt/pure/__release end - i32.const 4512 + i32.const 4464 call $~lib/rt/pure/__release local.get $1 call $~lib/rt/pure/__release @@ -10651,7 +10640,7 @@ (local $6 i32) (local $7 i32) (local $8 i32) - i32.const 4512 + i32.const 4464 call $~lib/rt/pure/__retain drop local.get $0 @@ -10664,14 +10653,14 @@ if i32.const 4248 call $~lib/rt/pure/__retain - i32.const 4512 + i32.const 4464 call $~lib/rt/pure/__release return end i32.const 4248 call $~lib/rt/pure/__retain local.set $2 - i32.const 4512 + i32.const 4464 call $~lib/string/String#get:length local.set $7 local.get $0 @@ -10695,13 +10684,13 @@ local.get $0 if (result i32) local.get $0 - i32.const 4512 + i32.const 4464 call $~lib/array/Array#join else i32.const 4248 call $~lib/rt/pure/__retain end - i32.const 4512 + i32.const 4464 call $~lib/rt/pure/__release local.get $2 call $~lib/rt/pure/__release @@ -10737,7 +10726,7 @@ local.get $2 local.tee $1 local.get $0 - i32.const 4512 + i32.const 4464 call $~lib/array/Array#join local.tee $6 call $~lib/string/String.__concat @@ -10761,7 +10750,7 @@ if local.get $2 local.tee $1 - i32.const 4512 + i32.const 4464 call $~lib/string/String.__concat local.tee $6 local.tee $2 @@ -10805,7 +10794,7 @@ local.get $2 local.tee $0 local.get $1 - i32.const 4512 + i32.const 4464 call $~lib/array/Array#join local.tee $3 call $~lib/string/String.__concat @@ -10825,19 +10814,19 @@ local.get $4 call $~lib/rt/pure/__release end - i32.const 4512 + i32.const 4464 call $~lib/rt/pure/__release local.get $1 call $~lib/rt/pure/__release local.get $2 ) (func $~lib/array/Array<~lib/array/Array>#join (; 196 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - i32.const 4512 + i32.const 4464 call $~lib/rt/pure/__retain drop local.get $0 call $~lib/array/Array<~lib/array/Array>#join_arr - i32.const 4512 + i32.const 4464 call $~lib/rt/pure/__release ) (func $~lib/array/Array<~lib/array/Array<~lib/array/Array>>#join_arr (; 197 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) @@ -10849,7 +10838,7 @@ (local $6 i32) (local $7 i32) (local $8 i32) - i32.const 4512 + i32.const 4464 call $~lib/rt/pure/__retain drop local.get $0 @@ -10862,14 +10851,14 @@ if i32.const 4248 call $~lib/rt/pure/__retain - i32.const 4512 + i32.const 4464 call $~lib/rt/pure/__release return end i32.const 4248 call $~lib/rt/pure/__retain local.set $2 - i32.const 4512 + i32.const 4464 call $~lib/string/String#get:length local.set $7 local.get $0 @@ -10898,7 +10887,7 @@ i32.const 4248 call $~lib/rt/pure/__retain end - i32.const 4512 + i32.const 4464 call $~lib/rt/pure/__release local.get $2 call $~lib/rt/pure/__release @@ -10957,7 +10946,7 @@ if local.get $2 local.tee $1 - i32.const 4512 + i32.const 4464 call $~lib/string/String.__concat local.tee $6 local.tee $2 @@ -11020,7 +11009,7 @@ local.get $4 call $~lib/rt/pure/__release end - i32.const 4512 + i32.const 4464 call $~lib/rt/pure/__release local.get $1 call $~lib/rt/pure/__release @@ -15804,20 +15793,20 @@ i32.const 2 i32.const 0 i32.const 15 - i32.const 4432 + i32.const 4384 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain local.set $9 - i32.const 4512 + i32.const 4464 call $~lib/rt/pure/__retain drop local.get $9 call $~lib/array/Array#join_bool local.set $11 - i32.const 4512 + i32.const 4464 call $~lib/rt/pure/__release local.get $11 - i32.const 4536 + i32.const 4488 call $~lib/string/String.__eq i32.eqz if @@ -15831,14 +15820,14 @@ i32.const 3 i32.const 2 i32.const 3 - i32.const 4576 + i32.const 4528 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain local.tee $25 i32.const 4248 call $~lib/array/Array#join local.tee $26 - i32.const 4632 + i32.const 4584 call $~lib/string/String.__eq i32.eqz if @@ -15852,14 +15841,14 @@ i32.const 3 i32.const 2 i32.const 7 - i32.const 4664 + i32.const 4616 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain local.tee $8 - i32.const 4696 + i32.const 4648 call $~lib/array/Array#join local.tee $27 - i32.const 4632 + i32.const 4584 call $~lib/string/String.__eq i32.eqz if @@ -15873,14 +15862,14 @@ i32.const 2 i32.const 2 i32.const 3 - i32.const 4720 + i32.const 4672 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain local.tee $3 - i32.const 4744 + i32.const 4696 call $~lib/array/Array#join local.tee $4 - i32.const 4768 + i32.const 4720 call $~lib/string/String.__eq i32.eqz if @@ -15894,20 +15883,20 @@ i32.const 6 i32.const 3 i32.const 9 - i32.const 4832 + i32.const 4784 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain local.set $12 - i32.const 4896 + i32.const 4848 call $~lib/rt/pure/__retain drop local.get $12 call $~lib/array/Array#join_flt local.set $13 - i32.const 4896 + i32.const 4848 call $~lib/rt/pure/__release local.get $13 - i32.const 6096 + i32.const 6048 call $~lib/string/String.__eq i32.eqz if @@ -15921,14 +15910,14 @@ i32.const 3 i32.const 2 i32.const 14 - i32.const 6216 + i32.const 6168 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain local.tee $5 i32.const 4248 call $~lib/array/Array<~lib/string/String>#join local.tee $6 - i32.const 6192 + i32.const 6144 call $~lib/string/String.__eq i32.eqz if @@ -15963,16 +15952,16 @@ local.get $2 call $~lib/rt/pure/__retain local.set $14 - i32.const 4512 + i32.const 4464 call $~lib/rt/pure/__retain drop local.get $14 call $~lib/array/Array#join_ref local.set $2 - i32.const 4512 + i32.const 4464 call $~lib/rt/pure/__release local.get $2 - i32.const 6296 + i32.const 6248 call $~lib/string/String.__eq i32.eqz if @@ -16018,7 +16007,7 @@ i32.const 0 i32.const 2 i32.const 3 - i32.const 6376 + i32.const 6328 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain local.tee $15 @@ -16027,7 +16016,7 @@ i32.const 1 i32.const 2 i32.const 3 - i32.const 6392 + i32.const 6344 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain local.tee $16 @@ -16036,7 +16025,7 @@ i32.const 2 i32.const 2 i32.const 3 - i32.const 6416 + i32.const 6368 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain local.tee $17 @@ -16045,7 +16034,7 @@ i32.const 4 i32.const 2 i32.const 3 - i32.const 6440 + i32.const 6392 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain local.tee $18 @@ -16068,7 +16057,7 @@ local.get $30 call $~lib/array/Array#toString local.tee $20 - i32.const 6192 + i32.const 6144 call $~lib/string/String.__eq i32.eqz if @@ -16082,7 +16071,7 @@ local.get $31 call $~lib/array/Array#toString local.tee $21 - i32.const 6472 + i32.const 6424 call $~lib/string/String.__eq i32.eqz if @@ -16096,7 +16085,7 @@ local.get $32 call $~lib/array/Array#toString local.tee $22 - i32.const 6496 + i32.const 6448 call $~lib/string/String.__eq i32.eqz if @@ -16110,20 +16099,20 @@ i32.const 3 i32.const 0 i32.const 20 - i32.const 6528 + i32.const 6480 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain local.set $33 - i32.const 4512 + i32.const 4464 call $~lib/rt/pure/__retain drop local.get $33 call $~lib/array/Array#join_int local.set $3 - i32.const 4512 + i32.const 4464 call $~lib/rt/pure/__release local.get $3 - i32.const 6552 + i32.const 6504 call $~lib/string/String.__eq i32.eqz if @@ -16137,20 +16126,20 @@ i32.const 3 i32.const 1 i32.const 21 - i32.const 6584 + i32.const 6536 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain local.set $34 - i32.const 4512 + i32.const 4464 call $~lib/rt/pure/__retain drop local.get $34 call $~lib/array/Array#join_int local.set $4 - i32.const 4512 + i32.const 4464 call $~lib/rt/pure/__release local.get $4 - i32.const 6608 + i32.const 6560 call $~lib/string/String.__eq i32.eqz if @@ -16164,20 +16153,20 @@ i32.const 3 i32.const 3 i32.const 16 - i32.const 6648 + i32.const 6600 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain local.set $35 - i32.const 4512 + i32.const 4464 call $~lib/rt/pure/__retain drop local.get $35 call $~lib/array/Array#join_int local.set $5 - i32.const 4512 + i32.const 4464 call $~lib/rt/pure/__release local.get $5 - i32.const 6688 + i32.const 6640 call $~lib/string/String.__eq i32.eqz if @@ -16191,20 +16180,20 @@ i32.const 4 i32.const 3 i32.const 22 - i32.const 6752 + i32.const 6704 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain local.set $36 - i32.const 4512 + i32.const 4464 call $~lib/rt/pure/__retain drop local.get $36 call $~lib/array/Array#join_int local.set $6 - i32.const 4512 + i32.const 4464 call $~lib/rt/pure/__release local.get $6 - i32.const 6800 + i32.const 6752 call $~lib/string/String.__eq i32.eqz if @@ -16218,7 +16207,7 @@ i32.const 7 i32.const 2 i32.const 13 - i32.const 6904 + i32.const 6856 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain local.tee $23 @@ -16226,7 +16215,7 @@ local.tee $24 call $~lib/array/Array<~lib/string/String | null>#toString local.tee $28 - i32.const 6952 + i32.const 6904 call $~lib/string/String.__eq i32.eqz if @@ -16240,13 +16229,13 @@ i32.const 4 i32.const 2 i32.const 14 - i32.const 7048 + i32.const 7000 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain local.tee $9 call $~lib/array/Array<~lib/string/String | null>#toString local.tee $11 - i32.const 7080 + i32.const 7032 call $~lib/string/String.__eq i32.eqz if @@ -16268,7 +16257,7 @@ i32.const 2 i32.const 2 i32.const 3 - i32.const 7112 + i32.const 7064 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain local.tee $12 @@ -16278,7 +16267,7 @@ i32.const 2 i32.const 2 i32.const 3 - i32.const 7136 + i32.const 7088 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain local.tee $13 @@ -16287,16 +16276,16 @@ local.get $0 call $~lib/rt/pure/__retain local.set $7 - i32.const 4512 + i32.const 4464 call $~lib/rt/pure/__retain drop local.get $7 call $~lib/array/Array<~lib/array/Array>#join_arr local.set $2 - i32.const 4512 + i32.const 4464 call $~lib/rt/pure/__release local.get $2 - i32.const 7160 + i32.const 7112 call $~lib/string/String.__eq i32.eqz if @@ -16318,7 +16307,7 @@ i32.const 2 i32.const 0 i32.const 6 - i32.const 7192 + i32.const 7144 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain local.tee $14 @@ -16328,7 +16317,7 @@ i32.const 2 i32.const 0 i32.const 6 - i32.const 7216 + i32.const 7168 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain local.tee $25 @@ -16337,16 +16326,16 @@ local.get $0 call $~lib/rt/pure/__retain local.set $10 - i32.const 4512 + i32.const 4464 call $~lib/rt/pure/__retain drop local.get $10 call $~lib/array/Array<~lib/array/Array>#join_arr local.set $0 - i32.const 4512 + i32.const 4464 call $~lib/rt/pure/__release local.get $0 - i32.const 7160 + i32.const 7112 call $~lib/string/String.__eq i32.eqz if @@ -16374,7 +16363,7 @@ i32.const 1 i32.const 2 i32.const 7 - i32.const 7240 + i32.const 7192 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain local.tee $27 @@ -16386,16 +16375,16 @@ local.get $26 call $~lib/rt/pure/__retain local.set $8 - i32.const 4512 + i32.const 4464 call $~lib/rt/pure/__retain drop local.get $8 call $~lib/array/Array<~lib/array/Array<~lib/array/Array>>#join_arr local.set $1 - i32.const 4512 + i32.const 4464 call $~lib/rt/pure/__release local.get $1 - i32.const 6192 + i32.const 6144 call $~lib/string/String.__eq i32.eqz if @@ -16597,7 +16586,7 @@ ) (func $~lib/rt/pure/__visit (; 204 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) local.get $0 - i32.const 7460 + i32.const 7412 i32.lt_u if return diff --git a/tests/compiler/std/array.untouched.wat b/tests/compiler/std/array.untouched.wat index 8ed257a6..88d7ccea 100644 --- a/tests/compiler/std/array.untouched.wat +++ b/tests/compiler/std/array.untouched.wat @@ -147,67 +147,66 @@ (data (i32.const 4232) "\00\00\00\00\01\00\00\00\01\00\00\00\00\00\00\00") (data (i32.const 4248) "\1c\00\00\00\01\00\00\00\00\00\00\00\1c\00\00\008\10\00\00P\10\00\008\10\00\00h\10\00\00\80\10\00\00\98\10\00\00\00\00\00\00") (data (i32.const 4296) "\1c\00\00\00\01\00\00\00\00\00\00\00\1c\00\00\00\98\10\00\008\10\00\008\10\00\00h\10\00\00P\10\00\00\80\10\00\00\00\00\00\00") - (data (i32.const 4344) "\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 4392) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\00n\00u\00l\00l\00") - (data (i32.const 4416) "\02\00\00\00\01\00\00\00\00\00\00\00\02\00\00\00\01\00") - (data (i32.const 4440) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\00t\00r\00u\00e\00") - (data (i32.const 4464) "\n\00\00\00\01\00\00\00\01\00\00\00\n\00\00\00f\00a\00l\00s\00e\00") - (data (i32.const 4496) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00,\00") - (data (i32.const 4520) "\14\00\00\00\01\00\00\00\01\00\00\00\14\00\00\00t\00r\00u\00e\00,\00f\00a\00l\00s\00e\00") - (data (i32.const 4560) "\0c\00\00\00\01\00\00\00\00\00\00\00\0c\00\00\00\01\00\00\00\fe\ff\ff\ff\fd\ff\ff\ff") - (data (i32.const 4592) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\000\00") - (data (i32.const 4616) "\90\01\00\00\01\00\00\00\00\00\00\00\90\01\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\00") - (data (i32.const 5032) "\10\00\00\00\01\00\00\00\07\00\00\00\10\00\00\00\18\12\00\00\18\12\00\00\90\01\00\00d\00\00\00") - (data (i32.const 5064) "\n\00\00\00\01\00\00\00\01\00\00\00\n\00\00\001\00-\002\00-\003\00") - (data (i32.const 5096) "\0c\00\00\00\01\00\00\00\00\00\00\00\0c\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00") - (data (i32.const 5128) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00-\00") - (data (i32.const 5152) "\08\00\00\00\01\00\00\00\00\00\00\00\08\00\00\00\00\00\00\80\00\00\00\80") - (data (i32.const 5176) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00_\00_\00") - (data (i32.const 5200) "0\00\00\00\01\00\00\00\01\00\00\000\00\00\00-\002\001\004\007\004\008\003\006\004\008\00_\00_\00-\002\001\004\007\004\008\003\006\004\008\00") - (data (i32.const 5264) "0\00\00\00\01\00\00\00\00\00\00\000\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\f0?\00\00\00\00\00\00\00\c0\00\00\00\00\00\00\f8\7f\00\00\00\00\00\00\f0\ff\00\00\00\00\00\00\f0\7f") - (data (i32.const 5328) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00,\00 \00") - (data (i32.const 5352) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\000\00.\000\00") - (data (i32.const 5376) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00N\00a\00N\00") - (data (i32.const 5400) "\12\00\00\00\01\00\00\00\01\00\00\00\12\00\00\00-\00I\00n\00f\00i\00n\00i\00t\00y\00") - (data (i32.const 5440) "\10\00\00\00\01\00\00\00\01\00\00\00\10\00\00\00I\00n\00f\00i\00n\00i\00t\00y\00") - (data (i32.const 5472) "\b8\02\00\00\01\00\00\00\00\00\00\00\b8\02\00\00\88\02\1c\08\a0\d5\8f\fav\bf>\a2\7f\e1\ae\bav\acU0 \fb\16\8b\ea5\ce]J\89B\cf-;eU\aa\b0k\9a\dfE\1a=\03\cf\1a\e6\ca\c6\9a\c7\17\fep\abO\dc\bc\be\fc\b1w\ff\0c\d6kA\ef\91V\be<\fc\7f\90\ad\1f\d0\8d\83\9aU1(\\Q\d3\b5\c9\a6\ad\8f\acq\9d\cb\8b\ee#w\"\9c\eamSx@\91I\cc\aeW\ce\b6]y\12<\827V\fbM6\94\10\c2O\98H8o\ea\96\90\c7:\82%\cb\85t\d7\f4\97\bf\97\cd\cf\86\a0\e5\ac*\17\98\n4\ef\8e\b25*\fbg8\b2;?\c6\d2\df\d4\c8\84\ba\cd\d3\1a\'D\dd\c5\96\c9%\bb\ce\9fk\93\84\a5b}$l\ac\db\f6\da_\0dXf\ab\a3&\f1\c3\de\93\f8\e2\f3\b8\80\ff\aa\a8\ad\b5\b5\8bJ|l\05_b\87S0\c14`\ff\bc\c9U&\ba\91\8c\85N\96\bd~)p$w\f9\df\8f\b8\e5\b8\9f\bd\df\a6\94}t\88\cf_\a9\f8\cf\9b\a8\8f\93pD\b9k\15\0f\bf\f8\f0\08\8a\b611eU%\b0\cd\ac\7f{\d0\c6\e2?\99\06;+*\c4\10\\\e4\d3\92si\99$$\aa\0e\ca\00\83\f2\b5\87\fd\eb\1a\11\92d\08\e5\bc\cc\88Po\t\cc\bc\8c,e\19\e2X\17\b7\d1\00\00\00\00\00\00@\9c\00\00\00\00\10\a5\d4\e8\00\00b\ac\c5\ebx\ad\84\t\94\f8x9?\81\b3\15\07\c9{\ce\97\c0p\\\ea{\ce2~\8fh\80\e9\ab\a48\d2\d5E\"\9a\17&\'O\9f\'\fb\c4\d41\a2c\ed\a8\ad\c8\8c8e\de\b0\dbe\ab\1a\8e\08\c7\83\9a\1dqB\f9\1d]\c4X\e7\1b\a6,iM\92\ea\8dp\1ad\ee\01\daJw\ef\9a\99\a3m\a2\85k}\b4{x\t\f2w\18\ddy\a1\e4T\b4\c2\c5\9b[\92\86[\86=]\96\c8\c5S5\c8\b3\a0\97\fa\\\b4*\95\e3_\a0\99\bd\9fF\de%\8c9\db4\c2\9b\a5\\\9f\98\a3r\9a\c6\f6\ce\be\e9TS\bf\dc\b7\e2A\"\f2\17\f3\fc\88\a5x\\\d3\9b\ce \cc\dfS!{\f3Z\16\98:0\1f\97\dc\b5\a0\e2\96\b3\e3\\S\d1\d9\a8\a2\7f\e1\ae\bav\acU0 \fb\16\8b\ea5\ce]J\89B\cf-;eU\aa\b0k\9a\dfE\1a=\03\cf\1a\e6\ca\c6\9a\c7\17\fep\abO\dc\bc\be\fc\b1w\ff\0c\d6kA\ef\91V\be<\fc\7f\90\ad\1f\d0\8d\83\9aU1(\\Q\d3\b5\c9\a6\ad\8f\acq\9d\cb\8b\ee#w\"\9c\eamSx@\91I\cc\aeW\ce\b6]y\12<\827V\fbM6\94\10\c2O\98H8o\ea\96\90\c7:\82%\cb\85t\d7\f4\97\bf\97\cd\cf\86\a0\e5\ac*\17\98\n4\ef\8e\b25*\fbg8\b2;?\c6\d2\df\d4\c8\84\ba\cd\d3\1a\'D\dd\c5\96\c9%\bb\ce\9fk\93\84\a5b}$l\ac\db\f6\da_\0dXf\ab\a3&\f1\c3\de\93\f8\e2\f3\b8\80\ff\aa\a8\ad\b5\b5\8bJ|l\05_b\87S0\c14`\ff\bc\c9U&\ba\91\8c\85N\96\bd~)p$w\f9\df\8f\b8\e5\b8\9f\bd\df\a6\94}t\88\cf_\a9\f8\cf\9b\a8\8f\93pD\b9k\15\0f\bf\f8\f0\08\8a\b611eU%\b0\cd\ac\7f{\d0\c6\e2?\99\06;+*\c4\10\\\e4\d3\92si\99$$\aa\0e\ca\00\83\f2\b5\87\fd\eb\1a\11\92d\08\e5\bc\cc\88Po\t\cc\bc\8c,e\19\e2X\17\b7\d1\00\00\00\00\00\00@\9c\00\00\00\00\10\a5\d4\e8\00\00b\ac\c5\ebx\ad\84\t\94\f8x9?\81\b3\15\07\c9{\ce\97\c0p\\\ea{\ce2~\8fh\80\e9\ab\a48\d2\d5E\"\9a\17&\'O\9f\'\fb\c4\d41\a2c\ed\a8\ad\c8\8c8e\de\b0\dbe\ab\1a\8e\08\c7\83\9a\1dqB\f9\1d]\c4X\e7\1b\a6,iM\92\ea\8dp\1ad\ee\01\daJw\ef\9a\99\a3m\a2\85k}\b4{x\t\f2w\18\ddy\a1\e4T\b4\c2\c5\9b[\92\86[\86=]\96\c8\c5S5\c8\b3\a0\97\fa\\\b4*\95\e3_\a0\99\bd\9fF\de%\8c9\db4\c2\9b\a5\\\9f\98\a3r\9a\c6\f6\ce\be\e9TS\bf\dc\b7\e2A\"\f2\17\f3\fc\88\a5x\\\d3\9b\ce \cc\dfS!{\f3Z\16\98:0\1f\97\dc\b5\a0\e2\96\b3\e3\\S\d1\d9\a8~anonymous|0 $~lib/util/sort/COMPARATOR~anonymous|0 $~lib/util/sort/COMPARATOR~anonymous|0 $~lib/util/sort/COMPARATOR~anonymous|0 $~lib/util/sort/COMPARATOR~anonymous|1 $start:std/array~anonymous|43 $start:std/array~anonymous|44 $start:std/array~anonymous|45 $start:std/array~anonymous|46 $start:std/array~anonymous|47 $start:std/array~anonymous|48 $~lib/util/sort/COMPARATOR<~lib/string/String | null>~anonymous|0 $~lib/util/sort/COMPARATOR<~lib/string/String>~anonymous|0) (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) @@ -235,8 +234,8 @@ (global $~lib/builtins/u32.MAX_VALUE i32 (i32.const -1)) (global $~lib/builtins/i64.MAX_VALUE i64 (i64.const 9223372036854775807)) (global $~lib/started (mut i32) (i32.const 0)) - (global $~lib/rt/__rtti_base i32 (i32.const 7696)) - (global $~lib/heap/__heap_base i32 (i32.const 7908)) + (global $~lib/rt/__rtti_base i32 (i32.const 7648)) + (global $~lib/heap/__heap_base i32 (i32.const 7860)) (export "__start" (func $start)) (export "memory" (memory $0)) (func $~lib/rt/tlsf/removeBlock (; 6 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) @@ -10677,18 +10676,6 @@ ) (func $~lib/string/String#charAt (; 209 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) - local.get $0 - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 4360 - i32.const 46 - i32.const 4 - call $~lib/builtins/abort - unreachable - end local.get $1 local.get $0 call $~lib/string/String#get:length @@ -10727,7 +10714,7 @@ i32.const 0 i32.eq if - i32.const 4408 + i32.const 4360 local.tee $2 local.get $1 local.tee $3 @@ -10798,7 +10785,7 @@ call $~lib/rt/pure/__retain drop local.get $0 - i32.const 4408 + i32.const 4360 local.get $0 i32.const 0 i32.ne @@ -11426,18 +11413,6 @@ (local $9 i32) (local $10 i32) local.get $0 - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 4360 - i32.const 196 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $0 call $~lib/string/String#get:length local.set $3 local.get $1 @@ -11571,8 +11546,8 @@ local.get $2 i32.eqz if - i32.const 4456 - i32.const 4480 + i32.const 4408 + i32.const 4432 local.get $4 i32.load8_u select @@ -11631,8 +11606,8 @@ i32.const 1 i32.shl i32.add - i32.const 4456 - i32.const 4480 + i32.const 4408 + i32.const 4432 local.get $10 select local.get $6 @@ -11685,8 +11660,8 @@ i32.const 1 i32.shl i32.add - i32.const 4456 - i32.const 4480 + i32.const 4408 + i32.const 4432 local.get $10 select local.get $6 @@ -11807,7 +11782,7 @@ (local $7 i32) (local $8 i64) (local $9 i64) - i32.const 5048 + i32.const 5000 i32.load offset=4 local.set $3 block $break|0 @@ -11951,7 +11926,7 @@ local.get $0 i32.eqz if - i32.const 4608 + i32.const 4560 call $~lib/rt/pure/__retain return end @@ -12234,7 +12209,7 @@ local.get $0 i32.eqz if - i32.const 4608 + i32.const 4560 call $~lib/rt/pure/__retain return end @@ -12549,7 +12524,7 @@ local.set $14 local.get $6 local.set $15 - i32.const 6512 + i32.const 6464 i32.load offset=4 local.set $16 block $break|0 @@ -13480,11 +13455,11 @@ i32.shl i32.sub global.set $~lib/util/number/_K - i32.const 6200 + i32.const 6152 local.get $14 call $~lib/array/Array#__unchecked_get global.set $~lib/util/number/_frc_pow - i32.const 6424 + i32.const 6376 local.get $14 call $~lib/array/Array#__unchecked_get global.set $~lib/util/number/_exp_pow @@ -13745,7 +13720,7 @@ f64.const 0 f64.eq if - i32.const 5368 + i32.const 5320 call $~lib/rt/pure/__retain return end @@ -13756,12 +13731,12 @@ local.get $0 call $~lib/number/isNaN if - i32.const 5392 + i32.const 5344 call $~lib/rt/pure/__retain return end - i32.const 5416 - i32.const 5456 + i32.const 5368 + i32.const 5408 local.get $0 f64.const 0 f64.lt @@ -13849,8 +13824,8 @@ i32.add local.set $4 local.get $0 - i32.const 5416 - i32.const 5456 + i32.const 5368 + i32.const 5408 local.get $3 select local.get $4 @@ -14331,7 +14306,7 @@ local.get $2 i32.eqz if - i32.const 6696 + i32.const 6648 call $~lib/rt/pure/__retain local.set $3 local.get $1 @@ -14396,7 +14371,7 @@ i32.const 1 i32.shl i32.add - i32.const 6696 + i32.const 6648 i32.const 15 i32.const 1 i32.shl @@ -14443,7 +14418,7 @@ i32.const 1 i32.shl i32.add - i32.const 6696 + i32.const 6648 i32.const 15 i32.const 1 i32.shl @@ -14495,7 +14470,7 @@ ) (func $~lib/array/Array#toString (; 255 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 - i32.const 4512 + i32.const 4464 call $~lib/array/Array#join ) (func $~lib/util/number/itoa (; 256 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) @@ -14749,7 +14724,7 @@ ) (func $~lib/array/Array#toString (; 260 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 - i32.const 4512 + i32.const 4464 call $~lib/array/Array#join ) (func $~lib/util/number/itoa (; 261 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) @@ -14971,7 +14946,7 @@ ) (func $~lib/array/Array#toString (; 265 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 - i32.const 4512 + i32.const 4464 call $~lib/array/Array#join ) (func $~lib/util/number/decimalCount64 (; 266 ;) (type $FUNCSIG$ij) (param $0 i64) (result i32) @@ -15052,7 +15027,7 @@ (local $11 i32) (local $12 i64) (local $13 i64) - i32.const 5048 + i32.const 5000 i32.load offset=4 local.set $3 block $break|0 @@ -15178,7 +15153,7 @@ local.get $0 i64.eqz if - i32.const 4608 + i32.const 4560 call $~lib/rt/pure/__retain return end @@ -15467,7 +15442,7 @@ ) (func $~lib/array/Array#toString (; 273 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 - i32.const 4512 + i32.const 4464 call $~lib/array/Array#join ) (func $~lib/util/number/itoa64 (; 274 ;) (type $FUNCSIG$ij) (param $0 i64) (result i32) @@ -15482,7 +15457,7 @@ local.get $0 i64.eqz if - i32.const 4608 + i32.const 4560 call $~lib/rt/pure/__retain return end @@ -15814,7 +15789,7 @@ ) (func $~lib/array/Array#toString (; 279 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 - i32.const 4512 + i32.const 4464 call $~lib/array/Array#join ) (func $~lib/array/Array<~lib/string/String | null>#join_str (; 280 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) @@ -16068,12 +16043,12 @@ ) (func $~lib/array/Array<~lib/string/String | null>#toString (; 282 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 - i32.const 4512 + i32.const 4464 call $~lib/array/Array<~lib/string/String | null>#join ) (func $~lib/array/Array<~lib/string/String>#toString (; 283 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 - i32.const 4512 + i32.const 4464 call $~lib/array/Array<~lib/string/String>#join ) (func $~lib/array/Array<~lib/array/Array>#join_arr (; 284 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) @@ -16310,7 +16285,7 @@ ) (func $~lib/array/Array<~lib/array/Array>#toString (; 286 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 - i32.const 4512 + i32.const 4464 call $~lib/array/Array<~lib/array/Array>#join ) (func $~lib/util/number/itoa (; 287 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) @@ -16764,7 +16739,7 @@ ) (func $~lib/array/Array<~lib/array/Array>#toString (; 293 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 - i32.const 4512 + i32.const 4464 call $~lib/array/Array<~lib/array/Array>#join ) (func $~lib/array/Array<~lib/array/Array>#join_arr (; 294 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) @@ -17233,7 +17208,7 @@ ) (func $~lib/array/Array<~lib/array/Array<~lib/array/Array>>#toString (; 298 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 - i32.const 4512 + i32.const 4464 call $~lib/array/Array<~lib/array/Array<~lib/array/Array>>#join ) (func $start:std/array (; 299 ;) (type $FUNCSIG$v) @@ -22319,14 +22294,14 @@ i32.const 2 i32.const 0 i32.const 15 - i32.const 4432 + i32.const 4384 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain local.tee $2 - i32.const 4512 + i32.const 4464 call $~lib/array/Array#join local.tee $14 - i32.const 4536 + i32.const 4488 call $~lib/string/String.__eq i32.eqz if @@ -22340,14 +22315,14 @@ i32.const 3 i32.const 2 i32.const 3 - i32.const 4576 + i32.const 4528 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain local.tee $17 i32.const 4248 call $~lib/array/Array#join local.tee $12 - i32.const 5080 + i32.const 5032 call $~lib/string/String.__eq i32.eqz if @@ -22361,14 +22336,14 @@ i32.const 3 i32.const 2 i32.const 7 - i32.const 5112 + i32.const 5064 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain local.tee $13 - i32.const 5144 + i32.const 5096 call $~lib/array/Array#join local.tee $15 - i32.const 5080 + i32.const 5032 call $~lib/string/String.__eq i32.eqz if @@ -22382,14 +22357,14 @@ i32.const 2 i32.const 2 i32.const 3 - i32.const 5168 + i32.const 5120 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain local.tee $11 - i32.const 5192 + i32.const 5144 call $~lib/array/Array#join local.tee $1 - i32.const 5216 + i32.const 5168 call $~lib/string/String.__eq i32.eqz if @@ -22403,14 +22378,14 @@ i32.const 6 i32.const 3 i32.const 9 - i32.const 5280 + i32.const 5232 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain local.tee $7 - i32.const 5344 + i32.const 5296 call $~lib/array/Array#join local.tee $9 - i32.const 6544 + i32.const 6496 call $~lib/string/String.__eq i32.eqz if @@ -22424,14 +22399,14 @@ i32.const 3 i32.const 2 i32.const 14 - i32.const 6664 + i32.const 6616 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain local.tee $8 i32.const 4248 call $~lib/array/Array<~lib/string/String>#join local.tee $10 - i32.const 6640 + i32.const 6592 call $~lib/string/String.__eq i32.eqz if @@ -22471,10 +22446,10 @@ call $~lib/rt/pure/__retain local.set $34 local.get $34 - i32.const 4512 + i32.const 4464 call $~lib/array/Array#join local.tee $5 - i32.const 6744 + i32.const 6696 call $~lib/string/String.__eq i32.eqz if @@ -22520,7 +22495,7 @@ i32.const 0 i32.const 2 i32.const 3 - i32.const 6824 + i32.const 6776 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain local.tee $34 @@ -22529,7 +22504,7 @@ i32.const 1 i32.const 2 i32.const 3 - i32.const 6840 + i32.const 6792 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain local.tee $38 @@ -22538,7 +22513,7 @@ i32.const 2 i32.const 2 i32.const 3 - i32.const 6864 + i32.const 6816 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain local.tee $8 @@ -22547,7 +22522,7 @@ i32.const 4 i32.const 2 i32.const 3 - i32.const 6888 + i32.const 6840 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain local.tee $7 @@ -22570,7 +22545,7 @@ local.get $42 call $~lib/array/Array#toString local.tee $11 - i32.const 6640 + i32.const 6592 call $~lib/string/String.__eq i32.eqz if @@ -22584,7 +22559,7 @@ local.get $10 call $~lib/array/Array#toString local.tee $15 - i32.const 6920 + i32.const 6872 call $~lib/string/String.__eq i32.eqz if @@ -22598,7 +22573,7 @@ local.get $9 call $~lib/array/Array#toString local.tee $13 - i32.const 6944 + i32.const 6896 call $~lib/string/String.__eq i32.eqz if @@ -22612,13 +22587,13 @@ i32.const 3 i32.const 0 i32.const 20 - i32.const 6976 + i32.const 6928 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain local.tee $17 call $~lib/array/Array#toString local.tee $12 - i32.const 7000 + i32.const 6952 call $~lib/string/String.__eq i32.eqz if @@ -22632,13 +22607,13 @@ i32.const 3 i32.const 1 i32.const 21 - i32.const 7032 + i32.const 6984 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain local.tee $2 call $~lib/array/Array#toString local.tee $14 - i32.const 7056 + i32.const 7008 call $~lib/string/String.__eq i32.eqz if @@ -22652,13 +22627,13 @@ i32.const 3 i32.const 3 i32.const 16 - i32.const 7096 + i32.const 7048 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain local.tee $41 call $~lib/array/Array#toString local.tee $40 - i32.const 7136 + i32.const 7088 call $~lib/string/String.__eq i32.eqz if @@ -22672,13 +22647,13 @@ i32.const 4 i32.const 3 i32.const 22 - i32.const 7200 + i32.const 7152 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain local.tee $39 call $~lib/array/Array#toString local.tee $45 - i32.const 7248 + i32.const 7200 call $~lib/string/String.__eq i32.eqz if @@ -22692,7 +22667,7 @@ i32.const 7 i32.const 2 i32.const 13 - i32.const 7352 + i32.const 7304 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain local.tee $48 @@ -22701,7 +22676,7 @@ local.get $44 call $~lib/array/Array<~lib/string/String | null>#toString local.tee $46 - i32.const 7400 + i32.const 7352 call $~lib/string/String.__eq i32.eqz if @@ -22715,13 +22690,13 @@ i32.const 4 i32.const 2 i32.const 14 - i32.const 7496 + i32.const 7448 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain local.tee $47 call $~lib/array/Array<~lib/string/String>#toString local.tee $43 - i32.const 7528 + i32.const 7480 call $~lib/string/String.__eq i32.eqz if @@ -22745,7 +22720,7 @@ i32.const 2 i32.const 2 i32.const 3 - i32.const 7560 + i32.const 7512 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain local.tee $52 @@ -22755,7 +22730,7 @@ i32.const 2 i32.const 2 i32.const 3 - i32.const 7584 + i32.const 7536 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain local.tee $16 @@ -22767,7 +22742,7 @@ local.get $54 call $~lib/array/Array<~lib/array/Array>#toString local.tee $50 - i32.const 7608 + i32.const 7560 call $~lib/string/String.__eq i32.eqz if @@ -22791,7 +22766,7 @@ i32.const 2 i32.const 0 i32.const 6 - i32.const 7640 + i32.const 7592 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain local.tee $19 @@ -22801,7 +22776,7 @@ i32.const 2 i32.const 0 i32.const 6 - i32.const 7664 + i32.const 7616 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain local.tee $20 @@ -22813,7 +22788,7 @@ local.get $55 call $~lib/array/Array<~lib/array/Array>#toString local.tee $53 - i32.const 7608 + i32.const 7560 call $~lib/string/String.__eq i32.eqz if @@ -22847,7 +22822,7 @@ i32.const 1 i32.const 2 i32.const 7 - i32.const 7688 + i32.const 7640 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain local.tee $23 @@ -22862,7 +22837,7 @@ local.get $56 call $~lib/array/Array<~lib/array/Array<~lib/array/Array>>#toString local.tee $0 - i32.const 6640 + i32.const 6592 call $~lib/string/String.__eq i32.eqz if diff --git a/tests/compiler/std/string-utf8.optimized.wat b/tests/compiler/std/string-utf8.optimized.wat index 852ee187..9d3859ea 100644 --- a/tests/compiler/std/string-utf8.optimized.wat +++ b/tests/compiler/std/string-utf8.optimized.wat @@ -633,7 +633,7 @@ if i32.const 0 i32.const 128 - i32.const 450 + i32.const 551 i32.const 8 call $~lib/builtins/abort unreachable @@ -677,7 +677,7 @@ if i32.const 0 i32.const 128 - i32.const 454 + i32.const 555 i32.const 8 call $~lib/builtins/abort unreachable @@ -756,7 +756,7 @@ if i32.const 0 i32.const 128 - i32.const 466 + i32.const 567 i32.const 8 call $~lib/builtins/abort unreachable @@ -811,7 +811,7 @@ if i32.const 0 i32.const 128 - i32.const 475 + i32.const 576 i32.const 4 call $~lib/builtins/abort unreachable diff --git a/tests/compiler/std/string-utf8.untouched.wat b/tests/compiler/std/string-utf8.untouched.wat index 97e5333c..a9f2900b 100644 --- a/tests/compiler/std/string-utf8.untouched.wat +++ b/tests/compiler/std/string-utf8.untouched.wat @@ -1787,7 +1787,7 @@ if i32.const 0 i32.const 128 - i32.const 450 + i32.const 551 i32.const 8 call $~lib/builtins/abort unreachable @@ -1838,7 +1838,7 @@ if i32.const 0 i32.const 128 - i32.const 454 + i32.const 555 i32.const 8 call $~lib/builtins/abort unreachable @@ -1927,7 +1927,7 @@ if i32.const 0 i32.const 128 - i32.const 466 + i32.const 567 i32.const 8 call $~lib/builtins/abort unreachable @@ -1985,7 +1985,7 @@ if i32.const 0 i32.const 128 - i32.const 475 + i32.const 576 i32.const 4 call $~lib/builtins/abort unreachable diff --git a/tests/compiler/std/string.optimized.wat b/tests/compiler/std/string.optimized.wat index 98c42939..61ff600d 100644 --- a/tests/compiler/std/string.optimized.wat +++ b/tests/compiler/std/string.optimized.wat @@ -91,98 +91,122 @@ (data (i32.const 2072) "\n\00\00\00\01\00\00\00\01\00\00\00\n\00\00\00a\00a\00a\00a\00a") (data (i32.const 2104) "\0c\00\00\00\01\00\00\00\01\00\00\00\0c\00\00\00a\00a\00a\00a\00a\00a") (data (i32.const 2136) "\0e\00\00\00\01\00\00\00\01\00\00\00\0e\00\00\00a\00a\00a\00a\00a\00a\00a") - (data (i32.const 2168) "\1c\00\00\00\01\00\00\00\01\00\00\00\1c\00\00\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n") - (data (i32.const 2216) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00n") - (data (i32.const 2240) "\n\00\00\00\01\00\00\00\01\00\00\00\n\00\00\00j\00k\00l\00m\00n") - (data (i32.const 2272) "\n\00\00\00\01\00\00\00\01\00\00\00\n\00\00\00c\00d\00e\00f\00g") - (data (i32.const 2304) "\n\00\00\00\01\00\00\00\01\00\00\00\n\00\00\00d\00e\00f\00g\00h") - (data (i32.const 2336) "\1a\00\00\00\01\00\00\00\01\00\00\00\1a\00\00\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m") - (data (i32.const 2384) "\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 2432) "^\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 2544) "\n\00\00\00\01\00\00\00\01\00\00\00\n\00\00\00a\00,\00b\00,\00c") - (data (i32.const 2576) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00.") - (data (i32.const 2600) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00c") - (data (i32.const 2624) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\008") - (data (i32.const 2648) "\n\00\00\00\01\00\00\00\01\00\00\00\n\00\00\00-\001\000\000\000") - (data (i32.const 2680) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\001\002\003\004") - (data (i32.const 2704) "\n\00\00\00\01\00\00\00\01\00\00\00\n\00\00\001\002\003\004\005") - (data (i32.const 2736) "\0c\00\00\00\01\00\00\00\01\00\00\00\0c\00\00\001\002\003\004\005\006") - (data (i32.const 2768) "\0e\00\00\00\01\00\00\00\01\00\00\00\0e\00\00\001\001\001\001\001\001\001") - (data (i32.const 2800) "\0e\00\00\00\01\00\00\00\01\00\00\00\0e\00\00\001\002\003\004\005\006\007") - (data (i32.const 2832) "\14\00\00\00\01\00\00\00\01\00\00\00\14\00\00\002\001\004\007\004\008\003\006\004\006") - (data (i32.const 2872) "\14\00\00\00\01\00\00\00\01\00\00\00\14\00\00\002\001\004\007\004\008\003\006\004\007") - (data (i32.const 2912) "\16\00\00\00\01\00\00\00\01\00\00\00\16\00\00\00-\002\001\004\007\004\008\003\006\004\008") - (data (i32.const 2952) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00-\001") - (data (i32.const 2976) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\001\000\000\000") - (data (i32.const 3000) "\14\00\00\00\01\00\00\00\01\00\00\00\14\00\00\002\001\004\007\004\008\003\006\004\008") - (data (i32.const 3040) "\14\00\00\00\01\00\00\00\01\00\00\00\14\00\00\004\002\009\004\009\006\007\002\009\005") - (data (i32.const 3080) "\10\00\00\00\01\00\00\00\01\00\00\00\10\00\00\009\009\009\009\009\009\009\009") - (data (i32.const 3112) "\12\00\00\00\01\00\00\00\01\00\00\00\12\00\00\001\000\000\000\000\000\000\000\000") - (data (i32.const 3152) "\16\00\00\00\01\00\00\00\01\00\00\00\16\00\00\006\008\007\001\009\004\007\006\007\003\005") - (data (i32.const 3192) "\18\00\00\00\01\00\00\00\01\00\00\00\18\00\00\008\006\008\007\001\009\004\007\006\007\003\005") - (data (i32.const 3232) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\009\009\009\008\006\008\007\001\009\004\007\006\007\003\005") - (data (i32.const 3280) " \00\00\00\01\00\00\00\01\00\00\00 \00\00\009\009\009\009\008\006\008\007\001\009\004\007\006\007\003\005") - (data (i32.const 3328) "\"\00\00\00\01\00\00\00\01\00\00\00\"\00\00\001\009\009\009\009\008\006\008\007\001\009\004\007\006\007\003\005") - (data (i32.const 3384) "(\00\00\00\01\00\00\00\01\00\00\00(\00\00\001\008\004\004\006\007\004\004\000\007\003\007\000\009\005\005\001\006\001\005") - (data (i32.const 3440) "\n\00\00\00\01\00\00\00\01\00\00\00\n\00\00\00-\001\002\003\004") - (data (i32.const 3472) "\16\00\00\00\01\00\00\00\01\00\00\00\16\00\00\00-\004\002\009\004\009\006\007\002\009\005") - (data (i32.const 3512) "\18\00\00\00\01\00\00\00\01\00\00\00\18\00\00\00-\006\008\007\001\009\004\007\006\007\003\005") - (data (i32.const 3552) "\1a\00\00\00\01\00\00\00\01\00\00\00\1a\00\00\00-\008\006\008\007\001\009\004\007\006\007\003\005") - (data (i32.const 3600) " \00\00\00\01\00\00\00\01\00\00\00 \00\00\00-\009\009\009\008\006\008\007\001\009\004\007\006\007\003\005") - (data (i32.const 3648) "$\00\00\00\01\00\00\00\01\00\00\00$\00\00\00-\001\009\009\009\009\008\006\008\007\001\009\004\007\006\007\003\005") - (data (i32.const 3704) "&\00\00\00\01\00\00\00\01\00\00\00&\00\00\009\002\002\003\003\007\002\000\003\006\008\005\004\007\007\005\008\000\007") - (data (i32.const 3760) "(\00\00\00\01\00\00\00\01\00\00\00(\00\00\00-\009\002\002\003\003\007\002\000\003\006\008\005\004\007\007\005\008\000\008") - (data (i32.const 3816) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\000\00.\000") - (data (i32.const 3840) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00N\00a\00N") - (data (i32.const 3864) "\12\00\00\00\01\00\00\00\01\00\00\00\12\00\00\00-\00I\00n\00f\00i\00n\00i\00t\00y") - (data (i32.const 3904) "\10\00\00\00\01\00\00\00\01\00\00\00\10\00\00\00I\00n\00f\00i\00n\00i\00t\00y") - (data (i32.const 3936) "\b8\02\00\00\01\00\00\00\00\00\00\00\b8\02\00\00\88\02\1c\08\a0\d5\8f\fav\bf>\a2\7f\e1\ae\bav\acU0 \fb\16\8b\ea5\ce]J\89B\cf-;eU\aa\b0k\9a\dfE\1a=\03\cf\1a\e6\ca\c6\9a\c7\17\fep\abO\dc\bc\be\fc\b1w\ff\0c\d6kA\ef\91V\be<\fc\7f\90\ad\1f\d0\8d\83\9aU1(\\Q\d3\b5\c9\a6\ad\8f\acq\9d\cb\8b\ee#w\"\9c\eamSx@\91I\cc\aeW\ce\b6]y\12<\827V\fbM6\94\10\c2O\98H8o\ea\96\90\c7:\82%\cb\85t\d7\f4\97\bf\97\cd\cf\86\a0\e5\ac*\17\98\n4\ef\8e\b25*\fbg8\b2;?\c6\d2\df\d4\c8\84\ba\cd\d3\1a\'D\dd\c5\96\c9%\bb\ce\9fk\93\84\a5b}$l\ac\db\f6\da_\0dXf\ab\a3&\f1\c3\de\93\f8\e2\f3\b8\80\ff\aa\a8\ad\b5\b5\8bJ|l\05_b\87S0\c14`\ff\bc\c9U&\ba\91\8c\85N\96\bd~)p$w\f9\df\8f\b8\e5\b8\9f\bd\df\a6\94}t\88\cf_\a9\f8\cf\9b\a8\8f\93pD\b9k\15\0f\bf\f8\f0\08\8a\b611eU%\b0\cd\ac\7f{\d0\c6\e2?\99\06;+*\c4\10\\\e4\d3\92si\99$$\aa\0e\ca\00\83\f2\b5\87\fd\eb\1a\11\92d\08\e5\bc\cc\88Po\t\cc\bc\8c,e\19\e2X\17\b7\d1\00\00\00\00\00\00@\9c\00\00\00\00\10\a5\d4\e8\00\00b\ac\c5\ebx\ad\84\t\94\f8x9?\81\b3\15\07\c9{\ce\97\c0p\\\ea{\ce2~\8fh\80\e9\ab\a48\d2\d5E\"\9a\17&\'O\9f\'\fb\c4\d41\a2c\ed\a8\ad\c8\8c8e\de\b0\dbe\ab\1a\8e\08\c7\83\9a\1dqB\f9\1d]\c4X\e7\1b\a6,iM\92\ea\8dp\1ad\ee\01\daJw\ef\9a\99\a3m\a2\85k}\b4{x\t\f2w\18\ddy\a1\e4T\b4\c2\c5\9b[\92\86[\86=]\96\c8\c5S5\c8\b3\a0\97\fa\\\b4*\95\e3_\a0\99\bd\9fF\de%\8c9\db4\c2\9b\a5\\\9f\98\a3r\9a\c6\f6\ce\be\e9TS\bf\dc\b7\e2A\"\f2\17\f3\fc\88\a5x\\\d3\9b\ce \cc\dfS!{\f3Z\16\98:0\1f\97\dc\b5\a0\e2\96\b3\e3\\S\d1\d9\a8\a2\7f\e1\ae\bav\acU0 \fb\16\8b\ea5\ce]J\89B\cf-;eU\aa\b0k\9a\dfE\1a=\03\cf\1a\e6\ca\c6\9a\c7\17\fep\abO\dc\bc\be\fc\b1w\ff\0c\d6kA\ef\91V\be<\fc\7f\90\ad\1f\d0\8d\83\9aU1(\\Q\d3\b5\c9\a6\ad\8f\acq\9d\cb\8b\ee#w\"\9c\eamSx@\91I\cc\aeW\ce\b6]y\12<\827V\fbM6\94\10\c2O\98H8o\ea\96\90\c7:\82%\cb\85t\d7\f4\97\bf\97\cd\cf\86\a0\e5\ac*\17\98\n4\ef\8e\b25*\fbg8\b2;?\c6\d2\df\d4\c8\84\ba\cd\d3\1a\'D\dd\c5\96\c9%\bb\ce\9fk\93\84\a5b}$l\ac\db\f6\da_\0dXf\ab\a3&\f1\c3\de\93\f8\e2\f3\b8\80\ff\aa\a8\ad\b5\b5\8bJ|l\05_b\87S0\c14`\ff\bc\c9U&\ba\91\8c\85N\96\bd~)p$w\f9\df\8f\b8\e5\b8\9f\bd\df\a6\94}t\88\cf_\a9\f8\cf\9b\a8\8f\93pD\b9k\15\0f\bf\f8\f0\08\8a\b611eU%\b0\cd\ac\7f{\d0\c6\e2?\99\06;+*\c4\10\\\e4\d3\92si\99$$\aa\0e\ca\00\83\f2\b5\87\fd\eb\1a\11\92d\08\e5\bc\cc\88Po\t\cc\bc\8c,e\19\e2X\17\b7\d1\00\00\00\00\00\00@\9c\00\00\00\00\10\a5\d4\e8\00\00b\ac\c5\ebx\ad\84\t\94\f8x9?\81\b3\15\07\c9{\ce\97\c0p\\\ea{\ce2~\8fh\80\e9\ab\a48\d2\d5E\"\9a\17&\'O\9f\'\fb\c4\d41\a2c\ed\a8\ad\c8\8c8e\de\b0\dbe\ab\1a\8e\08\c7\83\9a\1dqB\f9\1d]\c4X\e7\1b\a6,iM\92\ea\8dp\1ad\ee\01\daJw\ef\9a\99\a3m\a2\85k}\b4{x\t\f2w\18\ddy\a1\e4T\b4\c2\c5\9b[\92\86[\86=]\96\c8\c5S5\c8\b3\a0\97\fa\\\b4*\95\e3_\a0\99\bd\9fF\de%\8c9\db4\c2\9b\a5\\\9f\98\a3r\9a\c6\f6\ce\be\e9TS\bf\dc\b7\e2A\"\f2\17\f3\fc\88\a5x\\\d3\9b\ce \cc\dfS!{\f3Z\16\98:0\1f\97\dc\b5\a0\e2\96\b3\e3\\S\d1\d9\a8#push (; 60 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/array/Array<~lib/string/String>#push (; 62 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) local.get $1 @@ -4245,7 +4651,7 @@ local.get $1 call $~lib/rt/pure/__release ) - (func $~lib/string/String#split (; 61 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/string/String#split (; 63 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -4257,16 +4663,6 @@ local.get $1 call $~lib/rt/pure/__retain drop - local.get $0 - i32.eqz - if - i32.const 0 - i32.const 456 - i32.const 357 - i32.const 4 - call $~lib/builtins/abort - unreachable - end block $folding-inner2 block $folding-inner1 (result i32) local.get $1 @@ -4367,7 +4763,7 @@ call $~lib/string/String#indexOf local.tee $5 i32.const -1 - i32.ne + i32.xor if local.get $5 local.get $4 @@ -4467,14 +4863,14 @@ call $~lib/rt/pure/__release local.get $2 ) - (func $~lib/array/Array<~lib/string/String>#__get (; 62 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array<~lib/string/String>#__get (; 64 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $1 local.get $0 i32.load offset=12 i32.ge_u if - i32.const 2448 - i32.const 2400 + i32.const 3136 + i32.const 3088 i32.const 106 i32.const 45 call $~lib/builtins/abort @@ -4488,7 +4884,7 @@ i32.ge_u if i32.const 232 - i32.const 2400 + i32.const 3088 i32.const 109 i32.const 61 call $~lib/builtins/abort @@ -4503,7 +4899,7 @@ i32.load call $~lib/rt/pure/__retain ) - (func $~lib/util/number/decimalCount32 (; 63 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/util/number/decimalCount32 (; 65 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) i32.const 1 i32.const 2 local.get $0 @@ -4551,7 +4947,7 @@ i32.lt_u select ) - (func $~lib/util/number/utoa_simple (; 64 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/util/number/utoa_simple (; 66 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) loop $continue|0 local.get $1 @@ -4578,7 +4974,7 @@ br_if $continue|0 end ) - (func $~lib/util/number/itoa32 (; 65 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/util/number/itoa32 (; 67 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -4621,7 +5017,7 @@ local.get $2 call $~lib/rt/pure/__retain ) - (func $~lib/util/number/utoa32 (; 66 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/util/number/utoa32 (; 68 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) local.get $0 @@ -4645,7 +5041,7 @@ local.get $2 call $~lib/rt/pure/__retain ) - (func $~lib/util/number/decimalCount64 (; 67 ;) (type $FUNCSIG$ij) (param $0 i64) (result i32) + (func $~lib/util/number/decimalCount64 (; 69 ;) (type $FUNCSIG$ij) (param $0 i64) (result i32) i32.const 11 i32.const 12 local.get $0 @@ -4693,7 +5089,7 @@ i64.lt_u select ) - (func $~lib/util/number/utoa_simple (; 68 ;) (type $FUNCSIG$viji) (param $0 i32) (param $1 i64) (param $2 i32) + (func $~lib/util/number/utoa_simple (; 70 ;) (type $FUNCSIG$viji) (param $0 i32) (param $1 i64) (param $2 i32) (local $3 i32) loop $continue|0 local.get $1 @@ -4723,7 +5119,7 @@ br_if $continue|0 end ) - (func $~lib/util/number/utoa64 (; 69 ;) (type $FUNCSIG$ij) (param $0 i64) (result i32) + (func $~lib/util/number/utoa64 (; 71 ;) (type $FUNCSIG$ij) (param $0 i64) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -4767,7 +5163,7 @@ local.get $2 call $~lib/rt/pure/__retain ) - (func $~lib/util/number/itoa64 (; 70 ;) (type $FUNCSIG$ij) (param $0 i64) (result i32) + (func $~lib/util/number/itoa64 (; 72 ;) (type $FUNCSIG$ij) (param $0 i64) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -4832,7 +5228,7 @@ local.get $3 call $~lib/rt/pure/__retain ) - (func $~lib/util/number/genDigits (; 71 ;) (type $FUNCSIG$iijijiji) (param $0 i32) (param $1 i64) (param $2 i32) (param $3 i64) (param $4 i32) (param $5 i64) (param $6 i32) (result i32) + (func $~lib/util/number/genDigits (; 73 ;) (type $FUNCSIG$iijijiji) (param $0 i32) (param $1 i64) (param $2 i32) (param $3 i64) (param $4 i32) (param $5 i64) (param $6 i32) (result i32) (local $7 i32) (local $8 i32) (local $9 i64) @@ -4867,7 +5263,7 @@ local.tee $7 call $~lib/util/number/decimalCount32 local.set $4 - i32.const 4980 + i32.const 5644 i32.load local.set $13 loop $continue|0 @@ -5231,7 +5627,7 @@ local.get $6 end ) - (func $~lib/util/number/prettify (; 72 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/util/number/prettify (; 74 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $2 i32.eqz @@ -5478,7 +5874,7 @@ end end ) - (func $~lib/util/number/dtoa_core (; 73 ;) (type $FUNCSIG$iid) (param $0 i32) (param $1 f64) (result i32) + (func $~lib/util/number/dtoa_core (; 75 ;) (type $FUNCSIG$iid) (param $0 i32) (param $1 f64) (result i32) (local $2 i64) (local $3 i32) (local $4 i64) @@ -5594,7 +5990,7 @@ i32.shl i32.sub global.set $~lib/util/number/_K - i32.const 4668 + i32.const 5332 i32.load local.get $3 i32.const 3 @@ -5602,7 +5998,7 @@ i32.add i64.load global.set $~lib/util/number/_frc_pow - i32.const 4892 + i32.const 5556 i32.load local.get $3 i32.const 1 @@ -5766,19 +6162,9 @@ local.get $10 i32.add ) - (func $~lib/string/String#substring (; 74 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/string/String#substring (; 76 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) - local.get $0 - i32.eqz - if - i32.const 0 - i32.const 456 - i32.const 196 - i32.const 4 - call $~lib/builtins/abort - unreachable - end i32.const 0 local.get $0 call $~lib/string/String#get:length @@ -5853,14 +6239,14 @@ local.get $1 call $~lib/rt/pure/__retain ) - (func $~lib/util/number/dtoa (; 75 ;) (type $FUNCSIG$id) (param $0 f64) (result i32) + (func $~lib/util/number/dtoa (; 77 ;) (type $FUNCSIG$id) (param $0 f64) (result i32) (local $1 i32) (local $2 i32) local.get $0 f64.const 0 f64.eq if - i32.const 3832 + i32.const 4496 call $~lib/rt/pure/__retain return end @@ -5874,12 +6260,12 @@ local.get $0 f64.ne if - i32.const 3856 + i32.const 4520 call $~lib/rt/pure/__retain return end - i32.const 3880 - i32.const 3920 + i32.const 4544 + i32.const 4584 local.get $0 f64.const 0 f64.lt @@ -5907,7 +6293,7 @@ local.get $1 call $~lib/rt/tlsf/__free ) - (func $start:std/string (; 76 ;) (type $FUNCSIG$v) + (func $start:std/string (; 78 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -6038,6 +6424,40 @@ (local $127 i32) (local $128 i32) (local $129 i32) + (local $130 i32) + (local $131 i32) + (local $132 i32) + (local $133 i32) + (local $134 i32) + (local $135 i32) + (local $136 i32) + (local $137 i32) + (local $138 i32) + (local $139 i32) + (local $140 i32) + (local $141 i32) + (local $142 i32) + (local $143 i32) + (local $144 i32) + (local $145 i32) + (local $146 i32) + (local $147 i32) + (local $148 i32) + (local $149 i32) + (local $150 i32) + (local $151 i32) + (local $152 i32) + (local $153 i32) + (local $154 i32) + (local $155 i32) + (local $156 i32) + (local $157 i32) + (local $158 i32) + (local $159 i32) + (local $160 i32) + (local $161 i32) + (local $162 i32) + (local $163 i32) global.get $std/string/str i32.const 24 i32.ne @@ -7565,25 +7985,44 @@ call $~lib/builtins/abort unreachable end - global.get $std/string/str - local.tee $0 - i32.const 2184 - i32.ne + i32.const 120 + i32.const 120 + i32.const 120 + call $~lib/string/String#replace + local.tee $35 + i32.const 120 + call $~lib/string/String.__eq + i32.eqz if - i32.const 2184 - call $~lib/rt/pure/__retain - drop - local.get $0 - call $~lib/rt/pure/__release + i32.const 0 + i32.const 72 + i32.const 149 + i32.const 0 + call $~lib/builtins/abort + unreachable + end + i32.const 120 + i32.const 120 + i32.const 2184 + call $~lib/string/String#replace + local.tee $36 + i32.const 2184 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 72 + i32.const 150 + i32.const 0 + call $~lib/builtins/abort + unreachable end i32.const 2184 - global.set $std/string/str - global.get $std/string/str - i32.const 0 - i32.const 2147483647 - call $~lib/string/String#slice - local.tee $35 i32.const 2184 + i32.const 120 + call $~lib/string/String#replace + local.tee $37 + i32.const 120 call $~lib/string/String.__eq i32.eqz if @@ -7594,12 +8033,12 @@ call $~lib/builtins/abort unreachable end - global.get $std/string/str - i32.const -1 - i32.const 2147483647 - call $~lib/string/String#slice - local.tee $36 - i32.const 2232 + i32.const 2184 + i32.const 120 + i32.const 120 + call $~lib/string/String#replace + local.tee $38 + i32.const 2184 call $~lib/string/String.__eq i32.eqz if @@ -7610,12 +8049,12 @@ call $~lib/builtins/abort unreachable end - global.get $std/string/str - i32.const -5 - i32.const 2147483647 - call $~lib/string/String#slice - local.tee $37 - i32.const 2256 + i32.const 680 + i32.const 2208 + i32.const 2184 + call $~lib/string/String#replace + local.tee $39 + i32.const 680 call $~lib/string/String.__eq i32.eqz if @@ -7626,12 +8065,12 @@ call $~lib/builtins/abort unreachable end - global.get $std/string/str - i32.const 2 - i32.const 7 - call $~lib/string/String#slice - local.tee $38 - i32.const 2288 + i32.const 680 + i32.const 680 + i32.const 2184 + call $~lib/string/String#replace + local.tee $40 + i32.const 2184 call $~lib/string/String.__eq i32.eqz if @@ -7642,12 +8081,12 @@ call $~lib/builtins/abort unreachable end - global.get $std/string/str - i32.const -11 - i32.const -6 - call $~lib/string/String#slice - local.tee $39 - i32.const 2320 + i32.const 680 + i32.const 2232 + i32.const 2184 + call $~lib/string/String#replace + local.tee $41 + i32.const 680 call $~lib/string/String.__eq i32.eqz if @@ -7658,12 +8097,12 @@ call $~lib/builtins/abort unreachable end - global.get $std/string/str - i32.const 4 - i32.const 3 - call $~lib/string/String#slice - local.tee $40 - i32.const 120 + i32.const 680 + i32.const 1608 + i32.const 1608 + call $~lib/string/String#replace + local.tee $42 + i32.const 680 call $~lib/string/String.__eq i32.eqz if @@ -7674,12 +8113,12 @@ call $~lib/builtins/abort unreachable end - global.get $std/string/str - i32.const 0 - i32.const -1 - call $~lib/string/String#slice - local.tee $41 - i32.const 2352 + i32.const 2256 + i32.const 2208 + i32.const 2184 + call $~lib/string/String#replace + local.tee $43 + i32.const 2288 call $~lib/string/String.__eq i32.eqz if @@ -7690,6 +8129,531 @@ call $~lib/builtins/abort unreachable end + i32.const 680 + i32.const 120 + i32.const 2184 + call $~lib/string/String#replace + local.tee $44 + i32.const 2320 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 72 + i32.const 158 + i32.const 0 + call $~lib/builtins/abort + unreachable + end + i32.const 2344 + i32.const 2368 + i32.const 2184 + call $~lib/string/String#replace + local.tee $45 + i32.const 2320 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 72 + i32.const 159 + i32.const 0 + call $~lib/builtins/abort + unreachable + end + i32.const 680 + i32.const 2392 + i32.const 2416 + call $~lib/string/String#replace + local.tee $46 + i32.const 2440 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 72 + i32.const 160 + i32.const 0 + call $~lib/builtins/abort + unreachable + end + i32.const 680 + i32.const 2392 + i32.const 120 + call $~lib/string/String#replace + local.tee $47 + i32.const 1608 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 72 + i32.const 161 + i32.const 0 + call $~lib/builtins/abort + unreachable + end + i32.const 120 + i32.const 120 + i32.const 680 + call $~lib/string/String#replaceAll + local.tee $48 + i32.const 680 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 72 + i32.const 163 + i32.const 0 + call $~lib/builtins/abort + unreachable + end + i32.const 680 + i32.const 2208 + i32.const 2184 + call $~lib/string/String#replaceAll + local.tee $49 + i32.const 680 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 72 + i32.const 164 + i32.const 0 + call $~lib/builtins/abort + unreachable + end + i32.const 856 + i32.const 680 + i32.const 2184 + call $~lib/string/String#replaceAll + local.tee $50 + i32.const 2416 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 72 + i32.const 166 + i32.const 0 + call $~lib/builtins/abort + unreachable + end + i32.const 2464 + i32.const 680 + i32.const 2184 + call $~lib/string/String#replaceAll + local.tee $51 + i32.const 2504 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 72 + i32.const 167 + i32.const 0 + call $~lib/builtins/abort + unreachable + end + i32.const 856 + i32.const 1608 + i32.const 1608 + call $~lib/string/String#replaceAll + local.tee $52 + i32.const 856 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 72 + i32.const 168 + i32.const 0 + call $~lib/builtins/abort + unreachable + end + i32.const 2528 + i32.const 408 + i32.const 2504 + call $~lib/string/String#replaceAll + local.tee $53 + i32.const 2560 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 72 + i32.const 169 + i32.const 0 + call $~lib/builtins/abort + unreachable + end + i32.const 856 + i32.const 1608 + i32.const 2416 + call $~lib/string/String#replaceAll + local.tee $54 + i32.const 2608 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 72 + i32.const 170 + i32.const 0 + call $~lib/builtins/abort + unreachable + end + i32.const 2640 + i32.const 2664 + i32.const 2416 + call $~lib/string/String#replaceAll + local.tee $55 + i32.const 2688 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 72 + i32.const 171 + i32.const 0 + call $~lib/builtins/abort + unreachable + end + i32.const 680 + i32.const 2232 + i32.const 2184 + call $~lib/string/String#replaceAll + local.tee $56 + i32.const 680 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 72 + i32.const 172 + i32.const 0 + call $~lib/builtins/abort + unreachable + end + i32.const 2232 + i32.const 2712 + i32.const 2416 + call $~lib/string/String#replaceAll + local.tee $57 + i32.const 2232 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 72 + i32.const 173 + i32.const 0 + call $~lib/builtins/abort + unreachable + end + i32.const 680 + i32.const 2736 + i32.const 2184 + call $~lib/string/String#replaceAll + local.tee $58 + i32.const 2760 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 72 + i32.const 174 + i32.const 0 + call $~lib/builtins/abort + unreachable + end + i32.const 1608 + i32.const 1608 + i32.const 2184 + call $~lib/string/String#replaceAll + local.tee $59 + i32.const 2184 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 72 + i32.const 175 + i32.const 0 + call $~lib/builtins/abort + unreachable + end + i32.const 2256 + i32.const 2208 + i32.const 2184 + call $~lib/string/String#replaceAll + local.tee $60 + i32.const 2784 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 72 + i32.const 176 + i32.const 0 + call $~lib/builtins/abort + unreachable + end + i32.const 120 + i32.const 120 + i32.const 120 + call $~lib/string/String#replaceAll + local.tee $61 + i32.const 120 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 72 + i32.const 178 + i32.const 0 + call $~lib/builtins/abort + unreachable + end + i32.const 120 + i32.const 120 + i32.const 2184 + call $~lib/string/String#replaceAll + local.tee $62 + i32.const 2184 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 72 + i32.const 179 + i32.const 0 + call $~lib/builtins/abort + unreachable + end + i32.const 2184 + i32.const 2184 + i32.const 120 + call $~lib/string/String#replaceAll + local.tee $63 + i32.const 120 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 72 + i32.const 180 + i32.const 0 + call $~lib/builtins/abort + unreachable + end + i32.const 2184 + i32.const 120 + i32.const 120 + call $~lib/string/String#replaceAll + local.tee $64 + i32.const 2184 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 72 + i32.const 181 + i32.const 0 + call $~lib/builtins/abort + unreachable + end + i32.const 680 + i32.const 680 + i32.const 2208 + call $~lib/string/String#replaceAll + local.tee $65 + i32.const 2208 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 72 + i32.const 182 + i32.const 0 + call $~lib/builtins/abort + unreachable + end + i32.const 680 + i32.const 2816 + i32.const 2208 + call $~lib/string/String#replaceAll + local.tee $66 + i32.const 680 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 72 + i32.const 183 + i32.const 0 + call $~lib/builtins/abort + unreachable + end + i32.const 680 + i32.const 120 + i32.const 2184 + call $~lib/string/String#replaceAll + local.tee $67 + i32.const 2840 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 72 + i32.const 184 + i32.const 0 + call $~lib/builtins/abort + unreachable + end + i32.const 680 + i32.const 120 + i32.const 120 + call $~lib/string/String#replaceAll + local.tee $68 + i32.const 680 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 72 + i32.const 185 + i32.const 0 + call $~lib/builtins/abort + unreachable + end + global.get $std/string/str + local.tee $0 + i32.const 2872 + i32.ne + if + i32.const 2872 + call $~lib/rt/pure/__retain + drop + local.get $0 + call $~lib/rt/pure/__release + end + i32.const 2872 + global.set $std/string/str + global.get $std/string/str + i32.const 0 + i32.const 2147483647 + call $~lib/string/String#slice + local.tee $69 + i32.const 2872 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 72 + i32.const 189 + i32.const 0 + call $~lib/builtins/abort + unreachable + end + global.get $std/string/str + i32.const -1 + i32.const 2147483647 + call $~lib/string/String#slice + local.tee $70 + i32.const 2920 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 72 + i32.const 190 + i32.const 0 + call $~lib/builtins/abort + unreachable + end + global.get $std/string/str + i32.const -5 + i32.const 2147483647 + call $~lib/string/String#slice + local.tee $71 + i32.const 2944 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 72 + i32.const 191 + i32.const 0 + call $~lib/builtins/abort + unreachable + end + global.get $std/string/str + i32.const 2 + i32.const 7 + call $~lib/string/String#slice + local.tee $72 + i32.const 2976 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 72 + i32.const 192 + i32.const 0 + call $~lib/builtins/abort + unreachable + end + global.get $std/string/str + i32.const -11 + i32.const -6 + call $~lib/string/String#slice + local.tee $73 + i32.const 3008 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 72 + i32.const 193 + i32.const 0 + call $~lib/builtins/abort + unreachable + end + global.get $std/string/str + i32.const 4 + i32.const 3 + call $~lib/string/String#slice + local.tee $74 + i32.const 120 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 72 + i32.const 194 + i32.const 0 + call $~lib/builtins/abort + unreachable + end + global.get $std/string/str + i32.const 0 + i32.const -1 + call $~lib/string/String#slice + local.tee $75 + i32.const 3040 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 72 + i32.const 195 + i32.const 0 + call $~lib/builtins/abort + unreachable + end i32.const 120 i32.const 0 call $~lib/string/String#split @@ -7719,7 +8683,7 @@ if i32.const 0 i32.const 72 - i32.const 163 + i32.const 201 i32.const 2 call $~lib/builtins/abort unreachable @@ -7735,7 +8699,7 @@ if i32.const 0 i32.const 72 - i32.const 165 + i32.const 203 i32.const 2 call $~lib/builtins/abort unreachable @@ -7769,13 +8733,13 @@ if i32.const 0 i32.const 72 - i32.const 167 + i32.const 205 i32.const 2 call $~lib/builtins/abort unreachable end - i32.const 2560 - i32.const 2592 + i32.const 3248 + i32.const 3280 call $~lib/string/String#split local.set $0 local.get $2 @@ -7789,7 +8753,7 @@ i32.const 0 call $~lib/array/Array<~lib/string/String>#__get local.tee $2 - i32.const 2560 + i32.const 3248 call $~lib/string/String.__eq local.set $1 local.get $2 @@ -7803,12 +8767,12 @@ if i32.const 0 i32.const 72 - i32.const 169 + i32.const 207 i32.const 2 call $~lib/builtins/abort unreachable end - i32.const 2560 + i32.const 3248 i32.const 920 call $~lib/string/String#split local.get $0 @@ -7852,7 +8816,7 @@ i32.const 2 call $~lib/array/Array<~lib/string/String>#__get local.tee $2 - i32.const 2616 + i32.const 2392 call $~lib/string/String.__eq local.set $1 local.get $2 @@ -7866,7 +8830,7 @@ if i32.const 0 i32.const 72 - i32.const 171 + i32.const 209 i32.const 2 call $~lib/builtins/abort unreachable @@ -7882,7 +8846,7 @@ if i32.const 0 i32.const 72 - i32.const 197 + i32.const 235 i32.const 0 call $~lib/builtins/abort unreachable @@ -7896,7 +8860,7 @@ if i32.const 0 i32.const 72 - i32.const 198 + i32.const 236 i32.const 0 call $~lib/builtins/abort unreachable @@ -7904,497 +8868,7 @@ i32.const 8 call $~lib/util/number/itoa32 local.tee $2 - i32.const 2640 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 72 - i32.const 199 - i32.const 0 - call $~lib/builtins/abort - unreachable - end - i32.const 123 - call $~lib/util/number/itoa32 - local.tee $42 - i32.const 736 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 72 - i32.const 200 - i32.const 0 - call $~lib/builtins/abort - unreachable - end - i32.const -1000 - call $~lib/util/number/itoa32 - local.tee $43 - i32.const 2664 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 72 - i32.const 201 - i32.const 0 - call $~lib/builtins/abort - unreachable - end - i32.const 1234 - call $~lib/util/number/itoa32 - local.tee $44 - i32.const 2696 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 72 - i32.const 202 - i32.const 0 - call $~lib/builtins/abort - unreachable - end - i32.const 12345 - call $~lib/util/number/itoa32 - local.tee $45 - i32.const 2720 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 72 - i32.const 203 - i32.const 0 - call $~lib/builtins/abort - unreachable - end - i32.const 123456 - call $~lib/util/number/itoa32 - local.tee $46 - i32.const 2752 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 72 - i32.const 204 - i32.const 0 - call $~lib/builtins/abort - unreachable - end - i32.const 1111111 - call $~lib/util/number/itoa32 - local.tee $47 - i32.const 2784 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 72 - i32.const 205 - i32.const 0 - call $~lib/builtins/abort - unreachable - end - i32.const 1234567 - call $~lib/util/number/itoa32 - local.tee $48 - i32.const 2816 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 72 - i32.const 206 - i32.const 0 - call $~lib/builtins/abort - unreachable - end - i32.const 2147483646 - call $~lib/util/number/itoa32 - local.tee $49 - i32.const 2848 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 72 - i32.const 207 - i32.const 0 - call $~lib/builtins/abort - unreachable - end - i32.const 2147483647 - call $~lib/util/number/itoa32 - local.tee $50 - i32.const 2888 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 72 - i32.const 208 - i32.const 0 - call $~lib/builtins/abort - unreachable - end - i32.const -2147483648 - call $~lib/util/number/itoa32 - local.tee $51 - i32.const 2928 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 72 - i32.const 209 - i32.const 0 - call $~lib/builtins/abort - unreachable - end - i32.const -1 - call $~lib/util/number/itoa32 - local.tee $52 - i32.const 2968 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 72 - i32.const 210 - i32.const 0 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - call $~lib/util/number/utoa32 - local.tee $53 - i32.const 1040 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 72 - i32.const 212 - i32.const 0 - call $~lib/builtins/abort - unreachable - end - i32.const 1000 - call $~lib/util/number/utoa32 - local.tee $54 - i32.const 2992 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 72 - i32.const 213 - i32.const 0 - call $~lib/builtins/abort - unreachable - end - i32.const 2147483647 - call $~lib/util/number/utoa32 - local.tee $55 - i32.const 2888 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 72 - i32.const 214 - i32.const 0 - call $~lib/builtins/abort - unreachable - end - i32.const -2147483648 - call $~lib/util/number/utoa32 - local.tee $56 - i32.const 3016 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 72 - i32.const 215 - i32.const 0 - call $~lib/builtins/abort - unreachable - end - i32.const -1 - call $~lib/util/number/utoa32 - local.tee $57 - i32.const 3056 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 72 - i32.const 216 - i32.const 0 - call $~lib/builtins/abort - unreachable - end - i64.const 0 - call $~lib/util/number/utoa64 - local.tee $58 - i32.const 1040 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 72 - i32.const 218 - i32.const 0 - call $~lib/builtins/abort - unreachable - end - i64.const 1234 - call $~lib/util/number/utoa64 - local.tee $59 - i32.const 2696 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 72 - i32.const 219 - i32.const 0 - call $~lib/builtins/abort - unreachable - end - i64.const 99999999 - call $~lib/util/number/utoa64 - local.tee $60 - i32.const 3096 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 72 - i32.const 220 - i32.const 0 - call $~lib/builtins/abort - unreachable - end - i64.const 100000000 - call $~lib/util/number/utoa64 - local.tee $61 - i32.const 3128 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 72 - i32.const 221 - i32.const 0 - call $~lib/builtins/abort - unreachable - end - i64.const 4294967295 - call $~lib/util/number/utoa64 - local.tee $62 - i32.const 3056 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 72 - i32.const 222 - i32.const 0 - call $~lib/builtins/abort - unreachable - end - i64.const 68719476735 - call $~lib/util/number/utoa64 - local.tee $63 - i32.const 3168 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 72 - i32.const 223 - i32.const 0 - call $~lib/builtins/abort - unreachable - end - i64.const 868719476735 - call $~lib/util/number/utoa64 - local.tee $64 - i32.const 3208 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 72 - i32.const 224 - i32.const 0 - call $~lib/builtins/abort - unreachable - end - i64.const 999868719476735 - call $~lib/util/number/utoa64 - local.tee $65 - i32.const 3248 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 72 - i32.const 225 - i32.const 0 - call $~lib/builtins/abort - unreachable - end - i64.const 9999868719476735 - call $~lib/util/number/utoa64 - local.tee $66 - i32.const 3296 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 72 - i32.const 226 - i32.const 0 - call $~lib/builtins/abort - unreachable - end - i64.const 19999868719476735 - call $~lib/util/number/utoa64 - local.tee $67 - i32.const 3344 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 72 - i32.const 227 - i32.const 0 - call $~lib/builtins/abort - unreachable - end - i64.const -1 - call $~lib/util/number/utoa64 - local.tee $68 - i32.const 3400 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 72 - i32.const 228 - i32.const 0 - call $~lib/builtins/abort - unreachable - end - i64.const 0 - call $~lib/util/number/itoa64 - local.tee $69 - i32.const 1040 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 72 - i32.const 230 - i32.const 0 - call $~lib/builtins/abort - unreachable - end - i64.const -1234 - call $~lib/util/number/itoa64 - local.tee $70 - i32.const 3456 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 72 - i32.const 231 - i32.const 0 - call $~lib/builtins/abort - unreachable - end - i64.const 4294967295 - call $~lib/util/number/itoa64 - local.tee $71 - i32.const 3056 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 72 - i32.const 232 - i32.const 0 - call $~lib/builtins/abort - unreachable - end - i64.const -4294967295 - call $~lib/util/number/itoa64 - local.tee $72 - i32.const 3488 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 72 - i32.const 233 - i32.const 0 - call $~lib/builtins/abort - unreachable - end - i64.const 68719476735 - call $~lib/util/number/itoa64 - local.tee $73 - i32.const 3168 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 72 - i32.const 234 - i32.const 0 - call $~lib/builtins/abort - unreachable - end - i64.const -68719476735 - call $~lib/util/number/itoa64 - local.tee $74 - i32.const 3528 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 72 - i32.const 235 - i32.const 0 - call $~lib/builtins/abort - unreachable - end - i64.const -868719476735 - call $~lib/util/number/itoa64 - local.tee $75 - i32.const 3568 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 72 - i32.const 236 - i32.const 0 - call $~lib/builtins/abort - unreachable - end - i64.const -999868719476735 - call $~lib/util/number/itoa64 - local.tee $76 - i32.const 3616 + i32.const 3304 call $~lib/string/String.__eq i32.eqz if @@ -8405,10 +8879,10 @@ call $~lib/builtins/abort unreachable end - i64.const -19999868719476735 - call $~lib/util/number/itoa64 - local.tee $77 - i32.const 3664 + i32.const 123 + call $~lib/util/number/itoa32 + local.tee $76 + i32.const 736 call $~lib/string/String.__eq i32.eqz if @@ -8419,10 +8893,10 @@ call $~lib/builtins/abort unreachable end - i64.const 9223372036854775807 - call $~lib/util/number/itoa64 - local.tee $78 - i32.const 3720 + i32.const -1000 + call $~lib/util/number/itoa32 + local.tee $77 + i32.const 3328 call $~lib/string/String.__eq i32.eqz if @@ -8433,10 +8907,10 @@ call $~lib/builtins/abort unreachable end - i64.const -9223372036854775808 - call $~lib/util/number/itoa64 - local.tee $79 - i32.const 3776 + i32.const 1234 + call $~lib/util/number/itoa32 + local.tee $78 + i32.const 3360 call $~lib/string/String.__eq i32.eqz if @@ -8447,10 +8921,38 @@ call $~lib/builtins/abort unreachable end - f64.const 0 - call $~lib/util/number/dtoa + i32.const 12345 + call $~lib/util/number/itoa32 + local.tee $79 + i32.const 3384 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 72 + i32.const 241 + i32.const 0 + call $~lib/builtins/abort + unreachable + end + i32.const 123456 + call $~lib/util/number/itoa32 local.tee $80 - i32.const 3832 + i32.const 3416 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 72 + i32.const 242 + i32.const 0 + call $~lib/builtins/abort + unreachable + end + i32.const 1111111 + call $~lib/util/number/itoa32 + local.tee $81 + i32.const 3448 call $~lib/string/String.__eq i32.eqz if @@ -8461,10 +8963,10 @@ call $~lib/builtins/abort unreachable end - f64.const -0 - call $~lib/util/number/dtoa - local.tee $81 - i32.const 3832 + i32.const 1234567 + call $~lib/util/number/itoa32 + local.tee $82 + i32.const 3480 call $~lib/string/String.__eq i32.eqz if @@ -8475,10 +8977,10 @@ call $~lib/builtins/abort unreachable end - f64.const nan:0x8000000000000 - call $~lib/util/number/dtoa - local.tee $82 - i32.const 3856 + i32.const 2147483646 + call $~lib/util/number/itoa32 + local.tee $83 + i32.const 3512 call $~lib/string/String.__eq i32.eqz if @@ -8489,10 +8991,10 @@ call $~lib/builtins/abort unreachable end - f64.const inf - call $~lib/util/number/dtoa - local.tee $83 - i32.const 3920 + i32.const 2147483647 + call $~lib/util/number/itoa32 + local.tee $84 + i32.const 3552 call $~lib/string/String.__eq i32.eqz if @@ -8503,10 +9005,10 @@ call $~lib/builtins/abort unreachable end - f64.const -inf - call $~lib/util/number/dtoa - local.tee $84 - i32.const 3880 + i32.const -2147483648 + call $~lib/util/number/itoa32 + local.tee $85 + i32.const 3592 call $~lib/string/String.__eq i32.eqz if @@ -8517,10 +9019,10 @@ call $~lib/builtins/abort unreachable end - f64.const 2.220446049250313e-16 - call $~lib/util/number/dtoa - local.tee $85 - i32.const 5008 + i32.const -1 + call $~lib/util/number/itoa32 + local.tee $86 + i32.const 3632 call $~lib/string/String.__eq i32.eqz if @@ -8531,24 +9033,10 @@ call $~lib/builtins/abort unreachable end - f64.const -2.220446049250313e-16 - call $~lib/util/number/dtoa - local.tee $86 - i32.const 5072 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 72 - i32.const 249 - i32.const 0 - call $~lib/builtins/abort - unreachable - end - f64.const 1797693134862315708145274e284 - call $~lib/util/number/dtoa + i32.const 0 + call $~lib/util/number/utoa32 local.tee $87 - i32.const 5136 + i32.const 1040 call $~lib/string/String.__eq i32.eqz if @@ -8559,10 +9047,10 @@ call $~lib/builtins/abort unreachable end - f64.const -1797693134862315708145274e284 - call $~lib/util/number/dtoa + i32.const 1000 + call $~lib/util/number/utoa32 local.tee $88 - i32.const 5200 + i32.const 3656 call $~lib/string/String.__eq i32.eqz if @@ -8573,10 +9061,10 @@ call $~lib/builtins/abort unreachable end - f64.const 4185580496821356722454785e274 - call $~lib/util/number/dtoa + i32.const 2147483647 + call $~lib/util/number/utoa32 local.tee $89 - i32.const 5264 + i32.const 3552 call $~lib/string/String.__eq i32.eqz if @@ -8587,10 +9075,10 @@ call $~lib/builtins/abort unreachable end - f64.const 2.2250738585072014e-308 - call $~lib/util/number/dtoa + i32.const -2147483648 + call $~lib/util/number/utoa32 local.tee $90 - i32.const 5328 + i32.const 3680 call $~lib/string/String.__eq i32.eqz if @@ -8601,10 +9089,24 @@ call $~lib/builtins/abort unreachable end - f64.const 4.940656e-318 - call $~lib/util/number/dtoa + i32.const -1 + call $~lib/util/number/utoa32 local.tee $91 - i32.const 5392 + i32.const 3720 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 72 + i32.const 254 + i32.const 0 + call $~lib/builtins/abort + unreachable + end + i64.const 0 + call $~lib/util/number/utoa64 + local.tee $92 + i32.const 1040 call $~lib/string/String.__eq i32.eqz if @@ -8615,10 +9117,10 @@ call $~lib/builtins/abort unreachable end - f64.const 9060801153433600 - call $~lib/util/number/dtoa - local.tee $92 - i32.const 5440 + i64.const 1234 + call $~lib/util/number/utoa64 + local.tee $93 + i32.const 3360 call $~lib/string/String.__eq i32.eqz if @@ -8629,10 +9131,10 @@ call $~lib/builtins/abort unreachable end - f64.const 4708356024711512064 - call $~lib/util/number/dtoa - local.tee $93 - i32.const 5496 + i64.const 99999999 + call $~lib/util/number/utoa64 + local.tee $94 + i32.const 3760 call $~lib/string/String.__eq i32.eqz if @@ -8643,10 +9145,10 @@ call $~lib/builtins/abort unreachable end - f64.const 9409340012568248320 - call $~lib/util/number/dtoa - local.tee $94 - i32.const 5560 + i64.const 100000000 + call $~lib/util/number/utoa64 + local.tee $95 + i32.const 3792 call $~lib/string/String.__eq i32.eqz if @@ -8657,10 +9159,10 @@ call $~lib/builtins/abort unreachable end - f64.const 5e-324 - call $~lib/util/number/dtoa - local.tee $95 - i32.const 5624 + i64.const 4294967295 + call $~lib/util/number/utoa64 + local.tee $96 + i32.const 3720 call $~lib/string/String.__eq i32.eqz if @@ -8671,10 +9173,80 @@ call $~lib/builtins/abort unreachable end - f64.const 1 - call $~lib/util/number/dtoa - local.tee $96 - i32.const 5656 + i64.const 68719476735 + call $~lib/util/number/utoa64 + local.tee $97 + i32.const 3832 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 72 + i32.const 261 + i32.const 0 + call $~lib/builtins/abort + unreachable + end + i64.const 868719476735 + call $~lib/util/number/utoa64 + local.tee $98 + i32.const 3872 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 72 + i32.const 262 + i32.const 0 + call $~lib/builtins/abort + unreachable + end + i64.const 999868719476735 + call $~lib/util/number/utoa64 + local.tee $99 + i32.const 3912 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 72 + i32.const 263 + i32.const 0 + call $~lib/builtins/abort + unreachable + end + i64.const 9999868719476735 + call $~lib/util/number/utoa64 + local.tee $100 + i32.const 3960 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 72 + i32.const 264 + i32.const 0 + call $~lib/builtins/abort + unreachable + end + i64.const 19999868719476735 + call $~lib/util/number/utoa64 + local.tee $101 + i32.const 4008 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 72 + i32.const 265 + i32.const 0 + call $~lib/builtins/abort + unreachable + end + i64.const -1 + call $~lib/util/number/utoa64 + local.tee $102 + i32.const 4064 call $~lib/string/String.__eq i32.eqz if @@ -8685,24 +9257,10 @@ call $~lib/builtins/abort unreachable end - f64.const 0.1 - call $~lib/util/number/dtoa - local.tee $97 - i32.const 1472 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 72 - i32.const 267 - i32.const 0 - call $~lib/builtins/abort - unreachable - end - f64.const -1 - call $~lib/util/number/dtoa - local.tee $98 - i32.const 5680 + i64.const 0 + call $~lib/util/number/itoa64 + local.tee $103 + i32.const 1040 call $~lib/string/String.__eq i32.eqz if @@ -8713,10 +9271,10 @@ call $~lib/builtins/abort unreachable end - f64.const -0.1 - call $~lib/util/number/dtoa - local.tee $99 - i32.const 5704 + i64.const -1234 + call $~lib/util/number/itoa64 + local.tee $104 + i32.const 4120 call $~lib/string/String.__eq i32.eqz if @@ -8727,10 +9285,24 @@ call $~lib/builtins/abort unreachable end - f64.const 1e6 - call $~lib/util/number/dtoa - local.tee $100 - i32.const 5728 + i64.const 4294967295 + call $~lib/util/number/itoa64 + local.tee $105 + i32.const 3720 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 72 + i32.const 270 + i32.const 0 + call $~lib/builtins/abort + unreachable + end + i64.const -4294967295 + call $~lib/util/number/itoa64 + local.tee $106 + i32.const 4152 call $~lib/string/String.__eq i32.eqz if @@ -8741,10 +9313,10 @@ call $~lib/builtins/abort unreachable end - f64.const 1e-06 - call $~lib/util/number/dtoa - local.tee $101 - i32.const 5768 + i64.const 68719476735 + call $~lib/util/number/itoa64 + local.tee $107 + i32.const 3832 call $~lib/string/String.__eq i32.eqz if @@ -8755,10 +9327,10 @@ call $~lib/builtins/abort unreachable end - f64.const -1e6 - call $~lib/util/number/dtoa - local.tee $102 - i32.const 5800 + i64.const -68719476735 + call $~lib/util/number/itoa64 + local.tee $108 + i32.const 4192 call $~lib/string/String.__eq i32.eqz if @@ -8769,10 +9341,10 @@ call $~lib/builtins/abort unreachable end - f64.const -1e-06 - call $~lib/util/number/dtoa - local.tee $103 - i32.const 5840 + i64.const -868719476735 + call $~lib/util/number/itoa64 + local.tee $109 + i32.const 4232 call $~lib/string/String.__eq i32.eqz if @@ -8783,10 +9355,10 @@ call $~lib/builtins/abort unreachable end - f64.const 1e7 - call $~lib/util/number/dtoa - local.tee $104 - i32.const 5880 + i64.const -999868719476735 + call $~lib/util/number/itoa64 + local.tee $110 + i32.const 4280 call $~lib/string/String.__eq i32.eqz if @@ -8797,10 +9369,10 @@ call $~lib/builtins/abort unreachable end - f64.const 1e-07 - call $~lib/util/number/dtoa - local.tee $105 - i32.const 5920 + i64.const -19999868719476735 + call $~lib/util/number/itoa64 + local.tee $111 + i32.const 4328 call $~lib/string/String.__eq i32.eqz if @@ -8811,10 +9383,24 @@ call $~lib/builtins/abort unreachable end - f64.const 1.e+308 - call $~lib/util/number/dtoa - local.tee $106 - i32.const 5944 + i64.const 9223372036854775807 + call $~lib/util/number/itoa64 + local.tee $112 + i32.const 4384 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 72 + i32.const 277 + i32.const 0 + call $~lib/builtins/abort + unreachable + end + i64.const -9223372036854775808 + call $~lib/util/number/itoa64 + local.tee $113 + i32.const 4440 call $~lib/string/String.__eq i32.eqz if @@ -8825,38 +9411,10 @@ call $~lib/builtins/abort unreachable end - f64.const -1.e+308 + f64.const 0 call $~lib/util/number/dtoa - local.tee $107 - i32.const 5976 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 72 - i32.const 279 - i32.const 0 - call $~lib/builtins/abort - unreachable - end - f64.const inf - call $~lib/util/number/dtoa - local.tee $108 - i32.const 3920 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 72 - i32.const 280 - i32.const 0 - call $~lib/builtins/abort - unreachable - end - f64.const -inf - call $~lib/util/number/dtoa - local.tee $109 - i32.const 3880 + local.tee $114 + i32.const 4496 call $~lib/string/String.__eq i32.eqz if @@ -8867,10 +9425,10 @@ call $~lib/builtins/abort unreachable end - f64.const 1e-308 + f64.const -0 call $~lib/util/number/dtoa - local.tee $110 - i32.const 6008 + local.tee $115 + i32.const 4496 call $~lib/string/String.__eq i32.eqz if @@ -8881,10 +9439,10 @@ call $~lib/builtins/abort unreachable end - f64.const -1e-308 + f64.const nan:0x8000000000000 call $~lib/util/number/dtoa - local.tee $111 - i32.const 6040 + local.tee $116 + i32.const 4520 call $~lib/string/String.__eq i32.eqz if @@ -8895,10 +9453,10 @@ call $~lib/builtins/abort unreachable end - f64.const 1e-323 + f64.const inf call $~lib/util/number/dtoa - local.tee $112 - i32.const 6072 + local.tee $117 + i32.const 4584 call $~lib/string/String.__eq i32.eqz if @@ -8909,10 +9467,10 @@ call $~lib/builtins/abort unreachable end - f64.const -1e-323 + f64.const -inf call $~lib/util/number/dtoa - local.tee $113 - i32.const 6104 + local.tee $118 + i32.const 4544 call $~lib/string/String.__eq i32.eqz if @@ -8923,10 +9481,10 @@ call $~lib/builtins/abort unreachable end - f64.const 0 + f64.const 2.220446049250313e-16 call $~lib/util/number/dtoa - local.tee $114 - i32.const 3832 + local.tee $119 + i32.const 5672 call $~lib/string/String.__eq i32.eqz if @@ -8937,10 +9495,24 @@ call $~lib/builtins/abort unreachable end - f64.const 4294967272 + f64.const -2.220446049250313e-16 call $~lib/util/number/dtoa - local.tee $115 - i32.const 6136 + local.tee $120 + i32.const 5736 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 72 + i32.const 287 + i32.const 0 + call $~lib/builtins/abort + unreachable + end + f64.const 1797693134862315708145274e284 + call $~lib/util/number/dtoa + local.tee $121 + i32.const 5800 call $~lib/string/String.__eq i32.eqz if @@ -8951,10 +9523,10 @@ call $~lib/builtins/abort unreachable end - f64.const 1.2312145673456234e-08 + f64.const -1797693134862315708145274e284 call $~lib/util/number/dtoa - local.tee $116 - i32.const 6176 + local.tee $122 + i32.const 5864 call $~lib/string/String.__eq i32.eqz if @@ -8965,10 +9537,24 @@ call $~lib/builtins/abort unreachable end - f64.const 555555555.5555556 + f64.const 4185580496821356722454785e274 call $~lib/util/number/dtoa - local.tee $117 - i32.const 6240 + local.tee $123 + i32.const 5928 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 72 + i32.const 290 + i32.const 0 + call $~lib/builtins/abort + unreachable + end + f64.const 2.2250738585072014e-308 + call $~lib/util/number/dtoa + local.tee $124 + i32.const 5992 call $~lib/string/String.__eq i32.eqz if @@ -8979,38 +9565,10 @@ call $~lib/builtins/abort unreachable end - f64.const 0.9999999999999999 + f64.const 4.940656e-318 call $~lib/util/number/dtoa - local.tee $118 - i32.const 6296 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 72 - i32.const 292 - i32.const 0 - call $~lib/builtins/abort - unreachable - end - f64.const 1 - call $~lib/util/number/dtoa - local.tee $119 - i32.const 5656 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 72 - i32.const 293 - i32.const 0 - call $~lib/builtins/abort - unreachable - end - f64.const 12.34 - call $~lib/util/number/dtoa - local.tee $120 - i32.const 6352 + local.tee $125 + i32.const 6056 call $~lib/string/String.__eq i32.eqz if @@ -9021,10 +9579,24 @@ call $~lib/builtins/abort unreachable end - f64.const 0.3333333333333333 + f64.const 9060801153433600 call $~lib/util/number/dtoa - local.tee $121 - i32.const 6384 + local.tee $126 + i32.const 6104 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 72 + i32.const 295 + i32.const 0 + call $~lib/builtins/abort + unreachable + end + f64.const 4708356024711512064 + call $~lib/util/number/dtoa + local.tee $127 + i32.const 6160 call $~lib/string/String.__eq i32.eqz if @@ -9035,10 +9607,10 @@ call $~lib/builtins/abort unreachable end - f64.const 1234e17 + f64.const 9409340012568248320 call $~lib/util/number/dtoa - local.tee $122 - i32.const 6440 + local.tee $128 + i32.const 6224 call $~lib/string/String.__eq i32.eqz if @@ -9049,10 +9621,10 @@ call $~lib/builtins/abort unreachable end - f64.const 1234e18 + f64.const 5e-324 call $~lib/util/number/dtoa - local.tee $123 - i32.const 6504 + local.tee $129 + i32.const 6288 call $~lib/string/String.__eq i32.eqz if @@ -9063,80 +9635,10 @@ call $~lib/builtins/abort unreachable end - f64.const 2.71828 + f64.const 1 call $~lib/util/number/dtoa - local.tee $124 - i32.const 6544 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 72 - i32.const 299 - i32.const 0 - call $~lib/builtins/abort - unreachable - end - f64.const 0.0271828 - call $~lib/util/number/dtoa - local.tee $125 - i32.const 6576 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 72 - i32.const 300 - i32.const 0 - call $~lib/builtins/abort - unreachable - end - f64.const 271.828 - call $~lib/util/number/dtoa - local.tee $126 - i32.const 6616 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 72 - i32.const 301 - i32.const 0 - call $~lib/builtins/abort - unreachable - end - f64.const 1.1e+128 - call $~lib/util/number/dtoa - local.tee $127 - i32.const 6648 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 72 - i32.const 302 - i32.const 0 - call $~lib/builtins/abort - unreachable - end - f64.const 1.1e-64 - call $~lib/util/number/dtoa - local.tee $128 - i32.const 6680 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 72 - i32.const 303 - i32.const 0 - call $~lib/builtins/abort - unreachable - end - f64.const 0.000035689 - call $~lib/util/number/dtoa - local.tee $129 - i32.const 6712 + local.tee $130 + i32.const 6320 call $~lib/string/String.__eq i32.eqz if @@ -9147,6 +9649,468 @@ call $~lib/builtins/abort unreachable end + f64.const 0.1 + call $~lib/util/number/dtoa + local.tee $131 + i32.const 1472 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 72 + i32.const 305 + i32.const 0 + call $~lib/builtins/abort + unreachable + end + f64.const -1 + call $~lib/util/number/dtoa + local.tee $132 + i32.const 6344 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 72 + i32.const 306 + i32.const 0 + call $~lib/builtins/abort + unreachable + end + f64.const -0.1 + call $~lib/util/number/dtoa + local.tee $133 + i32.const 6368 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 72 + i32.const 307 + i32.const 0 + call $~lib/builtins/abort + unreachable + end + f64.const 1e6 + call $~lib/util/number/dtoa + local.tee $134 + i32.const 6392 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 72 + i32.const 309 + i32.const 0 + call $~lib/builtins/abort + unreachable + end + f64.const 1e-06 + call $~lib/util/number/dtoa + local.tee $135 + i32.const 6432 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 72 + i32.const 310 + i32.const 0 + call $~lib/builtins/abort + unreachable + end + f64.const -1e6 + call $~lib/util/number/dtoa + local.tee $136 + i32.const 6464 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 72 + i32.const 311 + i32.const 0 + call $~lib/builtins/abort + unreachable + end + f64.const -1e-06 + call $~lib/util/number/dtoa + local.tee $137 + i32.const 6504 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 72 + i32.const 312 + i32.const 0 + call $~lib/builtins/abort + unreachable + end + f64.const 1e7 + call $~lib/util/number/dtoa + local.tee $138 + i32.const 6544 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 72 + i32.const 313 + i32.const 0 + call $~lib/builtins/abort + unreachable + end + f64.const 1e-07 + call $~lib/util/number/dtoa + local.tee $139 + i32.const 6584 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 72 + i32.const 314 + i32.const 0 + call $~lib/builtins/abort + unreachable + end + f64.const 1.e+308 + call $~lib/util/number/dtoa + local.tee $140 + i32.const 6608 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 72 + i32.const 316 + i32.const 0 + call $~lib/builtins/abort + unreachable + end + f64.const -1.e+308 + call $~lib/util/number/dtoa + local.tee $141 + i32.const 6640 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 72 + i32.const 317 + i32.const 0 + call $~lib/builtins/abort + unreachable + end + f64.const inf + call $~lib/util/number/dtoa + local.tee $142 + i32.const 4584 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 72 + i32.const 318 + i32.const 0 + call $~lib/builtins/abort + unreachable + end + f64.const -inf + call $~lib/util/number/dtoa + local.tee $143 + i32.const 4544 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 72 + i32.const 319 + i32.const 0 + call $~lib/builtins/abort + unreachable + end + f64.const 1e-308 + call $~lib/util/number/dtoa + local.tee $144 + i32.const 6672 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 72 + i32.const 320 + i32.const 0 + call $~lib/builtins/abort + unreachable + end + f64.const -1e-308 + call $~lib/util/number/dtoa + local.tee $145 + i32.const 6704 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 72 + i32.const 321 + i32.const 0 + call $~lib/builtins/abort + unreachable + end + f64.const 1e-323 + call $~lib/util/number/dtoa + local.tee $146 + i32.const 6736 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 72 + i32.const 322 + i32.const 0 + call $~lib/builtins/abort + unreachable + end + f64.const -1e-323 + call $~lib/util/number/dtoa + local.tee $147 + i32.const 6768 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 72 + i32.const 323 + i32.const 0 + call $~lib/builtins/abort + unreachable + end + f64.const 0 + call $~lib/util/number/dtoa + local.tee $148 + i32.const 4496 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 72 + i32.const 324 + i32.const 0 + call $~lib/builtins/abort + unreachable + end + f64.const 4294967272 + call $~lib/util/number/dtoa + local.tee $149 + i32.const 6800 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 72 + i32.const 326 + i32.const 0 + call $~lib/builtins/abort + unreachable + end + f64.const 1.2312145673456234e-08 + call $~lib/util/number/dtoa + local.tee $150 + i32.const 6840 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 72 + i32.const 327 + i32.const 0 + call $~lib/builtins/abort + unreachable + end + f64.const 555555555.5555556 + call $~lib/util/number/dtoa + local.tee $151 + i32.const 6904 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 72 + i32.const 329 + i32.const 0 + call $~lib/builtins/abort + unreachable + end + f64.const 0.9999999999999999 + call $~lib/util/number/dtoa + local.tee $152 + i32.const 6960 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 72 + i32.const 330 + i32.const 0 + call $~lib/builtins/abort + unreachable + end + f64.const 1 + call $~lib/util/number/dtoa + local.tee $153 + i32.const 6320 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 72 + i32.const 331 + i32.const 0 + call $~lib/builtins/abort + unreachable + end + f64.const 12.34 + call $~lib/util/number/dtoa + local.tee $154 + i32.const 7016 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 72 + i32.const 332 + i32.const 0 + call $~lib/builtins/abort + unreachable + end + f64.const 0.3333333333333333 + call $~lib/util/number/dtoa + local.tee $155 + i32.const 7048 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 72 + i32.const 334 + i32.const 0 + call $~lib/builtins/abort + unreachable + end + f64.const 1234e17 + call $~lib/util/number/dtoa + local.tee $156 + i32.const 7104 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 72 + i32.const 335 + i32.const 0 + call $~lib/builtins/abort + unreachable + end + f64.const 1234e18 + call $~lib/util/number/dtoa + local.tee $157 + i32.const 7168 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 72 + i32.const 336 + i32.const 0 + call $~lib/builtins/abort + unreachable + end + f64.const 2.71828 + call $~lib/util/number/dtoa + local.tee $158 + i32.const 7208 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 72 + i32.const 337 + i32.const 0 + call $~lib/builtins/abort + unreachable + end + f64.const 0.0271828 + call $~lib/util/number/dtoa + local.tee $159 + i32.const 7240 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 72 + i32.const 338 + i32.const 0 + call $~lib/builtins/abort + unreachable + end + f64.const 271.828 + call $~lib/util/number/dtoa + local.tee $160 + i32.const 7280 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 72 + i32.const 339 + i32.const 0 + call $~lib/builtins/abort + unreachable + end + f64.const 1.1e+128 + call $~lib/util/number/dtoa + local.tee $161 + i32.const 7312 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 72 + i32.const 340 + i32.const 0 + call $~lib/builtins/abort + unreachable + end + f64.const 1.1e-64 + call $~lib/util/number/dtoa + local.tee $162 + i32.const 7344 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 72 + i32.const 341 + i32.const 0 + call $~lib/builtins/abort + unreachable + end + f64.const 0.000035689 + call $~lib/util/number/dtoa + local.tee $163 + i32.const 7376 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 72 + i32.const 342 + i32.const 0 + call $~lib/builtins/abort + unreachable + end global.get $std/string/str call $~lib/rt/pure/__release local.get $5 @@ -9225,12 +10189,6 @@ call $~lib/rt/pure/__release local.get $41 call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $2 - call $~lib/rt/pure/__release local.get $42 call $~lib/rt/pure/__release local.get $43 @@ -9299,6 +10257,12 @@ call $~lib/rt/pure/__release local.get $75 call $~lib/rt/pure/__release + local.get $0 + call $~lib/rt/pure/__release + local.get $1 + call $~lib/rt/pure/__release + local.get $2 + call $~lib/rt/pure/__release local.get $76 call $~lib/rt/pure/__release local.get $77 @@ -9407,12 +10371,80 @@ call $~lib/rt/pure/__release local.get $129 call $~lib/rt/pure/__release + local.get $130 + call $~lib/rt/pure/__release + local.get $131 + call $~lib/rt/pure/__release + local.get $132 + call $~lib/rt/pure/__release + local.get $133 + call $~lib/rt/pure/__release + local.get $134 + call $~lib/rt/pure/__release + local.get $135 + call $~lib/rt/pure/__release + local.get $136 + call $~lib/rt/pure/__release + local.get $137 + call $~lib/rt/pure/__release + local.get $138 + call $~lib/rt/pure/__release + local.get $139 + call $~lib/rt/pure/__release + local.get $140 + call $~lib/rt/pure/__release + local.get $141 + call $~lib/rt/pure/__release + local.get $142 + call $~lib/rt/pure/__release + local.get $143 + call $~lib/rt/pure/__release + local.get $144 + call $~lib/rt/pure/__release + local.get $145 + call $~lib/rt/pure/__release + local.get $146 + call $~lib/rt/pure/__release + local.get $147 + call $~lib/rt/pure/__release + local.get $148 + call $~lib/rt/pure/__release + local.get $149 + call $~lib/rt/pure/__release + local.get $150 + call $~lib/rt/pure/__release + local.get $151 + call $~lib/rt/pure/__release + local.get $152 + call $~lib/rt/pure/__release + local.get $153 + call $~lib/rt/pure/__release + local.get $154 + call $~lib/rt/pure/__release + local.get $155 + call $~lib/rt/pure/__release + local.get $156 + call $~lib/rt/pure/__release + local.get $157 + call $~lib/rt/pure/__release + local.get $158 + call $~lib/rt/pure/__release + local.get $159 + call $~lib/rt/pure/__release + local.get $160 + call $~lib/rt/pure/__release + local.get $161 + call $~lib/rt/pure/__release + local.get $162 + call $~lib/rt/pure/__release + local.get $163 + call $~lib/rt/pure/__release ) - (func $std/string/getString (; 77 ;) (type $FUNCSIG$i) (result i32) + (func $std/string/getString (; 79 ;) (type $FUNCSIG$i) (result i32) global.get $std/string/str call $~lib/rt/pure/__retain ) - (func $start (; 78 ;) (type $FUNCSIG$v) + (func $start (; 80 ;) (type $FUNCSIG$v) global.get $~lib/started if return @@ -9422,7 +10454,7 @@ end call $start:std/string ) - (func $~lib/rt/pure/markGray (; 79 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/rt/pure/markGray (; 81 ;) (type $FUNCSIG$vi) (param $0 i32) (local $1 i32) local.get $0 i32.load offset=4 @@ -9446,7 +10478,7 @@ call $~lib/rt/__visit_members end ) - (func $~lib/rt/pure/scanBlack (; 80 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/rt/pure/scanBlack (; 82 ;) (type $FUNCSIG$vi) (param $0 i32) local.get $0 local.get $0 i32.load offset=4 @@ -9459,7 +10491,7 @@ i32.const 4 call $~lib/rt/__visit_members ) - (func $~lib/rt/pure/scan (; 81 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/rt/pure/scan (; 83 ;) (type $FUNCSIG$vi) (param $0 i32) (local $1 i32) local.get $0 i32.load offset=4 @@ -9493,7 +10525,7 @@ end end ) - (func $~lib/rt/pure/collectWhite (; 82 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/rt/pure/collectWhite (; 84 ;) (type $FUNCSIG$vi) (param $0 i32) (local $1 i32) local.get $0 i32.load offset=4 @@ -9526,9 +10558,9 @@ call $~lib/rt/tlsf/freeBlock end ) - (func $~lib/rt/pure/__visit (; 83 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/rt/pure/__visit (; 85 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) local.get $0 - i32.const 6804 + i32.const 7468 i32.lt_u if return @@ -9636,7 +10668,7 @@ unreachable end ) - (func $~lib/array/Array<~lib/string/String>#__visit_impl (; 84 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/array/Array<~lib/string/String>#__visit_impl (; 86 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) local.get $0 @@ -9669,7 +10701,7 @@ end end ) - (func $~lib/rt/__visit_members (; 85 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/rt/__visit_members (; 87 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) block $block$4$break block $switch$1$default block $switch$1$case$5 @@ -9698,7 +10730,7 @@ call $~lib/rt/pure/__visit end ) - (func $null (; 86 ;) (type $FUNCSIG$v) + (func $null (; 88 ;) (type $FUNCSIG$v) nop ) ) diff --git a/tests/compiler/std/string.ts b/tests/compiler/std/string.ts index 9c5d76ea..37b9e32b 100644 --- a/tests/compiler/std/string.ts +++ b/tests/compiler/std/string.ts @@ -146,6 +146,44 @@ assert("a".repeat(5) == "aaaaa"); assert("a".repeat(6) == "aaaaaa"); assert("a".repeat(7) == "aaaaaaa"); +assert("".replace("", "") == ""); +assert("".replace("", "+") == "+"); +assert("+".replace("+", "") == ""); +assert("+".replace("", "") == "+"); +assert("abc".replace("-", "+") == "abc"); +assert("abc".replace("abc", "+") == "+"); +assert("abc".replace("abcd", "+") == "abc"); +assert("abc".replace("ab", "ab") == "abc"); +assert("a-b-c".replace("-", "+") == "a+b-c"); +assert("abc".replace("", "+") == "+abc"); +assert("\nabc".replace("\n", "+") == "+abc"); +assert("abc".replace("c", "++") == "ab++"); +assert("abc".replace("c", "") == "ab"); + +assert("".replaceAll("", "abc") == "abc"); +assert("abc".replaceAll("-", "+") == "abc"); + +assert("abcabc".replaceAll("abc", "+") == "++"); +assert("abcabcabc".replaceAll("abc", "+") == "+++"); +assert("abcabc".replaceAll("ab", "ab") == "abcabc"); +assert("abcabca".replaceAll("a", "+++") == "+++bc+++bc+++"); +assert("abcabc".replaceAll("ab", "++") == "++c++c"); +assert("cccc".replaceAll("cc", "++") == "++++"); +assert("abc".replaceAll("abcd", "+") == "abc"); +assert("abcd".replaceAll("e", "++") == "abcd"); +assert("abc".replaceAll("bc", "+") == "a+"); +assert("ab".replaceAll("ab", "+") == "+"); +assert("a-b-c".replaceAll("-", "+") == "a+b+c"); +// cpecial cases +assert("".replaceAll("", "") == ""); +assert("".replaceAll("", "+") == "+"); +assert("+".replaceAll("+", "") == ""); +assert("+".replaceAll("", "") == "+"); +assert("abc".replaceAll("abc", "-") == "-"); +assert("abc".replaceAll("abd", "-") == "abc"); +assert("abc".replaceAll("", "+") == "+a+b+c+"); +assert("abc".replaceAll("", "") == "abc"); + // test cases for slice method str = "abcdefghijklmn"; assert(str.slice(0) == "abcdefghijklmn"); diff --git a/tests/compiler/std/string.untouched.wat b/tests/compiler/std/string.untouched.wat index 3cc60e73..e73b2efd 100644 --- a/tests/compiler/std/string.untouched.wat +++ b/tests/compiler/std/string.untouched.wat @@ -93,100 +93,124 @@ (data (i32.const 2072) "\n\00\00\00\01\00\00\00\01\00\00\00\n\00\00\00a\00a\00a\00a\00a\00") (data (i32.const 2104) "\0c\00\00\00\01\00\00\00\01\00\00\00\0c\00\00\00a\00a\00a\00a\00a\00a\00") (data (i32.const 2136) "\0e\00\00\00\01\00\00\00\01\00\00\00\0e\00\00\00a\00a\00a\00a\00a\00a\00a\00") - (data (i32.const 2168) "\1c\00\00\00\01\00\00\00\01\00\00\00\1c\00\00\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00") - (data (i32.const 2216) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00n\00") - (data (i32.const 2240) "\n\00\00\00\01\00\00\00\01\00\00\00\n\00\00\00j\00k\00l\00m\00n\00") - (data (i32.const 2272) "\n\00\00\00\01\00\00\00\01\00\00\00\n\00\00\00c\00d\00e\00f\00g\00") - (data (i32.const 2304) "\n\00\00\00\01\00\00\00\01\00\00\00\n\00\00\00d\00e\00f\00g\00h\00") - (data (i32.const 2336) "\1a\00\00\00\01\00\00\00\01\00\00\00\1a\00\00\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00") - (data (i32.const 2384) "\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 2432) "^\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 2544) "\n\00\00\00\01\00\00\00\01\00\00\00\n\00\00\00a\00,\00b\00,\00c\00") - (data (i32.const 2576) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00.\00") - (data (i32.const 2600) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00c\00") - (data (i32.const 2624) "\90\01\00\00\01\00\00\00\00\00\00\00\90\01\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\00") - (data (i32.const 3040) "\10\00\00\00\01\00\00\00\05\00\00\00\10\00\00\00P\n\00\00P\n\00\00\90\01\00\00d\00\00\00") - (data (i32.const 3072) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\008\00") - (data (i32.const 3096) "\n\00\00\00\01\00\00\00\01\00\00\00\n\00\00\00-\001\000\000\000\00") - (data (i32.const 3128) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\001\002\003\004\00") - (data (i32.const 3152) "\n\00\00\00\01\00\00\00\01\00\00\00\n\00\00\001\002\003\004\005\00") - (data (i32.const 3184) "\0c\00\00\00\01\00\00\00\01\00\00\00\0c\00\00\001\002\003\004\005\006\00") - (data (i32.const 3216) "\0e\00\00\00\01\00\00\00\01\00\00\00\0e\00\00\001\001\001\001\001\001\001\00") - (data (i32.const 3248) "\0e\00\00\00\01\00\00\00\01\00\00\00\0e\00\00\001\002\003\004\005\006\007\00") - (data (i32.const 3280) "\14\00\00\00\01\00\00\00\01\00\00\00\14\00\00\002\001\004\007\004\008\003\006\004\006\00") - (data (i32.const 3320) "\14\00\00\00\01\00\00\00\01\00\00\00\14\00\00\002\001\004\007\004\008\003\006\004\007\00") - (data (i32.const 3360) "\16\00\00\00\01\00\00\00\01\00\00\00\16\00\00\00-\002\001\004\007\004\008\003\006\004\008\00") - (data (i32.const 3400) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00-\001\00") - (data (i32.const 3424) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\001\000\000\000\00") - (data (i32.const 3448) "\14\00\00\00\01\00\00\00\01\00\00\00\14\00\00\002\001\004\007\004\008\003\006\004\008\00") - (data (i32.const 3488) "\14\00\00\00\01\00\00\00\01\00\00\00\14\00\00\004\002\009\004\009\006\007\002\009\005\00") - (data (i32.const 3528) "\10\00\00\00\01\00\00\00\01\00\00\00\10\00\00\009\009\009\009\009\009\009\009\00") - (data (i32.const 3560) "\12\00\00\00\01\00\00\00\01\00\00\00\12\00\00\001\000\000\000\000\000\000\000\000\00") - (data (i32.const 3600) "\16\00\00\00\01\00\00\00\01\00\00\00\16\00\00\006\008\007\001\009\004\007\006\007\003\005\00") - (data (i32.const 3640) "\18\00\00\00\01\00\00\00\01\00\00\00\18\00\00\008\006\008\007\001\009\004\007\006\007\003\005\00") - (data (i32.const 3680) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\009\009\009\008\006\008\007\001\009\004\007\006\007\003\005\00") - (data (i32.const 3728) " \00\00\00\01\00\00\00\01\00\00\00 \00\00\009\009\009\009\008\006\008\007\001\009\004\007\006\007\003\005\00") - (data (i32.const 3776) "\"\00\00\00\01\00\00\00\01\00\00\00\"\00\00\001\009\009\009\009\008\006\008\007\001\009\004\007\006\007\003\005\00") - (data (i32.const 3832) "(\00\00\00\01\00\00\00\01\00\00\00(\00\00\001\008\004\004\006\007\004\004\000\007\003\007\000\009\005\005\001\006\001\005\00") - (data (i32.const 3888) "\n\00\00\00\01\00\00\00\01\00\00\00\n\00\00\00-\001\002\003\004\00") - (data (i32.const 3920) "\16\00\00\00\01\00\00\00\01\00\00\00\16\00\00\00-\004\002\009\004\009\006\007\002\009\005\00") - (data (i32.const 3960) "\18\00\00\00\01\00\00\00\01\00\00\00\18\00\00\00-\006\008\007\001\009\004\007\006\007\003\005\00") - (data (i32.const 4000) "\1a\00\00\00\01\00\00\00\01\00\00\00\1a\00\00\00-\008\006\008\007\001\009\004\007\006\007\003\005\00") - (data (i32.const 4048) " \00\00\00\01\00\00\00\01\00\00\00 \00\00\00-\009\009\009\008\006\008\007\001\009\004\007\006\007\003\005\00") - (data (i32.const 4096) "$\00\00\00\01\00\00\00\01\00\00\00$\00\00\00-\001\009\009\009\009\008\006\008\007\001\009\004\007\006\007\003\005\00") - (data (i32.const 4152) "&\00\00\00\01\00\00\00\01\00\00\00&\00\00\009\002\002\003\003\007\002\000\003\006\008\005\004\007\007\005\008\000\007\00") - (data (i32.const 4208) "(\00\00\00\01\00\00\00\01\00\00\00(\00\00\00-\009\002\002\003\003\007\002\000\003\006\008\005\004\007\007\005\008\000\008\00") - (data (i32.const 4264) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\000\00.\000\00") - (data (i32.const 4288) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00N\00a\00N\00") - (data (i32.const 4312) "\12\00\00\00\01\00\00\00\01\00\00\00\12\00\00\00-\00I\00n\00f\00i\00n\00i\00t\00y\00") - (data (i32.const 4352) "\10\00\00\00\01\00\00\00\01\00\00\00\10\00\00\00I\00n\00f\00i\00n\00i\00t\00y\00") - (data (i32.const 4384) "\b8\02\00\00\01\00\00\00\00\00\00\00\b8\02\00\00\88\02\1c\08\a0\d5\8f\fav\bf>\a2\7f\e1\ae\bav\acU0 \fb\16\8b\ea5\ce]J\89B\cf-;eU\aa\b0k\9a\dfE\1a=\03\cf\1a\e6\ca\c6\9a\c7\17\fep\abO\dc\bc\be\fc\b1w\ff\0c\d6kA\ef\91V\be<\fc\7f\90\ad\1f\d0\8d\83\9aU1(\\Q\d3\b5\c9\a6\ad\8f\acq\9d\cb\8b\ee#w\"\9c\eamSx@\91I\cc\aeW\ce\b6]y\12<\827V\fbM6\94\10\c2O\98H8o\ea\96\90\c7:\82%\cb\85t\d7\f4\97\bf\97\cd\cf\86\a0\e5\ac*\17\98\n4\ef\8e\b25*\fbg8\b2;?\c6\d2\df\d4\c8\84\ba\cd\d3\1a\'D\dd\c5\96\c9%\bb\ce\9fk\93\84\a5b}$l\ac\db\f6\da_\0dXf\ab\a3&\f1\c3\de\93\f8\e2\f3\b8\80\ff\aa\a8\ad\b5\b5\8bJ|l\05_b\87S0\c14`\ff\bc\c9U&\ba\91\8c\85N\96\bd~)p$w\f9\df\8f\b8\e5\b8\9f\bd\df\a6\94}t\88\cf_\a9\f8\cf\9b\a8\8f\93pD\b9k\15\0f\bf\f8\f0\08\8a\b611eU%\b0\cd\ac\7f{\d0\c6\e2?\99\06;+*\c4\10\\\e4\d3\92si\99$$\aa\0e\ca\00\83\f2\b5\87\fd\eb\1a\11\92d\08\e5\bc\cc\88Po\t\cc\bc\8c,e\19\e2X\17\b7\d1\00\00\00\00\00\00@\9c\00\00\00\00\10\a5\d4\e8\00\00b\ac\c5\ebx\ad\84\t\94\f8x9?\81\b3\15\07\c9{\ce\97\c0p\\\ea{\ce2~\8fh\80\e9\ab\a48\d2\d5E\"\9a\17&\'O\9f\'\fb\c4\d41\a2c\ed\a8\ad\c8\8c8e\de\b0\dbe\ab\1a\8e\08\c7\83\9a\1dqB\f9\1d]\c4X\e7\1b\a6,iM\92\ea\8dp\1ad\ee\01\daJw\ef\9a\99\a3m\a2\85k}\b4{x\t\f2w\18\ddy\a1\e4T\b4\c2\c5\9b[\92\86[\86=]\96\c8\c5S5\c8\b3\a0\97\fa\\\b4*\95\e3_\a0\99\bd\9fF\de%\8c9\db4\c2\9b\a5\\\9f\98\a3r\9a\c6\f6\ce\be\e9TS\bf\dc\b7\e2A\"\f2\17\f3\fc\88\a5x\\\d3\9b\ce \cc\dfS!{\f3Z\16\98:0\1f\97\dc\b5\a0\e2\96\b3\e3\\S\d1\d9\a8\a2\7f\e1\ae\bav\acU0 \fb\16\8b\ea5\ce]J\89B\cf-;eU\aa\b0k\9a\dfE\1a=\03\cf\1a\e6\ca\c6\9a\c7\17\fep\abO\dc\bc\be\fc\b1w\ff\0c\d6kA\ef\91V\be<\fc\7f\90\ad\1f\d0\8d\83\9aU1(\\Q\d3\b5\c9\a6\ad\8f\acq\9d\cb\8b\ee#w\"\9c\eamSx@\91I\cc\aeW\ce\b6]y\12<\827V\fbM6\94\10\c2O\98H8o\ea\96\90\c7:\82%\cb\85t\d7\f4\97\bf\97\cd\cf\86\a0\e5\ac*\17\98\n4\ef\8e\b25*\fbg8\b2;?\c6\d2\df\d4\c8\84\ba\cd\d3\1a\'D\dd\c5\96\c9%\bb\ce\9fk\93\84\a5b}$l\ac\db\f6\da_\0dXf\ab\a3&\f1\c3\de\93\f8\e2\f3\b8\80\ff\aa\a8\ad\b5\b5\8bJ|l\05_b\87S0\c14`\ff\bc\c9U&\ba\91\8c\85N\96\bd~)p$w\f9\df\8f\b8\e5\b8\9f\bd\df\a6\94}t\88\cf_\a9\f8\cf\9b\a8\8f\93pD\b9k\15\0f\bf\f8\f0\08\8a\b611eU%\b0\cd\ac\7f{\d0\c6\e2?\99\06;+*\c4\10\\\e4\d3\92si\99$$\aa\0e\ca\00\83\f2\b5\87\fd\eb\1a\11\92d\08\e5\bc\cc\88Po\t\cc\bc\8c,e\19\e2X\17\b7\d1\00\00\00\00\00\00@\9c\00\00\00\00\10\a5\d4\e8\00\00b\ac\c5\ebx\ad\84\t\94\f8x9?\81\b3\15\07\c9{\ce\97\c0p\\\ea{\ce2~\8fh\80\e9\ab\a48\d2\d5E\"\9a\17&\'O\9f\'\fb\c4\d41\a2c\ed\a8\ad\c8\8c8e\de\b0\dbe\ab\1a\8e\08\c7\83\9a\1dqB\f9\1d]\c4X\e7\1b\a6,iM\92\ea\8dp\1ad\ee\01\daJw\ef\9a\99\a3m\a2\85k}\b4{x\t\f2w\18\ddy\a1\e4T\b4\c2\c5\9b[\92\86[\86=]\96\c8\c5S5\c8\b3\a0\97\fa\\\b4*\95\e3_\a0\99\bd\9fF\de%\8c9\db4\c2\9b\a5\\\9f\98\a3r\9a\c6\f6\ce\be\e9TS\bf\dc\b7\e2A\"\f2\17\f3\fc\88\a5x\\\d3\9b\ce \cc\dfS!{\f3Z\16\98:0\1f\97\dc\b5\a0\e2\96\b3\e3\\S\d1\d9\a8#push (; 65 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array<~lib/string/String>#push (; 67 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -6427,7 +6898,7 @@ call $~lib/rt/pure/__release local.get $4 ) - (func $~lib/string/String#split (; 66 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/string/String#split (; 68 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -6442,18 +6913,6 @@ local.get $1 call $~lib/rt/pure/__retain drop - local.get $0 - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 456 - i32.const 357 - i32.const 4 - call $~lib/builtins/abort - unreachable - end local.get $2 i32.eqz if @@ -6633,7 +7092,7 @@ call $~lib/string/String#indexOf local.tee $10 i32.const -1 - i32.ne + i32.xor i32.eqz br_if $break|1 local.get $10 @@ -6746,11 +7205,11 @@ call $~lib/rt/pure/__release local.get $3 ) - (func $~lib/array/Array<~lib/string/String>#get:length (; 67 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/array/Array<~lib/string/String>#get:length (; 69 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.load offset=12 ) - (func $~lib/array/Array<~lib/string/String>#__unchecked_get (; 68 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array<~lib/string/String>#__unchecked_get (; 70 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $0 i32.load offset=4 local.get $1 @@ -6760,14 +7219,14 @@ i32.load call $~lib/rt/pure/__retain ) - (func $~lib/array/Array<~lib/string/String>#__get (; 69 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array<~lib/string/String>#__get (; 71 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $1 local.get $0 i32.load offset=12 i32.ge_u if - i32.const 2448 - i32.const 2400 + i32.const 3136 + i32.const 3088 i32.const 106 i32.const 45 call $~lib/builtins/abort @@ -6781,7 +7240,7 @@ i32.ge_u if i32.const 232 - i32.const 2400 + i32.const 3088 i32.const 109 i32.const 61 call $~lib/builtins/abort @@ -6791,7 +7250,7 @@ local.get $1 call $~lib/array/Array<~lib/string/String>#__unchecked_get ) - (func $~lib/util/number/decimalCount32 (; 70 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/util/number/decimalCount32 (; 72 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) local.get $0 i32.const 100000 @@ -6857,7 +7316,7 @@ end unreachable ) - (func $~lib/util/number/utoa32_lut (; 71 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/util/number/utoa32_lut (; 73 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -6865,7 +7324,7 @@ (local $7 i32) (local $8 i64) (local $9 i64) - i32.const 3056 + i32.const 3720 i32.load offset=4 local.set $3 block $break|0 @@ -6999,7 +7458,7 @@ i32.store16 end ) - (func $~lib/util/number/itoa32 (; 72 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/util/number/itoa32 (; 74 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -7054,7 +7513,7 @@ local.get $3 call $~lib/rt/pure/__retain ) - (func $~lib/util/number/utoa32 (; 73 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/util/number/utoa32 (; 75 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -7089,7 +7548,7 @@ local.get $2 call $~lib/rt/pure/__retain ) - (func $~lib/util/number/decimalCount64 (; 74 ;) (type $FUNCSIG$ij) (param $0 i64) (result i32) + (func $~lib/util/number/decimalCount64 (; 76 ;) (type $FUNCSIG$ij) (param $0 i64) (result i32) (local $1 i32) local.get $0 i64.const 1000000000000000 @@ -7155,7 +7614,7 @@ end unreachable ) - (func $~lib/util/number/utoa64_lut (; 75 ;) (type $FUNCSIG$viji) (param $0 i32) (param $1 i64) (param $2 i32) + (func $~lib/util/number/utoa64_lut (; 77 ;) (type $FUNCSIG$viji) (param $0 i32) (param $1 i64) (param $2 i32) (local $3 i32) (local $4 i64) (local $5 i32) @@ -7167,7 +7626,7 @@ (local $11 i32) (local $12 i64) (local $13 i64) - i32.const 3056 + i32.const 3720 i32.load offset=4 local.set $3 block $break|0 @@ -7282,7 +7741,7 @@ local.get $2 call $~lib/util/number/utoa32_lut ) - (func $~lib/util/number/utoa64 (; 76 ;) (type $FUNCSIG$ij) (param $0 i64) (result i32) + (func $~lib/util/number/utoa64 (; 78 ;) (type $FUNCSIG$ij) (param $0 i64) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -7347,7 +7806,7 @@ local.get $1 call $~lib/rt/pure/__retain ) - (func $~lib/util/number/itoa64 (; 77 ;) (type $FUNCSIG$ij) (param $0 i64) (result i32) + (func $~lib/util/number/itoa64 (; 79 ;) (type $FUNCSIG$ij) (param $0 i64) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -7434,19 +7893,19 @@ local.get $2 call $~lib/rt/pure/__retain ) - (func $~lib/number/isFinite (; 78 ;) (type $FUNCSIG$id) (param $0 f64) (result i32) + (func $~lib/number/isFinite (; 80 ;) (type $FUNCSIG$id) (param $0 f64) (result i32) local.get $0 local.get $0 f64.sub f64.const 0 f64.eq ) - (func $~lib/number/isNaN (; 79 ;) (type $FUNCSIG$id) (param $0 f64) (result i32) + (func $~lib/number/isNaN (; 81 ;) (type $FUNCSIG$id) (param $0 f64) (result i32) local.get $0 local.get $0 f64.ne ) - (func $~lib/array/Array#__unchecked_get (; 80 ;) (type $FUNCSIG$jii) (param $0 i32) (param $1 i32) (result i64) + (func $~lib/array/Array#__unchecked_get (; 82 ;) (type $FUNCSIG$jii) (param $0 i32) (param $1 i32) (result i64) local.get $0 i32.load offset=4 local.get $1 @@ -7455,7 +7914,7 @@ i32.add i64.load ) - (func $~lib/array/Array#__unchecked_get (; 81 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#__unchecked_get (; 83 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $0 i32.load offset=4 local.get $1 @@ -7464,7 +7923,7 @@ i32.add i32.load16_s ) - (func $~lib/util/number/genDigits (; 82 ;) (type $FUNCSIG$iijijiji) (param $0 i32) (param $1 i64) (param $2 i32) (param $3 i64) (param $4 i32) (param $5 i64) (param $6 i32) (result i32) + (func $~lib/util/number/genDigits (; 84 ;) (type $FUNCSIG$iijijiji) (param $0 i32) (param $1 i64) (param $2 i32) (param $3 i64) (param $4 i32) (param $5 i64) (param $6 i32) (result i32) (local $7 i32) (local $8 i64) (local $9 i64) @@ -7519,7 +7978,7 @@ local.set $14 local.get $6 local.set $15 - i32.const 5424 + i32.const 6088 i32.load offset=4 local.set $16 block $break|0 @@ -7966,7 +8425,7 @@ end unreachable ) - (func $~lib/util/number/prettify (; 83 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/util/number/prettify (; 85 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -8285,7 +8744,7 @@ end unreachable ) - (func $~lib/util/number/dtoa_core (; 84 ;) (type $FUNCSIG$iid) (param $0 i32) (param $1 f64) (result i32) + (func $~lib/util/number/dtoa_core (; 86 ;) (type $FUNCSIG$iid) (param $0 i32) (param $1 f64) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -8450,11 +8909,11 @@ i32.shl i32.sub global.set $~lib/util/number/_K - i32.const 5112 + i32.const 5776 local.get $14 call $~lib/array/Array#__unchecked_get global.set $~lib/util/number/_frc_pow - i32.const 5336 + i32.const 6000 local.get $14 call $~lib/array/Array#__unchecked_get global.set $~lib/util/number/_exp_pow @@ -8707,7 +9166,7 @@ local.get $2 i32.add ) - (func $~lib/string/String#substring (; 85 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/string/String#substring (; 87 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -8717,18 +9176,6 @@ (local $9 i32) (local $10 i32) local.get $0 - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 456 - i32.const 196 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $0 call $~lib/string/String#get:length local.set $3 local.get $1 @@ -8826,7 +9273,7 @@ local.get $10 call $~lib/rt/pure/__retain ) - (func $~lib/util/number/dtoa (; 86 ;) (type $FUNCSIG$id) (param $0 f64) (result i32) + (func $~lib/util/number/dtoa (; 88 ;) (type $FUNCSIG$id) (param $0 f64) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -8834,7 +9281,7 @@ f64.const 0 f64.eq if - i32.const 4280 + i32.const 4944 call $~lib/rt/pure/__retain return end @@ -8845,12 +9292,12 @@ local.get $0 call $~lib/number/isNaN if - i32.const 4304 + i32.const 4968 call $~lib/rt/pure/__retain return end - i32.const 4328 - i32.const 4368 + i32.const 4992 + i32.const 5032 local.get $0 f64.const 0 f64.lt @@ -8885,7 +9332,7 @@ call $~lib/rt/tlsf/__free local.get $3 ) - (func $start:std/string (; 87 ;) (type $FUNCSIG$v) + (func $start:std/string (; 89 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -9015,6 +9462,40 @@ (local $126 i32) (local $127 i32) (local $128 i32) + (local $129 i32) + (local $130 i32) + (local $131 i32) + (local $132 i32) + (local $133 i32) + (local $134 i32) + (local $135 i32) + (local $136 i32) + (local $137 i32) + (local $138 i32) + (local $139 i32) + (local $140 i32) + (local $141 i32) + (local $142 i32) + (local $143 i32) + (local $144 i32) + (local $145 i32) + (local $146 i32) + (local $147 i32) + (local $148 i32) + (local $149 i32) + (local $150 i32) + (local $151 i32) + (local $152 i32) + (local $153 i32) + (local $154 i32) + (local $155 i32) + (local $156 i32) + (local $157 i32) + (local $158 i32) + (local $159 i32) + (local $160 i32) + (local $161 i32) + (local $162 i32) global.get $std/string/str i32.const 24 i32.eq @@ -10618,26 +11099,44 @@ call $~lib/builtins/abort unreachable end - i32.const 2184 + i32.const 120 + i32.const 120 + i32.const 120 + call $~lib/string/String#replace local.tee $31 - global.get $std/string/str - local.tee $32 - i32.ne + i32.const 120 + call $~lib/string/String.__eq + i32.eqz if - local.get $31 - call $~lib/rt/pure/__retain - drop - local.get $32 - call $~lib/rt/pure/__release + i32.const 0 + i32.const 72 + i32.const 149 + i32.const 0 + call $~lib/builtins/abort + unreachable end - local.get $31 - global.set $std/string/str - global.get $std/string/str - i32.const 0 - global.get $~lib/builtins/i32.MAX_VALUE - call $~lib/string/String#slice - local.tee $31 + i32.const 120 + i32.const 120 i32.const 2184 + call $~lib/string/String#replace + local.tee $32 + i32.const 2184 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 72 + i32.const 150 + i32.const 0 + call $~lib/builtins/abort + unreachable + end + i32.const 2184 + i32.const 2184 + i32.const 120 + call $~lib/string/String#replace + local.tee $33 + i32.const 120 call $~lib/string/String.__eq i32.eqz if @@ -10648,12 +11147,12 @@ call $~lib/builtins/abort unreachable end - global.get $std/string/str - i32.const -1 - global.get $~lib/builtins/i32.MAX_VALUE - call $~lib/string/String#slice - local.tee $32 - i32.const 2232 + i32.const 2184 + i32.const 120 + i32.const 120 + call $~lib/string/String#replace + local.tee $34 + i32.const 2184 call $~lib/string/String.__eq i32.eqz if @@ -10664,12 +11163,12 @@ call $~lib/builtins/abort unreachable end - global.get $std/string/str - i32.const -5 - global.get $~lib/builtins/i32.MAX_VALUE - call $~lib/string/String#slice - local.tee $33 - i32.const 2256 + i32.const 680 + i32.const 2208 + i32.const 2184 + call $~lib/string/String#replace + local.tee $35 + i32.const 680 call $~lib/string/String.__eq i32.eqz if @@ -10680,12 +11179,12 @@ call $~lib/builtins/abort unreachable end - global.get $std/string/str - i32.const 2 - i32.const 7 - call $~lib/string/String#slice - local.tee $34 - i32.const 2288 + i32.const 680 + i32.const 680 + i32.const 2184 + call $~lib/string/String#replace + local.tee $36 + i32.const 2184 call $~lib/string/String.__eq i32.eqz if @@ -10696,12 +11195,12 @@ call $~lib/builtins/abort unreachable end - global.get $std/string/str - i32.const -11 - i32.const -6 - call $~lib/string/String#slice - local.tee $35 - i32.const 2320 + i32.const 680 + i32.const 2232 + i32.const 2184 + call $~lib/string/String#replace + local.tee $37 + i32.const 680 call $~lib/string/String.__eq i32.eqz if @@ -10712,12 +11211,12 @@ call $~lib/builtins/abort unreachable end - global.get $std/string/str - i32.const 4 - i32.const 3 - call $~lib/string/String#slice - local.tee $36 - i32.const 120 + i32.const 680 + i32.const 1608 + i32.const 1608 + call $~lib/string/String#replace + local.tee $38 + i32.const 680 call $~lib/string/String.__eq i32.eqz if @@ -10728,12 +11227,12 @@ call $~lib/builtins/abort unreachable end - global.get $std/string/str - i32.const 0 - i32.const -1 - call $~lib/string/String#slice - local.tee $37 - i32.const 2352 + i32.const 2256 + i32.const 2208 + i32.const 2184 + call $~lib/string/String#replace + local.tee $39 + i32.const 2288 call $~lib/string/String.__eq i32.eqz if @@ -10744,710 +11243,746 @@ call $~lib/builtins/abort unreachable end - i32.const 0 - local.set $38 + i32.const 680 i32.const 120 - i32.const 0 - global.get $~lib/builtins/i32.MAX_VALUE - call $~lib/string/String#split - local.set $39 - local.get $38 - call $~lib/rt/pure/__release - local.get $39 - local.set $38 - local.get $38 - call $~lib/array/Array<~lib/string/String>#get:length - i32.const 1 - i32.eq - if (result i32) - local.get $38 + i32.const 2184 + call $~lib/string/String#replace + local.tee $40 + i32.const 2320 + call $~lib/string/String.__eq + i32.eqz + if i32.const 0 - call $~lib/array/Array<~lib/string/String>#__get - local.tee $39 - i32.const 120 - call $~lib/string/String.__eq - local.set $40 - local.get $39 - call $~lib/rt/pure/__release - local.get $40 - else + i32.const 72 + i32.const 158 i32.const 0 + call $~lib/builtins/abort + unreachable end - i32.const 0 - i32.ne + i32.const 2344 + i32.const 2368 + i32.const 2184 + call $~lib/string/String#replace + local.tee $41 + i32.const 2320 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 72 + i32.const 159 + i32.const 0 + call $~lib/builtins/abort + unreachable + end + i32.const 680 + i32.const 2392 + i32.const 2416 + call $~lib/string/String#replace + local.tee $42 + i32.const 2440 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 72 + i32.const 160 + i32.const 0 + call $~lib/builtins/abort + unreachable + end + i32.const 680 + i32.const 2392 + i32.const 120 + call $~lib/string/String#replace + local.tee $43 + i32.const 1608 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 72 + i32.const 161 + i32.const 0 + call $~lib/builtins/abort + unreachable + end + i32.const 120 + i32.const 120 + i32.const 680 + call $~lib/string/String#replaceAll + local.tee $44 + i32.const 680 + call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 72 i32.const 163 - i32.const 2 + i32.const 0 call $~lib/builtins/abort unreachable end - i32.const 120 - i32.const 120 - global.get $~lib/builtins/i32.MAX_VALUE - call $~lib/string/String#split - local.set $40 - local.get $38 - call $~lib/rt/pure/__release - local.get $40 - local.set $38 - local.get $38 - call $~lib/array/Array<~lib/string/String>#get:length - i32.const 0 - i32.eq + i32.const 680 + i32.const 2208 + i32.const 2184 + call $~lib/string/String#replaceAll + local.tee $45 + i32.const 680 + call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 72 - i32.const 165 - i32.const 2 + i32.const 164 + i32.const 0 call $~lib/builtins/abort unreachable end - i32.const 120 - i32.const 920 - global.get $~lib/builtins/i32.MAX_VALUE - call $~lib/string/String#split - local.set $39 - local.get $38 - call $~lib/rt/pure/__release - local.get $39 - local.set $38 - local.get $38 - call $~lib/array/Array<~lib/string/String>#get:length - i32.const 1 - i32.eq - if (result i32) - local.get $38 + i32.const 856 + i32.const 680 + i32.const 2184 + call $~lib/string/String#replaceAll + local.tee $46 + i32.const 2416 + call $~lib/string/String.__eq + i32.eqz + if i32.const 0 - call $~lib/array/Array<~lib/string/String>#__get - local.tee $39 - i32.const 120 - call $~lib/string/String.__eq - local.set $40 - local.get $39 - call $~lib/rt/pure/__release - local.get $40 - else + i32.const 72 + i32.const 166 i32.const 0 + call $~lib/builtins/abort + unreachable end - i32.const 0 - i32.ne + i32.const 2464 + i32.const 680 + i32.const 2184 + call $~lib/string/String#replaceAll + local.tee $47 + i32.const 2504 + call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 72 i32.const 167 - i32.const 2 + i32.const 0 call $~lib/builtins/abort unreachable end - i32.const 2560 - i32.const 2592 - global.get $~lib/builtins/i32.MAX_VALUE - call $~lib/string/String#split - local.set $40 - local.get $38 - call $~lib/rt/pure/__release - local.get $40 - local.set $38 - local.get $38 - call $~lib/array/Array<~lib/string/String>#get:length - i32.const 1 - i32.eq - if (result i32) - local.get $38 + i32.const 856 + i32.const 1608 + i32.const 1608 + call $~lib/string/String#replaceAll + local.tee $48 + i32.const 856 + call $~lib/string/String.__eq + i32.eqz + if i32.const 0 - call $~lib/array/Array<~lib/string/String>#__get - local.tee $40 - i32.const 2560 - call $~lib/string/String.__eq - local.set $39 - local.get $40 - call $~lib/rt/pure/__release - local.get $39 - else + i32.const 72 + i32.const 168 i32.const 0 + call $~lib/builtins/abort + unreachable end - i32.const 0 - i32.ne + i32.const 2528 + i32.const 408 + i32.const 2504 + call $~lib/string/String#replaceAll + local.tee $49 + i32.const 2560 + call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 72 i32.const 169 - i32.const 2 + i32.const 0 call $~lib/builtins/abort unreachable end - i32.const 2560 - i32.const 920 - global.get $~lib/builtins/i32.MAX_VALUE - call $~lib/string/String#split - local.set $39 - local.get $38 - call $~lib/rt/pure/__release - local.get $39 - local.set $38 - local.get $38 - call $~lib/array/Array<~lib/string/String>#get:length - i32.const 3 - i32.eq - if (result i32) - local.get $38 + i32.const 856 + i32.const 1608 + i32.const 2416 + call $~lib/string/String#replaceAll + local.tee $50 + i32.const 2608 + call $~lib/string/String.__eq + i32.eqz + if i32.const 0 - call $~lib/array/Array<~lib/string/String>#__get - local.tee $39 - i32.const 408 - call $~lib/string/String.__eq - local.set $40 - local.get $39 - call $~lib/rt/pure/__release - local.get $40 - else + i32.const 72 + i32.const 170 i32.const 0 + call $~lib/builtins/abort + unreachable end - i32.const 0 - i32.ne - if (result i32) - local.get $38 - i32.const 1 - call $~lib/array/Array<~lib/string/String>#__get - local.tee $39 - i32.const 1584 - call $~lib/string/String.__eq - local.set $40 - local.get $39 - call $~lib/rt/pure/__release - local.get $40 - else - i32.const 0 - end - i32.const 0 - i32.ne - if (result i32) - local.get $38 - i32.const 2 - call $~lib/array/Array<~lib/string/String>#__get - local.tee $39 - i32.const 2616 - call $~lib/string/String.__eq - local.set $40 - local.get $39 - call $~lib/rt/pure/__release - local.get $40 - else - i32.const 0 - end - i32.const 0 - i32.ne + i32.const 2640 + i32.const 2664 + i32.const 2416 + call $~lib/string/String#replaceAll + local.tee $51 + i32.const 2688 + call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 72 i32.const 171 - i32.const 2 + i32.const 0 call $~lib/builtins/abort unreachable end - local.get $38 - call $~lib/rt/pure/__release + i32.const 680 + i32.const 2232 + i32.const 2184 + call $~lib/string/String#replaceAll + local.tee $52 + i32.const 680 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 72 + i32.const 172 + i32.const 0 + call $~lib/builtins/abort + unreachable + end + i32.const 2232 + i32.const 2712 + i32.const 2416 + call $~lib/string/String#replaceAll + local.tee $53 + i32.const 2232 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 72 + i32.const 173 + i32.const 0 + call $~lib/builtins/abort + unreachable + end + i32.const 680 + i32.const 2736 + i32.const 2184 + call $~lib/string/String#replaceAll + local.tee $54 + i32.const 2760 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 72 + i32.const 174 + i32.const 0 + call $~lib/builtins/abort + unreachable + end + i32.const 1608 + i32.const 1608 + i32.const 2184 + call $~lib/string/String#replaceAll + local.tee $55 + i32.const 2184 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 72 + i32.const 175 + i32.const 0 + call $~lib/builtins/abort + unreachable + end + i32.const 2256 + i32.const 2208 + i32.const 2184 + call $~lib/string/String#replaceAll + local.tee $56 + i32.const 2784 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 72 + i32.const 176 + i32.const 0 + call $~lib/builtins/abort + unreachable + end + i32.const 120 + i32.const 120 + i32.const 120 + call $~lib/string/String#replaceAll + local.tee $57 + i32.const 120 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 72 + i32.const 178 + i32.const 0 + call $~lib/builtins/abort + unreachable + end + i32.const 120 + i32.const 120 + i32.const 2184 + call $~lib/string/String#replaceAll + local.tee $58 + i32.const 2184 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 72 + i32.const 179 + i32.const 0 + call $~lib/builtins/abort + unreachable + end + i32.const 2184 + i32.const 2184 + i32.const 120 + call $~lib/string/String#replaceAll + local.tee $59 + i32.const 120 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 72 + i32.const 180 + i32.const 0 + call $~lib/builtins/abort + unreachable + end + i32.const 2184 + i32.const 120 + i32.const 120 + call $~lib/string/String#replaceAll + local.tee $60 + i32.const 2184 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 72 + i32.const 181 + i32.const 0 + call $~lib/builtins/abort + unreachable + end + i32.const 680 + i32.const 680 + i32.const 2208 + call $~lib/string/String#replaceAll + local.tee $61 + i32.const 2208 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 72 + i32.const 182 + i32.const 0 + call $~lib/builtins/abort + unreachable + end + i32.const 680 + i32.const 2816 + i32.const 2208 + call $~lib/string/String#replaceAll + local.tee $62 + i32.const 680 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 72 + i32.const 183 + i32.const 0 + call $~lib/builtins/abort + unreachable + end + i32.const 680 + i32.const 120 + i32.const 2184 + call $~lib/string/String#replaceAll + local.tee $63 + i32.const 2840 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 72 + i32.const 184 + i32.const 0 + call $~lib/builtins/abort + unreachable + end + i32.const 680 + i32.const 120 + i32.const 120 + call $~lib/string/String#replaceAll + local.tee $64 + i32.const 680 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 72 + i32.const 185 + i32.const 0 + call $~lib/builtins/abort + unreachable + end + i32.const 2872 + local.tee $65 + global.get $std/string/str + local.tee $66 + i32.ne + if + local.get $65 + call $~lib/rt/pure/__retain + drop + local.get $66 + call $~lib/rt/pure/__release + end + local.get $65 + global.set $std/string/str + global.get $std/string/str i32.const 0 - call $~lib/util/number/itoa32 - local.tee $38 - i32.const 1040 + global.get $~lib/builtins/i32.MAX_VALUE + call $~lib/string/String#slice + local.tee $65 + i32.const 2872 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 72 - i32.const 197 + i32.const 189 i32.const 0 call $~lib/builtins/abort unreachable end + global.get $std/string/str + i32.const -1 + global.get $~lib/builtins/i32.MAX_VALUE + call $~lib/string/String#slice + local.tee $66 + i32.const 2920 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 72 + i32.const 190 + i32.const 0 + call $~lib/builtins/abort + unreachable + end + global.get $std/string/str + i32.const -5 + global.get $~lib/builtins/i32.MAX_VALUE + call $~lib/string/String#slice + local.tee $67 + i32.const 2944 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 72 + i32.const 191 + i32.const 0 + call $~lib/builtins/abort + unreachable + end + global.get $std/string/str + i32.const 2 + i32.const 7 + call $~lib/string/String#slice + local.tee $68 + i32.const 2976 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 72 + i32.const 192 + i32.const 0 + call $~lib/builtins/abort + unreachable + end + global.get $std/string/str + i32.const -11 + i32.const -6 + call $~lib/string/String#slice + local.tee $69 + i32.const 3008 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 72 + i32.const 193 + i32.const 0 + call $~lib/builtins/abort + unreachable + end + global.get $std/string/str + i32.const 4 + i32.const 3 + call $~lib/string/String#slice + local.tee $70 + i32.const 120 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 72 + i32.const 194 + i32.const 0 + call $~lib/builtins/abort + unreachable + end + global.get $std/string/str + i32.const 0 + i32.const -1 + call $~lib/string/String#slice + local.tee $71 + i32.const 3040 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 72 + i32.const 195 + i32.const 0 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + local.set $72 + i32.const 120 + i32.const 0 + global.get $~lib/builtins/i32.MAX_VALUE + call $~lib/string/String#split + local.set $73 + local.get $72 + call $~lib/rt/pure/__release + local.get $73 + local.set $72 + local.get $72 + call $~lib/array/Array<~lib/string/String>#get:length i32.const 1 - call $~lib/util/number/itoa32 - local.tee $39 - i32.const 1064 - call $~lib/string/String.__eq - i32.eqz - if + i32.eq + if (result i32) + local.get $72 i32.const 0 - i32.const 72 - i32.const 198 + call $~lib/array/Array<~lib/string/String>#__get + local.tee $73 + i32.const 120 + call $~lib/string/String.__eq + local.set $74 + local.get $73 + call $~lib/rt/pure/__release + local.get $74 + else i32.const 0 - call $~lib/builtins/abort - unreachable end - i32.const 8 - call $~lib/util/number/itoa32 - local.tee $40 - i32.const 3088 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 72 - i32.const 199 - i32.const 0 - call $~lib/builtins/abort - unreachable - end - i32.const 123 - call $~lib/util/number/itoa32 - local.tee $41 - i32.const 736 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 72 - i32.const 200 - i32.const 0 - call $~lib/builtins/abort - unreachable - end - i32.const -1000 - call $~lib/util/number/itoa32 - local.tee $42 - i32.const 3112 - call $~lib/string/String.__eq + i32.const 0 + i32.ne i32.eqz if i32.const 0 i32.const 72 i32.const 201 - i32.const 0 + i32.const 2 call $~lib/builtins/abort unreachable end - i32.const 1234 - call $~lib/util/number/itoa32 - local.tee $43 - i32.const 3144 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 72 - i32.const 202 - i32.const 0 - call $~lib/builtins/abort - unreachable - end - i32.const 12345 - call $~lib/util/number/itoa32 - local.tee $44 - i32.const 3168 - call $~lib/string/String.__eq + i32.const 120 + i32.const 120 + global.get $~lib/builtins/i32.MAX_VALUE + call $~lib/string/String#split + local.set $74 + local.get $72 + call $~lib/rt/pure/__release + local.get $74 + local.set $72 + local.get $72 + call $~lib/array/Array<~lib/string/String>#get:length + i32.const 0 + i32.eq i32.eqz if i32.const 0 i32.const 72 i32.const 203 - i32.const 0 + i32.const 2 call $~lib/builtins/abort unreachable end - i32.const 123456 - call $~lib/util/number/itoa32 - local.tee $45 - i32.const 3200 - call $~lib/string/String.__eq - i32.eqz - if + i32.const 120 + i32.const 920 + global.get $~lib/builtins/i32.MAX_VALUE + call $~lib/string/String#split + local.set $73 + local.get $72 + call $~lib/rt/pure/__release + local.get $73 + local.set $72 + local.get $72 + call $~lib/array/Array<~lib/string/String>#get:length + i32.const 1 + i32.eq + if (result i32) + local.get $72 i32.const 0 - i32.const 72 - i32.const 204 + call $~lib/array/Array<~lib/string/String>#__get + local.tee $73 + i32.const 120 + call $~lib/string/String.__eq + local.set $74 + local.get $73 + call $~lib/rt/pure/__release + local.get $74 + else i32.const 0 - call $~lib/builtins/abort - unreachable end - i32.const 1111111 - call $~lib/util/number/itoa32 - local.tee $46 - i32.const 3232 - call $~lib/string/String.__eq + i32.const 0 + i32.ne i32.eqz if i32.const 0 i32.const 72 i32.const 205 - i32.const 0 + i32.const 2 call $~lib/builtins/abort unreachable end - i32.const 1234567 - call $~lib/util/number/itoa32 - local.tee $47 - i32.const 3264 - call $~lib/string/String.__eq - i32.eqz - if + i32.const 3248 + i32.const 3280 + global.get $~lib/builtins/i32.MAX_VALUE + call $~lib/string/String#split + local.set $74 + local.get $72 + call $~lib/rt/pure/__release + local.get $74 + local.set $72 + local.get $72 + call $~lib/array/Array<~lib/string/String>#get:length + i32.const 1 + i32.eq + if (result i32) + local.get $72 i32.const 0 - i32.const 72 - i32.const 206 + call $~lib/array/Array<~lib/string/String>#__get + local.tee $74 + i32.const 3248 + call $~lib/string/String.__eq + local.set $73 + local.get $74 + call $~lib/rt/pure/__release + local.get $73 + else i32.const 0 - call $~lib/builtins/abort - unreachable end - i32.const 2147483646 - call $~lib/util/number/itoa32 - local.tee $48 - i32.const 3296 - call $~lib/string/String.__eq + i32.const 0 + i32.ne i32.eqz if i32.const 0 i32.const 72 i32.const 207 - i32.const 0 + i32.const 2 call $~lib/builtins/abort unreachable end - i32.const 2147483647 - call $~lib/util/number/itoa32 - local.tee $49 - i32.const 3336 - call $~lib/string/String.__eq - i32.eqz - if + i32.const 3248 + i32.const 920 + global.get $~lib/builtins/i32.MAX_VALUE + call $~lib/string/String#split + local.set $73 + local.get $72 + call $~lib/rt/pure/__release + local.get $73 + local.set $72 + local.get $72 + call $~lib/array/Array<~lib/string/String>#get:length + i32.const 3 + i32.eq + if (result i32) + local.get $72 i32.const 0 - i32.const 72 - i32.const 208 + call $~lib/array/Array<~lib/string/String>#__get + local.tee $73 + i32.const 408 + call $~lib/string/String.__eq + local.set $74 + local.get $73 + call $~lib/rt/pure/__release + local.get $74 + else i32.const 0 - call $~lib/builtins/abort - unreachable end - i32.const -2147483648 - call $~lib/util/number/itoa32 - local.tee $50 - i32.const 3376 - call $~lib/string/String.__eq + i32.const 0 + i32.ne + if (result i32) + local.get $72 + i32.const 1 + call $~lib/array/Array<~lib/string/String>#__get + local.tee $73 + i32.const 1584 + call $~lib/string/String.__eq + local.set $74 + local.get $73 + call $~lib/rt/pure/__release + local.get $74 + else + i32.const 0 + end + i32.const 0 + i32.ne + if (result i32) + local.get $72 + i32.const 2 + call $~lib/array/Array<~lib/string/String>#__get + local.tee $73 + i32.const 2392 + call $~lib/string/String.__eq + local.set $74 + local.get $73 + call $~lib/rt/pure/__release + local.get $74 + else + i32.const 0 + end + i32.const 0 + i32.ne i32.eqz if i32.const 0 i32.const 72 i32.const 209 - i32.const 0 - call $~lib/builtins/abort - unreachable - end - i32.const -1 - call $~lib/util/number/itoa32 - local.tee $51 - i32.const 3416 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 72 - i32.const 210 - i32.const 0 + i32.const 2 call $~lib/builtins/abort unreachable end + local.get $72 + call $~lib/rt/pure/__release i32.const 0 - call $~lib/util/number/utoa32 - local.tee $52 - i32.const 1040 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 72 - i32.const 212 - i32.const 0 - call $~lib/builtins/abort - unreachable - end - i32.const 1000 - call $~lib/util/number/utoa32 - local.tee $53 - i32.const 3440 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 72 - i32.const 213 - i32.const 0 - call $~lib/builtins/abort - unreachable - end - i32.const 2147483647 - call $~lib/util/number/utoa32 - local.tee $54 - i32.const 3336 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 72 - i32.const 214 - i32.const 0 - call $~lib/builtins/abort - unreachable - end - i32.const -2147483648 - call $~lib/util/number/utoa32 - local.tee $55 - i32.const 3464 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 72 - i32.const 215 - i32.const 0 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/builtins/u32.MAX_VALUE - call $~lib/util/number/utoa32 - local.tee $56 - i32.const 3504 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 72 - i32.const 216 - i32.const 0 - call $~lib/builtins/abort - unreachable - end - i64.const 0 - call $~lib/util/number/utoa64 - local.tee $57 - i32.const 1040 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 72 - i32.const 218 - i32.const 0 - call $~lib/builtins/abort - unreachable - end - i64.const 1234 - call $~lib/util/number/utoa64 - local.tee $58 - i32.const 3144 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 72 - i32.const 219 - i32.const 0 - call $~lib/builtins/abort - unreachable - end - i64.const 99999999 - call $~lib/util/number/utoa64 - local.tee $59 - i32.const 3544 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 72 - i32.const 220 - i32.const 0 - call $~lib/builtins/abort - unreachable - end - i64.const 100000000 - call $~lib/util/number/utoa64 - local.tee $60 - i32.const 3576 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 72 - i32.const 221 - i32.const 0 - call $~lib/builtins/abort - unreachable - end - i64.const 4294967295 - call $~lib/util/number/utoa64 - local.tee $61 - i32.const 3504 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 72 - i32.const 222 - i32.const 0 - call $~lib/builtins/abort - unreachable - end - i64.const 68719476735 - call $~lib/util/number/utoa64 - local.tee $62 - i32.const 3616 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 72 - i32.const 223 - i32.const 0 - call $~lib/builtins/abort - unreachable - end - i64.const 868719476735 - call $~lib/util/number/utoa64 - local.tee $63 - i32.const 3656 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 72 - i32.const 224 - i32.const 0 - call $~lib/builtins/abort - unreachable - end - i64.const 999868719476735 - call $~lib/util/number/utoa64 - local.tee $64 - i32.const 3696 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 72 - i32.const 225 - i32.const 0 - call $~lib/builtins/abort - unreachable - end - i64.const 9999868719476735 - call $~lib/util/number/utoa64 - local.tee $65 - i32.const 3744 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 72 - i32.const 226 - i32.const 0 - call $~lib/builtins/abort - unreachable - end - i64.const 19999868719476735 - call $~lib/util/number/utoa64 - local.tee $66 - i32.const 3792 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 72 - i32.const 227 - i32.const 0 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/builtins/u64.MAX_VALUE - call $~lib/util/number/utoa64 - local.tee $67 - i32.const 3848 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 72 - i32.const 228 - i32.const 0 - call $~lib/builtins/abort - unreachable - end - i64.const 0 - call $~lib/util/number/itoa64 - local.tee $68 - i32.const 1040 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 72 - i32.const 230 - i32.const 0 - call $~lib/builtins/abort - unreachable - end - i64.const -1234 - call $~lib/util/number/itoa64 - local.tee $69 - i32.const 3904 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 72 - i32.const 231 - i32.const 0 - call $~lib/builtins/abort - unreachable - end - i64.const 4294967295 - call $~lib/util/number/itoa64 - local.tee $70 - i32.const 3504 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 72 - i32.const 232 - i32.const 0 - call $~lib/builtins/abort - unreachable - end - i64.const -4294967295 - call $~lib/util/number/itoa64 - local.tee $71 - i32.const 3936 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 72 - i32.const 233 - i32.const 0 - call $~lib/builtins/abort - unreachable - end - i64.const 68719476735 - call $~lib/util/number/itoa64 + call $~lib/util/number/itoa32 local.tee $72 - i32.const 3616 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 72 - i32.const 234 - i32.const 0 - call $~lib/builtins/abort - unreachable - end - i64.const -68719476735 - call $~lib/util/number/itoa64 - local.tee $73 - i32.const 3976 + i32.const 1040 call $~lib/string/String.__eq i32.eqz if @@ -11458,10 +11993,10 @@ call $~lib/builtins/abort unreachable end - i64.const -868719476735 - call $~lib/util/number/itoa64 - local.tee $74 - i32.const 4016 + i32.const 1 + call $~lib/util/number/itoa32 + local.tee $73 + i32.const 1064 call $~lib/string/String.__eq i32.eqz if @@ -11472,10 +12007,10 @@ call $~lib/builtins/abort unreachable end - i64.const -999868719476735 - call $~lib/util/number/itoa64 - local.tee $75 - i32.const 4064 + i32.const 8 + call $~lib/util/number/itoa32 + local.tee $74 + i32.const 3752 call $~lib/string/String.__eq i32.eqz if @@ -11486,10 +12021,10 @@ call $~lib/builtins/abort unreachable end - i64.const -19999868719476735 - call $~lib/util/number/itoa64 - local.tee $76 - i32.const 4112 + i32.const 123 + call $~lib/util/number/itoa32 + local.tee $75 + i32.const 736 call $~lib/string/String.__eq i32.eqz if @@ -11500,10 +12035,10 @@ call $~lib/builtins/abort unreachable end - global.get $~lib/builtins/i64.MAX_VALUE - call $~lib/util/number/itoa64 - local.tee $77 - i32.const 4168 + i32.const -1000 + call $~lib/util/number/itoa32 + local.tee $76 + i32.const 3776 call $~lib/string/String.__eq i32.eqz if @@ -11514,10 +12049,10 @@ call $~lib/builtins/abort unreachable end - global.get $~lib/builtins/i64.MIN_VALUE - call $~lib/util/number/itoa64 - local.tee $78 - i32.const 4224 + i32.const 1234 + call $~lib/util/number/itoa32 + local.tee $77 + i32.const 3808 call $~lib/string/String.__eq i32.eqz if @@ -11528,10 +12063,38 @@ call $~lib/builtins/abort unreachable end - f64.const 0 - call $~lib/util/number/dtoa + i32.const 12345 + call $~lib/util/number/itoa32 + local.tee $78 + i32.const 3832 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 72 + i32.const 241 + i32.const 0 + call $~lib/builtins/abort + unreachable + end + i32.const 123456 + call $~lib/util/number/itoa32 local.tee $79 - i32.const 4280 + i32.const 3864 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 72 + i32.const 242 + i32.const 0 + call $~lib/builtins/abort + unreachable + end + i32.const 1111111 + call $~lib/util/number/itoa32 + local.tee $80 + i32.const 3896 call $~lib/string/String.__eq i32.eqz if @@ -11542,10 +12105,10 @@ call $~lib/builtins/abort unreachable end - f64.const -0 - call $~lib/util/number/dtoa - local.tee $80 - i32.const 4280 + i32.const 1234567 + call $~lib/util/number/itoa32 + local.tee $81 + i32.const 3928 call $~lib/string/String.__eq i32.eqz if @@ -11556,10 +12119,10 @@ call $~lib/builtins/abort unreachable end - f64.const nan:0x8000000000000 - call $~lib/util/number/dtoa - local.tee $81 - i32.const 4304 + i32.const 2147483646 + call $~lib/util/number/itoa32 + local.tee $82 + i32.const 3960 call $~lib/string/String.__eq i32.eqz if @@ -11570,10 +12133,10 @@ call $~lib/builtins/abort unreachable end - f64.const inf - call $~lib/util/number/dtoa - local.tee $82 - i32.const 4368 + i32.const 2147483647 + call $~lib/util/number/itoa32 + local.tee $83 + i32.const 4000 call $~lib/string/String.__eq i32.eqz if @@ -11584,11 +12147,10 @@ call $~lib/builtins/abort unreachable end - f64.const inf - f64.neg - call $~lib/util/number/dtoa - local.tee $83 - i32.const 4328 + i32.const -2147483648 + call $~lib/util/number/itoa32 + local.tee $84 + i32.const 4040 call $~lib/string/String.__eq i32.eqz if @@ -11599,10 +12161,10 @@ call $~lib/builtins/abort unreachable end - global.get $~lib/builtins/f64.EPSILON - call $~lib/util/number/dtoa - local.tee $84 - i32.const 5456 + i32.const -1 + call $~lib/util/number/itoa32 + local.tee $85 + i32.const 4080 call $~lib/string/String.__eq i32.eqz if @@ -11613,25 +12175,10 @@ call $~lib/builtins/abort unreachable end - global.get $~lib/builtins/f64.EPSILON - f64.neg - call $~lib/util/number/dtoa - local.tee $85 - i32.const 5520 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 72 - i32.const 249 - i32.const 0 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/builtins/f64.MAX_VALUE - call $~lib/util/number/dtoa + i32.const 0 + call $~lib/util/number/utoa32 local.tee $86 - i32.const 5584 + i32.const 1040 call $~lib/string/String.__eq i32.eqz if @@ -11642,11 +12189,10 @@ call $~lib/builtins/abort unreachable end - global.get $~lib/builtins/f64.MAX_VALUE - f64.neg - call $~lib/util/number/dtoa + i32.const 1000 + call $~lib/util/number/utoa32 local.tee $87 - i32.const 5648 + i32.const 4104 call $~lib/string/String.__eq i32.eqz if @@ -11657,10 +12203,10 @@ call $~lib/builtins/abort unreachable end - f64.const 4185580496821356722454785e274 - call $~lib/util/number/dtoa + i32.const 2147483647 + call $~lib/util/number/utoa32 local.tee $88 - i32.const 5712 + i32.const 4000 call $~lib/string/String.__eq i32.eqz if @@ -11671,10 +12217,10 @@ call $~lib/builtins/abort unreachable end - f64.const 2.2250738585072014e-308 - call $~lib/util/number/dtoa + i32.const -2147483648 + call $~lib/util/number/utoa32 local.tee $89 - i32.const 5776 + i32.const 4128 call $~lib/string/String.__eq i32.eqz if @@ -11685,10 +12231,24 @@ call $~lib/builtins/abort unreachable end - f64.const 4.940656e-318 - call $~lib/util/number/dtoa + global.get $~lib/builtins/u32.MAX_VALUE + call $~lib/util/number/utoa32 local.tee $90 - i32.const 5840 + i32.const 4168 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 72 + i32.const 254 + i32.const 0 + call $~lib/builtins/abort + unreachable + end + i64.const 0 + call $~lib/util/number/utoa64 + local.tee $91 + i32.const 1040 call $~lib/string/String.__eq i32.eqz if @@ -11699,10 +12259,10 @@ call $~lib/builtins/abort unreachable end - f64.const 9060801153433600 - call $~lib/util/number/dtoa - local.tee $91 - i32.const 5888 + i64.const 1234 + call $~lib/util/number/utoa64 + local.tee $92 + i32.const 3808 call $~lib/string/String.__eq i32.eqz if @@ -11713,10 +12273,10 @@ call $~lib/builtins/abort unreachable end - f64.const 4708356024711512064 - call $~lib/util/number/dtoa - local.tee $92 - i32.const 5944 + i64.const 99999999 + call $~lib/util/number/utoa64 + local.tee $93 + i32.const 4208 call $~lib/string/String.__eq i32.eqz if @@ -11727,10 +12287,10 @@ call $~lib/builtins/abort unreachable end - f64.const 9409340012568248320 - call $~lib/util/number/dtoa - local.tee $93 - i32.const 6008 + i64.const 100000000 + call $~lib/util/number/utoa64 + local.tee $94 + i32.const 4240 call $~lib/string/String.__eq i32.eqz if @@ -11741,10 +12301,10 @@ call $~lib/builtins/abort unreachable end - f64.const 5e-324 - call $~lib/util/number/dtoa - local.tee $94 - i32.const 6072 + i64.const 4294967295 + call $~lib/util/number/utoa64 + local.tee $95 + i32.const 4168 call $~lib/string/String.__eq i32.eqz if @@ -11755,10 +12315,80 @@ call $~lib/builtins/abort unreachable end - f64.const 1 - call $~lib/util/number/dtoa - local.tee $95 - i32.const 6104 + i64.const 68719476735 + call $~lib/util/number/utoa64 + local.tee $96 + i32.const 4280 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 72 + i32.const 261 + i32.const 0 + call $~lib/builtins/abort + unreachable + end + i64.const 868719476735 + call $~lib/util/number/utoa64 + local.tee $97 + i32.const 4320 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 72 + i32.const 262 + i32.const 0 + call $~lib/builtins/abort + unreachable + end + i64.const 999868719476735 + call $~lib/util/number/utoa64 + local.tee $98 + i32.const 4360 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 72 + i32.const 263 + i32.const 0 + call $~lib/builtins/abort + unreachable + end + i64.const 9999868719476735 + call $~lib/util/number/utoa64 + local.tee $99 + i32.const 4408 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 72 + i32.const 264 + i32.const 0 + call $~lib/builtins/abort + unreachable + end + i64.const 19999868719476735 + call $~lib/util/number/utoa64 + local.tee $100 + i32.const 4456 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 72 + i32.const 265 + i32.const 0 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/builtins/u64.MAX_VALUE + call $~lib/util/number/utoa64 + local.tee $101 + i32.const 4512 call $~lib/string/String.__eq i32.eqz if @@ -11769,24 +12399,10 @@ call $~lib/builtins/abort unreachable end - f64.const 0.1 - call $~lib/util/number/dtoa - local.tee $96 - i32.const 1472 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 72 - i32.const 267 - i32.const 0 - call $~lib/builtins/abort - unreachable - end - f64.const -1 - call $~lib/util/number/dtoa - local.tee $97 - i32.const 6128 + i64.const 0 + call $~lib/util/number/itoa64 + local.tee $102 + i32.const 1040 call $~lib/string/String.__eq i32.eqz if @@ -11797,10 +12413,10 @@ call $~lib/builtins/abort unreachable end - f64.const -0.1 - call $~lib/util/number/dtoa - local.tee $98 - i32.const 6152 + i64.const -1234 + call $~lib/util/number/itoa64 + local.tee $103 + i32.const 4568 call $~lib/string/String.__eq i32.eqz if @@ -11811,10 +12427,24 @@ call $~lib/builtins/abort unreachable end - f64.const 1e6 - call $~lib/util/number/dtoa - local.tee $99 - i32.const 6176 + i64.const 4294967295 + call $~lib/util/number/itoa64 + local.tee $104 + i32.const 4168 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 72 + i32.const 270 + i32.const 0 + call $~lib/builtins/abort + unreachable + end + i64.const -4294967295 + call $~lib/util/number/itoa64 + local.tee $105 + i32.const 4600 call $~lib/string/String.__eq i32.eqz if @@ -11825,10 +12455,10 @@ call $~lib/builtins/abort unreachable end - f64.const 1e-06 - call $~lib/util/number/dtoa - local.tee $100 - i32.const 6216 + i64.const 68719476735 + call $~lib/util/number/itoa64 + local.tee $106 + i32.const 4280 call $~lib/string/String.__eq i32.eqz if @@ -11839,10 +12469,10 @@ call $~lib/builtins/abort unreachable end - f64.const -1e6 - call $~lib/util/number/dtoa - local.tee $101 - i32.const 6248 + i64.const -68719476735 + call $~lib/util/number/itoa64 + local.tee $107 + i32.const 4640 call $~lib/string/String.__eq i32.eqz if @@ -11853,10 +12483,10 @@ call $~lib/builtins/abort unreachable end - f64.const -1e-06 - call $~lib/util/number/dtoa - local.tee $102 - i32.const 6288 + i64.const -868719476735 + call $~lib/util/number/itoa64 + local.tee $108 + i32.const 4680 call $~lib/string/String.__eq i32.eqz if @@ -11867,10 +12497,10 @@ call $~lib/builtins/abort unreachable end - f64.const 1e7 - call $~lib/util/number/dtoa - local.tee $103 - i32.const 6328 + i64.const -999868719476735 + call $~lib/util/number/itoa64 + local.tee $109 + i32.const 4728 call $~lib/string/String.__eq i32.eqz if @@ -11881,10 +12511,10 @@ call $~lib/builtins/abort unreachable end - f64.const 1e-07 - call $~lib/util/number/dtoa - local.tee $104 - i32.const 6368 + i64.const -19999868719476735 + call $~lib/util/number/itoa64 + local.tee $110 + i32.const 4776 call $~lib/string/String.__eq i32.eqz if @@ -11895,10 +12525,24 @@ call $~lib/builtins/abort unreachable end - f64.const 1.e+308 - call $~lib/util/number/dtoa - local.tee $105 - i32.const 6392 + global.get $~lib/builtins/i64.MAX_VALUE + call $~lib/util/number/itoa64 + local.tee $111 + i32.const 4832 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 72 + i32.const 277 + i32.const 0 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/builtins/i64.MIN_VALUE + call $~lib/util/number/itoa64 + local.tee $112 + i32.const 4888 call $~lib/string/String.__eq i32.eqz if @@ -11909,38 +12553,10 @@ call $~lib/builtins/abort unreachable end - f64.const -1.e+308 + f64.const 0 call $~lib/util/number/dtoa - local.tee $106 - i32.const 6424 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 72 - i32.const 279 - i32.const 0 - call $~lib/builtins/abort - unreachable - end - f64.const inf - call $~lib/util/number/dtoa - local.tee $107 - i32.const 4368 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 72 - i32.const 280 - i32.const 0 - call $~lib/builtins/abort - unreachable - end - f64.const -inf - call $~lib/util/number/dtoa - local.tee $108 - i32.const 4328 + local.tee $113 + i32.const 4944 call $~lib/string/String.__eq i32.eqz if @@ -11951,10 +12567,10 @@ call $~lib/builtins/abort unreachable end - f64.const 1e-308 + f64.const -0 call $~lib/util/number/dtoa - local.tee $109 - i32.const 6456 + local.tee $114 + i32.const 4944 call $~lib/string/String.__eq i32.eqz if @@ -11965,10 +12581,10 @@ call $~lib/builtins/abort unreachable end - f64.const -1e-308 + f64.const nan:0x8000000000000 call $~lib/util/number/dtoa - local.tee $110 - i32.const 6488 + local.tee $115 + i32.const 4968 call $~lib/string/String.__eq i32.eqz if @@ -11979,10 +12595,10 @@ call $~lib/builtins/abort unreachable end - f64.const 1e-323 + f64.const inf call $~lib/util/number/dtoa - local.tee $111 - i32.const 6520 + local.tee $116 + i32.const 5032 call $~lib/string/String.__eq i32.eqz if @@ -11993,10 +12609,11 @@ call $~lib/builtins/abort unreachable end - f64.const -1e-323 + f64.const inf + f64.neg call $~lib/util/number/dtoa - local.tee $112 - i32.const 6552 + local.tee $117 + i32.const 4992 call $~lib/string/String.__eq i32.eqz if @@ -12007,10 +12624,10 @@ call $~lib/builtins/abort unreachable end - f64.const 0 + global.get $~lib/builtins/f64.EPSILON call $~lib/util/number/dtoa - local.tee $113 - i32.const 4280 + local.tee $118 + i32.const 6120 call $~lib/string/String.__eq i32.eqz if @@ -12021,10 +12638,25 @@ call $~lib/builtins/abort unreachable end - f64.const 4294967272 + global.get $~lib/builtins/f64.EPSILON + f64.neg call $~lib/util/number/dtoa - local.tee $114 - i32.const 6584 + local.tee $119 + i32.const 6184 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 72 + i32.const 287 + i32.const 0 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/builtins/f64.MAX_VALUE + call $~lib/util/number/dtoa + local.tee $120 + i32.const 6248 call $~lib/string/String.__eq i32.eqz if @@ -12035,10 +12667,11 @@ call $~lib/builtins/abort unreachable end - f64.const 1.2312145673456234e-08 + global.get $~lib/builtins/f64.MAX_VALUE + f64.neg call $~lib/util/number/dtoa - local.tee $115 - i32.const 6624 + local.tee $121 + i32.const 6312 call $~lib/string/String.__eq i32.eqz if @@ -12049,10 +12682,24 @@ call $~lib/builtins/abort unreachable end - f64.const 555555555.5555556 + f64.const 4185580496821356722454785e274 call $~lib/util/number/dtoa - local.tee $116 - i32.const 6688 + local.tee $122 + i32.const 6376 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 72 + i32.const 290 + i32.const 0 + call $~lib/builtins/abort + unreachable + end + f64.const 2.2250738585072014e-308 + call $~lib/util/number/dtoa + local.tee $123 + i32.const 6440 call $~lib/string/String.__eq i32.eqz if @@ -12063,38 +12710,10 @@ call $~lib/builtins/abort unreachable end - f64.const 0.9999999999999999 + f64.const 4.940656e-318 call $~lib/util/number/dtoa - local.tee $117 - i32.const 6744 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 72 - i32.const 292 - i32.const 0 - call $~lib/builtins/abort - unreachable - end - f64.const 1 - call $~lib/util/number/dtoa - local.tee $118 - i32.const 6104 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 72 - i32.const 293 - i32.const 0 - call $~lib/builtins/abort - unreachable - end - f64.const 12.34 - call $~lib/util/number/dtoa - local.tee $119 - i32.const 6800 + local.tee $124 + i32.const 6504 call $~lib/string/String.__eq i32.eqz if @@ -12105,12 +12724,24 @@ call $~lib/builtins/abort unreachable end - f64.const 1 - f64.const 3 - f64.div + f64.const 9060801153433600 call $~lib/util/number/dtoa - local.tee $120 - i32.const 6832 + local.tee $125 + i32.const 6552 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 72 + i32.const 295 + i32.const 0 + call $~lib/builtins/abort + unreachable + end + f64.const 4708356024711512064 + call $~lib/util/number/dtoa + local.tee $126 + i32.const 6608 call $~lib/string/String.__eq i32.eqz if @@ -12121,10 +12752,10 @@ call $~lib/builtins/abort unreachable end - f64.const 1234e17 + f64.const 9409340012568248320 call $~lib/util/number/dtoa - local.tee $121 - i32.const 6888 + local.tee $127 + i32.const 6672 call $~lib/string/String.__eq i32.eqz if @@ -12135,10 +12766,10 @@ call $~lib/builtins/abort unreachable end - f64.const 1234e18 + f64.const 5e-324 call $~lib/util/number/dtoa - local.tee $122 - i32.const 6952 + local.tee $128 + i32.const 6736 call $~lib/string/String.__eq i32.eqz if @@ -12149,80 +12780,10 @@ call $~lib/builtins/abort unreachable end - f64.const 2.71828 + f64.const 1 call $~lib/util/number/dtoa - local.tee $123 - i32.const 6992 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 72 - i32.const 299 - i32.const 0 - call $~lib/builtins/abort - unreachable - end - f64.const 0.0271828 - call $~lib/util/number/dtoa - local.tee $124 - i32.const 7024 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 72 - i32.const 300 - i32.const 0 - call $~lib/builtins/abort - unreachable - end - f64.const 271.828 - call $~lib/util/number/dtoa - local.tee $125 - i32.const 7064 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 72 - i32.const 301 - i32.const 0 - call $~lib/builtins/abort - unreachable - end - f64.const 1.1e+128 - call $~lib/util/number/dtoa - local.tee $126 - i32.const 7096 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 72 - i32.const 302 - i32.const 0 - call $~lib/builtins/abort - unreachable - end - f64.const 1.1e-64 - call $~lib/util/number/dtoa - local.tee $127 - i32.const 7128 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 72 - i32.const 303 - i32.const 0 - call $~lib/builtins/abort - unreachable - end - f64.const 0.000035689 - call $~lib/util/number/dtoa - local.tee $128 - i32.const 7160 + local.tee $129 + i32.const 6768 call $~lib/string/String.__eq i32.eqz if @@ -12233,6 +12794,470 @@ call $~lib/builtins/abort unreachable end + f64.const 0.1 + call $~lib/util/number/dtoa + local.tee $130 + i32.const 1472 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 72 + i32.const 305 + i32.const 0 + call $~lib/builtins/abort + unreachable + end + f64.const -1 + call $~lib/util/number/dtoa + local.tee $131 + i32.const 6792 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 72 + i32.const 306 + i32.const 0 + call $~lib/builtins/abort + unreachable + end + f64.const -0.1 + call $~lib/util/number/dtoa + local.tee $132 + i32.const 6816 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 72 + i32.const 307 + i32.const 0 + call $~lib/builtins/abort + unreachable + end + f64.const 1e6 + call $~lib/util/number/dtoa + local.tee $133 + i32.const 6840 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 72 + i32.const 309 + i32.const 0 + call $~lib/builtins/abort + unreachable + end + f64.const 1e-06 + call $~lib/util/number/dtoa + local.tee $134 + i32.const 6880 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 72 + i32.const 310 + i32.const 0 + call $~lib/builtins/abort + unreachable + end + f64.const -1e6 + call $~lib/util/number/dtoa + local.tee $135 + i32.const 6912 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 72 + i32.const 311 + i32.const 0 + call $~lib/builtins/abort + unreachable + end + f64.const -1e-06 + call $~lib/util/number/dtoa + local.tee $136 + i32.const 6952 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 72 + i32.const 312 + i32.const 0 + call $~lib/builtins/abort + unreachable + end + f64.const 1e7 + call $~lib/util/number/dtoa + local.tee $137 + i32.const 6992 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 72 + i32.const 313 + i32.const 0 + call $~lib/builtins/abort + unreachable + end + f64.const 1e-07 + call $~lib/util/number/dtoa + local.tee $138 + i32.const 7032 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 72 + i32.const 314 + i32.const 0 + call $~lib/builtins/abort + unreachable + end + f64.const 1.e+308 + call $~lib/util/number/dtoa + local.tee $139 + i32.const 7056 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 72 + i32.const 316 + i32.const 0 + call $~lib/builtins/abort + unreachable + end + f64.const -1.e+308 + call $~lib/util/number/dtoa + local.tee $140 + i32.const 7088 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 72 + i32.const 317 + i32.const 0 + call $~lib/builtins/abort + unreachable + end + f64.const inf + call $~lib/util/number/dtoa + local.tee $141 + i32.const 5032 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 72 + i32.const 318 + i32.const 0 + call $~lib/builtins/abort + unreachable + end + f64.const -inf + call $~lib/util/number/dtoa + local.tee $142 + i32.const 4992 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 72 + i32.const 319 + i32.const 0 + call $~lib/builtins/abort + unreachable + end + f64.const 1e-308 + call $~lib/util/number/dtoa + local.tee $143 + i32.const 7120 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 72 + i32.const 320 + i32.const 0 + call $~lib/builtins/abort + unreachable + end + f64.const -1e-308 + call $~lib/util/number/dtoa + local.tee $144 + i32.const 7152 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 72 + i32.const 321 + i32.const 0 + call $~lib/builtins/abort + unreachable + end + f64.const 1e-323 + call $~lib/util/number/dtoa + local.tee $145 + i32.const 7184 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 72 + i32.const 322 + i32.const 0 + call $~lib/builtins/abort + unreachable + end + f64.const -1e-323 + call $~lib/util/number/dtoa + local.tee $146 + i32.const 7216 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 72 + i32.const 323 + i32.const 0 + call $~lib/builtins/abort + unreachable + end + f64.const 0 + call $~lib/util/number/dtoa + local.tee $147 + i32.const 4944 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 72 + i32.const 324 + i32.const 0 + call $~lib/builtins/abort + unreachable + end + f64.const 4294967272 + call $~lib/util/number/dtoa + local.tee $148 + i32.const 7248 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 72 + i32.const 326 + i32.const 0 + call $~lib/builtins/abort + unreachable + end + f64.const 1.2312145673456234e-08 + call $~lib/util/number/dtoa + local.tee $149 + i32.const 7288 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 72 + i32.const 327 + i32.const 0 + call $~lib/builtins/abort + unreachable + end + f64.const 555555555.5555556 + call $~lib/util/number/dtoa + local.tee $150 + i32.const 7352 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 72 + i32.const 329 + i32.const 0 + call $~lib/builtins/abort + unreachable + end + f64.const 0.9999999999999999 + call $~lib/util/number/dtoa + local.tee $151 + i32.const 7408 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 72 + i32.const 330 + i32.const 0 + call $~lib/builtins/abort + unreachable + end + f64.const 1 + call $~lib/util/number/dtoa + local.tee $152 + i32.const 6768 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 72 + i32.const 331 + i32.const 0 + call $~lib/builtins/abort + unreachable + end + f64.const 12.34 + call $~lib/util/number/dtoa + local.tee $153 + i32.const 7464 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 72 + i32.const 332 + i32.const 0 + call $~lib/builtins/abort + unreachable + end + f64.const 1 + f64.const 3 + f64.div + call $~lib/util/number/dtoa + local.tee $154 + i32.const 7496 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 72 + i32.const 334 + i32.const 0 + call $~lib/builtins/abort + unreachable + end + f64.const 1234e17 + call $~lib/util/number/dtoa + local.tee $155 + i32.const 7552 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 72 + i32.const 335 + i32.const 0 + call $~lib/builtins/abort + unreachable + end + f64.const 1234e18 + call $~lib/util/number/dtoa + local.tee $156 + i32.const 7616 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 72 + i32.const 336 + i32.const 0 + call $~lib/builtins/abort + unreachable + end + f64.const 2.71828 + call $~lib/util/number/dtoa + local.tee $157 + i32.const 7656 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 72 + i32.const 337 + i32.const 0 + call $~lib/builtins/abort + unreachable + end + f64.const 0.0271828 + call $~lib/util/number/dtoa + local.tee $158 + i32.const 7688 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 72 + i32.const 338 + i32.const 0 + call $~lib/builtins/abort + unreachable + end + f64.const 271.828 + call $~lib/util/number/dtoa + local.tee $159 + i32.const 7728 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 72 + i32.const 339 + i32.const 0 + call $~lib/builtins/abort + unreachable + end + f64.const 1.1e+128 + call $~lib/util/number/dtoa + local.tee $160 + i32.const 7760 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 72 + i32.const 340 + i32.const 0 + call $~lib/builtins/abort + unreachable + end + f64.const 1.1e-64 + call $~lib/util/number/dtoa + local.tee $161 + i32.const 7792 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 72 + i32.const 341 + i32.const 0 + call $~lib/builtins/abort + unreachable + end + f64.const 0.000035689 + call $~lib/util/number/dtoa + local.tee $162 + i32.const 7824 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 72 + i32.const 342 + i32.const 0 + call $~lib/builtins/abort + unreachable + end global.get $std/string/str call $~lib/rt/pure/__release local.get $0 @@ -12493,12 +13518,80 @@ call $~lib/rt/pure/__release local.get $128 call $~lib/rt/pure/__release + local.get $129 + call $~lib/rt/pure/__release + local.get $130 + call $~lib/rt/pure/__release + local.get $131 + call $~lib/rt/pure/__release + local.get $132 + call $~lib/rt/pure/__release + local.get $133 + call $~lib/rt/pure/__release + local.get $134 + call $~lib/rt/pure/__release + local.get $135 + call $~lib/rt/pure/__release + local.get $136 + call $~lib/rt/pure/__release + local.get $137 + call $~lib/rt/pure/__release + local.get $138 + call $~lib/rt/pure/__release + local.get $139 + call $~lib/rt/pure/__release + local.get $140 + call $~lib/rt/pure/__release + local.get $141 + call $~lib/rt/pure/__release + local.get $142 + call $~lib/rt/pure/__release + local.get $143 + call $~lib/rt/pure/__release + local.get $144 + call $~lib/rt/pure/__release + local.get $145 + call $~lib/rt/pure/__release + local.get $146 + call $~lib/rt/pure/__release + local.get $147 + call $~lib/rt/pure/__release + local.get $148 + call $~lib/rt/pure/__release + local.get $149 + call $~lib/rt/pure/__release + local.get $150 + call $~lib/rt/pure/__release + local.get $151 + call $~lib/rt/pure/__release + local.get $152 + call $~lib/rt/pure/__release + local.get $153 + call $~lib/rt/pure/__release + local.get $154 + call $~lib/rt/pure/__release + local.get $155 + call $~lib/rt/pure/__release + local.get $156 + call $~lib/rt/pure/__release + local.get $157 + call $~lib/rt/pure/__release + local.get $158 + call $~lib/rt/pure/__release + local.get $159 + call $~lib/rt/pure/__release + local.get $160 + call $~lib/rt/pure/__release + local.get $161 + call $~lib/rt/pure/__release + local.get $162 + call $~lib/rt/pure/__release ) - (func $std/string/getString (; 88 ;) (type $FUNCSIG$i) (result i32) + (func $std/string/getString (; 90 ;) (type $FUNCSIG$i) (result i32) global.get $std/string/str call $~lib/rt/pure/__retain ) - (func $start (; 89 ;) (type $FUNCSIG$v) + (func $start (; 91 ;) (type $FUNCSIG$v) global.get $~lib/started if return @@ -12508,7 +13601,7 @@ end call $start:std/string ) - (func $~lib/rt/pure/markGray (; 90 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/rt/pure/markGray (; 92 ;) (type $FUNCSIG$vi) (param $0 i32) (local $1 i32) local.get $0 i32.load offset=4 @@ -12535,7 +13628,7 @@ call $~lib/rt/__visit_members end ) - (func $~lib/rt/pure/scanBlack (; 91 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/rt/pure/scanBlack (; 93 ;) (type $FUNCSIG$vi) (param $0 i32) local.get $0 local.get $0 i32.load offset=4 @@ -12552,7 +13645,7 @@ i32.const 4 call $~lib/rt/__visit_members ) - (func $~lib/rt/pure/scan (; 92 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/rt/pure/scan (; 94 ;) (type $FUNCSIG$vi) (param $0 i32) (local $1 i32) local.get $0 i32.load offset=4 @@ -12589,7 +13682,7 @@ end end ) - (func $~lib/rt/pure/collectWhite (; 93 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/rt/pure/collectWhite (; 95 ;) (type $FUNCSIG$vi) (param $0 i32) (local $1 i32) local.get $0 i32.load offset=4 @@ -12627,7 +13720,7 @@ call $~lib/rt/tlsf/freeBlock end ) - (func $~lib/rt/pure/__visit (; 94 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/rt/pure/__visit (; 96 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) local.get $0 @@ -12761,7 +13854,7 @@ end end ) - (func $~lib/array/Array<~lib/string/String>#__visit_impl (; 95 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/array/Array<~lib/string/String>#__visit_impl (; 97 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -12800,19 +13893,19 @@ unreachable end ) - (func $~lib/array/Array#__visit_impl (; 96 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/array/Array#__visit_impl (; 98 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) nop ) - (func $~lib/array/Array#__visit_impl (; 97 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/array/Array#__visit_impl (; 99 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) nop ) - (func $~lib/array/Array#__visit_impl (; 98 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/array/Array#__visit_impl (; 100 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) nop ) - (func $~lib/array/Array#__visit_impl (; 99 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/array/Array#__visit_impl (; 101 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) nop ) - (func $~lib/rt/__visit_members (; 100 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/rt/__visit_members (; 102 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) block $block$4$break block $switch$1$default @@ -12870,6 +13963,6 @@ end return ) - (func $null (; 101 ;) (type $FUNCSIG$v) + (func $null (; 103 ;) (type $FUNCSIG$v) ) )