From abf3de9076da002ff20a86d8d163017ad85815e0 Mon Sep 17 00:00:00 2001 From: Max Graey Date: Sun, 31 Mar 2019 21:00:54 +0300 Subject: [PATCH] Fix implicit string to bool conversion (#567) --- std/assembly/string.ts | 35 +- tests/compiler/number.optimized.wat | 2 +- tests/compiler/number.untouched.wat | 2 +- tests/compiler/std/array-access.optimized.wat | 2 +- tests/compiler/std/array-access.untouched.wat | 2 +- tests/compiler/std/array.optimized.wat | 2 +- tests/compiler/std/array.untouched.wat | 2 +- tests/compiler/std/string-utf8.optimized.wat | 8 +- tests/compiler/std/string-utf8.untouched.wat | 8 +- tests/compiler/std/string.optimized.wat | 1320 +++++++-------- tests/compiler/std/string.ts | 60 +- tests/compiler/std/string.untouched.wat | 1458 +++++++++-------- 12 files changed, 1502 insertions(+), 1399 deletions(-) diff --git a/std/assembly/string.ts b/std/assembly/string.ts index b6ca9f73..c1a343c2 100644 --- a/std/assembly/string.ts +++ b/std/assembly/string.ts @@ -42,7 +42,7 @@ export class String { ); } else { code -= 0x10000; - let hi: u32 = (code >>> 10) + 0xD800; + let hi: u32 = (code >>> 10) + 0xD800; let lo: u32 = (code & 0x3FF) + 0xDC00; store( changetype(out), @@ -110,9 +110,9 @@ export class String { assert(this !== null); if (other === null) other = changetype("null"); - var thisLen: isize = this.length; + var thisLen: isize = this.length; var otherLen: isize = other.length; - var outLen: usize = thisLen + otherLen; + var outLen: usize = thisLen + otherLen; if (outLen == 0) return changetype(""); var out = allocateUnsafe(outLen); copyUnsafe(out, 0, this, 0, thisLen); @@ -141,6 +141,11 @@ export class String { return !compareUnsafe(left, 0, right, 0, leftLength); } + @operator.prefix("!") + private static __not(str: String): bool { + return str === null || !str.length; + } + @operator("!=") private static __ne(left: String, right: String): bool { return !this.__eq(left, right); @@ -345,8 +350,8 @@ export class String { var out = allocateUnsafe(targetLength); if (len > padLen) { let count = (len - 1) / padLen; - let base = count * padLen; - let rest = len - base; + let base = count * padLen; + let rest = len - base; repeatUnsafe(out, 0, padString, count); if (rest) copyUnsafe(out, base, padString, 0, rest); } else { @@ -394,9 +399,9 @@ export class String { } slice(beginIndex: i32, endIndex: i32 = i32.MAX_VALUE): String { - var len = this.length; + var len = this.length; var begin = beginIndex < 0 ? max(beginIndex + len, 0) : min(beginIndex, len); - var end = endIndex < 0 ? max(endIndex + len, 0) : min(endIndex, len); + var end = endIndex < 0 ? max(endIndex + len, 0) : min(endIndex, len); len = end - begin; if (len <= 0) return changetype(""); var out = allocateUnsafe(len); @@ -512,7 +517,7 @@ export class String { cp = ( (cp & 7) << 18 | (load(ptr + ptrPos++) & 63) << 12 | - (load(ptr + ptrPos++) & 63) << 6 | + (load(ptr + ptrPos++) & 63) << 6 | load(ptr + ptrPos++) & 63 ) - 0x10000; store(buf + bufPos, 0xD800 + (cp >> 10)); @@ -523,7 +528,7 @@ export class String { assert(ptrPos + 2 <= len); store(buf + bufPos, (cp & 15) << 12 | - (load(ptr + ptrPos++) & 63) << 6 | + (load(ptr + ptrPos++) & 63) << 6 | load(ptr + ptrPos++) & 63 ); bufPos += 2; @@ -548,8 +553,8 @@ export class String { ++off; ++pos; } else if (c1 < 2048) { let ptr = buf + off; - store(ptr, c1 >> 6 | 192); - store(ptr, c1 & 63 | 128, 1); + store(ptr, c1 >> 6 | 192); + store(ptr, c1 & 63 | 128, 1); off += 2; ++pos; } else { let ptr = buf + off; @@ -559,15 +564,15 @@ export class String { c1 = 0x10000 + ((c1 & 0x03FF) << 10) + (c2 & 0x03FF); store(ptr, c1 >> 18 | 240); store(ptr, c1 >> 12 & 63 | 128, 1); - store(ptr, c1 >> 6 & 63 | 128, 2); + store(ptr, c1 >> 6 & 63 | 128, 2); store(ptr, c1 & 63 | 128, 3); off += 4; pos += 2; continue; } } - store(ptr, c1 >> 12 | 224); - store(ptr, c1 >> 6 & 63 | 128, 1); - store(ptr, c1 & 63 | 128, 2); + store(ptr, c1 >> 12 | 224); + store(ptr, c1 >> 6 & 63 | 128, 1); + store(ptr, c1 & 63 | 128, 2); off += 3; ++pos; } } diff --git a/tests/compiler/number.optimized.wat b/tests/compiler/number.optimized.wat index fd82f14b..30eaa202 100644 --- a/tests/compiler/number.optimized.wat +++ b/tests/compiler/number.optimized.wat @@ -2348,7 +2348,7 @@ if i32.const 0 i32.const 2072 - i32.const 249 + i32.const 254 i32.const 4 call $~lib/env/abort unreachable diff --git a/tests/compiler/number.untouched.wat b/tests/compiler/number.untouched.wat index 950ff574..8a36243e 100644 --- a/tests/compiler/number.untouched.wat +++ b/tests/compiler/number.untouched.wat @@ -3525,7 +3525,7 @@ if i32.const 0 i32.const 2072 - i32.const 249 + i32.const 254 i32.const 4 call $~lib/env/abort unreachable diff --git a/tests/compiler/std/array-access.optimized.wat b/tests/compiler/std/array-access.optimized.wat index 20c3bfb6..a9133fb2 100644 --- a/tests/compiler/std/array-access.optimized.wat +++ b/tests/compiler/std/array-access.optimized.wat @@ -115,7 +115,7 @@ if i32.const 0 i32.const 16 - i32.const 224 + i32.const 229 i32.const 4 call $~lib/env/abort unreachable diff --git a/tests/compiler/std/array-access.untouched.wat b/tests/compiler/std/array-access.untouched.wat index 185c18b0..fb344029 100644 --- a/tests/compiler/std/array-access.untouched.wat +++ b/tests/compiler/std/array-access.untouched.wat @@ -199,7 +199,7 @@ if i32.const 0 i32.const 16 - i32.const 224 + i32.const 229 i32.const 4 call $~lib/env/abort unreachable diff --git a/tests/compiler/std/array.optimized.wat b/tests/compiler/std/array.optimized.wat index 43bff187..abb65df0 100644 --- a/tests/compiler/std/array.optimized.wat +++ b/tests/compiler/std/array.optimized.wat @@ -6238,7 +6238,7 @@ if i32.const 0 i32.const 4056 - i32.const 249 + i32.const 254 i32.const 4 call $~lib/env/abort unreachable diff --git a/tests/compiler/std/array.untouched.wat b/tests/compiler/std/array.untouched.wat index f4e84c17..5d7c3e9b 100644 --- a/tests/compiler/std/array.untouched.wat +++ b/tests/compiler/std/array.untouched.wat @@ -11617,7 +11617,7 @@ if i32.const 0 i32.const 4056 - i32.const 249 + i32.const 254 i32.const 4 call $~lib/env/abort unreachable diff --git a/tests/compiler/std/string-utf8.optimized.wat b/tests/compiler/std/string-utf8.optimized.wat index e2f911a4..d1c6bb54 100644 --- a/tests/compiler/std/string-utf8.optimized.wat +++ b/tests/compiler/std/string-utf8.optimized.wat @@ -1525,7 +1525,7 @@ if i32.const 0 i32.const 72 - i32.const 507 + i32.const 512 i32.const 8 call $~lib/env/abort unreachable @@ -1572,7 +1572,7 @@ if i32.const 0 i32.const 72 - i32.const 511 + i32.const 516 i32.const 8 call $~lib/env/abort unreachable @@ -1651,7 +1651,7 @@ if i32.const 0 i32.const 72 - i32.const 523 + i32.const 528 i32.const 8 call $~lib/env/abort unreachable @@ -1706,7 +1706,7 @@ if i32.const 0 i32.const 72 - i32.const 532 + i32.const 537 i32.const 4 call $~lib/env/abort unreachable diff --git a/tests/compiler/std/string-utf8.untouched.wat b/tests/compiler/std/string-utf8.untouched.wat index f5568db2..2e159138 100644 --- a/tests/compiler/std/string-utf8.untouched.wat +++ b/tests/compiler/std/string-utf8.untouched.wat @@ -2008,7 +2008,7 @@ if i32.const 0 i32.const 72 - i32.const 507 + i32.const 512 i32.const 8 call $~lib/env/abort unreachable @@ -2062,7 +2062,7 @@ if i32.const 0 i32.const 72 - i32.const 511 + i32.const 516 i32.const 8 call $~lib/env/abort unreachable @@ -2157,7 +2157,7 @@ if i32.const 0 i32.const 72 - i32.const 523 + i32.const 528 i32.const 8 call $~lib/env/abort unreachable @@ -2220,7 +2220,7 @@ if i32.const 0 i32.const 72 - i32.const 532 + i32.const 537 i32.const 4 call $~lib/env/abort unreachable diff --git a/tests/compiler/std/string.optimized.wat b/tests/compiler/std/string.optimized.wat index 1c1b1621..bdbcd96d 100644 --- a/tests/compiler/std/string.optimized.wat +++ b/tests/compiler/std/string.optimized.wat @@ -20,17 +20,17 @@ (data (i32.const 8) "\10\00\00\00h\00i\00,\00 \00I\00\'\00m\00 \00a\00 \00s\00t\00r\00i\00n\00g") (data (i32.const 48) "\0d\00\00\00s\00t\00d\00/\00s\00t\00r\00i\00n\00g\00.\00t\00s") (data (i32.const 80) "\0e\00\00\00~\00l\00i\00b\00/\00s\00t\00r\00i\00n\00g\00.\00t\00s") - (data (i32.const 112) "\17\00\00\00~\00l\00i\00b\00/\00i\00n\00t\00e\00r\00n\00a\00l\00/\00s\00t\00r\00i\00n\00g\00.\00t\00s") - (data (i32.const 168) "\01") - (data (i32.const 176) "\01\00\00\006") - (data (i32.const 184) "\02\00\00\004\d8\06\df") - (data (i32.const 192) "\02\00\00\00h\00i") - (data (i32.const 200) "\04\00\00\00n\00u\00l\00l") - (data (i32.const 216) "\06\00\00\00s\00t\00r\00i\00n\00g") - (data (i32.const 232) "\03\00\00\00I\00\'\00m") - (data (i32.const 248) "\01\00\00\00 ") - (data (i32.const 264) "\03\00\00\00 \00 \00 ") - (data (i32.const 280) "\01\00\00\00a") + (data (i32.const 120) "\01") + (data (i32.const 128) "\01\00\00\00a") + (data (i32.const 136) "\17\00\00\00~\00l\00i\00b\00/\00i\00n\00t\00e\00r\00n\00a\00l\00/\00s\00t\00r\00i\00n\00g\00.\00t\00s") + (data (i32.const 192) "\01\00\00\006") + (data (i32.const 200) "\02\00\00\004\d8\06\df") + (data (i32.const 208) "\02\00\00\00h\00i") + (data (i32.const 216) "\04\00\00\00n\00u\00l\00l") + (data (i32.const 232) "\06\00\00\00s\00t\00r\00i\00n\00g") + (data (i32.const 248) "\03\00\00\00I\00\'\00m") + (data (i32.const 264) "\01\00\00\00 ") + (data (i32.const 272) "\03\00\00\00 \00 \00 ") (data (i32.const 288) "\03\00\00\00a\00b\00c") (data (i32.const 304) "\05\00\00\00 \00 \00a\00b\00c") (data (i32.const 320) "\03\00\00\001\002\003") @@ -293,7 +293,7 @@ i32.eqz if i32.const 0 - i32.const 112 + i32.const 136 i32.const 14 i32.const 2 call $~lib/env/abort @@ -458,12 +458,12 @@ if i32.const 0 i32.const 80 - i32.const 224 + i32.const 229 i32.const 4 call $~lib/env/abort unreachable end - i32.const 192 + i32.const 208 i32.load local.tee $2 i32.const 0 @@ -484,7 +484,7 @@ end local.get $0 local.get $3 - i32.const 192 + i32.const 208 local.get $2 call $~lib/internal/string/compareUnsafe i32.eqz @@ -515,7 +515,7 @@ local.get $2 i32.lt_s select - i32.const 216 + i32.const 232 i32.load local.tee $1 i32.sub @@ -528,7 +528,7 @@ end local.get $0 local.get $2 - i32.const 216 + i32.const 232 local.get $1 call $~lib/internal/string/compareUnsafe i32.eqz @@ -542,13 +542,13 @@ if i32.const 0 i32.const 80 - i32.const 193 + i32.const 198 i32.const 4 call $~lib/env/abort unreachable end local.get $1 - i32.const 200 + i32.const 216 local.get $1 select local.tee $1 @@ -1895,7 +1895,7 @@ if i32.const 0 i32.const 80 - i32.const 340 + i32.const 345 i32.const 4 call $~lib/env/abort unreachable @@ -1987,7 +1987,7 @@ end unreachable end - i32.const 248 + i32.const 264 local.set $2 end local.get $0 @@ -2004,7 +2004,7 @@ if i32.const 0 i32.const 80 - i32.const 360 + i32.const 365 i32.const 4 call $~lib/env/abort unreachable @@ -2099,7 +2099,7 @@ end unreachable end - i32.const 248 + i32.const 264 local.set $2 end local.get $0 @@ -2115,7 +2115,7 @@ if i32.const 0 i32.const 80 - i32.const 209 + i32.const 214 i32.const 4 call $~lib/env/abort unreachable @@ -2124,7 +2124,7 @@ i32.load local.set $3 local.get $1 - i32.const 200 + i32.const 216 local.get $1 select local.tee $1 @@ -2543,7 +2543,7 @@ if i32.const 0 i32.const 80 - i32.const 625 + i32.const 630 i32.const 10 call $~lib/env/abort unreachable @@ -2620,7 +2620,7 @@ i32.load local.tee $3 local.get $1 - i32.const 200 + i32.const 216 local.get $1 select local.tee $1 @@ -2630,7 +2630,7 @@ local.tee $2 i32.eqz if - i32.const 256 + i32.const 112 return end local.get $2 @@ -2651,7 +2651,7 @@ ) (func $~lib/string/String.__concat (; 24 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $0 - i32.const 200 + i32.const 216 local.get $0 select local.get $1 @@ -2780,7 +2780,7 @@ i32.eqz ) (func $~lib/string/String.__lte (; 29 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - i32.const 256 + i32.const 112 local.get $0 call $~lib/string/String.__gt i32.eqz @@ -2793,7 +2793,7 @@ if i32.const 0 i32.const 80 - i32.const 380 + i32.const 385 i32.const 4 call $~lib/env/abort unreachable @@ -2818,7 +2818,7 @@ if i32.const 0 i32.const 80 - i32.const 385 + i32.const 390 i32.const 6 call $~lib/env/abort unreachable @@ -2834,7 +2834,7 @@ end local.get $2 if - i32.const 256 + i32.const 112 return end local.get $1 @@ -2909,7 +2909,7 @@ i32.const 0 i32.le_s if - i32.const 256 + i32.const 112 return end local.get $2 @@ -3376,7 +3376,7 @@ if i32.const 0 i32.const 80 - i32.const 408 + i32.const 413 i32.const 4 call $~lib/env/abort unreachable @@ -3421,7 +3421,7 @@ call $~lib/array/Array<~lib/string/String>#constructor local.tee $0 i32.load - i32.const 256 + i32.const 112 i32.store offset=8 local.get $0 i32.load @@ -3515,7 +3515,7 @@ call $~lib/array/Array<~lib/string/String>#push else local.get $2 - i32.const 256 + i32.const 112 call $~lib/array/Array<~lib/string/String>#push end local.get $5 @@ -3571,7 +3571,7 @@ call $~lib/array/Array<~lib/string/String>#push else local.get $2 - i32.const 256 + i32.const 112 call $~lib/array/Array<~lib/string/String>#push end local.get $2 @@ -5072,7 +5072,7 @@ if i32.const 0 i32.const 80 - i32.const 249 + i32.const 254 i32.const 4 call $~lib/env/abort unreachable @@ -5115,7 +5115,7 @@ local.tee $3 i32.eqz if - i32.const 256 + i32.const 112 return end local.get $1 @@ -5188,7 +5188,7 @@ i32.eqz if i32.const 0 - i32.const 112 + i32.const 136 i32.const 28 i32.const 4 call $~lib/env/abort @@ -5238,11 +5238,8 @@ call $~lib/env/abort unreachable end - i32.const 0 - call $~lib/string/String.fromCharCode - i32.const 168 - call $~lib/string/String.__eq - i32.eqz + i32.const 112 + i32.load if i32.const 0 i32.const 48 @@ -5251,11 +5248,12 @@ call $~lib/env/abort unreachable end - i32.const 54 - call $~lib/string/String.fromCharCode - i32.const 176 - call $~lib/string/String.__eq + i32.const 120 + i32.load i32.eqz + i32.eqz + i32.const 1 + i32.ne if i32.const 0 i32.const 48 @@ -5264,11 +5262,12 @@ call $~lib/env/abort unreachable end - i32.const 65590 - call $~lib/string/String.fromCharCode - i32.const 176 - call $~lib/string/String.__eq + i32.const 128 + i32.load i32.eqz + i32.eqz + i32.const 1 + i32.ne if i32.const 0 i32.const 48 @@ -5278,8 +5277,8 @@ unreachable end i32.const 0 - call $~lib/string/String.fromCodePoint - i32.const 168 + call $~lib/string/String.fromCharCode + i32.const 120 call $~lib/string/String.__eq i32.eqz if @@ -5291,8 +5290,8 @@ unreachable end i32.const 54 - call $~lib/string/String.fromCodePoint - i32.const 176 + call $~lib/string/String.fromCharCode + i32.const 192 call $~lib/string/String.__eq i32.eqz if @@ -5303,13 +5302,52 @@ call $~lib/env/abort unreachable end + i32.const 65590 + call $~lib/string/String.fromCharCode + i32.const 192 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 48 + i32.const 27 + i32.const 0 + call $~lib/env/abort + unreachable + end + i32.const 0 + call $~lib/string/String.fromCodePoint + i32.const 120 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 48 + i32.const 29 + i32.const 0 + call $~lib/env/abort + unreachable + end + i32.const 54 + call $~lib/string/String.fromCodePoint + i32.const 192 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 48 + i32.const 30 + i32.const 0 + call $~lib/env/abort + unreachable + end i32.const 119558 call $~lib/string/String.fromCodePoint i32.eqz if - i32.const 184 + i32.const 200 i32.const 48 - i32.const 27 + i32.const 31 i32.const 0 call $~lib/env/abort unreachable @@ -5320,7 +5358,7 @@ if i32.const 0 i32.const 48 - i32.const 29 + i32.const 33 i32.const 0 call $~lib/env/abort unreachable @@ -5349,13 +5387,13 @@ if i32.const 0 i32.const 48 - i32.const 30 + i32.const 34 i32.const 0 call $~lib/env/abort unreachable end global.get $std/string/str - i32.const 232 + i32.const 248 i32.const 0 call $~lib/string/String#indexOf i32.const -1 @@ -5363,7 +5401,7 @@ if i32.const 0 i32.const 48 - i32.const 31 + i32.const 35 i32.const 0 call $~lib/env/abort unreachable @@ -5379,7 +5417,7 @@ if i32.const 0 i32.const 48 - i32.const 33 + i32.const 37 i32.const 0 call $~lib/env/abort unreachable @@ -5395,53 +5433,53 @@ if i32.const 0 i32.const 48 - i32.const 34 + i32.const 38 i32.const 0 call $~lib/env/abort unreachable end i32.const 1 global.set $~lib/argc - i32.const 256 + i32.const 112 i32.const 3 call $~lib/string/String#padStart|trampoline - i32.const 264 + i32.const 272 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 48 - i32.const 35 + i32.const 39 i32.const 0 call $~lib/env/abort unreachable end - i32.const 256 + i32.const 112 i32.const 10 - i32.const 256 + i32.const 112 call $~lib/string/String#padStart - i32.const 256 + i32.const 112 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 48 - i32.const 36 + i32.const 40 i32.const 0 call $~lib/env/abort unreachable end - i32.const 280 + i32.const 128 i32.const 100 - i32.const 256 + i32.const 112 call $~lib/string/String#padStart - i32.const 280 + i32.const 128 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 48 - i32.const 37 + i32.const 41 i32.const 0 call $~lib/env/abort unreachable @@ -5457,7 +5495,7 @@ if i32.const 0 i32.const 48 - i32.const 38 + i32.const 42 i32.const 0 call $~lib/env/abort unreachable @@ -5472,7 +5510,7 @@ if i32.const 0 i32.const 48 - i32.const 39 + i32.const 43 i32.const 0 call $~lib/env/abort unreachable @@ -5487,7 +5525,7 @@ if i32.const 0 i32.const 48 - i32.const 40 + i32.const 44 i32.const 0 call $~lib/env/abort unreachable @@ -5503,7 +5541,7 @@ if i32.const 0 i32.const 48 - i32.const 42 + i32.const 46 i32.const 0 call $~lib/env/abort unreachable @@ -5519,53 +5557,53 @@ if i32.const 0 i32.const 48 - i32.const 43 + i32.const 47 i32.const 0 call $~lib/env/abort unreachable end i32.const 1 global.set $~lib/argc - i32.const 256 + i32.const 112 i32.const 3 call $~lib/string/String#padEnd|trampoline - i32.const 264 + i32.const 272 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 48 - i32.const 44 + i32.const 48 i32.const 0 call $~lib/env/abort unreachable end - i32.const 256 + i32.const 112 i32.const 10 - i32.const 256 + i32.const 112 call $~lib/string/String#padEnd - i32.const 256 + i32.const 112 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 48 - i32.const 45 + i32.const 49 i32.const 0 call $~lib/env/abort unreachable end - i32.const 280 + i32.const 128 i32.const 100 - i32.const 256 + i32.const 112 call $~lib/string/String#padEnd - i32.const 280 + i32.const 128 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 48 - i32.const 46 + i32.const 50 i32.const 0 call $~lib/env/abort unreachable @@ -5581,7 +5619,7 @@ if i32.const 0 i32.const 48 - i32.const 47 + i32.const 51 i32.const 0 call $~lib/env/abort unreachable @@ -5596,7 +5634,7 @@ if i32.const 0 i32.const 48 - i32.const 48 + i32.const 52 i32.const 0 call $~lib/env/abort unreachable @@ -5611,25 +5649,25 @@ if i32.const 0 i32.const 48 - i32.const 49 + i32.const 53 i32.const 0 call $~lib/env/abort unreachable end - i32.const 256 - i32.const 256 + i32.const 112 + i32.const 112 i32.const 0 call $~lib/string/String#indexOf if i32.const 0 i32.const 48 - i32.const 51 + i32.const 55 i32.const 0 call $~lib/env/abort unreachable end - i32.const 256 - i32.const 192 + i32.const 112 + i32.const 208 i32.const 0 call $~lib/string/String#indexOf i32.const -1 @@ -5637,19 +5675,19 @@ if i32.const 0 i32.const 48 - i32.const 52 + i32.const 56 i32.const 0 call $~lib/env/abort unreachable end - i32.const 280 - i32.const 280 + i32.const 128 + i32.const 128 i32.const 0 call $~lib/string/String#indexOf if i32.const 0 i32.const 48 - i32.const 53 + i32.const 57 i32.const 0 call $~lib/env/abort unreachable @@ -5662,19 +5700,19 @@ if i32.const 0 i32.const 48 - i32.const 54 + i32.const 58 i32.const 0 call $~lib/env/abort unreachable end global.get $std/string/str - i32.const 256 + i32.const 112 i32.const 0 call $~lib/string/String#indexOf if i32.const 0 i32.const 48 - i32.const 55 + i32.const 59 i32.const 0 call $~lib/env/abort unreachable @@ -5688,7 +5726,7 @@ if i32.const 0 i32.const 48 - i32.const 56 + i32.const 60 i32.const 0 call $~lib/env/abort unreachable @@ -5702,7 +5740,7 @@ if i32.const 0 i32.const 48 - i32.const 57 + i32.const 61 i32.const 0 call $~lib/env/abort unreachable @@ -5716,7 +5754,7 @@ if i32.const 0 i32.const 48 - i32.const 58 + i32.const 62 i32.const 0 call $~lib/env/abort unreachable @@ -5730,7 +5768,7 @@ if i32.const 0 i32.const 48 - i32.const 59 + i32.const 63 i32.const 0 call $~lib/env/abort unreachable @@ -5744,35 +5782,35 @@ if i32.const 0 i32.const 48 - i32.const 60 + i32.const 64 i32.const 0 call $~lib/env/abort unreachable end i32.const 1 global.set $~lib/argc - i32.const 256 - i32.const 256 + i32.const 112 + i32.const 112 call $~lib/string/String#lastIndexOf|trampoline if i32.const 0 i32.const 48 - i32.const 62 + i32.const 66 i32.const 0 call $~lib/env/abort unreachable end i32.const 1 global.set $~lib/argc - i32.const 256 - i32.const 192 + i32.const 112 + i32.const 208 call $~lib/string/String#lastIndexOf|trampoline i32.const -1 i32.ne if i32.const 0 i32.const 48 - i32.const 63 + i32.const 67 i32.const 0 call $~lib/env/abort unreachable @@ -5780,7 +5818,7 @@ i32.const 1 global.set $~lib/argc global.get $std/string/str - i32.const 256 + i32.const 112 call $~lib/string/String#lastIndexOf|trampoline global.get $std/string/str i32.load @@ -5788,7 +5826,7 @@ if i32.const 0 i32.const 48 - i32.const 64 + i32.const 68 i32.const 0 call $~lib/env/abort unreachable @@ -5803,7 +5841,7 @@ if i32.const 0 i32.const 48 - i32.const 65 + i32.const 69 i32.const 0 call $~lib/env/abort unreachable @@ -5818,7 +5856,7 @@ if i32.const 0 i32.const 48 - i32.const 66 + i32.const 70 i32.const 0 call $~lib/env/abort unreachable @@ -5833,7 +5871,7 @@ if i32.const 0 i32.const 48 - i32.const 67 + i32.const 71 i32.const 0 call $~lib/env/abort unreachable @@ -5847,7 +5885,7 @@ if i32.const 0 i32.const 48 - i32.const 68 + i32.const 72 i32.const 0 call $~lib/env/abort unreachable @@ -5861,7 +5899,7 @@ if i32.const 0 i32.const 48 - i32.const 69 + i32.const 73 i32.const 0 call $~lib/env/abort unreachable @@ -5875,7 +5913,7 @@ if i32.const 0 i32.const 48 - i32.const 70 + i32.const 74 i32.const 0 call $~lib/env/abort unreachable @@ -5889,19 +5927,19 @@ if i32.const 0 i32.const 48 - i32.const 71 + i32.const 75 i32.const 0 call $~lib/env/abort unreachable end global.get $std/string/str - i32.const 192 + i32.const 208 i32.const 0 call $~lib/string/String#lastIndexOf if i32.const 0 i32.const 48 - i32.const 72 + i32.const 76 i32.const 0 call $~lib/env/abort unreachable @@ -5913,7 +5951,7 @@ if i32.const 0 i32.const 48 - i32.const 78 + i32.const 82 i32.const 0 call $~lib/env/abort unreachable @@ -5925,7 +5963,7 @@ if i32.const 0 i32.const 48 - i32.const 79 + i32.const 83 i32.const 0 call $~lib/env/abort unreachable @@ -5937,7 +5975,7 @@ if i32.const 0 i32.const 48 - i32.const 80 + i32.const 84 i32.const 0 call $~lib/env/abort unreachable @@ -5949,7 +5987,7 @@ if i32.const 0 i32.const 48 - i32.const 81 + i32.const 85 i32.const 0 call $~lib/env/abort unreachable @@ -5961,7 +5999,7 @@ if i32.const 0 i32.const 48 - i32.const 82 + i32.const 86 i32.const 0 call $~lib/env/abort unreachable @@ -5973,7 +6011,7 @@ if i32.const 0 i32.const 48 - i32.const 83 + i32.const 87 i32.const 0 call $~lib/env/abort unreachable @@ -5985,7 +6023,7 @@ if i32.const 0 i32.const 48 - i32.const 84 + i32.const 88 i32.const 0 call $~lib/env/abort unreachable @@ -5997,7 +6035,7 @@ if i32.const 0 i32.const 48 - i32.const 85 + i32.const 89 i32.const 0 call $~lib/env/abort unreachable @@ -6009,7 +6047,7 @@ if i32.const 0 i32.const 48 - i32.const 87 + i32.const 91 i32.const 0 call $~lib/env/abort unreachable @@ -6021,7 +6059,7 @@ if i32.const 0 i32.const 48 - i32.const 88 + i32.const 92 i32.const 0 call $~lib/env/abort unreachable @@ -6033,7 +6071,7 @@ if i32.const 0 i32.const 48 - i32.const 89 + i32.const 93 i32.const 0 call $~lib/env/abort unreachable @@ -6045,7 +6083,7 @@ if i32.const 0 i32.const 48 - i32.const 90 + i32.const 94 i32.const 0 call $~lib/env/abort unreachable @@ -6057,12 +6095,12 @@ if i32.const 0 i32.const 48 - i32.const 91 + i32.const 95 i32.const 0 call $~lib/env/abort unreachable end - i32.const 280 + i32.const 128 i32.const 648 call $~lib/string/String.__concat global.set $std/string/c @@ -6070,54 +6108,6 @@ i32.const 656 call $~lib/string/String.__eq i32.eqz - if - i32.const 0 - i32.const 48 - i32.const 94 - i32.const 0 - call $~lib/env/abort - unreachable - end - global.get $std/string/c - i32.const 280 - call $~lib/string/String.__ne - i32.eqz - if - i32.const 0 - i32.const 48 - i32.const 95 - i32.const 0 - call $~lib/env/abort - unreachable - end - i32.const 256 - i32.const 256 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 48 - i32.const 96 - i32.const 0 - call $~lib/env/abort - unreachable - end - i32.const 256 - global.get $std/string/nullStr - call $~lib/string/String.__ne - i32.eqz - if - i32.const 0 - i32.const 48 - i32.const 97 - i32.const 0 - call $~lib/env/abort - unreachable - end - global.get $std/string/nullStr - i32.const 256 - call $~lib/string/String.__ne - i32.eqz if i32.const 0 i32.const 48 @@ -6126,8 +6116,8 @@ call $~lib/env/abort unreachable end - i32.const 280 - i32.const 648 + global.get $std/string/c + i32.const 128 call $~lib/string/String.__ne i32.eqz if @@ -6138,8 +6128,8 @@ call $~lib/env/abort unreachable end - i32.const 280 - i32.const 280 + i32.const 112 + i32.const 112 call $~lib/string/String.__eq i32.eqz if @@ -6150,6 +6140,54 @@ call $~lib/env/abort unreachable end + i32.const 112 + global.get $std/string/nullStr + call $~lib/string/String.__ne + i32.eqz + if + i32.const 0 + i32.const 48 + i32.const 101 + i32.const 0 + call $~lib/env/abort + unreachable + end + global.get $std/string/nullStr + i32.const 112 + call $~lib/string/String.__ne + i32.eqz + if + i32.const 0 + i32.const 48 + i32.const 102 + i32.const 0 + call $~lib/env/abort + unreachable + end + i32.const 128 + i32.const 648 + call $~lib/string/String.__ne + i32.eqz + if + i32.const 0 + i32.const 48 + i32.const 103 + i32.const 0 + call $~lib/env/abort + unreachable + end + i32.const 128 + i32.const 128 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 48 + i32.const 104 + i32.const 0 + call $~lib/env/abort + unreachable + end i32.const 664 i32.const 680 call $~lib/string/String.__ne @@ -6157,7 +6195,7 @@ if i32.const 0 i32.const 48 - i32.const 101 + i32.const 105 i32.const 0 call $~lib/env/abort unreachable @@ -6169,7 +6207,7 @@ if i32.const 0 i32.const 48 - i32.const 102 + i32.const 106 i32.const 0 call $~lib/env/abort unreachable @@ -6181,7 +6219,7 @@ if i32.const 0 i32.const 48 - i32.const 103 + i32.const 107 i32.const 0 call $~lib/env/abort unreachable @@ -6193,7 +6231,7 @@ if i32.const 0 i32.const 48 - i32.const 104 + i32.const 108 i32.const 0 call $~lib/env/abort unreachable @@ -6205,7 +6243,7 @@ if i32.const 0 i32.const 48 - i32.const 105 + i32.const 109 i32.const 0 call $~lib/env/abort unreachable @@ -6217,7 +6255,7 @@ if i32.const 0 i32.const 48 - i32.const 106 + i32.const 110 i32.const 0 call $~lib/env/abort unreachable @@ -6229,31 +6267,31 @@ if i32.const 0 i32.const 48 - i32.const 107 + i32.const 111 i32.const 0 call $~lib/env/abort unreachable end i32.const 648 - i32.const 280 + i32.const 128 call $~lib/string/String.__gt i32.eqz if i32.const 0 i32.const 48 - i32.const 109 + i32.const 113 i32.const 0 call $~lib/env/abort unreachable end i32.const 864 - i32.const 280 + i32.const 128 call $~lib/string/String.__gt i32.eqz if i32.const 0 i32.const 48 - i32.const 110 + i32.const 114 i32.const 0 call $~lib/env/abort unreachable @@ -6265,7 +6303,7 @@ if i32.const 0 i32.const 48 - i32.const 111 + i32.const 115 i32.const 0 call $~lib/env/abort unreachable @@ -6274,39 +6312,6 @@ i32.const 656 call $~lib/string/String.__gt i32.eqz - if - i32.const 0 - i32.const 48 - i32.const 112 - i32.const 0 - call $~lib/env/abort - unreachable - end - i32.const 864 - i32.const 656 - call $~lib/string/String.__lt - if - i32.const 0 - i32.const 48 - i32.const 113 - i32.const 0 - call $~lib/env/abort - unreachable - end - i32.const 648 - global.get $std/string/nullStr - call $~lib/string/String.__lt - if - i32.const 0 - i32.const 48 - i32.const 115 - i32.const 0 - call $~lib/env/abort - unreachable - end - global.get $std/string/nullStr - i32.const 648 - call $~lib/string/String.__lt if i32.const 0 i32.const 48 @@ -6315,22 +6320,20 @@ call $~lib/env/abort unreachable end - i32.const 288 - i32.const 256 - call $~lib/string/String.__gt - i32.eqz + i32.const 864 + i32.const 656 + call $~lib/string/String.__lt if i32.const 0 i32.const 48 - i32.const 118 + i32.const 117 i32.const 0 call $~lib/env/abort unreachable end - i32.const 256 - i32.const 288 + i32.const 648 + global.get $std/string/nullStr call $~lib/string/String.__lt - i32.eqz if i32.const 0 i32.const 48 @@ -6339,10 +6342,9 @@ call $~lib/env/abort unreachable end - i32.const 288 - i32.const 256 - call $~lib/string/String.__gte - i32.eqz + global.get $std/string/nullStr + i32.const 648 + call $~lib/string/String.__lt if i32.const 0 i32.const 48 @@ -6352,19 +6354,9 @@ unreachable end i32.const 288 - call $~lib/string/String.__lte + i32.const 112 + call $~lib/string/String.__gt i32.eqz - if - i32.const 0 - i32.const 48 - i32.const 121 - i32.const 0 - call $~lib/env/abort - unreachable - end - i32.const 288 - i32.const 256 - call $~lib/string/String.__lt if i32.const 0 i32.const 48 @@ -6373,9 +6365,10 @@ call $~lib/env/abort unreachable end - i32.const 256 + i32.const 112 i32.const 288 - call $~lib/string/String.__gt + call $~lib/string/String.__lt + i32.eqz if i32.const 0 i32.const 48 @@ -6384,9 +6377,10 @@ call $~lib/env/abort unreachable end - i32.const 256 - i32.const 256 - call $~lib/string/String.__lt + i32.const 288 + i32.const 112 + call $~lib/string/String.__gte + i32.eqz if i32.const 0 i32.const 48 @@ -6395,9 +6389,9 @@ call $~lib/env/abort unreachable end - i32.const 256 - i32.const 256 - call $~lib/string/String.__gt + i32.const 288 + call $~lib/string/String.__lte + i32.eqz if i32.const 0 i32.const 48 @@ -6406,10 +6400,9 @@ call $~lib/env/abort unreachable end - i32.const 256 - i32.const 256 - call $~lib/string/String.__gte - i32.eqz + i32.const 288 + i32.const 112 + call $~lib/string/String.__lt if i32.const 0 i32.const 48 @@ -6418,13 +6411,58 @@ call $~lib/env/abort unreachable end - i32.const 256 + i32.const 112 + i32.const 288 + call $~lib/string/String.__gt + if + i32.const 0 + i32.const 48 + i32.const 127 + i32.const 0 + call $~lib/env/abort + unreachable + end + i32.const 112 + i32.const 112 + call $~lib/string/String.__lt + if + i32.const 0 + i32.const 48 + i32.const 128 + i32.const 0 + call $~lib/env/abort + unreachable + end + i32.const 112 + i32.const 112 + call $~lib/string/String.__gt + if + i32.const 0 + i32.const 48 + i32.const 129 + i32.const 0 + call $~lib/env/abort + unreachable + end + i32.const 112 + i32.const 112 + call $~lib/string/String.__gte + i32.eqz + if + i32.const 0 + i32.const 48 + i32.const 130 + i32.const 0 + call $~lib/env/abort + unreachable + end + i32.const 112 call $~lib/string/String.__lte i32.eqz if i32.const 0 i32.const 48 - i32.const 127 + i32.const 131 i32.const 0 call $~lib/env/abort unreachable @@ -6445,7 +6483,7 @@ if i32.const 0 i32.const 48 - i32.const 131 + i32.const 135 i32.const 0 call $~lib/env/abort unreachable @@ -6454,48 +6492,6 @@ i32.load i32.const 3 i32.ne - if - i32.const 0 - i32.const 48 - i32.const 133 - i32.const 0 - call $~lib/env/abort - unreachable - end - i32.const 256 - i32.const 100 - call $~lib/string/String#repeat - i32.const 256 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 48 - i32.const 135 - i32.const 0 - call $~lib/env/abort - unreachable - end - i32.const 280 - i32.const 0 - call $~lib/string/String#repeat - i32.const 256 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 48 - i32.const 136 - i32.const 0 - call $~lib/env/abort - unreachable - end - i32.const 280 - i32.const 1 - call $~lib/string/String#repeat - i32.const 280 - call $~lib/string/String.__eq - i32.eqz if i32.const 0 i32.const 48 @@ -6504,7 +6500,49 @@ call $~lib/env/abort unreachable end - i32.const 280 + i32.const 112 + i32.const 100 + call $~lib/string/String#repeat + i32.const 112 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 48 + i32.const 139 + i32.const 0 + call $~lib/env/abort + unreachable + end + i32.const 128 + i32.const 0 + call $~lib/string/String#repeat + i32.const 112 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 48 + i32.const 140 + i32.const 0 + call $~lib/env/abort + unreachable + end + i32.const 128 + i32.const 1 + call $~lib/string/String#repeat + i32.const 128 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 48 + i32.const 141 + i32.const 0 + call $~lib/env/abort + unreachable + end + i32.const 128 i32.const 2 call $~lib/string/String#repeat i32.const 872 @@ -6513,12 +6551,12 @@ if i32.const 0 i32.const 48 - i32.const 138 + i32.const 142 i32.const 0 call $~lib/env/abort unreachable end - i32.const 280 + i32.const 128 i32.const 3 call $~lib/string/String#repeat i32.const 880 @@ -6527,7 +6565,7 @@ if i32.const 0 i32.const 48 - i32.const 139 + i32.const 143 i32.const 0 call $~lib/env/abort unreachable @@ -6541,12 +6579,12 @@ if i32.const 0 i32.const 48 - i32.const 140 + i32.const 144 i32.const 0 call $~lib/env/abort unreachable end - i32.const 280 + i32.const 128 i32.const 5 call $~lib/string/String#repeat i32.const 920 @@ -6555,12 +6593,12 @@ if i32.const 0 i32.const 48 - i32.const 141 + i32.const 145 i32.const 0 call $~lib/env/abort unreachable end - i32.const 280 + i32.const 128 i32.const 6 call $~lib/string/String#repeat i32.const 936 @@ -6569,12 +6607,12 @@ if i32.const 0 i32.const 48 - i32.const 142 + i32.const 146 i32.const 0 call $~lib/env/abort unreachable end - i32.const 280 + i32.const 128 i32.const 7 call $~lib/string/String#repeat i32.const 952 @@ -6583,7 +6621,7 @@ if i32.const 0 i32.const 48 - i32.const 143 + i32.const 147 i32.const 0 call $~lib/env/abort unreachable @@ -6601,7 +6639,7 @@ if i32.const 0 i32.const 48 - i32.const 147 + i32.const 151 i32.const 0 call $~lib/env/abort unreachable @@ -6617,7 +6655,7 @@ if i32.const 0 i32.const 48 - i32.const 148 + i32.const 152 i32.const 0 call $~lib/env/abort unreachable @@ -6633,7 +6671,7 @@ if i32.const 0 i32.const 48 - i32.const 149 + i32.const 153 i32.const 0 call $~lib/env/abort unreachable @@ -6648,7 +6686,7 @@ if i32.const 0 i32.const 48 - i32.const 150 + i32.const 154 i32.const 0 call $~lib/env/abort unreachable @@ -6663,7 +6701,7 @@ if i32.const 0 i32.const 48 - i32.const 151 + i32.const 155 i32.const 0 call $~lib/env/abort unreachable @@ -6672,13 +6710,13 @@ i32.const 4 i32.const 3 call $~lib/string/String#slice - i32.const 256 + i32.const 112 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 48 - i32.const 152 + i32.const 156 i32.const 0 call $~lib/env/abort unreachable @@ -6693,14 +6731,14 @@ if i32.const 0 i32.const 48 - i32.const 153 + i32.const 157 i32.const 0 call $~lib/env/abort unreachable end i32.const 0 global.set $~lib/argc - i32.const 256 + i32.const 112 i32.const 0 call $~lib/string/String#split|trampoline global.set $std/string/sa @@ -6724,7 +6762,7 @@ else unreachable end - i32.const 256 + i32.const 112 call $~lib/string/String.__eq else local.get $0 @@ -6733,15 +6771,15 @@ if i32.const 0 i32.const 48 - i32.const 158 + i32.const 162 i32.const 0 call $~lib/env/abort unreachable end i32.const 1 global.set $~lib/argc - i32.const 256 - i32.const 256 + i32.const 112 + i32.const 112 call $~lib/string/String#split|trampoline global.set $std/string/sa global.get $std/string/sa @@ -6749,14 +6787,14 @@ if i32.const 0 i32.const 48 - i32.const 160 + i32.const 164 i32.const 0 call $~lib/env/abort unreachable end i32.const 1 global.set $~lib/argc - i32.const 256 + i32.const 112 i32.const 432 call $~lib/string/String#split|trampoline global.set $std/string/sa @@ -6780,7 +6818,7 @@ else unreachable end - i32.const 256 + i32.const 112 call $~lib/string/String.__eq else local.get $0 @@ -6789,7 +6827,7 @@ if i32.const 0 i32.const 48 - i32.const 162 + i32.const 166 i32.const 0 call $~lib/env/abort unreachable @@ -6829,7 +6867,7 @@ if i32.const 0 i32.const 48 - i32.const 164 + i32.const 168 i32.const 0 call $~lib/env/abort unreachable @@ -6862,7 +6900,7 @@ else unreachable end - i32.const 280 + i32.const 128 call $~lib/string/String.__eq local.set $0 end @@ -6917,7 +6955,7 @@ if i32.const 0 i32.const 48 - i32.const 166 + i32.const 170 i32.const 0 call $~lib/env/abort unreachable @@ -6950,7 +6988,7 @@ else unreachable end - i32.const 280 + i32.const 128 call $~lib/string/String.__eq local.set $0 end @@ -7005,7 +7043,7 @@ if i32.const 0 i32.const 48 - i32.const 168 + i32.const 172 i32.const 0 call $~lib/env/abort unreachable @@ -7039,7 +7077,7 @@ else unreachable end - i32.const 280 + i32.const 128 call $~lib/string/String.__eq local.set $0 end @@ -7085,7 +7123,7 @@ else unreachable end - i32.const 256 + i32.const 112 call $~lib/string/String.__eq local.set $0 end @@ -7117,7 +7155,7 @@ if i32.const 0 i32.const 48 - i32.const 170 + i32.const 174 i32.const 0 call $~lib/env/abort unreachable @@ -7151,7 +7189,7 @@ else unreachable end - i32.const 256 + i32.const 112 call $~lib/string/String.__eq local.set $0 end @@ -7174,7 +7212,7 @@ else unreachable end - i32.const 280 + i32.const 128 call $~lib/string/String.__eq local.set $0 end @@ -7229,7 +7267,7 @@ if i32.const 0 i32.const 48 - i32.const 172 + i32.const 176 i32.const 0 call $~lib/env/abort unreachable @@ -7263,7 +7301,7 @@ else unreachable end - i32.const 280 + i32.const 128 call $~lib/string/String.__eq local.set $0 end @@ -7332,7 +7370,7 @@ else unreachable end - i32.const 256 + i32.const 112 call $~lib/string/String.__eq else local.get $0 @@ -7341,7 +7379,7 @@ if i32.const 0 i32.const 48 - i32.const 174 + i32.const 178 i32.const 0 call $~lib/env/abort unreachable @@ -7349,7 +7387,7 @@ i32.const 1 global.set $~lib/argc i32.const 288 - i32.const 256 + i32.const 112 call $~lib/string/String#split|trampoline global.set $std/string/sa block (result i32) @@ -7374,7 +7412,7 @@ else unreachable end - i32.const 280 + i32.const 128 call $~lib/string/String.__eq local.set $0 end @@ -7429,13 +7467,13 @@ if i32.const 0 i32.const 48 - i32.const 176 + i32.const 180 i32.const 0 call $~lib/env/abort unreachable end i32.const 288 - i32.const 256 + i32.const 112 i32.const 0 call $~lib/string/String#split global.set $std/string/sa @@ -7444,13 +7482,13 @@ if i32.const 0 i32.const 48 - i32.const 178 + i32.const 182 i32.const 0 call $~lib/env/abort unreachable end i32.const 288 - i32.const 256 + i32.const 112 i32.const 1 call $~lib/string/String#split global.set $std/string/sa @@ -7474,7 +7512,7 @@ else unreachable end - i32.const 280 + i32.const 128 call $~lib/string/String.__eq else local.get $0 @@ -7483,7 +7521,7 @@ if i32.const 0 i32.const 48 - i32.const 180 + i32.const 184 i32.const 0 call $~lib/env/abort unreachable @@ -7513,7 +7551,7 @@ else unreachable end - i32.const 280 + i32.const 128 call $~lib/string/String.__eq else local.get $0 @@ -7522,13 +7560,13 @@ if i32.const 0 i32.const 48 - i32.const 182 + i32.const 186 i32.const 0 call $~lib/env/abort unreachable end i32.const 288 - i32.const 256 + i32.const 112 i32.const 4 call $~lib/string/String#split global.set $std/string/sa @@ -7554,181 +7592,7 @@ else unreachable end - i32.const 280 - call $~lib/string/String.__eq - local.set $0 - end - local.get $0 - end - if - i32.const 1 - global.get $std/string/sa - i32.load - local.tee $0 - i32.load - i32.const 2 - i32.shr_u - i32.lt_u - if (result i32) - local.get $0 - i32.const 4 - i32.add - i32.load offset=8 - else - unreachable - end - i32.const 648 - call $~lib/string/String.__eq - local.set $0 - end - local.get $0 - end - if (result i32) - i32.const 2 - global.get $std/string/sa - i32.load - local.tee $0 - i32.load - i32.const 2 - i32.shr_u - i32.lt_u - if (result i32) - local.get $0 - i32.const 8 - i32.add - i32.load offset=8 - else - unreachable - end - i32.const 1216 - call $~lib/string/String.__eq - else - local.get $0 - end - i32.eqz - if - i32.const 0 - i32.const 48 - i32.const 184 - i32.const 0 - call $~lib/env/abort - unreachable - end - i32.const 288 - i32.const 256 - i32.const -1 - call $~lib/string/String#split - global.set $std/string/sa - block (result i32) - block (result i32) - global.get $std/string/sa - i32.load offset=4 - i32.const 3 - i32.eq - local.tee $0 - if - i32.const 0 - global.get $std/string/sa - i32.load - local.tee $0 - i32.load - i32.const 2 - i32.shr_u - i32.lt_u - if (result i32) - local.get $0 - i32.load offset=8 - else - unreachable - end - i32.const 280 - call $~lib/string/String.__eq - local.set $0 - end - local.get $0 - end - if - i32.const 1 - global.get $std/string/sa - i32.load - local.tee $0 - i32.load - i32.const 2 - i32.shr_u - i32.lt_u - if (result i32) - local.get $0 - i32.const 4 - i32.add - i32.load offset=8 - else - unreachable - end - i32.const 648 - call $~lib/string/String.__eq - local.set $0 - end - local.get $0 - end - if (result i32) - i32.const 2 - global.get $std/string/sa - i32.load - local.tee $0 - i32.load - i32.const 2 - i32.shr_u - i32.lt_u - if (result i32) - local.get $0 - i32.const 8 - i32.add - i32.load offset=8 - else - unreachable - end - i32.const 1216 - call $~lib/string/String.__eq - else - local.get $0 - end - i32.eqz - if - i32.const 0 - i32.const 48 - i32.const 186 - i32.const 0 - call $~lib/env/abort - unreachable - end - i32.const 1192 - i32.const 432 - i32.const -1 - call $~lib/string/String#split - global.set $std/string/sa - block (result i32) - block (result i32) - global.get $std/string/sa - i32.load offset=4 - i32.const 3 - i32.eq - local.tee $0 - if - i32.const 0 - global.get $std/string/sa - i32.load - local.tee $0 - i32.load - i32.const 2 - i32.shr_u - i32.lt_u - if (result i32) - local.get $0 - i32.load offset=8 - else - unreachable - end - i32.const 280 + i32.const 128 call $~lib/string/String.__eq local.set $0 end @@ -7788,6 +7652,180 @@ call $~lib/env/abort unreachable end + i32.const 288 + i32.const 112 + i32.const -1 + call $~lib/string/String#split + global.set $std/string/sa + block (result i32) + block (result i32) + global.get $std/string/sa + i32.load offset=4 + i32.const 3 + i32.eq + local.tee $0 + if + i32.const 0 + global.get $std/string/sa + i32.load + local.tee $0 + i32.load + i32.const 2 + i32.shr_u + i32.lt_u + if (result i32) + local.get $0 + i32.load offset=8 + else + unreachable + end + i32.const 128 + call $~lib/string/String.__eq + local.set $0 + end + local.get $0 + end + if + i32.const 1 + global.get $std/string/sa + i32.load + local.tee $0 + i32.load + i32.const 2 + i32.shr_u + i32.lt_u + if (result i32) + local.get $0 + i32.const 4 + i32.add + i32.load offset=8 + else + unreachable + end + i32.const 648 + call $~lib/string/String.__eq + local.set $0 + end + local.get $0 + end + if (result i32) + i32.const 2 + global.get $std/string/sa + i32.load + local.tee $0 + i32.load + i32.const 2 + i32.shr_u + i32.lt_u + if (result i32) + local.get $0 + i32.const 8 + i32.add + i32.load offset=8 + else + unreachable + end + i32.const 1216 + call $~lib/string/String.__eq + else + local.get $0 + end + i32.eqz + if + i32.const 0 + i32.const 48 + i32.const 190 + i32.const 0 + call $~lib/env/abort + unreachable + end + i32.const 1192 + i32.const 432 + i32.const -1 + call $~lib/string/String#split + global.set $std/string/sa + block (result i32) + block (result i32) + global.get $std/string/sa + i32.load offset=4 + i32.const 3 + i32.eq + local.tee $0 + if + i32.const 0 + global.get $std/string/sa + i32.load + local.tee $0 + i32.load + i32.const 2 + i32.shr_u + i32.lt_u + if (result i32) + local.get $0 + i32.load offset=8 + else + unreachable + end + i32.const 128 + call $~lib/string/String.__eq + local.set $0 + end + local.get $0 + end + if + i32.const 1 + global.get $std/string/sa + i32.load + local.tee $0 + i32.load + i32.const 2 + i32.shr_u + i32.lt_u + if (result i32) + local.get $0 + i32.const 4 + i32.add + i32.load offset=8 + else + unreachable + end + i32.const 648 + call $~lib/string/String.__eq + local.set $0 + end + local.get $0 + end + if (result i32) + i32.const 2 + global.get $std/string/sa + i32.load + local.tee $0 + i32.load + i32.const 2 + i32.shr_u + i32.lt_u + if (result i32) + local.get $0 + i32.const 8 + i32.add + i32.load offset=8 + else + unreachable + end + i32.const 1216 + call $~lib/string/String.__eq + else + local.get $0 + end + i32.eqz + if + i32.const 0 + i32.const 48 + i32.const 192 + i32.const 0 + call $~lib/env/abort + unreachable + end i32.const 0 call $~lib/internal/number/itoa32 i32.const 480 @@ -7796,7 +7834,7 @@ if i32.const 0 i32.const 48 - i32.const 190 + i32.const 194 i32.const 0 call $~lib/env/abort unreachable @@ -7809,7 +7847,7 @@ if i32.const 0 i32.const 48 - i32.const 191 + i32.const 195 i32.const 0 call $~lib/env/abort unreachable @@ -7822,7 +7860,7 @@ if i32.const 0 i32.const 48 - i32.const 192 + i32.const 196 i32.const 0 call $~lib/env/abort unreachable @@ -7835,7 +7873,7 @@ if i32.const 0 i32.const 48 - i32.const 193 + i32.const 197 i32.const 0 call $~lib/env/abort unreachable @@ -7848,7 +7886,7 @@ if i32.const 0 i32.const 48 - i32.const 194 + i32.const 198 i32.const 0 call $~lib/env/abort unreachable @@ -7861,7 +7899,7 @@ if i32.const 0 i32.const 48 - i32.const 195 + i32.const 199 i32.const 0 call $~lib/env/abort unreachable @@ -7874,7 +7912,7 @@ if i32.const 0 i32.const 48 - i32.const 196 + i32.const 200 i32.const 0 call $~lib/env/abort unreachable @@ -7887,7 +7925,7 @@ if i32.const 0 i32.const 48 - i32.const 197 + i32.const 201 i32.const 0 call $~lib/env/abort unreachable @@ -7900,7 +7938,7 @@ if i32.const 0 i32.const 48 - i32.const 198 + i32.const 202 i32.const 0 call $~lib/env/abort unreachable @@ -7913,7 +7951,7 @@ if i32.const 0 i32.const 48 - i32.const 199 + i32.const 203 i32.const 0 call $~lib/env/abort unreachable @@ -7926,7 +7964,7 @@ if i32.const 0 i32.const 48 - i32.const 200 + i32.const 204 i32.const 0 call $~lib/env/abort unreachable @@ -7939,7 +7977,7 @@ if i32.const 0 i32.const 48 - i32.const 201 + i32.const 205 i32.const 0 call $~lib/env/abort unreachable @@ -7952,7 +7990,7 @@ if i32.const 0 i32.const 48 - i32.const 202 + i32.const 206 i32.const 0 call $~lib/env/abort unreachable @@ -7965,7 +8003,7 @@ if i32.const 0 i32.const 48 - i32.const 203 + i32.const 207 i32.const 0 call $~lib/env/abort unreachable @@ -7978,7 +8016,7 @@ if i32.const 0 i32.const 48 - i32.const 205 + i32.const 209 i32.const 0 call $~lib/env/abort unreachable @@ -7991,7 +8029,7 @@ if i32.const 0 i32.const 48 - i32.const 206 + i32.const 210 i32.const 0 call $~lib/env/abort unreachable @@ -8004,7 +8042,7 @@ if i32.const 0 i32.const 48 - i32.const 207 + i32.const 211 i32.const 0 call $~lib/env/abort unreachable @@ -8017,7 +8055,7 @@ if i32.const 0 i32.const 48 - i32.const 208 + i32.const 212 i32.const 0 call $~lib/env/abort unreachable @@ -8030,7 +8068,7 @@ if i32.const 0 i32.const 48 - i32.const 209 + i32.const 213 i32.const 0 call $~lib/env/abort unreachable @@ -8043,7 +8081,7 @@ if i32.const 0 i32.const 48 - i32.const 211 + i32.const 215 i32.const 0 call $~lib/env/abort unreachable @@ -8056,7 +8094,7 @@ if i32.const 0 i32.const 48 - i32.const 212 + i32.const 216 i32.const 0 call $~lib/env/abort unreachable @@ -8069,7 +8107,7 @@ if i32.const 0 i32.const 48 - i32.const 213 + i32.const 217 i32.const 0 call $~lib/env/abort unreachable @@ -8082,7 +8120,7 @@ if i32.const 0 i32.const 48 - i32.const 214 + i32.const 218 i32.const 0 call $~lib/env/abort unreachable @@ -8095,7 +8133,7 @@ if i32.const 0 i32.const 48 - i32.const 215 + i32.const 219 i32.const 0 call $~lib/env/abort unreachable @@ -8108,7 +8146,7 @@ if i32.const 0 i32.const 48 - i32.const 216 + i32.const 220 i32.const 0 call $~lib/env/abort unreachable @@ -8121,7 +8159,7 @@ if i32.const 0 i32.const 48 - i32.const 217 + i32.const 221 i32.const 0 call $~lib/env/abort unreachable @@ -8134,7 +8172,7 @@ if i32.const 0 i32.const 48 - i32.const 218 + i32.const 222 i32.const 0 call $~lib/env/abort unreachable @@ -8147,7 +8185,7 @@ if i32.const 0 i32.const 48 - i32.const 219 + i32.const 223 i32.const 0 call $~lib/env/abort unreachable @@ -8160,7 +8198,7 @@ if i32.const 0 i32.const 48 - i32.const 220 + i32.const 224 i32.const 0 call $~lib/env/abort unreachable @@ -8173,7 +8211,7 @@ if i32.const 0 i32.const 48 - i32.const 221 + i32.const 225 i32.const 0 call $~lib/env/abort unreachable @@ -8186,7 +8224,7 @@ if i32.const 0 i32.const 48 - i32.const 223 + i32.const 227 i32.const 0 call $~lib/env/abort unreachable @@ -8199,7 +8237,7 @@ if i32.const 0 i32.const 48 - i32.const 224 + i32.const 228 i32.const 0 call $~lib/env/abort unreachable @@ -8212,7 +8250,7 @@ if i32.const 0 i32.const 48 - i32.const 225 + i32.const 229 i32.const 0 call $~lib/env/abort unreachable @@ -8225,7 +8263,7 @@ if i32.const 0 i32.const 48 - i32.const 226 + i32.const 230 i32.const 0 call $~lib/env/abort unreachable @@ -8238,7 +8276,7 @@ if i32.const 0 i32.const 48 - i32.const 227 + i32.const 231 i32.const 0 call $~lib/env/abort unreachable @@ -8251,7 +8289,7 @@ if i32.const 0 i32.const 48 - i32.const 228 + i32.const 232 i32.const 0 call $~lib/env/abort unreachable @@ -8264,7 +8302,7 @@ if i32.const 0 i32.const 48 - i32.const 229 + i32.const 233 i32.const 0 call $~lib/env/abort unreachable @@ -8277,7 +8315,7 @@ if i32.const 0 i32.const 48 - i32.const 230 + i32.const 234 i32.const 0 call $~lib/env/abort unreachable @@ -8290,7 +8328,7 @@ if i32.const 0 i32.const 48 - i32.const 231 + i32.const 235 i32.const 0 call $~lib/env/abort unreachable @@ -8303,7 +8341,7 @@ if i32.const 0 i32.const 48 - i32.const 232 + i32.const 236 i32.const 0 call $~lib/env/abort unreachable @@ -8316,7 +8354,7 @@ if i32.const 0 i32.const 48 - i32.const 233 + i32.const 237 i32.const 0 call $~lib/env/abort unreachable @@ -8329,7 +8367,7 @@ if i32.const 0 i32.const 48 - i32.const 236 + i32.const 240 i32.const 0 call $~lib/env/abort unreachable @@ -8342,7 +8380,7 @@ if i32.const 0 i32.const 48 - i32.const 237 + i32.const 241 i32.const 0 call $~lib/env/abort unreachable @@ -8355,7 +8393,7 @@ if i32.const 0 i32.const 48 - i32.const 238 + i32.const 242 i32.const 0 call $~lib/env/abort unreachable @@ -8368,7 +8406,7 @@ if i32.const 0 i32.const 48 - i32.const 239 + i32.const 243 i32.const 0 call $~lib/env/abort unreachable @@ -8381,7 +8419,7 @@ if i32.const 0 i32.const 48 - i32.const 240 + i32.const 244 i32.const 0 call $~lib/env/abort unreachable @@ -8394,7 +8432,7 @@ if i32.const 0 i32.const 48 - i32.const 241 + i32.const 245 i32.const 0 call $~lib/env/abort unreachable @@ -8407,7 +8445,7 @@ if i32.const 0 i32.const 48 - i32.const 242 + i32.const 246 i32.const 0 call $~lib/env/abort unreachable @@ -8420,7 +8458,7 @@ if i32.const 0 i32.const 48 - i32.const 243 + i32.const 247 i32.const 0 call $~lib/env/abort unreachable @@ -8433,7 +8471,7 @@ if i32.const 0 i32.const 48 - i32.const 244 + i32.const 248 i32.const 0 call $~lib/env/abort unreachable @@ -8446,7 +8484,7 @@ if i32.const 0 i32.const 48 - i32.const 245 + i32.const 249 i32.const 0 call $~lib/env/abort unreachable @@ -8459,7 +8497,7 @@ if i32.const 0 i32.const 48 - i32.const 246 + i32.const 250 i32.const 0 call $~lib/env/abort unreachable @@ -8472,7 +8510,7 @@ if i32.const 0 i32.const 48 - i32.const 249 + i32.const 253 i32.const 0 call $~lib/env/abort unreachable @@ -8485,7 +8523,7 @@ if i32.const 0 i32.const 48 - i32.const 250 + i32.const 254 i32.const 0 call $~lib/env/abort unreachable @@ -8498,7 +8536,7 @@ if i32.const 0 i32.const 48 - i32.const 251 + i32.const 255 i32.const 0 call $~lib/env/abort unreachable @@ -8511,7 +8549,7 @@ if i32.const 0 i32.const 48 - i32.const 252 + i32.const 256 i32.const 0 call $~lib/env/abort unreachable @@ -8524,7 +8562,7 @@ if i32.const 0 i32.const 48 - i32.const 253 + i32.const 257 i32.const 0 call $~lib/env/abort unreachable @@ -8537,7 +8575,7 @@ if i32.const 0 i32.const 48 - i32.const 259 + i32.const 263 i32.const 0 call $~lib/env/abort unreachable @@ -8550,7 +8588,7 @@ if i32.const 0 i32.const 48 - i32.const 260 + i32.const 264 i32.const 0 call $~lib/env/abort unreachable @@ -8563,7 +8601,7 @@ if i32.const 0 i32.const 48 - i32.const 261 + i32.const 265 i32.const 0 call $~lib/env/abort unreachable @@ -8576,7 +8614,7 @@ if i32.const 0 i32.const 48 - i32.const 262 + i32.const 266 i32.const 0 call $~lib/env/abort unreachable @@ -8589,7 +8627,7 @@ if i32.const 0 i32.const 48 - i32.const 264 + i32.const 268 i32.const 0 call $~lib/env/abort unreachable @@ -8602,7 +8640,7 @@ if i32.const 0 i32.const 48 - i32.const 265 + i32.const 269 i32.const 0 call $~lib/env/abort unreachable @@ -8615,7 +8653,7 @@ if i32.const 0 i32.const 48 - i32.const 266 + i32.const 270 i32.const 0 call $~lib/env/abort unreachable @@ -8628,7 +8666,7 @@ if i32.const 0 i32.const 48 - i32.const 267 + i32.const 271 i32.const 0 call $~lib/env/abort unreachable @@ -8641,7 +8679,7 @@ if i32.const 0 i32.const 48 - i32.const 268 + i32.const 272 i32.const 0 call $~lib/env/abort unreachable @@ -8654,7 +8692,7 @@ if i32.const 0 i32.const 48 - i32.const 269 + i32.const 273 i32.const 0 call $~lib/env/abort unreachable @@ -8667,7 +8705,7 @@ if i32.const 0 i32.const 48 - i32.const 271 + i32.const 275 i32.const 0 call $~lib/env/abort unreachable @@ -8680,7 +8718,7 @@ if i32.const 0 i32.const 48 - i32.const 272 + i32.const 276 i32.const 0 call $~lib/env/abort unreachable @@ -8693,7 +8731,7 @@ if i32.const 0 i32.const 48 - i32.const 273 + i32.const 277 i32.const 0 call $~lib/env/abort unreachable @@ -8706,7 +8744,7 @@ if i32.const 0 i32.const 48 - i32.const 274 + i32.const 278 i32.const 0 call $~lib/env/abort unreachable @@ -8719,7 +8757,7 @@ if i32.const 0 i32.const 48 - i32.const 275 + i32.const 279 i32.const 0 call $~lib/env/abort unreachable @@ -8732,7 +8770,7 @@ if i32.const 0 i32.const 48 - i32.const 276 + i32.const 280 i32.const 0 call $~lib/env/abort unreachable @@ -8745,7 +8783,7 @@ if i32.const 0 i32.const 48 - i32.const 277 + i32.const 281 i32.const 0 call $~lib/env/abort unreachable @@ -8758,7 +8796,7 @@ if i32.const 0 i32.const 48 - i32.const 278 + i32.const 282 i32.const 0 call $~lib/env/abort unreachable @@ -8771,7 +8809,7 @@ if i32.const 0 i32.const 48 - i32.const 279 + i32.const 283 i32.const 0 call $~lib/env/abort unreachable @@ -8784,7 +8822,7 @@ if i32.const 0 i32.const 48 - i32.const 281 + i32.const 285 i32.const 0 call $~lib/env/abort unreachable @@ -8797,7 +8835,7 @@ if i32.const 0 i32.const 48 - i32.const 282 + i32.const 286 i32.const 0 call $~lib/env/abort unreachable @@ -8810,7 +8848,7 @@ if i32.const 0 i32.const 48 - i32.const 284 + i32.const 288 i32.const 0 call $~lib/env/abort unreachable @@ -8823,7 +8861,7 @@ if i32.const 0 i32.const 48 - i32.const 285 + i32.const 289 i32.const 0 call $~lib/env/abort unreachable @@ -8836,7 +8874,7 @@ if i32.const 0 i32.const 48 - i32.const 286 + i32.const 290 i32.const 0 call $~lib/env/abort unreachable @@ -8849,7 +8887,7 @@ if i32.const 0 i32.const 48 - i32.const 287 + i32.const 291 i32.const 0 call $~lib/env/abort unreachable @@ -8862,7 +8900,7 @@ if i32.const 0 i32.const 48 - i32.const 289 + i32.const 293 i32.const 0 call $~lib/env/abort unreachable @@ -8875,7 +8913,7 @@ if i32.const 0 i32.const 48 - i32.const 290 + i32.const 294 i32.const 0 call $~lib/env/abort unreachable @@ -8888,7 +8926,7 @@ if i32.const 0 i32.const 48 - i32.const 291 + i32.const 295 i32.const 0 call $~lib/env/abort unreachable @@ -8901,7 +8939,7 @@ if i32.const 0 i32.const 48 - i32.const 292 + i32.const 296 i32.const 0 call $~lib/env/abort unreachable @@ -8914,7 +8952,7 @@ if i32.const 0 i32.const 48 - i32.const 293 + i32.const 297 i32.const 0 call $~lib/env/abort unreachable @@ -8927,7 +8965,7 @@ if i32.const 0 i32.const 48 - i32.const 294 + i32.const 298 i32.const 0 call $~lib/env/abort unreachable @@ -8940,7 +8978,7 @@ if i32.const 0 i32.const 48 - i32.const 295 + i32.const 299 i32.const 0 call $~lib/env/abort unreachable @@ -8953,7 +8991,7 @@ if i32.const 0 i32.const 48 - i32.const 296 + i32.const 300 i32.const 0 call $~lib/env/abort unreachable @@ -8966,7 +9004,7 @@ if i32.const 0 i32.const 48 - i32.const 297 + i32.const 301 i32.const 0 call $~lib/env/abort unreachable diff --git a/tests/compiler/std/string.ts b/tests/compiler/std/string.ts index d29fba22..2393c27a 100644 --- a/tests/compiler/std/string.ts +++ b/tests/compiler/std/string.ts @@ -18,6 +18,10 @@ assert(changetype(str) == changetype("hi, I'm a string")); assert(str.length == 16); assert(str.charCodeAt(0) == 0x68); +assert(!!"" == false); +assert(!!"\0" == true); +assert(!!"a" == true); + assert(String.fromCharCode(0) == "\0"); assert(String.fromCharCode(54) == "6"); assert(String.fromCharCode(0x10000 + 54) == "6"); @@ -222,8 +226,8 @@ assert(utoa64(u64.MAX_VALUE) == "18446744073709551615"); assert(itoa64(0) == "0"); assert(itoa64(-1234) == "-1234"); -assert(itoa64(0xffffffff) == "4294967295"); -assert(itoa64(-0xffffffff) == "-4294967295"); +assert(itoa64(0xffffffff) == "4294967295"); +assert(itoa64(-0xffffffff) == "-4294967295"); assert(itoa64(68719476735) == "68719476735"); assert(itoa64(-68719476735) == "-68719476735"); assert(itoa64(-868719476735) == "-868719476735"); @@ -233,13 +237,13 @@ assert(itoa64(i64.MAX_VALUE) == "9223372036854775807"); assert(itoa64(i64.MIN_VALUE) == "-9223372036854775808"); // special cases -assert(dtoa(0.0) == "0.0"); +assert(dtoa(0.0) == "0.0"); assert(dtoa(-0.0) == "0.0"); -assert(dtoa(NaN) == "NaN"); +assert(dtoa(NaN) == "NaN"); assert(dtoa(+Infinity) == "Infinity"); assert(dtoa(-Infinity) == "-Infinity"); -assert(dtoa(+f64.EPSILON) == "2.220446049250313e-16"); -assert(dtoa(-f64.EPSILON) == "-2.220446049250313e-16"); +assert(dtoa(+f64.EPSILON) == "2.220446049250313e-16"); +assert(dtoa(-f64.EPSILON) == "-2.220446049250313e-16"); assert(dtoa(+f64.MAX_VALUE) == "1.7976931348623157e+308"); assert(dtoa(-f64.MAX_VALUE) == "-1.7976931348623157e+308"); assert(dtoa(4.185580496821357e+298) == "4.185580496821357e+298"); @@ -256,44 +260,44 @@ assert(dtoa(5e-324) == "5e-324"); // Actual: 1.2344999999999999e+21 // assert(dtoa(1.2345e+21) == "1.2345e+21"); -assert(dtoa(1.0) == "1.0"); -assert(dtoa(0.1) == "0.1"); +assert(dtoa(1.0) == "1.0"); +assert(dtoa(0.1) == "0.1"); assert(dtoa(-1.0) == "-1.0"); assert(dtoa(-0.1) == "-0.1"); -assert(dtoa(1e+6) == "1000000.0"); -assert(dtoa(1e-6) == "0.000001"); +assert(dtoa(1e+6) == "1000000.0"); +assert(dtoa(1e-6) == "0.000001"); assert(dtoa(-1e+6) == "-1000000.0"); assert(dtoa(-1e-6) == "-0.000001"); -assert(dtoa(1e+7) == "10000000.0"); -assert(dtoa(1e-7) == "1e-7"); +assert(dtoa(1e+7) == "10000000.0"); +assert(dtoa(1e-7) == "1e-7"); -assert(dtoa(1e+308) == "1e+308"); +assert(dtoa(1e+308) == "1e+308"); assert(dtoa(-1e+308) == "-1e+308"); -assert(dtoa(1e+309) == "Infinity"); +assert(dtoa(1e+309) == "Infinity"); assert(dtoa(-1e+309) == "-Infinity"); -assert(dtoa(1e-308) == "1e-308"); +assert(dtoa(1e-308) == "1e-308"); assert(dtoa(-1e-308) == "-1e-308"); -assert(dtoa(1e-323) == "1e-323"); +assert(dtoa(1e-323) == "1e-323"); assert(dtoa(-1e-323) == "-1e-323"); -assert(dtoa(1e-324) == "0.0"); +assert(dtoa(1e-324) == "0.0"); assert(dtoa(4294967272) == "4294967272.0"); assert(dtoa(1.23121456734562345678e-8) == "1.2312145673456234e-8"); // assert(dtoa(-0.0000010471975511965976) == "-0.0000010471975511965976"); // FIXME -assert(dtoa(555555555.55555555) == "555555555.5555556"); -assert(dtoa(0.9999999999999999) == "0.9999999999999999"); +assert(dtoa(555555555.55555555) == "555555555.5555556"); +assert(dtoa(0.9999999999999999) == "0.9999999999999999"); assert(dtoa(0.99999999999999995) == "1.0"); -assert(dtoa(1234e-2) == "12.34"); +assert(dtoa(1234e-2) == "12.34"); // assert(dtoa(0.1 + 0.2) == "0.30000000000000004"); // FIXME -assert(dtoa(1.0 / 3.0) == "0.3333333333333333"); -assert(dtoa(1.234e+20) == "123400000000000000000.0"); -assert(dtoa(1.234e+21) == "1.234e+21"); -assert(dtoa(2.71828) == "2.71828"); -assert(dtoa(2.71828e-2) == "0.0271828"); -assert(dtoa(2.71828e+2) == "271.828"); -assert(dtoa(1.1e+128) == "1.1e+128"); -assert(dtoa(1.1e-64) == "1.1e-64"); +assert(dtoa(1.0 / 3.0) == "0.3333333333333333"); +assert(dtoa(1.234e+20) == "123400000000000000000.0"); +assert(dtoa(1.234e+21) == "1.234e+21"); +assert(dtoa(2.71828) == "2.71828"); +assert(dtoa(2.71828e-2) == "0.0271828"); +assert(dtoa(2.71828e+2) == "271.828"); +assert(dtoa(1.1e+128) == "1.1e+128"); +assert(dtoa(1.1e-64) == "1.1e-64"); assert(dtoa(0.000035689) == "0.000035689"); // assert(dtoa(f32.MAX_VALUE) == "3.4028234663852886e+38"); // FIXME diff --git a/tests/compiler/std/string.untouched.wat b/tests/compiler/std/string.untouched.wat index f4860de8..be9c7aed 100644 --- a/tests/compiler/std/string.untouched.wat +++ b/tests/compiler/std/string.untouched.wat @@ -21,18 +21,18 @@ (data (i32.const 8) "\10\00\00\00h\00i\00,\00 \00I\00\'\00m\00 \00a\00 \00s\00t\00r\00i\00n\00g\00") (data (i32.const 48) "\0d\00\00\00s\00t\00d\00/\00s\00t\00r\00i\00n\00g\00.\00t\00s\00") (data (i32.const 80) "\0e\00\00\00~\00l\00i\00b\00/\00s\00t\00r\00i\00n\00g\00.\00t\00s\00") - (data (i32.const 112) "\17\00\00\00~\00l\00i\00b\00/\00i\00n\00t\00e\00r\00n\00a\00l\00/\00s\00t\00r\00i\00n\00g\00.\00t\00s\00") - (data (i32.const 168) "\01\00\00\00\00\00") - (data (i32.const 176) "\01\00\00\006\00") - (data (i32.const 184) "\02\00\00\004\d8\06\df") - (data (i32.const 192) "\02\00\00\00h\00i\00") - (data (i32.const 200) "\04\00\00\00n\00u\00l\00l\00") - (data (i32.const 216) "\06\00\00\00s\00t\00r\00i\00n\00g\00") - (data (i32.const 232) "\03\00\00\00I\00\'\00m\00") - (data (i32.const 248) "\01\00\00\00 \00") - (data (i32.const 256) "\00\00\00\00") - (data (i32.const 264) "\03\00\00\00 \00 \00 \00") - (data (i32.const 280) "\01\00\00\00a\00") + (data (i32.const 112) "\00\00\00\00") + (data (i32.const 120) "\01\00\00\00\00\00") + (data (i32.const 128) "\01\00\00\00a\00") + (data (i32.const 136) "\17\00\00\00~\00l\00i\00b\00/\00i\00n\00t\00e\00r\00n\00a\00l\00/\00s\00t\00r\00i\00n\00g\00.\00t\00s\00") + (data (i32.const 192) "\01\00\00\006\00") + (data (i32.const 200) "\02\00\00\004\d8\06\df") + (data (i32.const 208) "\02\00\00\00h\00i\00") + (data (i32.const 216) "\04\00\00\00n\00u\00l\00l\00") + (data (i32.const 232) "\06\00\00\00s\00t\00r\00i\00n\00g\00") + (data (i32.const 248) "\03\00\00\00I\00\'\00m\00") + (data (i32.const 264) "\01\00\00\00 \00") + (data (i32.const 272) "\03\00\00\00 \00 \00 \00") (data (i32.const 288) "\03\00\00\00a\00b\00c\00") (data (i32.const 304) "\05\00\00\00 \00 \00a\00b\00c\00") (data (i32.const 320) "\03\00\00\001\002\003\00") @@ -244,7 +244,21 @@ i32.add i32.load16_u offset=4 ) - (func $~lib/allocator/arena/__memory_allocate (; 3 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/string/String.__not (; 3 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + local.get $0 + i32.const 0 + i32.eq + local.tee $1 + if (result i32) + local.get $1 + else + local.get $0 + i32.load + i32.eqz + end + ) + (func $~lib/allocator/arena/__memory_allocate (; 4 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -323,7 +337,7 @@ global.set $~lib/allocator/arena/offset local.get $1 ) - (func $~lib/internal/string/allocateUnsafe (; 4 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/internal/string/allocateUnsafe (; 5 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) local.get $0 @@ -340,7 +354,7 @@ i32.eqz if i32.const 0 - i32.const 112 + i32.const 136 i32.const 14 i32.const 2 call $~lib/env/abort @@ -363,7 +377,7 @@ i32.store local.get $2 ) - (func $~lib/string/String.fromCharCode (; 5 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/string/String.fromCharCode (; 6 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) i32.const 1 call $~lib/internal/string/allocateUnsafe @@ -373,7 +387,7 @@ i32.store16 offset=4 local.get $1 ) - (func $~lib/internal/string/compareUnsafe (; 6 ;) (type $FUNCSIG$iiiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (result i32) + (func $~lib/internal/string/compareUnsafe (; 7 ;) (type $FUNCSIG$iiiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (result i32) (local $5 i32) (local $6 i32) (local $7 i32) @@ -426,7 +440,7 @@ end local.get $5 ) - (func $~lib/string/String.__eq (; 7 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/string/String.__eq (; 8 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) local.get $0 @@ -470,7 +484,7 @@ call $~lib/internal/string/compareUnsafe i32.eqz ) - (func $~lib/string/String.fromCodePoint (; 8 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/string/String.fromCodePoint (; 9 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -529,7 +543,7 @@ end local.get $2 ) - (func $~lib/string/String#startsWith (; 9 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/string/String#startsWith (; 10 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -543,7 +557,7 @@ if i32.const 0 i32.const 80 - i32.const 224 + i32.const 229 i32.const 4 call $~lib/env/abort unreachable @@ -552,7 +566,7 @@ i32.const 0 i32.eq if - i32.const 200 + i32.const 216 local.set $1 end local.get $2 @@ -596,7 +610,7 @@ call $~lib/internal/string/compareUnsafe i32.eqz ) - (func $~lib/string/String#endsWith (; 10 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/string/String#endsWith (; 11 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -660,7 +674,7 @@ call $~lib/internal/string/compareUnsafe i32.eqz ) - (func $~lib/string/String#endsWith|trampoline (; 11 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/string/String#endsWith|trampoline (; 12 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) block $1of1 block $0of1 block $outOfRange @@ -679,7 +693,7 @@ local.get $2 call $~lib/string/String#endsWith ) - (func $~lib/string/String#indexOf (; 12 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/string/String#indexOf (; 13 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -692,7 +706,7 @@ if i32.const 0 i32.const 80 - i32.const 193 + i32.const 198 i32.const 4 call $~lib/env/abort unreachable @@ -701,7 +715,7 @@ i32.const 0 i32.eq if - i32.const 200 + i32.const 216 local.set $1 end local.get $1 @@ -773,7 +787,7 @@ end i32.const -1 ) - (func $~lib/internal/memory/memcpy (; 13 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/internal/memory/memcpy (; 14 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -1974,7 +1988,7 @@ i32.store8 end ) - (func $~lib/internal/memory/memmove (; 14 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/internal/memory/memmove (; 15 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) local.get $0 local.get $1 @@ -2201,7 +2215,7 @@ end end ) - (func $~lib/internal/string/repeatUnsafe (; 15 ;) (type $FUNCSIG$viiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) + (func $~lib/internal/string/repeatUnsafe (; 16 ;) (type $FUNCSIG$viiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (local $4 i32) (local $5 i32) (local $6 i32) @@ -2481,7 +2495,7 @@ unreachable end ) - (func $~lib/internal/string/copyUnsafe (; 16 ;) (type $FUNCSIG$viiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) + (func $~lib/internal/string/copyUnsafe (; 17 ;) (type $FUNCSIG$viiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (local $5 i32) (local $6 i32) (local $7 i32) @@ -2510,7 +2524,7 @@ local.get $7 call $~lib/internal/memory/memmove ) - (func $~lib/string/String#padStart (; 17 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/string/String#padStart (; 18 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -2525,7 +2539,7 @@ if i32.const 0 i32.const 80 - i32.const 340 + i32.const 345 i32.const 4 call $~lib/env/abort unreachable @@ -2608,7 +2622,7 @@ end local.get $7 ) - (func $~lib/string/String#padStart|trampoline (; 18 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/string/String#padStart|trampoline (; 19 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) block $1of1 block $0of1 block $outOfRange @@ -2619,7 +2633,7 @@ end unreachable end - i32.const 248 + i32.const 264 local.set $2 end local.get $0 @@ -2627,7 +2641,7 @@ local.get $2 call $~lib/string/String#padStart ) - (func $~lib/string/String#padEnd (; 19 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/string/String#padEnd (; 20 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -2642,7 +2656,7 @@ if i32.const 0 i32.const 80 - i32.const 360 + i32.const 365 i32.const 4 call $~lib/env/abort unreachable @@ -2727,7 +2741,7 @@ end local.get $7 ) - (func $~lib/string/String#padEnd|trampoline (; 20 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/string/String#padEnd|trampoline (; 21 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) block $1of1 block $0of1 block $outOfRange @@ -2738,7 +2752,7 @@ end unreachable end - i32.const 248 + i32.const 264 local.set $2 end local.get $0 @@ -2746,7 +2760,7 @@ local.get $2 call $~lib/string/String#padEnd ) - (func $~lib/string/String#lastIndexOf (; 21 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/string/String#lastIndexOf (; 22 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -2759,7 +2773,7 @@ if i32.const 0 i32.const 80 - i32.const 209 + i32.const 214 i32.const 4 call $~lib/env/abort unreachable @@ -2768,7 +2782,7 @@ i32.const 0 i32.eq if - i32.const 200 + i32.const 216 local.set $1 end local.get $0 @@ -2838,7 +2852,7 @@ end i32.const -1 ) - (func $~lib/string/String#lastIndexOf|trampoline (; 22 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/string/String#lastIndexOf|trampoline (; 23 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) block $1of1 block $0of1 block $outOfRange @@ -2857,7 +2871,7 @@ local.get $2 call $~lib/string/String#lastIndexOf ) - (func $~lib/internal/string/parse (; 23 ;) (type $FUNCSIG$dii) (param $0 i32) (param $1 i32) (result f64) + (func $~lib/internal/string/parse (; 24 ;) (type $FUNCSIG$dii) (param $0 i32) (param $1 i32) (result f64) (local $2 i32) (local $3 i32) (local $4 i32) @@ -3158,12 +3172,12 @@ local.get $7 f64.mul ) - (func $~lib/string/parseInt (; 24 ;) (type $FUNCSIG$dii) (param $0 i32) (param $1 i32) (result f64) + (func $~lib/string/parseInt (; 25 ;) (type $FUNCSIG$dii) (param $0 i32) (param $1 i32) (result f64) local.get $0 local.get $1 call $~lib/internal/string/parse ) - (func $~lib/string/parseFloat (; 25 ;) (type $FUNCSIG$di) (param $0 i32) (result f64) + (func $~lib/string/parseFloat (; 26 ;) (type $FUNCSIG$di) (param $0 i32) (result f64) (local $1 i32) (local $2 i32) (local $3 i32) @@ -3292,7 +3306,7 @@ if i32.const 0 i32.const 80 - i32.const 625 + i32.const 630 i32.const 10 call $~lib/env/abort unreachable @@ -3360,7 +3374,7 @@ local.get $5 f64.mul ) - (func $~lib/string/String#concat (; 26 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/string/String#concat (; 27 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -3381,7 +3395,7 @@ i32.const 0 i32.eq if - i32.const 200 + i32.const 216 local.set $1 end local.get $0 @@ -3398,7 +3412,7 @@ i32.const 0 i32.eq if - i32.const 256 + i32.const 112 return end local.get $4 @@ -3418,24 +3432,24 @@ call $~lib/internal/string/copyUnsafe local.get $5 ) - (func $~lib/string/String.__concat (; 27 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/string/String.__concat (; 28 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $0 i32.eqz if - i32.const 200 + i32.const 216 local.set $0 end local.get $0 local.get $1 call $~lib/string/String#concat ) - (func $~lib/string/String.__ne (; 28 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/string/String.__ne (; 29 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $0 local.get $1 call $~lib/string/String.__eq i32.eqz ) - (func $~lib/string/String.__gt (; 29 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/string/String.__gt (; 30 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -3500,7 +3514,7 @@ i32.const 0 i32.gt_s ) - (func $~lib/string/String.__lt (; 30 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/string/String.__lt (; 31 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -3565,19 +3579,19 @@ i32.const 0 i32.lt_s ) - (func $~lib/string/String.__gte (; 31 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/string/String.__gte (; 32 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $0 local.get $1 call $~lib/string/String.__lt i32.eqz ) - (func $~lib/string/String.__lte (; 32 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/string/String.__lte (; 33 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $0 local.get $1 call $~lib/string/String.__gt i32.eqz ) - (func $~lib/string/String#repeat (; 33 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/string/String#repeat (; 34 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -3588,7 +3602,7 @@ if i32.const 0 i32.const 80 - i32.const 380 + i32.const 385 i32.const 4 call $~lib/env/abort unreachable @@ -3614,7 +3628,7 @@ if i32.const 0 i32.const 80 - i32.const 385 + i32.const 390 i32.const 6 call $~lib/env/abort unreachable @@ -3630,7 +3644,7 @@ i32.eqz end if - i32.const 256 + i32.const 112 return end local.get $1 @@ -3652,7 +3666,7 @@ call $~lib/internal/string/repeatUnsafe local.get $4 ) - (func $~lib/string/String#slice (; 34 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/string/String#slice (; 35 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -3720,7 +3734,7 @@ i32.const 0 i32.le_s if - i32.const 256 + i32.const 112 return end local.get $3 @@ -3734,7 +3748,7 @@ call $~lib/internal/string/copyUnsafe local.get $8 ) - (func $~lib/string/String#slice|trampoline (; 35 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/string/String#slice|trampoline (; 36 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) block $1of1 block $0of1 block $outOfRange @@ -3753,7 +3767,7 @@ local.get $2 call $~lib/string/String#slice ) - (func $~lib/internal/arraybuffer/computeSize (; 36 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/internal/arraybuffer/computeSize (; 37 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) i32.const 1 i32.const 32 local.get $0 @@ -3765,7 +3779,7 @@ i32.sub i32.shl ) - (func $~lib/internal/arraybuffer/allocateUnsafe (; 37 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/internal/arraybuffer/allocateUnsafe (; 38 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) local.get $0 @@ -3794,12 +3808,12 @@ i32.store local.get $1 ) - (func $~lib/memory/memory.allocate (; 38 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/memory/memory.allocate (; 39 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 call $~lib/allocator/arena/__memory_allocate return ) - (func $~lib/internal/memory/memset (; 39 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/internal/memory/memset (; 40 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i64) @@ -4053,7 +4067,7 @@ end end ) - (func $~lib/array/Array<~lib/string/String>#constructor (; 40 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array<~lib/string/String>#constructor (; 41 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -4114,7 +4128,7 @@ end local.get $0 ) - (func $~lib/array/Array<~lib/string/String>#__unchecked_set (; 41 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/array/Array<~lib/string/String>#__unchecked_set (; 42 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -4138,7 +4152,7 @@ local.get $5 i32.store offset=8 ) - (func $~lib/array/Array<~lib/string/String>#__unchecked_get (; 42 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array<~lib/string/String>#__unchecked_get (; 43 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -4158,10 +4172,10 @@ i32.add i32.load offset=8 ) - (func $~lib/allocator/arena/__memory_free (; 43 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/allocator/arena/__memory_free (; 44 ;) (type $FUNCSIG$vi) (param $0 i32) nop ) - (func $~lib/internal/arraybuffer/reallocateUnsafe (; 44 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/internal/arraybuffer/reallocateUnsafe (; 45 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -4268,7 +4282,7 @@ end local.get $0 ) - (func $~lib/array/Array<~lib/string/String>#push (; 45 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array<~lib/string/String>#push (; 46 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -4341,7 +4355,7 @@ end local.get $5 ) - (func $~lib/string/String#split (; 46 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/string/String#split (; 47 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -4364,7 +4378,7 @@ if i32.const 0 i32.const 80 - i32.const 408 + i32.const 413 i32.const 4 call $~lib/env/abort unreachable @@ -4499,7 +4513,7 @@ local.tee $3 i32.const 0 local.tee $7 - i32.const 256 + i32.const 112 call $~lib/array/Array<~lib/string/String>#__unchecked_set local.get $3 local.get $7 @@ -4554,7 +4568,7 @@ drop else local.get $13 - i32.const 256 + i32.const 112 call $~lib/array/Array<~lib/string/String>#push drop end @@ -4622,13 +4636,13 @@ drop else local.get $13 - i32.const 256 + i32.const 112 call $~lib/array/Array<~lib/string/String>#push drop end local.get $13 ) - (func $~lib/string/String#split|trampoline (; 47 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/string/String#split|trampoline (; 48 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) block $2of2 block $1of2 block $0of2 @@ -4649,7 +4663,7 @@ local.get $2 call $~lib/string/String#split ) - (func $~lib/array/Array<~lib/string/String>#__get (; 48 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array<~lib/string/String>#__get (; 49 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -4682,7 +4696,7 @@ unreachable end ) - (func $~lib/internal/number/decimalCount32 (; 49 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/internal/number/decimalCount32 (; 50 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) local.get $0 i32.const 100000 @@ -4751,7 +4765,7 @@ unreachable unreachable ) - (func $~lib/internal/number/utoa32_lut (; 50 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/internal/number/utoa32_lut (; 51 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -4937,7 +4951,7 @@ i32.store16 offset=4 end ) - (func $~lib/internal/number/itoa32 (; 51 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/internal/number/itoa32 (; 52 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -4989,7 +5003,7 @@ end local.get $3 ) - (func $~lib/internal/number/utoa32 (; 52 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/internal/number/utoa32 (; 53 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -5021,7 +5035,7 @@ end local.get $2 ) - (func $~lib/internal/number/decimalCount64 (; 53 ;) (type $FUNCSIG$ij) (param $0 i64) (result i32) + (func $~lib/internal/number/decimalCount64 (; 54 ;) (type $FUNCSIG$ij) (param $0 i64) (result i32) (local $1 i32) local.get $0 i64.const 1000000000000000 @@ -5090,7 +5104,7 @@ unreachable unreachable ) - (func $~lib/internal/number/utoa64_lut (; 54 ;) (type $FUNCSIG$viji) (param $0 i32) (param $1 i64) (param $2 i32) + (func $~lib/internal/number/utoa64_lut (; 55 ;) (type $FUNCSIG$viji) (param $0 i32) (param $1 i64) (param $2 i32) (local $3 i32) (local $4 i64) (local $5 i32) @@ -5261,7 +5275,7 @@ local.get $2 call $~lib/internal/number/utoa32_lut ) - (func $~lib/internal/number/utoa64 (; 55 ;) (type $FUNCSIG$ij) (param $0 i64) (result i32) + (func $~lib/internal/number/utoa64 (; 56 ;) (type $FUNCSIG$ij) (param $0 i64) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -5323,7 +5337,7 @@ end local.get $1 ) - (func $~lib/internal/number/itoa64 (; 56 ;) (type $FUNCSIG$ij) (param $0 i64) (result i32) + (func $~lib/internal/number/itoa64 (; 57 ;) (type $FUNCSIG$ij) (param $0 i64) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -5407,19 +5421,19 @@ end local.get $2 ) - (func $~lib/builtins/isFinite (; 57 ;) (type $FUNCSIG$id) (param $0 f64) (result i32) + (func $~lib/builtins/isFinite (; 58 ;) (type $FUNCSIG$id) (param $0 f64) (result i32) local.get $0 local.get $0 f64.sub f64.const 0 f64.eq ) - (func $~lib/builtins/isNaN (; 58 ;) (type $FUNCSIG$id) (param $0 f64) (result i32) + (func $~lib/builtins/isNaN (; 59 ;) (type $FUNCSIG$id) (param $0 f64) (result i32) local.get $0 local.get $0 f64.ne ) - (func $~lib/internal/number/genDigits (; 59 ;) (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/internal/number/genDigits (; 60 ;) (type $FUNCSIG$iijijiji) (param $0 i32) (param $1 i64) (param $2 i32) (param $3 i64) (param $4 i32) (param $5 i64) (param $6 i32) (result i32) (local $7 i32) (local $8 i64) (local $9 i64) @@ -6010,7 +6024,7 @@ end local.get $15 ) - (func $~lib/internal/number/prettify (; 60 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/internal/number/prettify (; 61 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -6379,7 +6393,7 @@ unreachable unreachable ) - (func $~lib/internal/number/dtoa_core (; 61 ;) (type $FUNCSIG$iid) (param $0 i32) (param $1 f64) (result i32) + (func $~lib/internal/number/dtoa_core (; 62 ;) (type $FUNCSIG$iid) (param $0 i32) (param $1 f64) (result i32) (local $2 i32) (local $3 f64) (local $4 i32) @@ -6852,7 +6866,7 @@ local.get $2 i32.add ) - (func $~lib/string/String#substring (; 62 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/string/String#substring (; 63 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -6868,7 +6882,7 @@ if i32.const 0 i32.const 80 - i32.const 249 + i32.const 254 i32.const 4 call $~lib/env/abort unreachable @@ -6933,7 +6947,7 @@ local.get $3 i32.eqz if - i32.const 256 + i32.const 112 return end local.get $8 @@ -6962,7 +6976,7 @@ call $~lib/internal/string/copyUnsafe local.get $10 ) - (func $~lib/internal/number/dtoa (; 63 ;) (type $FUNCSIG$id) (param $0 f64) (result i32) + (func $~lib/internal/number/dtoa (; 64 ;) (type $FUNCSIG$id) (param $0 f64) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -7012,7 +7026,7 @@ i32.eqz if i32.const 0 - i32.const 112 + i32.const 136 i32.const 28 i32.const 4 call $~lib/env/abort @@ -7028,7 +7042,7 @@ end local.get $3 ) - (func $start:std/string (; 64 ;) (type $FUNCSIG$v) + (func $start:std/string (; 65 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -7072,10 +7086,11 @@ call $~lib/env/abort unreachable end + i32.const 112 + call $~lib/string/String.__not + i32.eqz i32.const 0 - call $~lib/string/String.fromCharCode - i32.const 168 - call $~lib/string/String.__eq + i32.eq i32.eqz if i32.const 0 @@ -7085,10 +7100,11 @@ call $~lib/env/abort unreachable end - i32.const 54 - call $~lib/string/String.fromCharCode - i32.const 176 - call $~lib/string/String.__eq + i32.const 120 + call $~lib/string/String.__not + i32.eqz + i32.const 1 + i32.eq i32.eqz if i32.const 0 @@ -7098,12 +7114,11 @@ call $~lib/env/abort unreachable end - i32.const 65536 - i32.const 54 - i32.add - call $~lib/string/String.fromCharCode - i32.const 176 - call $~lib/string/String.__eq + i32.const 128 + call $~lib/string/String.__not + i32.eqz + i32.const 1 + i32.eq i32.eqz if i32.const 0 @@ -7114,8 +7129,8 @@ unreachable end i32.const 0 - call $~lib/string/String.fromCodePoint - i32.const 168 + call $~lib/string/String.fromCharCode + i32.const 120 call $~lib/string/String.__eq i32.eqz if @@ -7127,8 +7142,8 @@ unreachable end i32.const 54 - call $~lib/string/String.fromCodePoint - i32.const 176 + call $~lib/string/String.fromCharCode + i32.const 192 call $~lib/string/String.__eq i32.eqz if @@ -7139,21 +7154,25 @@ call $~lib/env/abort unreachable end - i32.const 119558 - call $~lib/string/String.fromCodePoint + i32.const 65536 + i32.const 54 + i32.add + call $~lib/string/String.fromCharCode + i32.const 192 + call $~lib/string/String.__eq i32.eqz if - i32.const 184 + i32.const 0 i32.const 48 i32.const 27 i32.const 0 call $~lib/env/abort unreachable end - global.get $std/string/str - i32.const 192 i32.const 0 - call $~lib/string/String#startsWith + call $~lib/string/String.fromCodePoint + i32.const 120 + call $~lib/string/String.__eq i32.eqz if i32.const 0 @@ -7163,14 +7182,10 @@ call $~lib/env/abort unreachable end - block (result i32) - i32.const 1 - global.set $~lib/argc - global.get $std/string/str - i32.const 216 - i32.const 0 - call $~lib/string/String#endsWith|trampoline - end + i32.const 54 + call $~lib/string/String.fromCodePoint + i32.const 192 + call $~lib/string/String.__eq i32.eqz if i32.const 0 @@ -7180,10 +7195,51 @@ call $~lib/env/abort unreachable end + i32.const 119558 + call $~lib/string/String.fromCodePoint + i32.eqz + if + i32.const 200 + i32.const 48 + i32.const 31 + i32.const 0 + call $~lib/env/abort + unreachable + end + global.get $std/string/str + i32.const 208 + i32.const 0 + call $~lib/string/String#startsWith + i32.eqz + if + i32.const 0 + i32.const 48 + i32.const 33 + i32.const 0 + call $~lib/env/abort + unreachable + end + block (result i32) + i32.const 1 + global.set $~lib/argc + global.get $std/string/str + i32.const 232 + i32.const 0 + call $~lib/string/String#endsWith|trampoline + end + i32.eqz + if + i32.const 0 + i32.const 48 + i32.const 34 + i32.const 0 + call $~lib/env/abort + unreachable + end block $~lib/string/String#includes|inlined.0 (result i32) global.get $std/string/str local.set $0 - i32.const 232 + i32.const 248 local.set $1 i32.const 0 local.set $2 @@ -7200,7 +7256,7 @@ if i32.const 0 i32.const 48 - i32.const 31 + i32.const 35 i32.const 0 call $~lib/env/abort unreachable @@ -7219,7 +7275,7 @@ if i32.const 0 i32.const 48 - i32.const 33 + i32.const 37 i32.const 0 call $~lib/env/abort unreachable @@ -7238,7 +7294,7 @@ if i32.const 0 i32.const 48 - i32.const 34 + i32.const 38 i32.const 0 call $~lib/env/abort unreachable @@ -7246,48 +7302,48 @@ block (result i32) i32.const 1 global.set $~lib/argc - i32.const 256 + i32.const 112 i32.const 3 i32.const 0 call $~lib/string/String#padStart|trampoline end - i32.const 264 + i32.const 272 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 48 - i32.const 35 + i32.const 39 i32.const 0 call $~lib/env/abort unreachable end - i32.const 256 + i32.const 112 i32.const 10 - i32.const 256 + i32.const 112 call $~lib/string/String#padStart - i32.const 256 + i32.const 112 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 48 - i32.const 36 + i32.const 40 i32.const 0 call $~lib/env/abort unreachable end - i32.const 280 + i32.const 128 i32.const 100 - i32.const 256 + i32.const 112 call $~lib/string/String#padStart - i32.const 280 + i32.const 128 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 48 - i32.const 37 + i32.const 41 i32.const 0 call $~lib/env/abort unreachable @@ -7306,7 +7362,7 @@ if i32.const 0 i32.const 48 - i32.const 38 + i32.const 42 i32.const 0 call $~lib/env/abort unreachable @@ -7321,7 +7377,7 @@ if i32.const 0 i32.const 48 - i32.const 39 + i32.const 43 i32.const 0 call $~lib/env/abort unreachable @@ -7336,7 +7392,7 @@ if i32.const 0 i32.const 48 - i32.const 40 + i32.const 44 i32.const 0 call $~lib/env/abort unreachable @@ -7355,7 +7411,7 @@ if i32.const 0 i32.const 48 - i32.const 42 + i32.const 46 i32.const 0 call $~lib/env/abort unreachable @@ -7374,7 +7430,7 @@ if i32.const 0 i32.const 48 - i32.const 43 + i32.const 47 i32.const 0 call $~lib/env/abort unreachable @@ -7382,48 +7438,48 @@ block (result i32) i32.const 1 global.set $~lib/argc - i32.const 256 + i32.const 112 i32.const 3 i32.const 0 call $~lib/string/String#padEnd|trampoline end - i32.const 264 + i32.const 272 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 48 - i32.const 44 + i32.const 48 i32.const 0 call $~lib/env/abort unreachable end - i32.const 256 + i32.const 112 i32.const 10 - i32.const 256 + i32.const 112 call $~lib/string/String#padEnd - i32.const 256 + i32.const 112 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 48 - i32.const 45 + i32.const 49 i32.const 0 call $~lib/env/abort unreachable end - i32.const 280 + i32.const 128 i32.const 100 - i32.const 256 + i32.const 112 call $~lib/string/String#padEnd - i32.const 280 + i32.const 128 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 48 - i32.const 46 + i32.const 50 i32.const 0 call $~lib/env/abort unreachable @@ -7442,7 +7498,7 @@ if i32.const 0 i32.const 48 - i32.const 47 + i32.const 51 i32.const 0 call $~lib/env/abort unreachable @@ -7457,7 +7513,7 @@ if i32.const 0 i32.const 48 - i32.const 48 + i32.const 52 i32.const 0 call $~lib/env/abort unreachable @@ -7469,51 +7525,6 @@ i32.const 408 call $~lib/string/String.__eq i32.eqz - if - i32.const 0 - i32.const 48 - i32.const 49 - i32.const 0 - call $~lib/env/abort - unreachable - end - i32.const 256 - i32.const 256 - i32.const 0 - call $~lib/string/String#indexOf - i32.const 0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 48 - i32.const 51 - i32.const 0 - call $~lib/env/abort - unreachable - end - i32.const 256 - i32.const 192 - i32.const 0 - call $~lib/string/String#indexOf - i32.const -1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 48 - i32.const 52 - i32.const 0 - call $~lib/env/abort - unreachable - end - i32.const 280 - i32.const 280 - i32.const 0 - call $~lib/string/String#indexOf - i32.const 0 - i32.eq - i32.eqz if i32.const 0 i32.const 48 @@ -7522,23 +7533,8 @@ call $~lib/env/abort unreachable end - global.get $std/string/str - global.get $std/string/str - i32.const 0 - call $~lib/string/String#indexOf - i32.const 0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 48 - i32.const 54 - i32.const 0 - call $~lib/env/abort - unreachable - end - global.get $std/string/str - i32.const 256 + i32.const 112 + i32.const 112 i32.const 0 call $~lib/string/String#indexOf i32.const 0 @@ -7552,6 +7548,66 @@ call $~lib/env/abort unreachable end + i32.const 112 + i32.const 208 + i32.const 0 + call $~lib/string/String#indexOf + i32.const -1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 48 + i32.const 56 + i32.const 0 + call $~lib/env/abort + unreachable + end + i32.const 128 + i32.const 128 + i32.const 0 + call $~lib/string/String#indexOf + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 48 + i32.const 57 + i32.const 0 + call $~lib/env/abort + unreachable + end + global.get $std/string/str + global.get $std/string/str + i32.const 0 + call $~lib/string/String#indexOf + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 48 + i32.const 58 + i32.const 0 + call $~lib/env/abort + unreachable + end + global.get $std/string/str + i32.const 112 + i32.const 0 + call $~lib/string/String#indexOf + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 48 + i32.const 59 + i32.const 0 + call $~lib/env/abort + unreachable + end global.get $std/string/str i32.const 432 i32.const 0 @@ -7562,7 +7618,7 @@ if i32.const 0 i32.const 48 - i32.const 56 + i32.const 60 i32.const 0 call $~lib/env/abort unreachable @@ -7577,7 +7633,7 @@ if i32.const 0 i32.const 48 - i32.const 57 + i32.const 61 i32.const 0 call $~lib/env/abort unreachable @@ -7592,7 +7648,7 @@ if i32.const 0 i32.const 48 - i32.const 58 + i32.const 62 i32.const 0 call $~lib/env/abort unreachable @@ -7607,7 +7663,7 @@ if i32.const 0 i32.const 48 - i32.const 59 + i32.const 63 i32.const 0 call $~lib/env/abort unreachable @@ -7622,7 +7678,7 @@ if i32.const 0 i32.const 48 - i32.const 60 + i32.const 64 i32.const 0 call $~lib/env/abort unreachable @@ -7630,8 +7686,8 @@ block (result i32) i32.const 1 global.set $~lib/argc - i32.const 256 - i32.const 256 + i32.const 112 + i32.const 112 i32.const 0 call $~lib/string/String#lastIndexOf|trampoline end @@ -7641,7 +7697,7 @@ if i32.const 0 i32.const 48 - i32.const 62 + i32.const 66 i32.const 0 call $~lib/env/abort unreachable @@ -7649,8 +7705,8 @@ block (result i32) i32.const 1 global.set $~lib/argc - i32.const 256 - i32.const 192 + i32.const 112 + i32.const 208 i32.const 0 call $~lib/string/String#lastIndexOf|trampoline end @@ -7660,7 +7716,7 @@ if i32.const 0 i32.const 48 - i32.const 63 + i32.const 67 i32.const 0 call $~lib/env/abort unreachable @@ -7669,7 +7725,7 @@ i32.const 1 global.set $~lib/argc global.get $std/string/str - i32.const 256 + i32.const 112 i32.const 0 call $~lib/string/String#lastIndexOf|trampoline end @@ -7680,7 +7736,7 @@ if i32.const 0 i32.const 48 - i32.const 64 + i32.const 68 i32.const 0 call $~lib/env/abort unreachable @@ -7699,7 +7755,7 @@ if i32.const 0 i32.const 48 - i32.const 65 + i32.const 69 i32.const 0 call $~lib/env/abort unreachable @@ -7718,7 +7774,7 @@ if i32.const 0 i32.const 48 - i32.const 66 + i32.const 70 i32.const 0 call $~lib/env/abort unreachable @@ -7737,7 +7793,7 @@ if i32.const 0 i32.const 48 - i32.const 67 + i32.const 71 i32.const 0 call $~lib/env/abort unreachable @@ -7752,7 +7808,7 @@ if i32.const 0 i32.const 48 - i32.const 68 + i32.const 72 i32.const 0 call $~lib/env/abort unreachable @@ -7767,7 +7823,7 @@ if i32.const 0 i32.const 48 - i32.const 69 + i32.const 73 i32.const 0 call $~lib/env/abort unreachable @@ -7782,7 +7838,7 @@ if i32.const 0 i32.const 48 - i32.const 70 + i32.const 74 i32.const 0 call $~lib/env/abort unreachable @@ -7797,13 +7853,13 @@ if i32.const 0 i32.const 48 - i32.const 71 + i32.const 75 i32.const 0 call $~lib/env/abort unreachable end global.get $std/string/str - i32.const 192 + i32.const 208 i32.const 0 call $~lib/string/String#lastIndexOf i32.const 0 @@ -7812,7 +7868,7 @@ if i32.const 0 i32.const 48 - i32.const 72 + i32.const 76 i32.const 0 call $~lib/env/abort unreachable @@ -7826,7 +7882,7 @@ if i32.const 0 i32.const 48 - i32.const 78 + i32.const 82 i32.const 0 call $~lib/env/abort unreachable @@ -7840,7 +7896,7 @@ if i32.const 0 i32.const 48 - i32.const 79 + i32.const 83 i32.const 0 call $~lib/env/abort unreachable @@ -7854,7 +7910,7 @@ if i32.const 0 i32.const 48 - i32.const 80 + i32.const 84 i32.const 0 call $~lib/env/abort unreachable @@ -7868,7 +7924,7 @@ if i32.const 0 i32.const 48 - i32.const 81 + i32.const 85 i32.const 0 call $~lib/env/abort unreachable @@ -7882,7 +7938,7 @@ if i32.const 0 i32.const 48 - i32.const 82 + i32.const 86 i32.const 0 call $~lib/env/abort unreachable @@ -7896,7 +7952,7 @@ if i32.const 0 i32.const 48 - i32.const 83 + i32.const 87 i32.const 0 call $~lib/env/abort unreachable @@ -7910,7 +7966,7 @@ if i32.const 0 i32.const 48 - i32.const 84 + i32.const 88 i32.const 0 call $~lib/env/abort unreachable @@ -7924,7 +7980,7 @@ if i32.const 0 i32.const 48 - i32.const 85 + i32.const 89 i32.const 0 call $~lib/env/abort unreachable @@ -7937,7 +7993,7 @@ if i32.const 0 i32.const 48 - i32.const 87 + i32.const 91 i32.const 0 call $~lib/env/abort unreachable @@ -7950,7 +8006,7 @@ if i32.const 0 i32.const 48 - i32.const 88 + i32.const 92 i32.const 0 call $~lib/env/abort unreachable @@ -7963,7 +8019,7 @@ if i32.const 0 i32.const 48 - i32.const 89 + i32.const 93 i32.const 0 call $~lib/env/abort unreachable @@ -7976,7 +8032,7 @@ if i32.const 0 i32.const 48 - i32.const 90 + i32.const 94 i32.const 0 call $~lib/env/abort unreachable @@ -7989,12 +8045,12 @@ if i32.const 0 i32.const 48 - i32.const 91 + i32.const 95 i32.const 0 call $~lib/env/abort unreachable end - i32.const 280 + i32.const 128 i32.const 648 call $~lib/string/String.__concat global.set $std/string/c @@ -8002,54 +8058,6 @@ i32.const 656 call $~lib/string/String.__eq i32.eqz - if - i32.const 0 - i32.const 48 - i32.const 94 - i32.const 0 - call $~lib/env/abort - unreachable - end - global.get $std/string/c - i32.const 280 - call $~lib/string/String.__ne - i32.eqz - if - i32.const 0 - i32.const 48 - i32.const 95 - i32.const 0 - call $~lib/env/abort - unreachable - end - i32.const 256 - i32.const 256 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 48 - i32.const 96 - i32.const 0 - call $~lib/env/abort - unreachable - end - i32.const 256 - global.get $std/string/nullStr - call $~lib/string/String.__ne - i32.eqz - if - i32.const 0 - i32.const 48 - i32.const 97 - i32.const 0 - call $~lib/env/abort - unreachable - end - global.get $std/string/nullStr - i32.const 256 - call $~lib/string/String.__ne - i32.eqz if i32.const 0 i32.const 48 @@ -8058,8 +8066,8 @@ call $~lib/env/abort unreachable end - i32.const 280 - i32.const 648 + global.get $std/string/c + i32.const 128 call $~lib/string/String.__ne i32.eqz if @@ -8070,8 +8078,8 @@ call $~lib/env/abort unreachable end - i32.const 280 - i32.const 280 + i32.const 112 + i32.const 112 call $~lib/string/String.__eq i32.eqz if @@ -8082,6 +8090,54 @@ call $~lib/env/abort unreachable end + i32.const 112 + global.get $std/string/nullStr + call $~lib/string/String.__ne + i32.eqz + if + i32.const 0 + i32.const 48 + i32.const 101 + i32.const 0 + call $~lib/env/abort + unreachable + end + global.get $std/string/nullStr + i32.const 112 + call $~lib/string/String.__ne + i32.eqz + if + i32.const 0 + i32.const 48 + i32.const 102 + i32.const 0 + call $~lib/env/abort + unreachable + end + i32.const 128 + i32.const 648 + call $~lib/string/String.__ne + i32.eqz + if + i32.const 0 + i32.const 48 + i32.const 103 + i32.const 0 + call $~lib/env/abort + unreachable + end + i32.const 128 + i32.const 128 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 48 + i32.const 104 + i32.const 0 + call $~lib/env/abort + unreachable + end i32.const 664 i32.const 680 call $~lib/string/String.__ne @@ -8089,7 +8145,7 @@ if i32.const 0 i32.const 48 - i32.const 101 + i32.const 105 i32.const 0 call $~lib/env/abort unreachable @@ -8101,7 +8157,7 @@ if i32.const 0 i32.const 48 - i32.const 102 + i32.const 106 i32.const 0 call $~lib/env/abort unreachable @@ -8113,7 +8169,7 @@ if i32.const 0 i32.const 48 - i32.const 103 + i32.const 107 i32.const 0 call $~lib/env/abort unreachable @@ -8125,7 +8181,7 @@ if i32.const 0 i32.const 48 - i32.const 104 + i32.const 108 i32.const 0 call $~lib/env/abort unreachable @@ -8137,7 +8193,7 @@ if i32.const 0 i32.const 48 - i32.const 105 + i32.const 109 i32.const 0 call $~lib/env/abort unreachable @@ -8149,7 +8205,7 @@ if i32.const 0 i32.const 48 - i32.const 106 + i32.const 110 i32.const 0 call $~lib/env/abort unreachable @@ -8161,31 +8217,31 @@ if i32.const 0 i32.const 48 - i32.const 107 + i32.const 111 i32.const 0 call $~lib/env/abort unreachable end i32.const 648 - i32.const 280 + i32.const 128 call $~lib/string/String.__gt i32.eqz if i32.const 0 i32.const 48 - i32.const 109 + i32.const 113 i32.const 0 call $~lib/env/abort unreachable end i32.const 864 - i32.const 280 + i32.const 128 call $~lib/string/String.__gt i32.eqz if i32.const 0 i32.const 48 - i32.const 110 + i32.const 114 i32.const 0 call $~lib/env/abort unreachable @@ -8197,7 +8253,7 @@ if i32.const 0 i32.const 48 - i32.const 111 + i32.const 115 i32.const 0 call $~lib/env/abort unreachable @@ -8206,45 +8262,6 @@ i32.const 656 call $~lib/string/String.__gt i32.eqz - if - i32.const 0 - i32.const 48 - i32.const 112 - i32.const 0 - call $~lib/env/abort - unreachable - end - i32.const 864 - i32.const 656 - call $~lib/string/String.__lt - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 48 - i32.const 113 - i32.const 0 - call $~lib/env/abort - unreachable - end - i32.const 648 - global.get $std/string/nullStr - call $~lib/string/String.__lt - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 48 - i32.const 115 - i32.const 0 - call $~lib/env/abort - unreachable - end - global.get $std/string/nullStr - i32.const 648 - call $~lib/string/String.__lt - i32.eqz - i32.eqz if i32.const 0 i32.const 48 @@ -8253,22 +8270,24 @@ call $~lib/env/abort unreachable end - i32.const 288 - i32.const 256 - call $~lib/string/String.__gt + i32.const 864 + i32.const 656 + call $~lib/string/String.__lt + i32.eqz i32.eqz if i32.const 0 i32.const 48 - i32.const 118 + i32.const 117 i32.const 0 call $~lib/env/abort unreachable end - i32.const 256 - i32.const 288 + i32.const 648 + global.get $std/string/nullStr call $~lib/string/String.__lt i32.eqz + i32.eqz if i32.const 0 i32.const 48 @@ -8277,9 +8296,10 @@ call $~lib/env/abort unreachable end - i32.const 288 - i32.const 256 - call $~lib/string/String.__gte + global.get $std/string/nullStr + i32.const 648 + call $~lib/string/String.__lt + i32.eqz i32.eqz if i32.const 0 @@ -8289,22 +8309,9 @@ call $~lib/env/abort unreachable end - i32.const 256 i32.const 288 - call $~lib/string/String.__lte - i32.eqz - if - i32.const 0 - i32.const 48 - i32.const 121 - i32.const 0 - call $~lib/env/abort - unreachable - end - i32.const 288 - i32.const 256 - call $~lib/string/String.__lt - i32.eqz + i32.const 112 + call $~lib/string/String.__gt i32.eqz if i32.const 0 @@ -8314,10 +8321,9 @@ call $~lib/env/abort unreachable end - i32.const 256 + i32.const 112 i32.const 288 - call $~lib/string/String.__gt - i32.eqz + call $~lib/string/String.__lt i32.eqz if i32.const 0 @@ -8327,10 +8333,9 @@ call $~lib/env/abort unreachable end - i32.const 256 - i32.const 256 - call $~lib/string/String.__lt - i32.eqz + i32.const 288 + i32.const 112 + call $~lib/string/String.__gte i32.eqz if i32.const 0 @@ -8340,10 +8345,9 @@ call $~lib/env/abort unreachable end - i32.const 256 - i32.const 256 - call $~lib/string/String.__gt - i32.eqz + i32.const 112 + i32.const 288 + call $~lib/string/String.__lte i32.eqz if i32.const 0 @@ -8353,9 +8357,10 @@ call $~lib/env/abort unreachable end - i32.const 256 - i32.const 256 - call $~lib/string/String.__gte + i32.const 288 + i32.const 112 + call $~lib/string/String.__lt + i32.eqz i32.eqz if i32.const 0 @@ -8365,9 +8370,10 @@ call $~lib/env/abort unreachable end - i32.const 256 - i32.const 256 - call $~lib/string/String.__lte + i32.const 112 + i32.const 288 + call $~lib/string/String.__gt + i32.eqz i32.eqz if i32.const 0 @@ -8377,6 +8383,56 @@ call $~lib/env/abort unreachable end + i32.const 112 + i32.const 112 + call $~lib/string/String.__lt + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 48 + i32.const 128 + i32.const 0 + call $~lib/env/abort + unreachable + end + i32.const 112 + i32.const 112 + call $~lib/string/String.__gt + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 48 + i32.const 129 + i32.const 0 + call $~lib/env/abort + unreachable + end + i32.const 112 + i32.const 112 + call $~lib/string/String.__gte + i32.eqz + if + i32.const 0 + i32.const 48 + i32.const 130 + i32.const 0 + call $~lib/env/abort + unreachable + end + i32.const 112 + i32.const 112 + call $~lib/string/String.__lte + i32.eqz + if + i32.const 0 + i32.const 48 + i32.const 131 + i32.const 0 + call $~lib/env/abort + unreachable + end i32.const 65377 call $~lib/string/String.fromCodePoint global.set $std/string/a @@ -8393,7 +8449,7 @@ if i32.const 0 i32.const 48 - i32.const 131 + i32.const 135 i32.const 0 call $~lib/env/abort unreachable @@ -8403,48 +8459,6 @@ i32.const 3 i32.eq i32.eqz - if - i32.const 0 - i32.const 48 - i32.const 133 - i32.const 0 - call $~lib/env/abort - unreachable - end - i32.const 256 - i32.const 100 - call $~lib/string/String#repeat - i32.const 256 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 48 - i32.const 135 - i32.const 0 - call $~lib/env/abort - unreachable - end - i32.const 280 - i32.const 0 - call $~lib/string/String#repeat - i32.const 256 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 48 - i32.const 136 - i32.const 0 - call $~lib/env/abort - unreachable - end - i32.const 280 - i32.const 1 - call $~lib/string/String#repeat - i32.const 280 - call $~lib/string/String.__eq - i32.eqz if i32.const 0 i32.const 48 @@ -8453,7 +8467,49 @@ call $~lib/env/abort unreachable end - i32.const 280 + i32.const 112 + i32.const 100 + call $~lib/string/String#repeat + i32.const 112 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 48 + i32.const 139 + i32.const 0 + call $~lib/env/abort + unreachable + end + i32.const 128 + i32.const 0 + call $~lib/string/String#repeat + i32.const 112 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 48 + i32.const 140 + i32.const 0 + call $~lib/env/abort + unreachable + end + i32.const 128 + i32.const 1 + call $~lib/string/String#repeat + i32.const 128 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 48 + i32.const 141 + i32.const 0 + call $~lib/env/abort + unreachable + end + i32.const 128 i32.const 2 call $~lib/string/String#repeat i32.const 872 @@ -8462,12 +8518,12 @@ if i32.const 0 i32.const 48 - i32.const 138 + i32.const 142 i32.const 0 call $~lib/env/abort unreachable end - i32.const 280 + i32.const 128 i32.const 3 call $~lib/string/String#repeat i32.const 880 @@ -8476,7 +8532,7 @@ if i32.const 0 i32.const 48 - i32.const 139 + i32.const 143 i32.const 0 call $~lib/env/abort unreachable @@ -8490,12 +8546,12 @@ if i32.const 0 i32.const 48 - i32.const 140 + i32.const 144 i32.const 0 call $~lib/env/abort unreachable end - i32.const 280 + i32.const 128 i32.const 5 call $~lib/string/String#repeat i32.const 920 @@ -8504,12 +8560,12 @@ if i32.const 0 i32.const 48 - i32.const 141 + i32.const 145 i32.const 0 call $~lib/env/abort unreachable end - i32.const 280 + i32.const 128 i32.const 6 call $~lib/string/String#repeat i32.const 936 @@ -8518,12 +8574,12 @@ if i32.const 0 i32.const 48 - i32.const 142 + i32.const 146 i32.const 0 call $~lib/env/abort unreachable end - i32.const 280 + i32.const 128 i32.const 7 call $~lib/string/String#repeat i32.const 952 @@ -8532,7 +8588,7 @@ if i32.const 0 i32.const 48 - i32.const 143 + i32.const 147 i32.const 0 call $~lib/env/abort unreachable @@ -8553,7 +8609,7 @@ if i32.const 0 i32.const 48 - i32.const 147 + i32.const 151 i32.const 0 call $~lib/env/abort unreachable @@ -8572,7 +8628,7 @@ if i32.const 0 i32.const 48 - i32.const 148 + i32.const 152 i32.const 0 call $~lib/env/abort unreachable @@ -8591,7 +8647,7 @@ if i32.const 0 i32.const 48 - i32.const 149 + i32.const 153 i32.const 0 call $~lib/env/abort unreachable @@ -8606,7 +8662,7 @@ if i32.const 0 i32.const 48 - i32.const 150 + i32.const 154 i32.const 0 call $~lib/env/abort unreachable @@ -8621,7 +8677,7 @@ if i32.const 0 i32.const 48 - i32.const 151 + i32.const 155 i32.const 0 call $~lib/env/abort unreachable @@ -8630,13 +8686,13 @@ i32.const 4 i32.const 3 call $~lib/string/String#slice - i32.const 256 + i32.const 112 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 48 - i32.const 152 + i32.const 156 i32.const 0 call $~lib/env/abort unreachable @@ -8651,7 +8707,7 @@ if i32.const 0 i32.const 48 - i32.const 153 + i32.const 157 i32.const 0 call $~lib/env/abort unreachable @@ -8659,7 +8715,7 @@ block (result i32) i32.const 0 global.set $~lib/argc - i32.const 256 + i32.const 112 i32.const 0 i32.const 0 call $~lib/string/String#split|trampoline @@ -8678,7 +8734,7 @@ global.get $std/string/sa i32.const 0 call $~lib/array/Array<~lib/string/String>#__get - i32.const 256 + i32.const 112 call $~lib/string/String.__eq else local.get $2 @@ -8687,7 +8743,7 @@ if i32.const 0 i32.const 48 - i32.const 158 + i32.const 162 i32.const 0 call $~lib/env/abort unreachable @@ -8695,8 +8751,8 @@ block (result i32) i32.const 1 global.set $~lib/argc - i32.const 256 - i32.const 256 + i32.const 112 + i32.const 112 i32.const 0 call $~lib/string/String#split|trampoline end @@ -8713,7 +8769,7 @@ if i32.const 0 i32.const 48 - i32.const 160 + i32.const 164 i32.const 0 call $~lib/env/abort unreachable @@ -8721,7 +8777,7 @@ block (result i32) i32.const 1 global.set $~lib/argc - i32.const 256 + i32.const 112 i32.const 432 i32.const 0 call $~lib/string/String#split|trampoline @@ -8740,7 +8796,7 @@ global.get $std/string/sa i32.const 0 call $~lib/array/Array<~lib/string/String>#__get - i32.const 256 + i32.const 112 call $~lib/string/String.__eq else local.get $2 @@ -8749,7 +8805,7 @@ if i32.const 0 i32.const 48 - i32.const 162 + i32.const 166 i32.const 0 call $~lib/env/abort unreachable @@ -8785,7 +8841,7 @@ if i32.const 0 i32.const 48 - i32.const 164 + i32.const 168 i32.const 0 call $~lib/env/abort unreachable @@ -8812,7 +8868,7 @@ global.get $std/string/sa i32.const 0 call $~lib/array/Array<~lib/string/String>#__get - i32.const 280 + i32.const 128 call $~lib/string/String.__eq else local.get $2 @@ -8841,7 +8897,7 @@ if i32.const 0 i32.const 48 - i32.const 166 + i32.const 170 i32.const 0 call $~lib/env/abort unreachable @@ -8868,7 +8924,7 @@ global.get $std/string/sa i32.const 0 call $~lib/array/Array<~lib/string/String>#__get - i32.const 280 + i32.const 128 call $~lib/string/String.__eq else local.get $2 @@ -8897,7 +8953,7 @@ if i32.const 0 i32.const 48 - i32.const 168 + i32.const 172 i32.const 0 call $~lib/env/abort unreachable @@ -8924,7 +8980,7 @@ global.get $std/string/sa i32.const 0 call $~lib/array/Array<~lib/string/String>#__get - i32.const 280 + i32.const 128 call $~lib/string/String.__eq else local.get $2 @@ -8944,7 +9000,7 @@ global.get $std/string/sa i32.const 2 call $~lib/array/Array<~lib/string/String>#__get - i32.const 256 + i32.const 112 call $~lib/string/String.__eq else local.get $2 @@ -8963,7 +9019,7 @@ if i32.const 0 i32.const 48 - i32.const 170 + i32.const 174 i32.const 0 call $~lib/env/abort unreachable @@ -8990,7 +9046,7 @@ global.get $std/string/sa i32.const 0 call $~lib/array/Array<~lib/string/String>#__get - i32.const 256 + i32.const 112 call $~lib/string/String.__eq else local.get $2 @@ -9000,7 +9056,7 @@ global.get $std/string/sa i32.const 1 call $~lib/array/Array<~lib/string/String>#__get - i32.const 280 + i32.const 128 call $~lib/string/String.__eq else local.get $2 @@ -9029,7 +9085,7 @@ if i32.const 0 i32.const 48 - i32.const 172 + i32.const 176 i32.const 0 call $~lib/env/abort unreachable @@ -9056,7 +9112,7 @@ global.get $std/string/sa i32.const 0 call $~lib/array/Array<~lib/string/String>#__get - i32.const 280 + i32.const 128 call $~lib/string/String.__eq else local.get $2 @@ -9086,7 +9142,7 @@ global.get $std/string/sa i32.const 3 call $~lib/array/Array<~lib/string/String>#__get - i32.const 256 + i32.const 112 call $~lib/string/String.__eq else local.get $2 @@ -9095,7 +9151,7 @@ if i32.const 0 i32.const 48 - i32.const 174 + i32.const 178 i32.const 0 call $~lib/env/abort unreachable @@ -9104,7 +9160,7 @@ i32.const 1 global.set $~lib/argc i32.const 288 - i32.const 256 + i32.const 112 i32.const 0 call $~lib/string/String#split|trampoline end @@ -9122,7 +9178,7 @@ global.get $std/string/sa i32.const 0 call $~lib/array/Array<~lib/string/String>#__get - i32.const 280 + i32.const 128 call $~lib/string/String.__eq else local.get $2 @@ -9151,13 +9207,13 @@ if i32.const 0 i32.const 48 - i32.const 176 + i32.const 180 i32.const 0 call $~lib/env/abort unreachable end i32.const 288 - i32.const 256 + i32.const 112 i32.const 0 call $~lib/string/String#split global.set $std/string/sa @@ -9173,13 +9229,13 @@ if i32.const 0 i32.const 48 - i32.const 178 + i32.const 182 i32.const 0 call $~lib/env/abort unreachable end i32.const 288 - i32.const 256 + i32.const 112 i32.const 1 call $~lib/string/String#split global.set $std/string/sa @@ -9196,7 +9252,7 @@ global.get $std/string/sa i32.const 0 call $~lib/array/Array<~lib/string/String>#__get - i32.const 280 + i32.const 128 call $~lib/string/String.__eq else local.get $2 @@ -9205,7 +9261,7 @@ if i32.const 0 i32.const 48 - i32.const 180 + i32.const 184 i32.const 0 call $~lib/env/abort unreachable @@ -9228,7 +9284,7 @@ global.get $std/string/sa i32.const 0 call $~lib/array/Array<~lib/string/String>#__get - i32.const 280 + i32.const 128 call $~lib/string/String.__eq else local.get $2 @@ -9237,13 +9293,13 @@ if i32.const 0 i32.const 48 - i32.const 182 + i32.const 186 i32.const 0 call $~lib/env/abort unreachable end i32.const 288 - i32.const 256 + i32.const 112 i32.const 4 call $~lib/string/String#split global.set $std/string/sa @@ -9260,111 +9316,7 @@ global.get $std/string/sa i32.const 0 call $~lib/array/Array<~lib/string/String>#__get - i32.const 280 - call $~lib/string/String.__eq - else - local.get $2 - end - local.tee $2 - if (result i32) - global.get $std/string/sa - i32.const 1 - call $~lib/array/Array<~lib/string/String>#__get - i32.const 648 - call $~lib/string/String.__eq - else - local.get $2 - end - local.tee $2 - if (result i32) - global.get $std/string/sa - i32.const 2 - call $~lib/array/Array<~lib/string/String>#__get - i32.const 1216 - call $~lib/string/String.__eq - else - local.get $2 - end - i32.eqz - if - i32.const 0 - i32.const 48 - i32.const 184 - i32.const 0 - call $~lib/env/abort - unreachable - end - i32.const 288 - i32.const 256 - i32.const -1 - call $~lib/string/String#split - global.set $std/string/sa - block $~lib/array/Array<~lib/string/String>#get:length|inlined.14 (result i32) - global.get $std/string/sa - local.set $2 - local.get $2 - i32.load offset=4 - end - i32.const 3 - i32.eq - local.tee $2 - if (result i32) - global.get $std/string/sa - i32.const 0 - call $~lib/array/Array<~lib/string/String>#__get - i32.const 280 - call $~lib/string/String.__eq - else - local.get $2 - end - local.tee $2 - if (result i32) - global.get $std/string/sa - i32.const 1 - call $~lib/array/Array<~lib/string/String>#__get - i32.const 648 - call $~lib/string/String.__eq - else - local.get $2 - end - local.tee $2 - if (result i32) - global.get $std/string/sa - i32.const 2 - call $~lib/array/Array<~lib/string/String>#__get - i32.const 1216 - call $~lib/string/String.__eq - else - local.get $2 - end - i32.eqz - if - i32.const 0 - i32.const 48 - i32.const 186 - i32.const 0 - call $~lib/env/abort - unreachable - end - i32.const 1192 - i32.const 432 - i32.const -1 - call $~lib/string/String#split - global.set $std/string/sa - block $~lib/array/Array<~lib/string/String>#get:length|inlined.15 (result i32) - global.get $std/string/sa - local.set $2 - local.get $2 - i32.load offset=4 - end - i32.const 3 - i32.eq - local.tee $2 - if (result i32) - global.get $std/string/sa - i32.const 0 - call $~lib/array/Array<~lib/string/String>#__get - i32.const 280 + i32.const 128 call $~lib/string/String.__eq else local.get $2 @@ -9398,6 +9350,110 @@ call $~lib/env/abort unreachable end + i32.const 288 + i32.const 112 + i32.const -1 + call $~lib/string/String#split + global.set $std/string/sa + block $~lib/array/Array<~lib/string/String>#get:length|inlined.14 (result i32) + global.get $std/string/sa + local.set $2 + local.get $2 + i32.load offset=4 + end + i32.const 3 + i32.eq + local.tee $2 + if (result i32) + global.get $std/string/sa + i32.const 0 + call $~lib/array/Array<~lib/string/String>#__get + i32.const 128 + call $~lib/string/String.__eq + else + local.get $2 + end + local.tee $2 + if (result i32) + global.get $std/string/sa + i32.const 1 + call $~lib/array/Array<~lib/string/String>#__get + i32.const 648 + call $~lib/string/String.__eq + else + local.get $2 + end + local.tee $2 + if (result i32) + global.get $std/string/sa + i32.const 2 + call $~lib/array/Array<~lib/string/String>#__get + i32.const 1216 + call $~lib/string/String.__eq + else + local.get $2 + end + i32.eqz + if + i32.const 0 + i32.const 48 + i32.const 190 + i32.const 0 + call $~lib/env/abort + unreachable + end + i32.const 1192 + i32.const 432 + i32.const -1 + call $~lib/string/String#split + global.set $std/string/sa + block $~lib/array/Array<~lib/string/String>#get:length|inlined.15 (result i32) + global.get $std/string/sa + local.set $2 + local.get $2 + i32.load offset=4 + end + i32.const 3 + i32.eq + local.tee $2 + if (result i32) + global.get $std/string/sa + i32.const 0 + call $~lib/array/Array<~lib/string/String>#__get + i32.const 128 + call $~lib/string/String.__eq + else + local.get $2 + end + local.tee $2 + if (result i32) + global.get $std/string/sa + i32.const 1 + call $~lib/array/Array<~lib/string/String>#__get + i32.const 648 + call $~lib/string/String.__eq + else + local.get $2 + end + local.tee $2 + if (result i32) + global.get $std/string/sa + i32.const 2 + call $~lib/array/Array<~lib/string/String>#__get + i32.const 1216 + call $~lib/string/String.__eq + else + local.get $2 + end + i32.eqz + if + i32.const 0 + i32.const 48 + i32.const 192 + i32.const 0 + call $~lib/env/abort + unreachable + end i32.const 0 call $~lib/internal/number/itoa32 i32.const 480 @@ -9406,7 +9462,7 @@ if i32.const 0 i32.const 48 - i32.const 190 + i32.const 194 i32.const 0 call $~lib/env/abort unreachable @@ -9419,7 +9475,7 @@ if i32.const 0 i32.const 48 - i32.const 191 + i32.const 195 i32.const 0 call $~lib/env/abort unreachable @@ -9432,7 +9488,7 @@ if i32.const 0 i32.const 48 - i32.const 192 + i32.const 196 i32.const 0 call $~lib/env/abort unreachable @@ -9445,7 +9501,7 @@ if i32.const 0 i32.const 48 - i32.const 193 + i32.const 197 i32.const 0 call $~lib/env/abort unreachable @@ -9458,7 +9514,7 @@ if i32.const 0 i32.const 48 - i32.const 194 + i32.const 198 i32.const 0 call $~lib/env/abort unreachable @@ -9471,7 +9527,7 @@ if i32.const 0 i32.const 48 - i32.const 195 + i32.const 199 i32.const 0 call $~lib/env/abort unreachable @@ -9484,7 +9540,7 @@ if i32.const 0 i32.const 48 - i32.const 196 + i32.const 200 i32.const 0 call $~lib/env/abort unreachable @@ -9497,7 +9553,7 @@ if i32.const 0 i32.const 48 - i32.const 197 + i32.const 201 i32.const 0 call $~lib/env/abort unreachable @@ -9510,7 +9566,7 @@ if i32.const 0 i32.const 48 - i32.const 198 + i32.const 202 i32.const 0 call $~lib/env/abort unreachable @@ -9523,7 +9579,7 @@ if i32.const 0 i32.const 48 - i32.const 199 + i32.const 203 i32.const 0 call $~lib/env/abort unreachable @@ -9536,7 +9592,7 @@ if i32.const 0 i32.const 48 - i32.const 200 + i32.const 204 i32.const 0 call $~lib/env/abort unreachable @@ -9549,7 +9605,7 @@ if i32.const 0 i32.const 48 - i32.const 201 + i32.const 205 i32.const 0 call $~lib/env/abort unreachable @@ -9562,7 +9618,7 @@ if i32.const 0 i32.const 48 - i32.const 202 + i32.const 206 i32.const 0 call $~lib/env/abort unreachable @@ -9575,7 +9631,7 @@ if i32.const 0 i32.const 48 - i32.const 203 + i32.const 207 i32.const 0 call $~lib/env/abort unreachable @@ -9588,7 +9644,7 @@ if i32.const 0 i32.const 48 - i32.const 205 + i32.const 209 i32.const 0 call $~lib/env/abort unreachable @@ -9601,7 +9657,7 @@ if i32.const 0 i32.const 48 - i32.const 206 + i32.const 210 i32.const 0 call $~lib/env/abort unreachable @@ -9614,7 +9670,7 @@ if i32.const 0 i32.const 48 - i32.const 207 + i32.const 211 i32.const 0 call $~lib/env/abort unreachable @@ -9627,7 +9683,7 @@ if i32.const 0 i32.const 48 - i32.const 208 + i32.const 212 i32.const 0 call $~lib/env/abort unreachable @@ -9640,7 +9696,7 @@ if i32.const 0 i32.const 48 - i32.const 209 + i32.const 213 i32.const 0 call $~lib/env/abort unreachable @@ -9653,7 +9709,7 @@ if i32.const 0 i32.const 48 - i32.const 211 + i32.const 215 i32.const 0 call $~lib/env/abort unreachable @@ -9666,7 +9722,7 @@ if i32.const 0 i32.const 48 - i32.const 212 + i32.const 216 i32.const 0 call $~lib/env/abort unreachable @@ -9679,7 +9735,7 @@ if i32.const 0 i32.const 48 - i32.const 213 + i32.const 217 i32.const 0 call $~lib/env/abort unreachable @@ -9692,7 +9748,7 @@ if i32.const 0 i32.const 48 - i32.const 214 + i32.const 218 i32.const 0 call $~lib/env/abort unreachable @@ -9705,7 +9761,7 @@ if i32.const 0 i32.const 48 - i32.const 215 + i32.const 219 i32.const 0 call $~lib/env/abort unreachable @@ -9718,7 +9774,7 @@ if i32.const 0 i32.const 48 - i32.const 216 + i32.const 220 i32.const 0 call $~lib/env/abort unreachable @@ -9731,7 +9787,7 @@ if i32.const 0 i32.const 48 - i32.const 217 + i32.const 221 i32.const 0 call $~lib/env/abort unreachable @@ -9744,7 +9800,7 @@ if i32.const 0 i32.const 48 - i32.const 218 + i32.const 222 i32.const 0 call $~lib/env/abort unreachable @@ -9757,7 +9813,7 @@ if i32.const 0 i32.const 48 - i32.const 219 + i32.const 223 i32.const 0 call $~lib/env/abort unreachable @@ -9770,7 +9826,7 @@ if i32.const 0 i32.const 48 - i32.const 220 + i32.const 224 i32.const 0 call $~lib/env/abort unreachable @@ -9783,7 +9839,7 @@ if i32.const 0 i32.const 48 - i32.const 221 + i32.const 225 i32.const 0 call $~lib/env/abort unreachable @@ -9796,7 +9852,7 @@ if i32.const 0 i32.const 48 - i32.const 223 + i32.const 227 i32.const 0 call $~lib/env/abort unreachable @@ -9809,7 +9865,7 @@ if i32.const 0 i32.const 48 - i32.const 224 + i32.const 228 i32.const 0 call $~lib/env/abort unreachable @@ -9822,7 +9878,7 @@ if i32.const 0 i32.const 48 - i32.const 225 + i32.const 229 i32.const 0 call $~lib/env/abort unreachable @@ -9835,7 +9891,7 @@ if i32.const 0 i32.const 48 - i32.const 226 + i32.const 230 i32.const 0 call $~lib/env/abort unreachable @@ -9848,7 +9904,7 @@ if i32.const 0 i32.const 48 - i32.const 227 + i32.const 231 i32.const 0 call $~lib/env/abort unreachable @@ -9861,7 +9917,7 @@ if i32.const 0 i32.const 48 - i32.const 228 + i32.const 232 i32.const 0 call $~lib/env/abort unreachable @@ -9874,7 +9930,7 @@ if i32.const 0 i32.const 48 - i32.const 229 + i32.const 233 i32.const 0 call $~lib/env/abort unreachable @@ -9887,7 +9943,7 @@ if i32.const 0 i32.const 48 - i32.const 230 + i32.const 234 i32.const 0 call $~lib/env/abort unreachable @@ -9900,7 +9956,7 @@ if i32.const 0 i32.const 48 - i32.const 231 + i32.const 235 i32.const 0 call $~lib/env/abort unreachable @@ -9913,7 +9969,7 @@ if i32.const 0 i32.const 48 - i32.const 232 + i32.const 236 i32.const 0 call $~lib/env/abort unreachable @@ -9926,7 +9982,7 @@ if i32.const 0 i32.const 48 - i32.const 233 + i32.const 237 i32.const 0 call $~lib/env/abort unreachable @@ -9939,7 +9995,7 @@ if i32.const 0 i32.const 48 - i32.const 236 + i32.const 240 i32.const 0 call $~lib/env/abort unreachable @@ -9952,7 +10008,7 @@ if i32.const 0 i32.const 48 - i32.const 237 + i32.const 241 i32.const 0 call $~lib/env/abort unreachable @@ -9965,7 +10021,7 @@ if i32.const 0 i32.const 48 - i32.const 238 + i32.const 242 i32.const 0 call $~lib/env/abort unreachable @@ -9978,7 +10034,7 @@ if i32.const 0 i32.const 48 - i32.const 239 + i32.const 243 i32.const 0 call $~lib/env/abort unreachable @@ -9992,7 +10048,7 @@ if i32.const 0 i32.const 48 - i32.const 240 + i32.const 244 i32.const 0 call $~lib/env/abort unreachable @@ -10005,7 +10061,7 @@ if i32.const 0 i32.const 48 - i32.const 241 + i32.const 245 i32.const 0 call $~lib/env/abort unreachable @@ -10019,7 +10075,7 @@ if i32.const 0 i32.const 48 - i32.const 242 + i32.const 246 i32.const 0 call $~lib/env/abort unreachable @@ -10032,7 +10088,7 @@ if i32.const 0 i32.const 48 - i32.const 243 + i32.const 247 i32.const 0 call $~lib/env/abort unreachable @@ -10046,7 +10102,7 @@ if i32.const 0 i32.const 48 - i32.const 244 + i32.const 248 i32.const 0 call $~lib/env/abort unreachable @@ -10059,7 +10115,7 @@ if i32.const 0 i32.const 48 - i32.const 245 + i32.const 249 i32.const 0 call $~lib/env/abort unreachable @@ -10072,7 +10128,7 @@ if i32.const 0 i32.const 48 - i32.const 246 + i32.const 250 i32.const 0 call $~lib/env/abort unreachable @@ -10085,7 +10141,7 @@ if i32.const 0 i32.const 48 - i32.const 249 + i32.const 253 i32.const 0 call $~lib/env/abort unreachable @@ -10098,7 +10154,7 @@ if i32.const 0 i32.const 48 - i32.const 250 + i32.const 254 i32.const 0 call $~lib/env/abort unreachable @@ -10111,7 +10167,7 @@ if i32.const 0 i32.const 48 - i32.const 251 + i32.const 255 i32.const 0 call $~lib/env/abort unreachable @@ -10124,7 +10180,7 @@ if i32.const 0 i32.const 48 - i32.const 252 + i32.const 256 i32.const 0 call $~lib/env/abort unreachable @@ -10137,7 +10193,7 @@ if i32.const 0 i32.const 48 - i32.const 253 + i32.const 257 i32.const 0 call $~lib/env/abort unreachable @@ -10150,7 +10206,7 @@ if i32.const 0 i32.const 48 - i32.const 259 + i32.const 263 i32.const 0 call $~lib/env/abort unreachable @@ -10163,7 +10219,7 @@ if i32.const 0 i32.const 48 - i32.const 260 + i32.const 264 i32.const 0 call $~lib/env/abort unreachable @@ -10176,7 +10232,7 @@ if i32.const 0 i32.const 48 - i32.const 261 + i32.const 265 i32.const 0 call $~lib/env/abort unreachable @@ -10189,7 +10245,7 @@ if i32.const 0 i32.const 48 - i32.const 262 + i32.const 266 i32.const 0 call $~lib/env/abort unreachable @@ -10202,7 +10258,7 @@ if i32.const 0 i32.const 48 - i32.const 264 + i32.const 268 i32.const 0 call $~lib/env/abort unreachable @@ -10215,7 +10271,7 @@ if i32.const 0 i32.const 48 - i32.const 265 + i32.const 269 i32.const 0 call $~lib/env/abort unreachable @@ -10228,7 +10284,7 @@ if i32.const 0 i32.const 48 - i32.const 266 + i32.const 270 i32.const 0 call $~lib/env/abort unreachable @@ -10241,7 +10297,7 @@ if i32.const 0 i32.const 48 - i32.const 267 + i32.const 271 i32.const 0 call $~lib/env/abort unreachable @@ -10254,7 +10310,7 @@ if i32.const 0 i32.const 48 - i32.const 268 + i32.const 272 i32.const 0 call $~lib/env/abort unreachable @@ -10267,7 +10323,7 @@ if i32.const 0 i32.const 48 - i32.const 269 + i32.const 273 i32.const 0 call $~lib/env/abort unreachable @@ -10280,7 +10336,7 @@ if i32.const 0 i32.const 48 - i32.const 271 + i32.const 275 i32.const 0 call $~lib/env/abort unreachable @@ -10293,7 +10349,7 @@ if i32.const 0 i32.const 48 - i32.const 272 + i32.const 276 i32.const 0 call $~lib/env/abort unreachable @@ -10306,7 +10362,7 @@ if i32.const 0 i32.const 48 - i32.const 273 + i32.const 277 i32.const 0 call $~lib/env/abort unreachable @@ -10319,7 +10375,7 @@ if i32.const 0 i32.const 48 - i32.const 274 + i32.const 278 i32.const 0 call $~lib/env/abort unreachable @@ -10332,7 +10388,7 @@ if i32.const 0 i32.const 48 - i32.const 275 + i32.const 279 i32.const 0 call $~lib/env/abort unreachable @@ -10345,7 +10401,7 @@ if i32.const 0 i32.const 48 - i32.const 276 + i32.const 280 i32.const 0 call $~lib/env/abort unreachable @@ -10358,7 +10414,7 @@ if i32.const 0 i32.const 48 - i32.const 277 + i32.const 281 i32.const 0 call $~lib/env/abort unreachable @@ -10371,7 +10427,7 @@ if i32.const 0 i32.const 48 - i32.const 278 + i32.const 282 i32.const 0 call $~lib/env/abort unreachable @@ -10384,7 +10440,7 @@ if i32.const 0 i32.const 48 - i32.const 279 + i32.const 283 i32.const 0 call $~lib/env/abort unreachable @@ -10397,7 +10453,7 @@ if i32.const 0 i32.const 48 - i32.const 281 + i32.const 285 i32.const 0 call $~lib/env/abort unreachable @@ -10410,7 +10466,7 @@ if i32.const 0 i32.const 48 - i32.const 282 + i32.const 286 i32.const 0 call $~lib/env/abort unreachable @@ -10423,7 +10479,7 @@ if i32.const 0 i32.const 48 - i32.const 284 + i32.const 288 i32.const 0 call $~lib/env/abort unreachable @@ -10436,7 +10492,7 @@ if i32.const 0 i32.const 48 - i32.const 285 + i32.const 289 i32.const 0 call $~lib/env/abort unreachable @@ -10449,7 +10505,7 @@ if i32.const 0 i32.const 48 - i32.const 286 + i32.const 290 i32.const 0 call $~lib/env/abort unreachable @@ -10462,7 +10518,7 @@ if i32.const 0 i32.const 48 - i32.const 287 + i32.const 291 i32.const 0 call $~lib/env/abort unreachable @@ -10477,7 +10533,7 @@ if i32.const 0 i32.const 48 - i32.const 289 + i32.const 293 i32.const 0 call $~lib/env/abort unreachable @@ -10490,7 +10546,7 @@ if i32.const 0 i32.const 48 - i32.const 290 + i32.const 294 i32.const 0 call $~lib/env/abort unreachable @@ -10503,7 +10559,7 @@ if i32.const 0 i32.const 48 - i32.const 291 + i32.const 295 i32.const 0 call $~lib/env/abort unreachable @@ -10516,7 +10572,7 @@ if i32.const 0 i32.const 48 - i32.const 292 + i32.const 296 i32.const 0 call $~lib/env/abort unreachable @@ -10529,7 +10585,7 @@ if i32.const 0 i32.const 48 - i32.const 293 + i32.const 297 i32.const 0 call $~lib/env/abort unreachable @@ -10542,7 +10598,7 @@ if i32.const 0 i32.const 48 - i32.const 294 + i32.const 298 i32.const 0 call $~lib/env/abort unreachable @@ -10555,7 +10611,7 @@ if i32.const 0 i32.const 48 - i32.const 295 + i32.const 299 i32.const 0 call $~lib/env/abort unreachable @@ -10568,7 +10624,7 @@ if i32.const 0 i32.const 48 - i32.const 296 + i32.const 300 i32.const 0 call $~lib/env/abort unreachable @@ -10581,18 +10637,18 @@ if i32.const 0 i32.const 48 - i32.const 297 + i32.const 301 i32.const 0 call $~lib/env/abort unreachable end ) - (func $std/string/getString (; 65 ;) (type $FUNCSIG$i) (result i32) + (func $std/string/getString (; 66 ;) (type $FUNCSIG$i) (result i32) global.get $std/string/str ) - (func $start (; 66 ;) (type $FUNCSIG$v) + (func $start (; 67 ;) (type $FUNCSIG$v) call $start:std/string ) - (func $null (; 67 ;) (type $FUNCSIG$v) + (func $null (; 68 ;) (type $FUNCSIG$v) ) )