diff --git a/src/parser.ts b/src/parser.ts index c36b3144..ab8fc8b0 100644 --- a/src/parser.ts +++ b/src/parser.ts @@ -211,11 +211,10 @@ export class Parser extends DiagnosticEmitter { flags |= CommonFlags.CONST; if (tn.skip(Token.ENUM)) { statement = this.parseEnum(tn, flags, decorators, startPos); - break; } else { statement = this.parseVariable(tn, flags, decorators, startPos); - decorators = null; } + decorators = null; break; } case Token.LET: flags |= CommonFlags.LET; diff --git a/std/assembly/internal/number.ts b/std/assembly/internal/number.ts index e308798d..e254aece 100644 --- a/std/assembly/internal/number.ts +++ b/std/assembly/internal/number.ts @@ -9,24 +9,20 @@ import { LOAD } from "./arraybuffer"; -@lazy export const MAX_DOUBLE_LENGTH = 28; +@inline export const MAX_DOUBLE_LENGTH = 28; -@inline -export function POWERS10(): u32[] { - const table: u32[] = [ - 1, - 10, - 100, - 1000, - 10000, - 100000, - 1000000, - 10000000, - 100000000, - 1000000000 - ]; - return table; // inlines to a constant memory offset -} +@lazy @inline const POWERS10: u32[] = [ + 1, + 10, + 100, + 1000, + 10000, + 100000, + 1000000, + 10000000, + 100000000, + 1000000000 +]; /* Lookup table for pairwise char codes in range [0-99] @@ -42,78 +38,66 @@ export function POWERS10(): u32[] { "80", "81", "82", "83", "84", "85", "86", "87", "88", "89", "90", "91", "92", "93", "94", "95", "96", "97", "98", "99" */ -@inline -export function DIGITS(): u32[] { - const table: u32[] = [ - 0x00300030, 0x00310030, 0x00320030, 0x00330030, 0x00340030, - 0x00350030, 0x00360030, 0x00370030, 0x00380030, 0x00390030, - 0x00300031, 0x00310031, 0x00320031, 0x00330031, 0x00340031, - 0x00350031, 0x00360031, 0x00370031, 0x00380031, 0x00390031, - 0x00300032, 0x00310032, 0x00320032, 0x00330032, 0x00340032, - 0x00350032, 0x00360032, 0x00370032, 0x00380032, 0x00390032, - 0x00300033, 0x00310033, 0x00320033, 0x00330033, 0x00340033, - 0x00350033, 0x00360033, 0x00370033, 0x00380033, 0x00390033, - 0x00300034, 0x00310034, 0x00320034, 0x00330034, 0x00340034, - 0x00350034, 0x00360034, 0x00370034, 0x00380034, 0x00390034, - 0x00300035, 0x00310035, 0x00320035, 0x00330035, 0x00340035, - 0x00350035, 0x00360035, 0x00370035, 0x00380035, 0x00390035, - 0x00300036, 0x00310036, 0x00320036, 0x00330036, 0x00340036, - 0x00350036, 0x00360036, 0x00370036, 0x00380036, 0x00390036, - 0x00300037, 0x00310037, 0x00320037, 0x00330037, 0x00340037, - 0x00350037, 0x00360037, 0x00370037, 0x00380037, 0x00390037, - 0x00300038, 0x00310038, 0x00320038, 0x00330038, 0x00340038, - 0x00350038, 0x00360038, 0x00370038, 0x00380038, 0x00390038, - 0x00300039, 0x00310039, 0x00320039, 0x00330039, 0x00340039, - 0x00350039, 0x00360039, 0x00370039, 0x00380039, 0x00390039 - ]; - return table; // inlines to a constant memory offset -} +@lazy @inline const DIGITS: u32[] = [ + 0x00300030, 0x00310030, 0x00320030, 0x00330030, 0x00340030, + 0x00350030, 0x00360030, 0x00370030, 0x00380030, 0x00390030, + 0x00300031, 0x00310031, 0x00320031, 0x00330031, 0x00340031, + 0x00350031, 0x00360031, 0x00370031, 0x00380031, 0x00390031, + 0x00300032, 0x00310032, 0x00320032, 0x00330032, 0x00340032, + 0x00350032, 0x00360032, 0x00370032, 0x00380032, 0x00390032, + 0x00300033, 0x00310033, 0x00320033, 0x00330033, 0x00340033, + 0x00350033, 0x00360033, 0x00370033, 0x00380033, 0x00390033, + 0x00300034, 0x00310034, 0x00320034, 0x00330034, 0x00340034, + 0x00350034, 0x00360034, 0x00370034, 0x00380034, 0x00390034, + 0x00300035, 0x00310035, 0x00320035, 0x00330035, 0x00340035, + 0x00350035, 0x00360035, 0x00370035, 0x00380035, 0x00390035, + 0x00300036, 0x00310036, 0x00320036, 0x00330036, 0x00340036, + 0x00350036, 0x00360036, 0x00370036, 0x00380036, 0x00390036, + 0x00300037, 0x00310037, 0x00320037, 0x00330037, 0x00340037, + 0x00350037, 0x00360037, 0x00370037, 0x00380037, 0x00390037, + 0x00300038, 0x00310038, 0x00320038, 0x00330038, 0x00340038, + 0x00350038, 0x00360038, 0x00370038, 0x00380038, 0x00390038, + 0x00300039, 0x00310039, 0x00320039, 0x00330039, 0x00340039, + 0x00350039, 0x00360039, 0x00370039, 0x00380039, 0x00390039 +]; -@inline -function EXP_POWERS(): i16[] { - const table: i16[] = [ - -1220, -1193, -1166, -1140, -1113, -1087, -1060, -1034, -1007, -980, - -954, -927, -901, -874, -847, -821, -794, -768, -741, -715, - -688, -661, -635, -608, -582, -555, -529, -502, -475, -449, - -422, -396, -369, -343, -316, -289, -263, -236, -210, -183, - -157, -130, -103, -77, -50, -24, 3, 30, 56, 83, - 109, 136, 162, 189, 216, 242, 269, 295, 322, 348, - 375, 402, 428, 455, 481, 508, 534, 561, 588, 614, - 641, 667, 694, 720, 747, 774, 800, 827, 853, 880, - 907, 933, 960, 986, 1013, 1039, 1066 - ]; - return table; -} +@lazy @inline const EXP_POWERS: i16[] = [ + -1220, -1193, -1166, -1140, -1113, -1087, -1060, -1034, -1007, -980, + -954, -927, -901, -874, -847, -821, -794, -768, -741, -715, + -688, -661, -635, -608, -582, -555, -529, -502, -475, -449, + -422, -396, -369, -343, -316, -289, -263, -236, -210, -183, + -157, -130, -103, -77, -50, -24, 3, 30, 56, 83, + 109, 136, 162, 189, 216, 242, 269, 295, 322, 348, + 375, 402, 428, 455, 481, 508, 534, 561, 588, 614, + 641, 667, 694, 720, 747, 774, 800, 827, 853, 880, + 907, 933, 960, 986, 1013, 1039, 1066 +]; // 1e-348, 1e-340, ..., 1e340 -@inline -function FRC_POWERS(): u64[] { - const table: u64[] = [ - 0xFA8FD5A0081C0288, 0xBAAEE17FA23EBF76, 0x8B16FB203055AC76, 0xCF42894A5DCE35EA, - 0x9A6BB0AA55653B2D, 0xE61ACF033D1A45DF, 0xAB70FE17C79AC6CA, 0xFF77B1FCBEBCDC4F, - 0xBE5691EF416BD60C, 0x8DD01FAD907FFC3C, 0xD3515C2831559A83, 0x9D71AC8FADA6C9B5, - 0xEA9C227723EE8BCB, 0xAECC49914078536D, 0x823C12795DB6CE57, 0xC21094364DFB5637, - 0x9096EA6F3848984F, 0xD77485CB25823AC7, 0xA086CFCD97BF97F4, 0xEF340A98172AACE5, - 0xB23867FB2A35B28E, 0x84C8D4DFD2C63F3B, 0xC5DD44271AD3CDBA, 0x936B9FCEBB25C996, - 0xDBAC6C247D62A584, 0xA3AB66580D5FDAF6, 0xF3E2F893DEC3F126, 0xB5B5ADA8AAFF80B8, - 0x87625F056C7C4A8B, 0xC9BCFF6034C13053, 0x964E858C91BA2655, 0xDFF9772470297EBD, - 0xA6DFBD9FB8E5B88F, 0xF8A95FCF88747D94, 0xB94470938FA89BCF, 0x8A08F0F8BF0F156B, - 0xCDB02555653131B6, 0x993FE2C6D07B7FAC, 0xE45C10C42A2B3B06, 0xAA242499697392D3, - 0xFD87B5F28300CA0E, 0xBCE5086492111AEB, 0x8CBCCC096F5088CC, 0xD1B71758E219652C, - 0x9C40000000000000, 0xE8D4A51000000000, 0xAD78EBC5AC620000, 0x813F3978F8940984, - 0xC097CE7BC90715B3, 0x8F7E32CE7BEA5C70, 0xD5D238A4ABE98068, 0x9F4F2726179A2245, - 0xED63A231D4C4FB27, 0xB0DE65388CC8ADA8, 0x83C7088E1AAB65DB, 0xC45D1DF942711D9A, - 0x924D692CA61BE758, 0xDA01EE641A708DEA, 0xA26DA3999AEF774A, 0xF209787BB47D6B85, - 0xB454E4A179DD1877, 0x865B86925B9BC5C2, 0xC83553C5C8965D3D, 0x952AB45CFA97A0B3, - 0xDE469FBD99A05FE3, 0xA59BC234DB398C25, 0xF6C69A72A3989F5C, 0xB7DCBF5354E9BECE, - 0x88FCF317F22241E2, 0xCC20CE9BD35C78A5, 0x98165AF37B2153DF, 0xE2A0B5DC971F303A, - 0xA8D9D1535CE3B396, 0xFB9B7CD9A4A7443C, 0xBB764C4CA7A44410, 0x8BAB8EEFB6409C1A, - 0xD01FEF10A657842C, 0x9B10A4E5E9913129, 0xE7109BFBA19C0C9D, 0xAC2820D9623BF429, - 0x80444B5E7AA7CF85, 0xBF21E44003ACDD2D, 0x8E679C2F5E44FF8F, 0xD433179D9C8CB841, - 0x9E19DB92B4E31BA9, 0xEB96BF6EBADF77D9, 0xAF87023B9BF0EE6B - ]; - return table; -} +@lazy @inline const FRC_POWERS: u64[] = [ + 0xFA8FD5A0081C0288, 0xBAAEE17FA23EBF76, 0x8B16FB203055AC76, 0xCF42894A5DCE35EA, + 0x9A6BB0AA55653B2D, 0xE61ACF033D1A45DF, 0xAB70FE17C79AC6CA, 0xFF77B1FCBEBCDC4F, + 0xBE5691EF416BD60C, 0x8DD01FAD907FFC3C, 0xD3515C2831559A83, 0x9D71AC8FADA6C9B5, + 0xEA9C227723EE8BCB, 0xAECC49914078536D, 0x823C12795DB6CE57, 0xC21094364DFB5637, + 0x9096EA6F3848984F, 0xD77485CB25823AC7, 0xA086CFCD97BF97F4, 0xEF340A98172AACE5, + 0xB23867FB2A35B28E, 0x84C8D4DFD2C63F3B, 0xC5DD44271AD3CDBA, 0x936B9FCEBB25C996, + 0xDBAC6C247D62A584, 0xA3AB66580D5FDAF6, 0xF3E2F893DEC3F126, 0xB5B5ADA8AAFF80B8, + 0x87625F056C7C4A8B, 0xC9BCFF6034C13053, 0x964E858C91BA2655, 0xDFF9772470297EBD, + 0xA6DFBD9FB8E5B88F, 0xF8A95FCF88747D94, 0xB94470938FA89BCF, 0x8A08F0F8BF0F156B, + 0xCDB02555653131B6, 0x993FE2C6D07B7FAC, 0xE45C10C42A2B3B06, 0xAA242499697392D3, + 0xFD87B5F28300CA0E, 0xBCE5086492111AEB, 0x8CBCCC096F5088CC, 0xD1B71758E219652C, + 0x9C40000000000000, 0xE8D4A51000000000, 0xAD78EBC5AC620000, 0x813F3978F8940984, + 0xC097CE7BC90715B3, 0x8F7E32CE7BEA5C70, 0xD5D238A4ABE98068, 0x9F4F2726179A2245, + 0xED63A231D4C4FB27, 0xB0DE65388CC8ADA8, 0x83C7088E1AAB65DB, 0xC45D1DF942711D9A, + 0x924D692CA61BE758, 0xDA01EE641A708DEA, 0xA26DA3999AEF774A, 0xF209787BB47D6B85, + 0xB454E4A179DD1877, 0x865B86925B9BC5C2, 0xC83553C5C8965D3D, 0x952AB45CFA97A0B3, + 0xDE469FBD99A05FE3, 0xA59BC234DB398C25, 0xF6C69A72A3989F5C, 0xB7DCBF5354E9BECE, + 0x88FCF317F22241E2, 0xCC20CE9BD35C78A5, 0x98165AF37B2153DF, 0xE2A0B5DC971F303A, + 0xA8D9D1535CE3B396, 0xFB9B7CD9A4A7443C, 0xBB764C4CA7A44410, 0x8BAB8EEFB6409C1A, + 0xD01FEF10A657842C, 0x9B10A4E5E9913129, 0xE7109BFBA19C0C9D, 0xAC2820D9623BF429, + 0x80444B5E7AA7CF85, 0xBF21E44003ACDD2D, 0x8E679C2F5E44FF8F, 0xD433179D9C8CB841, + 0x9E19DB92B4E31BA9, 0xEB96BF6EBADF77D9, 0xAF87023B9BF0EE6B +]; // Count number of decimals for u32 values // In our case input value always non-zero so we can simplify some parts @@ -122,7 +106,7 @@ export function decimalCount32(value: u32): u32 { let l: u32 = 32 - clz(value); // log2 let t = l * 1233 >>> 12; // log10 - let lutbuf = POWERS10().buffer_; + let lutbuf = POWERS10.buffer_; let power = LOAD(lutbuf, t); t -= (value < power); return t + 1; @@ -152,7 +136,7 @@ export function decimalCount64(value: u64): u32 { let l: u32 = 64 - clz(value); // log2 let t = l * 1233 >>> 12; // log10 - let lutbuf = POWERS10().buffer_; + let lutbuf = POWERS10.buffer_; let power = LOAD(lutbuf, t - 10); t -= (value < 10000000000 * power); return t + 1; @@ -176,7 +160,7 @@ export function decimalCount64(value: u64): u32 { } function utoa32_lut(buffer: usize, num: u32, offset: usize): void { - var lutbuf = DIGITS().buffer_; + var lutbuf = DIGITS.buffer_; while (num >= 10000) { // in most VMs i32/u32 div and modulo by constant can be shared and simplificate @@ -215,7 +199,7 @@ function utoa32_lut(buffer: usize, num: u32, offset: usize): void { } function utoa64_lut(buffer: usize, num: u64, offset: usize): void { - var lutbuf = DIGITS().buffer_; + var lutbuf = DIGITS.buffer_; while (num >= 100000000) { let t = num / 100000000; @@ -432,8 +416,8 @@ function getCachedPower(minExp: i32): void { var index = (k >> 3) + 1; _K = 348 - (index << 3); // decimal exponent no need lookup table - var frcPowers = FRC_POWERS().buffer_; - var expPowers = EXP_POWERS().buffer_; + var frcPowers = FRC_POWERS.buffer_; + var expPowers = EXP_POWERS.buffer_; _frc_pow = LOAD(frcPowers, index); _exp_pow = LOAD(expPowers, index); } @@ -485,7 +469,7 @@ function genDigits(buffer: usize, w_frc: u64, w_exp: i32, mp_frc: u64, mp_exp: i var kappa = decimalCount32(p1); var len = sign; - var powers10 = POWERS10().buffer_; + var powers10 = POWERS10.buffer_; while (kappa > 0) { let d: u32; diff --git a/std/assembly/internal/string.ts b/std/assembly/internal/string.ts index 74eda907..7d903c49 100644 --- a/std/assembly/internal/string.ts +++ b/std/assembly/internal/string.ts @@ -109,7 +109,7 @@ export function repeatUnsafe(dest: String, destOffset: usize, src: String, count // Helpers -export const enum CharCode { +@inline export const enum CharCode { PLUS = 0x2B, MINUS = 0x2D, DOT = 0x2E, diff --git a/tests/compiler/number.optimized.wat b/tests/compiler/number.optimized.wat index 4d966a72..b7fee435 100644 --- a/tests/compiler/number.optimized.wat +++ b/tests/compiler/number.optimized.wat @@ -2209,17 +2209,17 @@ (local $5 i64) (local $6 i32) (local $7 i32) - (local $8 i64) + (local $8 i32) (local $9 i64) (local $10 i64) (local $11 i64) - (local $12 i32) - (local $13 i64) - (local $14 i32) + (local $12 i64) + (local $13 i32) + (local $14 i64) local.get $1 f64.const 0 f64.lt - local.tee $12 + local.tee $13 if (result f64) local.get $0 i32.const 45 @@ -2230,14 +2230,14 @@ local.get $1 end i64.reinterpret_f64 - local.tee $13 + local.tee $14 i64.const 9218868437227405312 i64.and i64.const 52 i64.shr_u i32.wrap_i64 local.set $7 - local.get $13 + local.get $14 i64.const 4503599627370495 i64.and local.get $7 @@ -2258,7 +2258,7 @@ local.tee $7 i32.const 1 i32.sub - local.set $6 + local.set $8 local.get $2 i64.const 1 i64.shl @@ -2279,23 +2279,23 @@ i64.eq i32.const 1 i32.add - local.tee $14 + local.tee $6 i64.extend_i32_s i64.shl i64.const 1 i64.sub local.get $7 - local.get $14 - i32.sub local.get $6 + i32.sub + local.get $8 local.get $4 i32.sub - local.tee $6 + local.tee $8 i32.sub i64.extend_i32_s i64.shl global.set $~lib/internal/number/_frc_minus - local.get $6 + local.get $8 global.set $~lib/internal/number/_exp i32.const 348 i32.const -61 @@ -2318,24 +2318,23 @@ i32.shr_s i32.const 1 i32.add - local.tee $6 + local.tee $8 i32.const 3 i32.shl + local.tee $4 i32.sub global.set $~lib/internal/number/_K i32.const 1992 i32.load - local.set $4 + local.set $6 i32.const 1728 i32.load - local.get $6 - i32.const 3 - i32.shl + local.get $4 i32.add i64.load offset=8 global.set $~lib/internal/number/_frc_pow - local.get $4 local.get $6 + local.get $8 i32.const 1 i32.shl i32.add @@ -2345,31 +2344,31 @@ local.get $2 i64.clz i32.wrap_i64 - local.tee $4 + local.tee $6 i64.extend_i32_s i64.shl local.tee $2 i64.const 4294967295 i64.and - local.tee $8 + local.tee $9 global.get $~lib/internal/number/_frc_pow local.tee $5 i64.const 4294967295 i64.and - local.tee $9 + local.tee $10 i64.mul local.set $3 local.get $5 i64.const 32 i64.shr_u - local.tee $10 - local.get $8 + local.tee $11 + local.get $9 i64.mul local.get $2 i64.const 32 i64.shr_u local.tee $2 - local.get $9 + local.get $10 i64.mul local.get $3 i64.const 32 @@ -2384,14 +2383,14 @@ i64.const 32 i64.shr_u local.get $2 - local.get $10 + local.get $11 i64.mul local.get $3 i64.const 32 i64.shr_u i64.add i64.add - local.set $13 + local.set $14 local.get $5 i64.const 4294967295 i64.and @@ -2400,22 +2399,22 @@ local.tee $3 i64.const 4294967295 i64.and - local.tee $10 + local.tee $11 i64.mul - local.set $11 - local.get $10 + local.set $12 + local.get $11 local.get $5 i64.const 32 i64.shr_u - local.tee $8 + local.tee $9 i64.mul local.get $2 local.get $3 i64.const 32 i64.shr_u - local.tee $9 + local.tee $10 i64.mul - local.get $11 + local.get $12 i64.const 32 i64.shr_u i64.add @@ -2427,41 +2426,41 @@ i64.add i64.const 32 i64.shr_u - local.get $8 local.get $9 + local.get $10 i64.mul local.get $2 i64.const 32 i64.shr_u i64.add i64.add - local.set $11 + local.set $12 global.get $~lib/internal/number/_frc_minus local.tee $2 i64.const 4294967295 i64.and - local.tee $8 + local.tee $9 local.get $5 i64.const 4294967295 i64.and - local.tee $9 + local.tee $10 i64.mul local.set $3 - local.get $11 + local.get $12 i64.const 1 i64.sub - local.tee $11 + local.tee $12 local.get $5 i64.const 32 i64.shr_u - local.tee $10 - local.get $8 + local.tee $11 + local.get $9 i64.mul local.get $2 i64.const 32 i64.shr_u local.tee $2 - local.get $9 + local.get $10 i64.mul local.get $3 i64.const 32 @@ -2476,7 +2475,7 @@ i64.const 32 i64.shr_u local.get $2 - local.get $10 + local.get $11 i64.mul local.get $3 i64.const 32 @@ -2487,35 +2486,35 @@ i64.add i64.sub local.set $3 - local.get $12 + local.get $13 i32.const 1 i32.shl local.get $0 i32.add local.get $0 - local.get $13 - global.get $~lib/internal/number/_exp_pow - local.tee $14 + local.get $14 local.get $7 - local.get $4 + local.get $6 i32.sub + global.get $~lib/internal/number/_exp_pow + local.tee $6 i32.add i32.const -64 i32.sub - local.get $11 + local.get $12 global.get $~lib/internal/number/_exp - local.get $14 + local.get $6 i32.add i32.const -64 i32.sub local.get $3 - local.get $12 + local.get $13 call $~lib/internal/number/genDigits - local.get $12 + local.get $13 i32.sub global.get $~lib/internal/number/_K call $~lib/internal/number/prettify - local.get $12 + local.get $13 i32.add ) (func $~lib/string/String#substring (; 13 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) diff --git a/tests/compiler/number.untouched.wat b/tests/compiler/number.untouched.wat index a23439d0..25ba4cc0 100644 --- a/tests/compiler/number.untouched.wat +++ b/tests/compiler/number.untouched.wat @@ -45,7 +45,6 @@ (global $~lib/allocator/arena/offset (mut i32) (i32.const 0)) (global $number/a (mut i32) (i32.const 1)) (global $~lib/ASC_SHRINK_LEVEL i32 (i32.const 0)) - (global $~lib/internal/number/MAX_DOUBLE_LENGTH i32 (i32.const 28)) (global $~lib/internal/number/_frc_plus (mut i64) (i64.const 0)) (global $~lib/internal/number/_frc_minus (mut i64) (i64.const 0)) (global $~lib/internal/number/_exp (mut i32) (i32.const 0)) @@ -275,9 +274,7 @@ (local $10 i32) (local $11 i64) (local $12 i64) - block $~lib/internal/number/DIGITS|inlined.0 (result i32) - i32.const 584 - end + i32.const 584 i32.load local.set $3 block $break|0 @@ -678,9 +675,7 @@ local.set $14 local.get $6 local.set $15 - block $~lib/internal/number/POWERS10|inlined.0 (result i32) - i32.const 2064 - end + i32.const 2064 i32.load local.set $16 block $break|0 @@ -3184,14 +3179,10 @@ i32.shl i32.sub global.set $~lib/internal/number/_K - block $~lib/internal/number/FRC_POWERS|inlined.0 (result i32) - i32.const 1728 - end + i32.const 1728 i32.load local.set $11 - block $~lib/internal/number/EXP_POWERS|inlined.0 (result i32) - i32.const 1992 - end + i32.const 1992 i32.load local.set $17 block $~lib/internal/arraybuffer/LOAD|inlined.0 (result i64) @@ -3662,7 +3653,7 @@ select return end - global.get $~lib/internal/number/MAX_DOUBLE_LENGTH + i32.const 28 call $~lib/internal/string/allocateUnsafe local.set $1 local.get $1 diff --git a/tests/compiler/std/array.optimized.wat b/tests/compiler/std/array.optimized.wat index 5dc3bec2..f8148ea0 100644 --- a/tests/compiler/std/array.optimized.wat +++ b/tests/compiler/std/array.optimized.wat @@ -299,45 +299,43 @@ (data (i32.const 7136) "\t\00\00\001\00,\006\005\005\003\005\00,\000") (data (i32.const 7160) "\18\00\00\00\00\00\00\00\01\00\00\00\00\00\00\00\ff\ff\ff\ff\ff\ff\ff\ff") (data (i32.const 7192) "\f8\1b\00\00\03") - (data (i32.const 7200) "\90\01\00\00\00\00\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009") - (data (i32.const 7712) " \1c\00\00d") - (data (i32.const 7720) "\18\00\00\00\00\00\00\00\01\00\00\00\00\00\00\00\ff\ff\ff\ff\ff\ff\ff\ff") - (data (i32.const 7752) "(\1e\00\00\03") - (data (i32.const 7760) "\18\00\00\001\00,\001\008\004\004\006\007\004\004\000\007\003\007\000\009\005\005\001\006\001\005\00,\000") - (data (i32.const 7816) " \00\00\00\00\00\00\00\ff\ff\ff\ff\ff\ff\ff\ff@Eu\c3*\9d\fb\ff") - (data (i32.const 7848) "\ff\ff\ff\ff\ff\ff\ff\7f") - (data (i32.const 7880) "\88\1e\00\00\04") - (data (i32.const 7888) " \00\00\00\00\00\00\00\ff\ff\ff\ff\ff\ff\ff\ff@Eu\c3*\9d\fb\ff") - (data (i32.const 7920) "\ff\ff\ff\ff\ff\ff\ff\7f") - (data (i32.const 7952) "\d0\1e\00\00\04") - (data (i32.const 7960) "*\00\00\00-\001\00,\00-\001\002\003\004\005\006\007\008\009\000\001\002\003\004\005\006\00,\000\00,\009\002\002\003\003\007\002\000\003\006\008\005\004\007\007\005\008\000\007") - (data (i32.const 8048) "\0d\00\00\00,\00a\00,\00a\00,\00a\00b\00,\00b\00,\00b\00a\00,") - (data (i32.const 8080) "\01\00\00\002") - (data (i32.const 8088) "\01\00\00\004") - (data (i32.const 8096) "\10\00\00\00\00\00\00\00\80\1a\00\00\90\1f\00\00\00\00\00\00\98\1f") - (data (i32.const 8128) "\a0\1f\00\00\04") - (data (i32.const 8136) "\10\00\00\00\00\00\00\00\80\1a\00\00\90\1f\00\00\00\00\00\00\98\1f") - (data (i32.const 8168) "\c8\1f\00\00\04") - (data (i32.const 8176) "\06\00\00\001\00,\002\00,\00,\004") - (data (i32.const 8192) "\08\00\00\00\00\00\00\00\01\00\00\00\02") - (data (i32.const 8209) " \00\00\02") - (data (i32.const 8216) "\08\00\00\00\00\00\00\00\03\00\00\00\04") - (data (i32.const 8232) "\18 \00\00\02") - (data (i32.const 8240) "\08\00\00\00\00\00\00\00\10 \00\00( ") - (data (i32.const 8256) "0 \00\00\02") - (data (i32.const 8264) "\07\00\00\001\00,\002\00,\003\00,\004") - (data (i32.const 8288) "\02\00\00\00\00\00\00\00\01\02") - (data (i32.const 8304) "` \00\00\02") - (data (i32.const 8312) "\02\00\00\00\00\00\00\00\03\04") - (data (i32.const 8328) "x \00\00\02") - (data (i32.const 8336) "\08\00\00\00\00\00\00\00p \00\00\88 ") - (data (i32.const 8352) "\90 \00\00\02") - (data (i32.const 8360) "\04\00\00\00\00\00\00\00\01") - (data (i32.const 8376) "\a8 \00\00\01") - (data (i32.const 8384) "\04\00\00\00\00\00\00\00\b8 ") - (data (i32.const 8400) "\c0 \00\00\01") - (data (i32.const 8408) "\04\00\00\00\00\00\00\00\d0 ") - (data (i32.const 8424) "\d8 \00\00\01") + (data (i32.const 7200) "\18\00\00\00\00\00\00\00\01\00\00\00\00\00\00\00\ff\ff\ff\ff\ff\ff\ff\ff") + (data (i32.const 7232) " \1c\00\00\03") + (data (i32.const 7240) "\18\00\00\001\00,\001\008\004\004\006\007\004\004\000\007\003\007\000\009\005\005\001\006\001\005\00,\000") + (data (i32.const 7296) " \00\00\00\00\00\00\00\ff\ff\ff\ff\ff\ff\ff\ff@Eu\c3*\9d\fb\ff") + (data (i32.const 7328) "\ff\ff\ff\ff\ff\ff\ff\7f") + (data (i32.const 7360) "\80\1c\00\00\04") + (data (i32.const 7368) " \00\00\00\00\00\00\00\ff\ff\ff\ff\ff\ff\ff\ff@Eu\c3*\9d\fb\ff") + (data (i32.const 7400) "\ff\ff\ff\ff\ff\ff\ff\7f") + (data (i32.const 7432) "\c8\1c\00\00\04") + (data (i32.const 7440) "*\00\00\00-\001\00,\00-\001\002\003\004\005\006\007\008\009\000\001\002\003\004\005\006\00,\000\00,\009\002\002\003\003\007\002\000\003\006\008\005\004\007\007\005\008\000\007") + (data (i32.const 7528) "\0d\00\00\00,\00a\00,\00a\00,\00a\00b\00,\00b\00,\00b\00a\00,") + (data (i32.const 7560) "\01\00\00\002") + (data (i32.const 7568) "\01\00\00\004") + (data (i32.const 7576) "\10\00\00\00\00\00\00\00\80\1a\00\00\88\1d\00\00\00\00\00\00\90\1d") + (data (i32.const 7608) "\98\1d\00\00\04") + (data (i32.const 7616) "\10\00\00\00\00\00\00\00\80\1a\00\00\88\1d\00\00\00\00\00\00\90\1d") + (data (i32.const 7648) "\c0\1d\00\00\04") + (data (i32.const 7656) "\06\00\00\001\00,\002\00,\00,\004") + (data (i32.const 7672) "\08\00\00\00\00\00\00\00\01\00\00\00\02") + (data (i32.const 7688) "\f8\1d\00\00\02") + (data (i32.const 7696) "\08\00\00\00\00\00\00\00\03\00\00\00\04") + (data (i32.const 7712) "\10\1e\00\00\02") + (data (i32.const 7720) "\08\00\00\00\00\00\00\00\08\1e\00\00 \1e") + (data (i32.const 7736) "(\1e\00\00\02") + (data (i32.const 7744) "\07\00\00\001\00,\002\00,\003\00,\004") + (data (i32.const 7768) "\02\00\00\00\00\00\00\00\01\02") + (data (i32.const 7784) "X\1e\00\00\02") + (data (i32.const 7792) "\02\00\00\00\00\00\00\00\03\04") + (data (i32.const 7808) "p\1e\00\00\02") + (data (i32.const 7816) "\08\00\00\00\00\00\00\00h\1e\00\00\80\1e") + (data (i32.const 7832) "\88\1e\00\00\02") + (data (i32.const 7840) "\04\00\00\00\00\00\00\00\01") + (data (i32.const 7856) "\a0\1e\00\00\01") + (data (i32.const 7864) "\04\00\00\00\00\00\00\00\b0\1e") + (data (i32.const 7880) "\b8\1e\00\00\01") + (data (i32.const 7888) "\04\00\00\00\00\00\00\00\c8\1e") + (data (i32.const 7904) "\d0\1e\00\00\01") (table $0 56 funcref) (elem (i32.const 0) $null $start:std/array~anonymous|1 $start:std/array~anonymous|2 $start:std/array~anonymous|3 $start:std/array~anonymous|4 $start:std/array~anonymous|3 $start:std/array~anonymous|6 $start:std/array~anonymous|7 $start:std/array~anonymous|8 $start:std/array~anonymous|9 $start:std/array~anonymous|10 $start:std/array~anonymous|11 $start:std/array~anonymous|12 $start:std/array~anonymous|13 $start:std/array~anonymous|14 $start:std/array~anonymous|15 $start:std/array~anonymous|16 $start:std/array~anonymous|17 $start:std/array~anonymous|18 $start:std/array~anonymous|17 $start:std/array~anonymous|20 $start:std/array~anonymous|21 $start:std/array~anonymous|22 $start:std/array~anonymous|23 $start:std/array~anonymous|24 $start:std/array~anonymous|25 $start:std/array~anonymous|26 $start:std/array~anonymous|27 $start:std/array~anonymous|28 $start:std/array~anonymous|29 $start:std/array~anonymous|30 $start:std/array~anonymous|30 $start:std/array~anonymous|32 $start:std/array~anonymous|33 $start:std/array~anonymous|34 $start:std/array~anonymous|30 $start:std/array~anonymous|36 $start:std/array~anonymous|30 $start:std/array~anonymous|30 $start:std/array~anonymous|32 $start:std/array~anonymous|33 $start:std/array~anonymous|34 $start:std/array~anonymous|30 $start:std/array~anonymous|36 $~lib/internal/sort/COMPARATOR~anonymous|44 $~lib/internal/sort/COMPARATOR~anonymous|45 $~lib/internal/sort/COMPARATOR~anonymous|46 $~lib/internal/sort/COMPARATOR~anonymous|47 $~lib/internal/sort/COMPARATOR~anonymous|46 $~lib/internal/sort/COMPARATOR~anonymous|46 $start:std/array~anonymous|50 $~lib/internal/sort/COMPARATOR~anonymous|46 $start:std/array~anonymous|50 $start:std/array~anonymous|53 $start:std/array~anonymous|54 $~lib/internal/sort/COMPARATOR~anonymous|55) (global $~lib/allocator/arena/startOffset (mut i32) (i32.const 0)) @@ -392,9 +390,9 @@ (global $~lib/internal/number/_frc_pow (mut i64) (i64.const 0)) (global $~lib/internal/number/_exp_pow (mut i32) (i32.const 0)) (global $std/array/refArr (mut i32) (i32.const 0)) - (global $std/array/subarr32 (mut i32) (i32.const 8256)) - (global $std/array/subarr8 (mut i32) (i32.const 8352)) - (global $std/array/subarrU32 (mut i32) (i32.const 8424)) + (global $std/array/subarr32 (mut i32) (i32.const 7736)) + (global $std/array/subarr8 (mut i32) (i32.const 7832)) + (global $std/array/subarrU32 (mut i32) (i32.const 7904)) (export "memory" (memory $0)) (export "table" (table $0)) (start $start) @@ -7804,17 +7802,17 @@ (local $5 i64) (local $6 i32) (local $7 i32) - (local $8 i64) + (local $8 i32) (local $9 i64) (local $10 i64) (local $11 i64) - (local $12 i32) - (local $13 i64) - (local $14 i32) + (local $12 i64) + (local $13 i32) + (local $14 i64) local.get $1 f64.const 0 f64.lt - local.tee $12 + local.tee $13 if (result f64) local.get $0 i32.const 45 @@ -7825,14 +7823,14 @@ local.get $1 end i64.reinterpret_f64 - local.tee $13 + local.tee $14 i64.const 9218868437227405312 i64.and i64.const 52 i64.shr_u i32.wrap_i64 local.set $7 - local.get $13 + local.get $14 i64.const 4503599627370495 i64.and local.get $7 @@ -7853,7 +7851,7 @@ local.tee $7 i32.const 1 i32.sub - local.set $6 + local.set $8 local.get $2 i64.const 1 i64.shl @@ -7874,23 +7872,23 @@ i64.eq i32.const 1 i32.add - local.tee $14 + local.tee $6 i64.extend_i32_s i64.shl i64.const 1 i64.sub local.get $7 - local.get $14 - i32.sub local.get $6 + i32.sub + local.get $8 local.get $4 i32.sub - local.tee $6 + local.tee $8 i32.sub i64.extend_i32_s i64.shl global.set $~lib/internal/number/_frc_minus - local.get $6 + local.get $8 global.set $~lib/internal/number/_exp i32.const 348 i32.const -61 @@ -7913,24 +7911,23 @@ i32.shr_s i32.const 1 i32.add - local.tee $6 + local.tee $8 i32.const 3 i32.shl + local.tee $4 i32.sub global.set $~lib/internal/number/_K i32.const 6544 i32.load - local.set $4 + local.set $6 i32.const 6280 i32.load - local.get $6 - i32.const 3 - i32.shl + local.get $4 i32.add i64.load offset=8 global.set $~lib/internal/number/_frc_pow - local.get $4 local.get $6 + local.get $8 i32.const 1 i32.shl i32.add @@ -7940,31 +7937,31 @@ local.get $2 i64.clz i32.wrap_i64 - local.tee $4 + local.tee $6 i64.extend_i32_s i64.shl local.tee $2 i64.const 4294967295 i64.and - local.tee $8 + local.tee $9 global.get $~lib/internal/number/_frc_pow local.tee $5 i64.const 4294967295 i64.and - local.tee $9 + local.tee $10 i64.mul local.set $3 local.get $5 i64.const 32 i64.shr_u - local.tee $10 - local.get $8 + local.tee $11 + local.get $9 i64.mul local.get $2 i64.const 32 i64.shr_u local.tee $2 - local.get $9 + local.get $10 i64.mul local.get $3 i64.const 32 @@ -7979,14 +7976,14 @@ i64.const 32 i64.shr_u local.get $2 - local.get $10 + local.get $11 i64.mul local.get $3 i64.const 32 i64.shr_u i64.add i64.add - local.set $13 + local.set $14 local.get $5 i64.const 4294967295 i64.and @@ -7995,22 +7992,22 @@ local.tee $3 i64.const 4294967295 i64.and - local.tee $10 + local.tee $11 i64.mul - local.set $11 - local.get $10 + local.set $12 + local.get $11 local.get $5 i64.const 32 i64.shr_u - local.tee $8 + local.tee $9 i64.mul local.get $2 local.get $3 i64.const 32 i64.shr_u - local.tee $9 + local.tee $10 i64.mul - local.get $11 + local.get $12 i64.const 32 i64.shr_u i64.add @@ -8022,41 +8019,41 @@ i64.add i64.const 32 i64.shr_u - local.get $8 local.get $9 + local.get $10 i64.mul local.get $2 i64.const 32 i64.shr_u i64.add i64.add - local.set $11 + local.set $12 global.get $~lib/internal/number/_frc_minus local.tee $2 i64.const 4294967295 i64.and - local.tee $8 + local.tee $9 local.get $5 i64.const 4294967295 i64.and - local.tee $9 + local.tee $10 i64.mul local.set $3 - local.get $11 + local.get $12 i64.const 1 i64.sub - local.tee $11 + local.tee $12 local.get $5 i64.const 32 i64.shr_u - local.tee $10 - local.get $8 + local.tee $11 + local.get $9 i64.mul local.get $2 i64.const 32 i64.shr_u local.tee $2 - local.get $9 + local.get $10 i64.mul local.get $3 i64.const 32 @@ -8071,7 +8068,7 @@ i64.const 32 i64.shr_u local.get $2 - local.get $10 + local.get $11 i64.mul local.get $3 i64.const 32 @@ -8082,35 +8079,35 @@ i64.add i64.sub local.set $3 - local.get $12 + local.get $13 i32.const 1 i32.shl local.get $0 i32.add local.get $0 - local.get $13 - global.get $~lib/internal/number/_exp_pow - local.tee $14 + local.get $14 local.get $7 - local.get $4 + local.get $6 i32.sub + global.get $~lib/internal/number/_exp_pow + local.tee $6 i32.add i32.const -64 i32.sub - local.get $11 + local.get $12 global.get $~lib/internal/number/_exp - local.get $14 + local.get $6 i32.add i32.const -64 i32.sub local.get $3 - local.get $12 + local.get $13 call $~lib/internal/number/genDigits - local.get $12 + local.get $13 i32.sub global.get $~lib/internal/number/_K call $~lib/internal/number/prettify - local.get $12 + local.get $13 i32.add ) (func $~lib/internal/number/dtoa (; 124 ;) (type $Fi) (param $0 f64) (result i32) @@ -8996,7 +8993,7 @@ (local $4 i32) (local $5 i32) (local $6 i32) - i32.const 7712 + i32.const 4832 i32.load local.set $3 loop $continue|0 @@ -9173,7 +9170,7 @@ (local $5 i32) (local $6 i32) (local $7 i32) - i32.const 7756 + i32.const 7236 i32.load i32.const 1 i32.sub @@ -9184,7 +9181,7 @@ i32.const 3904 return end - i32.const 7752 + i32.const 7232 i32.load local.set $4 i32.const 4216 @@ -9412,7 +9409,7 @@ (local $5 i32) (local $6 i32) (local $7 i32) - i32.const 7956 + i32.const 7436 i32.load i32.const 1 i32.sub @@ -9423,7 +9420,7 @@ i32.const 3904 return end - i32.const 7952 + i32.const 7432 i32.load local.set $4 i32.const 4216 @@ -10046,7 +10043,7 @@ (func $start:std/array (; 147 ;) (type $_) (local $0 i32) (local $1 i32) - i32.const 8432 + i32.const 7912 global.set $~lib/allocator/arena/startOffset global.get $~lib/allocator/arena/startOffset global.set $~lib/allocator/arena/offset @@ -14407,7 +14404,7 @@ unreachable end call $~lib/array/Array#join - i32.const 7760 + i32.const 7240 call $~lib/string/String.__eq i32.eqz if @@ -14419,7 +14416,7 @@ unreachable end call $~lib/array/Array#join - i32.const 7960 + i32.const 7440 call $~lib/string/String.__eq i32.eqz if @@ -14433,7 +14430,7 @@ global.get $std/array/randomStringsExpected i32.const 4216 call $~lib/array/Array#join - i32.const 8048 + i32.const 7528 call $~lib/string/String.__eq i32.eqz if @@ -14444,10 +14441,10 @@ call $~lib/env/abort unreachable end - i32.const 8168 + i32.const 7648 i32.const 4216 call $~lib/array/Array#join - i32.const 8176 + i32.const 7656 call $~lib/string/String.__eq i32.eqz if @@ -14460,7 +14457,7 @@ end global.get $std/array/subarr32 call $~lib/array/Array>#join - i32.const 8264 + i32.const 7744 call $~lib/string/String.__eq i32.eqz if @@ -14473,7 +14470,7 @@ end global.get $std/array/subarr8 call $~lib/array/Array>#join - i32.const 8264 + i32.const 7744 call $~lib/string/String.__eq i32.eqz if diff --git a/tests/compiler/std/array.untouched.wat b/tests/compiler/std/array.untouched.wat index d29923f2..5ba2c885 100644 --- a/tests/compiler/std/array.untouched.wat +++ b/tests/compiler/std/array.untouched.wat @@ -296,43 +296,41 @@ (data (i32.const 7136) "\t\00\00\001\00,\006\005\005\003\005\00,\000\00") (data (i32.const 7160) "\18\00\00\00\00\00\00\00\01\00\00\00\00\00\00\00\ff\ff\ff\ff\ff\ff\ff\ff\00\00\00\00\00\00\00\00") (data (i32.const 7192) "\f8\1b\00\00\03\00\00\00") - (data (i32.const 7200) "\90\01\00\00\00\00\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 7712) " \1c\00\00d\00\00\00") - (data (i32.const 7720) "\18\00\00\00\00\00\00\00\01\00\00\00\00\00\00\00\ff\ff\ff\ff\ff\ff\ff\ff\00\00\00\00\00\00\00\00") - (data (i32.const 7752) "(\1e\00\00\03\00\00\00") - (data (i32.const 7760) "\18\00\00\001\00,\001\008\004\004\006\007\004\004\000\007\003\007\000\009\005\005\001\006\001\005\00,\000\00") - (data (i32.const 7816) " \00\00\00\00\00\00\00\ff\ff\ff\ff\ff\ff\ff\ff@Eu\c3*\9d\fb\ff\00\00\00\00\00\00\00\00\ff\ff\ff\ff\ff\ff\ff\7f\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 7880) "\88\1e\00\00\04\00\00\00") - (data (i32.const 7888) " \00\00\00\00\00\00\00\ff\ff\ff\ff\ff\ff\ff\ff@Eu\c3*\9d\fb\ff\00\00\00\00\00\00\00\00\ff\ff\ff\ff\ff\ff\ff\7f\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 7952) "\d0\1e\00\00\04\00\00\00") - (data (i32.const 7960) "*\00\00\00-\001\00,\00-\001\002\003\004\005\006\007\008\009\000\001\002\003\004\005\006\00,\000\00,\009\002\002\003\003\007\002\000\003\006\008\005\004\007\007\005\008\000\007\00") - (data (i32.const 8048) "\0d\00\00\00,\00a\00,\00a\00,\00a\00b\00,\00b\00,\00b\00a\00,\00") - (data (i32.const 8080) "\01\00\00\002\00") - (data (i32.const 8088) "\01\00\00\004\00") - (data (i32.const 8096) "\10\00\00\00\00\00\00\00\80\1a\00\00\90\1f\00\00\00\00\00\00\98\1f\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 8128) "\a0\1f\00\00\04\00\00\00") - (data (i32.const 8136) "\10\00\00\00\00\00\00\00\80\1a\00\00\90\1f\00\00\00\00\00\00\98\1f\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 8168) "\c8\1f\00\00\04\00\00\00") - (data (i32.const 8176) "\06\00\00\001\00,\002\00,\00,\004\00") - (data (i32.const 8192) "\08\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00") - (data (i32.const 8208) "\00 \00\00\02\00\00\00") - (data (i32.const 8216) "\08\00\00\00\00\00\00\00\03\00\00\00\04\00\00\00") - (data (i32.const 8232) "\18 \00\00\02\00\00\00") - (data (i32.const 8240) "\08\00\00\00\00\00\00\00\10 \00\00( \00\00") - (data (i32.const 8256) "0 \00\00\02\00\00\00") - (data (i32.const 8264) "\07\00\00\001\00,\002\00,\003\00,\004\00") - (data (i32.const 8288) "\02\00\00\00\00\00\00\00\01\02\00\00\00\00\00\00") - (data (i32.const 8304) "` \00\00\02\00\00\00") - (data (i32.const 8312) "\02\00\00\00\00\00\00\00\03\04\00\00\00\00\00\00") - (data (i32.const 8328) "x \00\00\02\00\00\00") - (data (i32.const 8336) "\08\00\00\00\00\00\00\00p \00\00\88 \00\00") - (data (i32.const 8352) "\90 \00\00\02\00\00\00") - (data (i32.const 8360) "\04\00\00\00\00\00\00\00\01\00\00\00\00\00\00\00") - (data (i32.const 8376) "\a8 \00\00\01\00\00\00") - (data (i32.const 8384) "\04\00\00\00\00\00\00\00\b8 \00\00\00\00\00\00") - (data (i32.const 8400) "\c0 \00\00\01\00\00\00") - (data (i32.const 8408) "\04\00\00\00\00\00\00\00\d0 \00\00\00\00\00\00") - (data (i32.const 8424) "\d8 \00\00\01\00\00\00") + (data (i32.const 7200) "\18\00\00\00\00\00\00\00\01\00\00\00\00\00\00\00\ff\ff\ff\ff\ff\ff\ff\ff\00\00\00\00\00\00\00\00") + (data (i32.const 7232) " \1c\00\00\03\00\00\00") + (data (i32.const 7240) "\18\00\00\001\00,\001\008\004\004\006\007\004\004\000\007\003\007\000\009\005\005\001\006\001\005\00,\000\00") + (data (i32.const 7296) " \00\00\00\00\00\00\00\ff\ff\ff\ff\ff\ff\ff\ff@Eu\c3*\9d\fb\ff\00\00\00\00\00\00\00\00\ff\ff\ff\ff\ff\ff\ff\7f\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 7360) "\80\1c\00\00\04\00\00\00") + (data (i32.const 7368) " \00\00\00\00\00\00\00\ff\ff\ff\ff\ff\ff\ff\ff@Eu\c3*\9d\fb\ff\00\00\00\00\00\00\00\00\ff\ff\ff\ff\ff\ff\ff\7f\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 7432) "\c8\1c\00\00\04\00\00\00") + (data (i32.const 7440) "*\00\00\00-\001\00,\00-\001\002\003\004\005\006\007\008\009\000\001\002\003\004\005\006\00,\000\00,\009\002\002\003\003\007\002\000\003\006\008\005\004\007\007\005\008\000\007\00") + (data (i32.const 7528) "\0d\00\00\00,\00a\00,\00a\00,\00a\00b\00,\00b\00,\00b\00a\00,\00") + (data (i32.const 7560) "\01\00\00\002\00") + (data (i32.const 7568) "\01\00\00\004\00") + (data (i32.const 7576) "\10\00\00\00\00\00\00\00\80\1a\00\00\88\1d\00\00\00\00\00\00\90\1d\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 7608) "\98\1d\00\00\04\00\00\00") + (data (i32.const 7616) "\10\00\00\00\00\00\00\00\80\1a\00\00\88\1d\00\00\00\00\00\00\90\1d\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 7648) "\c0\1d\00\00\04\00\00\00") + (data (i32.const 7656) "\06\00\00\001\00,\002\00,\00,\004\00") + (data (i32.const 7672) "\08\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00") + (data (i32.const 7688) "\f8\1d\00\00\02\00\00\00") + (data (i32.const 7696) "\08\00\00\00\00\00\00\00\03\00\00\00\04\00\00\00") + (data (i32.const 7712) "\10\1e\00\00\02\00\00\00") + (data (i32.const 7720) "\08\00\00\00\00\00\00\00\08\1e\00\00 \1e\00\00") + (data (i32.const 7736) "(\1e\00\00\02\00\00\00") + (data (i32.const 7744) "\07\00\00\001\00,\002\00,\003\00,\004\00") + (data (i32.const 7768) "\02\00\00\00\00\00\00\00\01\02\00\00\00\00\00\00") + (data (i32.const 7784) "X\1e\00\00\02\00\00\00") + (data (i32.const 7792) "\02\00\00\00\00\00\00\00\03\04\00\00\00\00\00\00") + (data (i32.const 7808) "p\1e\00\00\02\00\00\00") + (data (i32.const 7816) "\08\00\00\00\00\00\00\00h\1e\00\00\80\1e\00\00") + (data (i32.const 7832) "\88\1e\00\00\02\00\00\00") + (data (i32.const 7840) "\04\00\00\00\00\00\00\00\01\00\00\00\00\00\00\00") + (data (i32.const 7856) "\a0\1e\00\00\01\00\00\00") + (data (i32.const 7864) "\04\00\00\00\00\00\00\00\b0\1e\00\00\00\00\00\00") + (data (i32.const 7880) "\b8\1e\00\00\01\00\00\00") + (data (i32.const 7888) "\04\00\00\00\00\00\00\00\c8\1e\00\00\00\00\00\00") + (data (i32.const 7904) "\d0\1e\00\00\01\00\00\00") (table $0 56 funcref) (elem (i32.const 0) $null $start:std/array~anonymous|1 $start:std/array~anonymous|2 $start:std/array~anonymous|3 $start:std/array~anonymous|4 $start:std/array~anonymous|5 $start:std/array~anonymous|6 $start:std/array~anonymous|7 $start:std/array~anonymous|8 $start:std/array~anonymous|9 $start:std/array~anonymous|10 $start:std/array~anonymous|11 $start:std/array~anonymous|12 $start:std/array~anonymous|13 $start:std/array~anonymous|14 $start:std/array~anonymous|15 $start:std/array~anonymous|16 $start:std/array~anonymous|17 $start:std/array~anonymous|18 $start:std/array~anonymous|19 $start:std/array~anonymous|20 $start:std/array~anonymous|21 $start:std/array~anonymous|22 $start:std/array~anonymous|23 $start:std/array~anonymous|24 $start:std/array~anonymous|25 $start:std/array~anonymous|26 $start:std/array~anonymous|27 $start:std/array~anonymous|28 $start:std/array~anonymous|29 $start:std/array~anonymous|30 $start:std/array~anonymous|31 $start:std/array~anonymous|32 $start:std/array~anonymous|33 $start:std/array~anonymous|34 $start:std/array~anonymous|35 $start:std/array~anonymous|36 $start:std/array~anonymous|37 $start:std/array~anonymous|38 $start:std/array~anonymous|39 $start:std/array~anonymous|40 $start:std/array~anonymous|41 $start:std/array~anonymous|42 $start:std/array~anonymous|43 $~lib/internal/sort/COMPARATOR~anonymous|44 $~lib/internal/sort/COMPARATOR~anonymous|45 $~lib/internal/sort/COMPARATOR~anonymous|46 $~lib/internal/sort/COMPARATOR~anonymous|47 $~lib/internal/sort/COMPARATOR~anonymous|48 $start:std/array~anonymous|49 $start:std/array~anonymous|50 $start:std/array~anonymous|51 $start:std/array~anonymous|52 $start:std/array~anonymous|53 $start:std/array~anonymous|54 $~lib/internal/sort/COMPARATOR~anonymous|55) (global $~lib/allocator/arena/startOffset (mut i32) (i32.const 0)) @@ -386,7 +384,6 @@ (global $std/array/randomStrings400 (mut i32) (i32.const 0)) (global $~lib/ASC_SHRINK_LEVEL i32 (i32.const 0)) (global $~lib/builtins/i32.MIN_VALUE i32 (i32.const -2147483648)) - (global $~lib/internal/number/MAX_DOUBLE_LENGTH i32 (i32.const 28)) (global $~lib/internal/number/_frc_plus (mut i64) (i64.const 0)) (global $~lib/internal/number/_frc_minus (mut i64) (i64.const 0)) (global $~lib/internal/number/_exp (mut i32) (i32.const 0)) @@ -396,10 +393,10 @@ (global $std/array/refArr (mut i32) (i32.const 0)) (global $~lib/builtins/u32.MAX_VALUE i32 (i32.const -1)) (global $~lib/builtins/i64.MAX_VALUE i64 (i64.const 9223372036854775807)) - (global $std/array/subarr32 (mut i32) (i32.const 8256)) - (global $std/array/subarr8 (mut i32) (i32.const 8352)) - (global $std/array/subarrU32 (mut i32) (i32.const 8424)) - (global $~lib/memory/HEAP_BASE i32 (i32.const 8432)) + (global $std/array/subarr32 (mut i32) (i32.const 7736)) + (global $std/array/subarr8 (mut i32) (i32.const 7832)) + (global $std/array/subarrU32 (mut i32) (i32.const 7904)) + (global $~lib/memory/HEAP_BASE i32 (i32.const 7912)) (export "memory" (memory $0)) (export "table" (table $0)) (start $start) @@ -12021,9 +12018,7 @@ (local $10 i32) (local $11 i64) (local $12 i64) - block $~lib/internal/number/DIGITS|inlined.0 (result i32) - i32.const 4832 - end + i32.const 4832 i32.load local.set $3 block $break|0 @@ -12833,9 +12828,7 @@ local.set $14 local.get $6 local.set $15 - block $~lib/internal/number/POWERS10|inlined.0 (result i32) - i32.const 6616 - end + i32.const 6616 i32.load local.set $16 block $break|0 @@ -13911,14 +13904,10 @@ i32.shl i32.sub global.set $~lib/internal/number/_K - block $~lib/internal/number/FRC_POWERS|inlined.0 (result i32) - i32.const 6280 - end + i32.const 6280 i32.load local.set $11 - block $~lib/internal/number/EXP_POWERS|inlined.0 (result i32) - i32.const 6544 - end + i32.const 6544 i32.load local.set $17 block $~lib/internal/arraybuffer/LOAD|inlined.0 (result i64) @@ -14247,7 +14236,7 @@ select return end - global.get $~lib/internal/number/MAX_DOUBLE_LENGTH + i32.const 28 call $~lib/internal/string/allocateUnsafe local.set $1 local.get $1 @@ -15652,9 +15641,7 @@ (local $14 i32) (local $15 i64) (local $16 i64) - block $~lib/internal/number/DIGITS|inlined.1 (result i32) - i32.const 7712 - end + i32.const 4832 i32.load local.set $3 block $break|0 @@ -21696,13 +21683,13 @@ unreachable end block $~lib/array/Array#toString|inlined.1 (result i32) - i32.const 7752 + i32.const 7232 local.set $3 local.get $3 i32.const 4216 call $~lib/array/Array#join end - i32.const 7760 + i32.const 7240 call $~lib/string/String.__eq i32.eqz if @@ -21714,13 +21701,13 @@ unreachable end block $~lib/array/Array#toString|inlined.1 (result i32) - i32.const 7952 + i32.const 7432 local.set $3 local.get $3 i32.const 4216 call $~lib/array/Array#join end - i32.const 7960 + i32.const 7440 call $~lib/string/String.__eq i32.eqz if @@ -21738,7 +21725,7 @@ i32.const 4216 call $~lib/array/Array#join end - i32.const 8048 + i32.const 7528 call $~lib/string/String.__eq i32.eqz if @@ -21750,13 +21737,13 @@ unreachable end block $~lib/array/Array#toString|inlined.3 (result i32) - i32.const 8168 + i32.const 7648 local.set $3 local.get $3 i32.const 4216 call $~lib/array/Array#join end - i32.const 8176 + i32.const 7656 call $~lib/string/String.__eq i32.eqz if @@ -21774,7 +21761,7 @@ i32.const 4216 call $~lib/array/Array>#join end - i32.const 8264 + i32.const 7744 call $~lib/string/String.__eq i32.eqz if @@ -21792,7 +21779,7 @@ i32.const 4216 call $~lib/array/Array>#join end - i32.const 8264 + i32.const 7744 call $~lib/string/String.__eq i32.eqz if diff --git a/tests/compiler/std/string.optimized.wat b/tests/compiler/std/string.optimized.wat index 740c747a..ba824890 100644 --- a/tests/compiler/std/string.optimized.wat +++ b/tests/compiler/std/string.optimized.wat @@ -110,74 +110,72 @@ (data (i32.const 2032) "\04\00\00\001\000\000\000") (data (i32.const 2048) "\n\00\00\002\001\004\007\004\008\003\006\004\008") (data (i32.const 2072) "\n\00\00\004\002\009\004\009\006\007\002\009\005") - (data (i32.const 2096) "\90\01\00\00\00\00\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009") - (data (i32.const 2608) "0\08\00\00d") - (data (i32.const 2616) "\08\00\00\009\009\009\009\009\009\009\009") - (data (i32.const 2640) "\t\00\00\001\000\000\000\000\000\000\000\000") - (data (i32.const 2664) "\0b\00\00\006\008\007\001\009\004\007\006\007\003\005") - (data (i32.const 2696) "\0c\00\00\008\006\008\007\001\009\004\007\006\007\003\005") - (data (i32.const 2728) "\0f\00\00\009\009\009\008\006\008\007\001\009\004\007\006\007\003\005") - (data (i32.const 2768) "\10\00\00\009\009\009\009\008\006\008\007\001\009\004\007\006\007\003\005") - (data (i32.const 2808) "\11\00\00\001\009\009\009\009\008\006\008\007\001\009\004\007\006\007\003\005") - (data (i32.const 2848) "\14\00\00\001\008\004\004\006\007\004\004\000\007\003\007\000\009\005\005\001\006\001\005") - (data (i32.const 2896) "\05\00\00\00-\001\002\003\004") - (data (i32.const 2912) "\0b\00\00\00-\004\002\009\004\009\006\007\002\009\005") - (data (i32.const 2944) "\0c\00\00\00-\006\008\007\001\009\004\007\006\007\003\005") - (data (i32.const 2976) "\0d\00\00\00-\008\006\008\007\001\009\004\007\006\007\003\005") - (data (i32.const 3008) "\10\00\00\00-\009\009\009\008\006\008\007\001\009\004\007\006\007\003\005") - (data (i32.const 3048) "\12\00\00\00-\001\009\009\009\009\008\006\008\007\001\009\004\007\006\007\003\005") - (data (i32.const 3088) "\13\00\00\009\002\002\003\003\007\002\000\003\006\008\005\004\007\007\005\008\000\007") - (data (i32.const 3136) "\14\00\00\00-\009\002\002\003\003\007\002\000\003\006\008\005\004\007\007\005\008\000\008") - (data (i32.const 3184) "\03\00\00\000\00.\000") - (data (i32.const 3200) "\03\00\00\00N\00a\00N") - (data (i32.const 3216) "\t\00\00\00-\00I\00n\00f\00i\00n\00i\00t\00y") - (data (i32.const 3240) "\08\00\00\00I\00n\00f\00i\00n\00i\00t\00y") - (data (i32.const 3264) "\b8\02\00\00\00\00\00\00\88\02\1c\08\a0\d5\8f\fav\bf>\a2\7f\e1\ae\bav\acU0 \fb\16\8b\ea5\ce]J\89B\cf-;eU\aa\b0k\9a\dfE\1a=\03\cf\1a\e6\ca\c6\9a\c7\17\fep\abO\dc\bc\be\fc\b1w\ff\0c\d6kA\ef\91V\be<\fc\7f\90\ad\1f\d0\8d\83\9aU1(\\Q\d3\b5\c9\a6\ad\8f\acq\9d\cb\8b\ee#w\"\9c\eamSx@\91I\cc\aeW\ce\b6]y\12<\827V\fbM6\94\10\c2O\98H8o\ea\96\90\c7:\82%\cb\85t\d7\f4\97\bf\97\cd\cf\86\a0\e5\ac*\17\98\n4\ef\8e\b25*\fbg8\b2;?\c6\d2\df\d4\c8\84\ba\cd\d3\1a\'D\dd\c5\96\c9%\bb\ce\9fk\93\84\a5b}$l\ac\db\f6\da_\0dXf\ab\a3&\f1\c3\de\93\f8\e2\f3\b8\80\ff\aa\a8\ad\b5\b5\8bJ|l\05_b\87S0\c14`\ff\bc\c9U&\ba\91\8c\85N\96\bd~)p$w\f9\df\8f\b8\e5\b8\9f\bd\df\a6\94}t\88\cf_\a9\f8\cf\9b\a8\8f\93pD\b9k\15\0f\bf\f8\f0\08\8a\b611eU%\b0\cd\ac\7f{\d0\c6\e2?\99\06;+*\c4\10\\\e4\d3\92si\99$$\aa\0e\ca\00\83\f2\b5\87\fd\eb\1a\11\92d\08\e5\bc\cc\88Po\t\cc\bc\8c,e\19\e2X\17\b7\d1\00\00\00\00\00\00@\9c\00\00\00\00\10\a5\d4\e8\00\00b\ac\c5\ebx\ad\84\t\94\f8x9?\81\b3\15\07\c9{\ce\97\c0p\\\ea{\ce2~\8fh\80\e9\ab\a48\d2\d5E\"\9a\17&\'O\9f\'\fb\c4\d41\a2c\ed\a8\ad\c8\8c8e\de\b0\dbe\ab\1a\8e\08\c7\83\9a\1dqB\f9\1d]\c4X\e7\1b\a6,iM\92\ea\8dp\1ad\ee\01\daJw\ef\9a\99\a3m\a2\85k}\b4{x\t\f2w\18\ddy\a1\e4T\b4\c2\c5\9b[\92\86[\86=]\96\c8\c5S5\c8\b3\a0\97\fa\\\b4*\95\e3_\a0\99\bd\9fF\de%\8c9\db4\c2\9b\a5\\\9f\98\a3r\9a\c6\f6\ce\be\e9TS\bf\dc\b7\e2A\"\f2\17\f3\fc\88\a5x\\\d3\9b\ce \cc\dfS!{\f3Z\16\98:0\1f\97\dc\b5\a0\e2\96\b3\e3\\S\d1\d9\a8\a2\7f\e1\ae\bav\acU0 \fb\16\8b\ea5\ce]J\89B\cf-;eU\aa\b0k\9a\dfE\1a=\03\cf\1a\e6\ca\c6\9a\c7\17\fep\abO\dc\bc\be\fc\b1w\ff\0c\d6kA\ef\91V\be<\fc\7f\90\ad\1f\d0\8d\83\9aU1(\\Q\d3\b5\c9\a6\ad\8f\acq\9d\cb\8b\ee#w\"\9c\eamSx@\91I\cc\aeW\ce\b6]y\12<\827V\fbM6\94\10\c2O\98H8o\ea\96\90\c7:\82%\cb\85t\d7\f4\97\bf\97\cd\cf\86\a0\e5\ac*\17\98\n4\ef\8e\b25*\fbg8\b2;?\c6\d2\df\d4\c8\84\ba\cd\d3\1a\'D\dd\c5\96\c9%\bb\ce\9fk\93\84\a5b}$l\ac\db\f6\da_\0dXf\ab\a3&\f1\c3\de\93\f8\e2\f3\b8\80\ff\aa\a8\ad\b5\b5\8bJ|l\05_b\87S0\c14`\ff\bc\c9U&\ba\91\8c\85N\96\bd~)p$w\f9\df\8f\b8\e5\b8\9f\bd\df\a6\94}t\88\cf_\a9\f8\cf\9b\a8\8f\93pD\b9k\15\0f\bf\f8\f0\08\8a\b611eU%\b0\cd\ac\7f{\d0\c6\e2?\99\06;+*\c4\10\\\e4\d3\92si\99$$\aa\0e\ca\00\83\f2\b5\87\fd\eb\1a\11\92d\08\e5\bc\cc\88Po\t\cc\bc\8c,e\19\e2X\17\b7\d1\00\00\00\00\00\00@\9c\00\00\00\00\10\a5\d4\e8\00\00b\ac\c5\ebx\ad\84\t\94\f8x9?\81\b3\15\07\c9{\ce\97\c0p\\\ea{\ce2~\8fh\80\e9\ab\a48\d2\d5E\"\9a\17&\'O\9f\'\fb\c4\d41\a2c\ed\a8\ad\c8\8c8e\de\b0\dbe\ab\1a\8e\08\c7\83\9a\1dqB\f9\1d]\c4X\e7\1b\a6,iM\92\ea\8dp\1ad\ee\01\daJw\ef\9a\99\a3m\a2\85k}\b4{x\t\f2w\18\ddy\a1\e4T\b4\c2\c5\9b[\92\86[\86=]\96\c8\c5S5\c8\b3\a0\97\fa\\\b4*\95\e3_\a0\99\bd\9fF\de%\8c9\db4\c2\9b\a5\\\9f\98\a3r\9a\c6\f6\ce\be\e9TS\bf\dc\b7\e2A\"\f2\17\f3\fc\88\a5x\\\d3\9b\ce \cc\dfS!{\f3Z\16\98:0\1f\97\dc\b5\a0\e2\96\b3\e3\\S\d1\d9\a8\a2\7f\e1\ae\bav\acU0 \fb\16\8b\ea5\ce]J\89B\cf-;eU\aa\b0k\9a\dfE\1a=\03\cf\1a\e6\ca\c6\9a\c7\17\fep\abO\dc\bc\be\fc\b1w\ff\0c\d6kA\ef\91V\be<\fc\7f\90\ad\1f\d0\8d\83\9aU1(\\Q\d3\b5\c9\a6\ad\8f\acq\9d\cb\8b\ee#w\"\9c\eamSx@\91I\cc\aeW\ce\b6]y\12<\827V\fbM6\94\10\c2O\98H8o\ea\96\90\c7:\82%\cb\85t\d7\f4\97\bf\97\cd\cf\86\a0\e5\ac*\17\98\n4\ef\8e\b25*\fbg8\b2;?\c6\d2\df\d4\c8\84\ba\cd\d3\1a\'D\dd\c5\96\c9%\bb\ce\9fk\93\84\a5b}$l\ac\db\f6\da_\0dXf\ab\a3&\f1\c3\de\93\f8\e2\f3\b8\80\ff\aa\a8\ad\b5\b5\8bJ|l\05_b\87S0\c14`\ff\bc\c9U&\ba\91\8c\85N\96\bd~)p$w\f9\df\8f\b8\e5\b8\9f\bd\df\a6\94}t\88\cf_\a9\f8\cf\9b\a8\8f\93pD\b9k\15\0f\bf\f8\f0\08\8a\b611eU%\b0\cd\ac\7f{\d0\c6\e2?\99\06;+*\c4\10\\\e4\d3\92si\99$$\aa\0e\ca\00\83\f2\b5\87\fd\eb\1a\11\92d\08\e5\bc\cc\88Po\t\cc\bc\8c,e\19\e2X\17\b7\d1\00\00\00\00\00\00@\9c\00\00\00\00\10\a5\d4\e8\00\00b\ac\c5\ebx\ad\84\t\94\f8x9?\81\b3\15\07\c9{\ce\97\c0p\\\ea{\ce2~\8fh\80\e9\ab\a48\d2\d5E\"\9a\17&\'O\9f\'\fb\c4\d41\a2c\ed\a8\ad\c8\8c8e\de\b0\dbe\ab\1a\8e\08\c7\83\9a\1dqB\f9\1d]\c4X\e7\1b\a6,iM\92\ea\8dp\1ad\ee\01\daJw\ef\9a\99\a3m\a2\85k}\b4{x\t\f2w\18\ddy\a1\e4T\b4\c2\c5\9b[\92\86[\86=]\96\c8\c5S5\c8\b3\a0\97\fa\\\b4*\95\e3_\a0\99\bd\9fF\de%\8c9\db4\c2\9b\a5\\\9f\98\a3r\9a\c6\f6\ce\be\e9TS\bf\dc\b7\e2A\"\f2\17\f3\fc\88\a5x\\\d3\9b\ce \cc\dfS!{\f3Z\16\98:0\1f\97\dc\b5\a0\e2\96\b3\e3\\S\d1\d9\a8\a2\7f\e1\ae\bav\acU0 \fb\16\8b\ea5\ce]J\89B\cf-;eU\aa\b0k\9a\dfE\1a=\03\cf\1a\e6\ca\c6\9a\c7\17\fep\abO\dc\bc\be\fc\b1w\ff\0c\d6kA\ef\91V\be<\fc\7f\90\ad\1f\d0\8d\83\9aU1(\\Q\d3\b5\c9\a6\ad\8f\acq\9d\cb\8b\ee#w\"\9c\eamSx@\91I\cc\aeW\ce\b6]y\12<\827V\fbM6\94\10\c2O\98H8o\ea\96\90\c7:\82%\cb\85t\d7\f4\97\bf\97\cd\cf\86\a0\e5\ac*\17\98\n4\ef\8e\b25*\fbg8\b2;?\c6\d2\df\d4\c8\84\ba\cd\d3\1a\'D\dd\c5\96\c9%\bb\ce\9fk\93\84\a5b}$l\ac\db\f6\da_\0dXf\ab\a3&\f1\c3\de\93\f8\e2\f3\b8\80\ff\aa\a8\ad\b5\b5\8bJ|l\05_b\87S0\c14`\ff\bc\c9U&\ba\91\8c\85N\96\bd~)p$w\f9\df\8f\b8\e5\b8\9f\bd\df\a6\94}t\88\cf_\a9\f8\cf\9b\a8\8f\93pD\b9k\15\0f\bf\f8\f0\08\8a\b611eU%\b0\cd\ac\7f{\d0\c6\e2?\99\06;+*\c4\10\\\e4\d3\92si\99$$\aa\0e\ca\00\83\f2\b5\87\fd\eb\1a\11\92d\08\e5\bc\cc\88Po\t\cc\bc\8c,e\19\e2X\17\b7\d1\00\00\00\00\00\00@\9c\00\00\00\00\10\a5\d4\e8\00\00b\ac\c5\ebx\ad\84\t\94\f8x9?\81\b3\15\07\c9{\ce\97\c0p\\\ea{\ce2~\8fh\80\e9\ab\a48\d2\d5E\"\9a\17&\'O\9f\'\fb\c4\d41\a2c\ed\a8\ad\c8\8c8e\de\b0\dbe\ab\1a\8e\08\c7\83\9a\1dqB\f9\1d]\c4X\e7\1b\a6,iM\92\ea\8dp\1ad\ee\01\daJw\ef\9a\99\a3m\a2\85k}\b4{x\t\f2w\18\ddy\a1\e4T\b4\c2\c5\9b[\92\86[\86=]\96\c8\c5S5\c8\b3\a0\97\fa\\\b4*\95\e3_\a0\99\bd\9fF\de%\8c9\db4\c2\9b\a5\\\9f\98\a3r\9a\c6\f6\ce\be\e9TS\bf\dc\b7\e2A\"\f2\17\f3\fc\88\a5x\\\d3\9b\ce \cc\dfS!{\f3Z\16\98:0\1f\97\dc\b5\a0\e2\96\b3\e3\\S\d1\d9\a8|inlined.0 (result i64) @@ -6986,7 +6973,7 @@ f64.const 0 f64.eq if - i32.const 3184 + i32.const 2664 return end local.get $0 @@ -6996,18 +6983,18 @@ local.get $0 call $~lib/builtins/isNaN if - i32.const 3200 + i32.const 2680 return end - i32.const 3216 - i32.const 3240 + i32.const 2696 + i32.const 2720 local.get $0 f64.const 0 f64.lt select return end - global.get $~lib/internal/number/MAX_DOUBLE_LENGTH + i32.const 28 call $~lib/internal/string/allocateUnsafe local.set $1 local.get $1 @@ -9687,7 +9674,7 @@ end i64.const 99999999 call $~lib/internal/number/utoa64 - i32.const 2616 + i32.const 2096 call $~lib/string/String.__eq i32.eqz if @@ -9700,7 +9687,7 @@ end i64.const 100000000 call $~lib/internal/number/utoa64 - i32.const 2640 + i32.const 2120 call $~lib/string/String.__eq i32.eqz if @@ -9726,7 +9713,7 @@ end i64.const 68719476735 call $~lib/internal/number/utoa64 - i32.const 2664 + i32.const 2144 call $~lib/string/String.__eq i32.eqz if @@ -9739,7 +9726,7 @@ end i64.const 868719476735 call $~lib/internal/number/utoa64 - i32.const 2696 + i32.const 2176 call $~lib/string/String.__eq i32.eqz if @@ -9752,7 +9739,7 @@ end i64.const 999868719476735 call $~lib/internal/number/utoa64 - i32.const 2728 + i32.const 2208 call $~lib/string/String.__eq i32.eqz if @@ -9765,7 +9752,7 @@ end i64.const 9999868719476735 call $~lib/internal/number/utoa64 - i32.const 2768 + i32.const 2248 call $~lib/string/String.__eq i32.eqz if @@ -9778,7 +9765,7 @@ end i64.const 19999868719476735 call $~lib/internal/number/utoa64 - i32.const 2808 + i32.const 2288 call $~lib/string/String.__eq i32.eqz if @@ -9791,7 +9778,7 @@ end global.get $~lib/builtins/u64.MAX_VALUE call $~lib/internal/number/utoa64 - i32.const 2848 + i32.const 2328 call $~lib/string/String.__eq i32.eqz if @@ -9817,7 +9804,7 @@ end i64.const -1234 call $~lib/internal/number/itoa64 - i32.const 2896 + i32.const 2376 call $~lib/string/String.__eq i32.eqz if @@ -9843,7 +9830,7 @@ end i64.const -4294967295 call $~lib/internal/number/itoa64 - i32.const 2912 + i32.const 2392 call $~lib/string/String.__eq i32.eqz if @@ -9856,7 +9843,7 @@ end i64.const 68719476735 call $~lib/internal/number/itoa64 - i32.const 2664 + i32.const 2144 call $~lib/string/String.__eq i32.eqz if @@ -9869,7 +9856,7 @@ end i64.const -68719476735 call $~lib/internal/number/itoa64 - i32.const 2944 + i32.const 2424 call $~lib/string/String.__eq i32.eqz if @@ -9882,7 +9869,7 @@ end i64.const -868719476735 call $~lib/internal/number/itoa64 - i32.const 2976 + i32.const 2456 call $~lib/string/String.__eq i32.eqz if @@ -9895,7 +9882,7 @@ end i64.const -999868719476735 call $~lib/internal/number/itoa64 - i32.const 3008 + i32.const 2488 call $~lib/string/String.__eq i32.eqz if @@ -9908,7 +9895,7 @@ end i64.const -19999868719476735 call $~lib/internal/number/itoa64 - i32.const 3048 + i32.const 2528 call $~lib/string/String.__eq i32.eqz if @@ -9921,7 +9908,7 @@ end global.get $~lib/builtins/i64.MAX_VALUE call $~lib/internal/number/itoa64 - i32.const 3088 + i32.const 2568 call $~lib/string/String.__eq i32.eqz if @@ -9934,7 +9921,7 @@ end global.get $~lib/builtins/i64.MIN_VALUE call $~lib/internal/number/itoa64 - i32.const 3136 + i32.const 2616 call $~lib/string/String.__eq i32.eqz if @@ -9947,7 +9934,7 @@ end f64.const 0 call $~lib/internal/number/dtoa - i32.const 3184 + i32.const 2664 call $~lib/string/String.__eq i32.eqz if @@ -9960,7 +9947,7 @@ end f64.const -0 call $~lib/internal/number/dtoa - i32.const 3184 + i32.const 2664 call $~lib/string/String.__eq i32.eqz if @@ -9973,7 +9960,7 @@ end f64.const nan:0x8000000000000 call $~lib/internal/number/dtoa - i32.const 3200 + i32.const 2680 call $~lib/string/String.__eq i32.eqz if @@ -9986,7 +9973,7 @@ end f64.const inf call $~lib/internal/number/dtoa - i32.const 3240 + i32.const 2720 call $~lib/string/String.__eq i32.eqz if @@ -10000,7 +9987,7 @@ f64.const inf f64.neg call $~lib/internal/number/dtoa - i32.const 3216 + i32.const 2696 call $~lib/string/String.__eq i32.eqz if @@ -10013,7 +10000,7 @@ end global.get $~lib/builtins/f64.EPSILON call $~lib/internal/number/dtoa - i32.const 4632 + i32.const 4112 call $~lib/string/String.__eq i32.eqz if @@ -10027,7 +10014,7 @@ global.get $~lib/builtins/f64.EPSILON f64.neg call $~lib/internal/number/dtoa - i32.const 4680 + i32.const 4160 call $~lib/string/String.__eq i32.eqz if @@ -10040,7 +10027,7 @@ end global.get $~lib/builtins/f64.MAX_VALUE call $~lib/internal/number/dtoa - i32.const 4728 + i32.const 4208 call $~lib/string/String.__eq i32.eqz if @@ -10054,7 +10041,7 @@ global.get $~lib/builtins/f64.MAX_VALUE f64.neg call $~lib/internal/number/dtoa - i32.const 4784 + i32.const 4264 call $~lib/string/String.__eq i32.eqz if @@ -10067,7 +10054,7 @@ end f64.const 4185580496821356722454785e274 call $~lib/internal/number/dtoa - i32.const 4840 + i32.const 4320 call $~lib/string/String.__eq i32.eqz if @@ -10080,7 +10067,7 @@ end f64.const 2.2250738585072014e-308 call $~lib/internal/number/dtoa - i32.const 4888 + i32.const 4368 call $~lib/string/String.__eq i32.eqz if @@ -10093,7 +10080,7 @@ end f64.const 4.940656e-318 call $~lib/internal/number/dtoa - i32.const 4944 + i32.const 4424 call $~lib/string/String.__eq i32.eqz if @@ -10106,7 +10093,7 @@ end f64.const 9060801153433600 call $~lib/internal/number/dtoa - i32.const 4976 + i32.const 4456 call $~lib/string/String.__eq i32.eqz if @@ -10119,7 +10106,7 @@ end f64.const 4708356024711512064 call $~lib/internal/number/dtoa - i32.const 5016 + i32.const 4496 call $~lib/string/String.__eq i32.eqz if @@ -10132,7 +10119,7 @@ end f64.const 9409340012568248320 call $~lib/internal/number/dtoa - i32.const 5064 + i32.const 4544 call $~lib/string/String.__eq i32.eqz if @@ -10145,7 +10132,7 @@ end f64.const 5e-324 call $~lib/internal/number/dtoa - i32.const 5112 + i32.const 4592 call $~lib/string/String.__eq i32.eqz if @@ -10158,7 +10145,7 @@ end f64.const 1 call $~lib/internal/number/dtoa - i32.const 5128 + i32.const 4608 call $~lib/string/String.__eq i32.eqz if @@ -10184,7 +10171,7 @@ end f64.const -1 call $~lib/internal/number/dtoa - i32.const 5144 + i32.const 4624 call $~lib/string/String.__eq i32.eqz if @@ -10197,7 +10184,7 @@ end f64.const -0.1 call $~lib/internal/number/dtoa - i32.const 5160 + i32.const 4640 call $~lib/string/String.__eq i32.eqz if @@ -10210,7 +10197,7 @@ end f64.const 1e6 call $~lib/internal/number/dtoa - i32.const 5176 + i32.const 4656 call $~lib/string/String.__eq i32.eqz if @@ -10223,7 +10210,7 @@ end f64.const 1e-06 call $~lib/internal/number/dtoa - i32.const 5200 + i32.const 4680 call $~lib/string/String.__eq i32.eqz if @@ -10236,7 +10223,7 @@ end f64.const -1e6 call $~lib/internal/number/dtoa - i32.const 5224 + i32.const 4704 call $~lib/string/String.__eq i32.eqz if @@ -10249,7 +10236,7 @@ end f64.const -1e-06 call $~lib/internal/number/dtoa - i32.const 5248 + i32.const 4728 call $~lib/string/String.__eq i32.eqz if @@ -10262,7 +10249,7 @@ end f64.const 1e7 call $~lib/internal/number/dtoa - i32.const 5272 + i32.const 4752 call $~lib/string/String.__eq i32.eqz if @@ -10275,7 +10262,7 @@ end f64.const 1e-07 call $~lib/internal/number/dtoa - i32.const 5296 + i32.const 4776 call $~lib/string/String.__eq i32.eqz if @@ -10288,7 +10275,7 @@ end f64.const 1.e+308 call $~lib/internal/number/dtoa - i32.const 5312 + i32.const 4792 call $~lib/string/String.__eq i32.eqz if @@ -10301,7 +10288,7 @@ end f64.const -1.e+308 call $~lib/internal/number/dtoa - i32.const 5328 + i32.const 4808 call $~lib/string/String.__eq i32.eqz if @@ -10314,7 +10301,7 @@ end f64.const inf call $~lib/internal/number/dtoa - i32.const 3240 + i32.const 2720 call $~lib/string/String.__eq i32.eqz if @@ -10327,7 +10314,7 @@ end f64.const -inf call $~lib/internal/number/dtoa - i32.const 3216 + i32.const 2696 call $~lib/string/String.__eq i32.eqz if @@ -10340,7 +10327,7 @@ end f64.const 1e-308 call $~lib/internal/number/dtoa - i32.const 5352 + i32.const 4832 call $~lib/string/String.__eq i32.eqz if @@ -10353,7 +10340,7 @@ end f64.const -1e-308 call $~lib/internal/number/dtoa - i32.const 5368 + i32.const 4848 call $~lib/string/String.__eq i32.eqz if @@ -10366,7 +10353,7 @@ end f64.const 1e-323 call $~lib/internal/number/dtoa - i32.const 5392 + i32.const 4872 call $~lib/string/String.__eq i32.eqz if @@ -10379,7 +10366,7 @@ end f64.const -1e-323 call $~lib/internal/number/dtoa - i32.const 5408 + i32.const 4888 call $~lib/string/String.__eq i32.eqz if @@ -10392,7 +10379,7 @@ end f64.const 0 call $~lib/internal/number/dtoa - i32.const 3184 + i32.const 2664 call $~lib/string/String.__eq i32.eqz if @@ -10405,7 +10392,7 @@ end f64.const 4294967272 call $~lib/internal/number/dtoa - i32.const 5432 + i32.const 4912 call $~lib/string/String.__eq i32.eqz if @@ -10418,7 +10405,7 @@ end f64.const 1.2312145673456234e-08 call $~lib/internal/number/dtoa - i32.const 5464 + i32.const 4944 call $~lib/string/String.__eq i32.eqz if @@ -10431,7 +10418,7 @@ end f64.const 555555555.5555556 call $~lib/internal/number/dtoa - i32.const 5512 + i32.const 4992 call $~lib/string/String.__eq i32.eqz if @@ -10444,7 +10431,7 @@ end f64.const 0.9999999999999999 call $~lib/internal/number/dtoa - i32.const 5552 + i32.const 5032 call $~lib/string/String.__eq i32.eqz if @@ -10457,7 +10444,7 @@ end f64.const 1 call $~lib/internal/number/dtoa - i32.const 5128 + i32.const 4608 call $~lib/string/String.__eq i32.eqz if @@ -10470,7 +10457,7 @@ end f64.const 12.34 call $~lib/internal/number/dtoa - i32.const 5592 + i32.const 5072 call $~lib/string/String.__eq i32.eqz if @@ -10485,7 +10472,7 @@ f64.const 3 f64.div call $~lib/internal/number/dtoa - i32.const 5608 + i32.const 5088 call $~lib/string/String.__eq i32.eqz if @@ -10498,7 +10485,7 @@ end f64.const 1234e17 call $~lib/internal/number/dtoa - i32.const 5648 + i32.const 5128 call $~lib/string/String.__eq i32.eqz if @@ -10511,7 +10498,7 @@ end f64.const 1234e18 call $~lib/internal/number/dtoa - i32.const 5704 + i32.const 5184 call $~lib/string/String.__eq i32.eqz if @@ -10524,7 +10511,7 @@ end f64.const 2.71828 call $~lib/internal/number/dtoa - i32.const 5728 + i32.const 5208 call $~lib/string/String.__eq i32.eqz if @@ -10537,7 +10524,7 @@ end f64.const 0.0271828 call $~lib/internal/number/dtoa - i32.const 5752 + i32.const 5232 call $~lib/string/String.__eq i32.eqz if @@ -10550,7 +10537,7 @@ end f64.const 271.828 call $~lib/internal/number/dtoa - i32.const 5776 + i32.const 5256 call $~lib/string/String.__eq i32.eqz if @@ -10563,7 +10550,7 @@ end f64.const 1.1e+128 call $~lib/internal/number/dtoa - i32.const 5800 + i32.const 5280 call $~lib/string/String.__eq i32.eqz if @@ -10576,7 +10563,7 @@ end f64.const 1.1e-64 call $~lib/internal/number/dtoa - i32.const 5824 + i32.const 5304 call $~lib/string/String.__eq i32.eqz if @@ -10589,7 +10576,7 @@ end f64.const 0.000035689 call $~lib/internal/number/dtoa - i32.const 5848 + i32.const 5328 call $~lib/string/String.__eq i32.eqz if