Skip to content
Open
Show file tree
Hide file tree
Changes from 1 commit
Commits
Show all changes
50 commits
Select commit Hold shift + click to select a range
5705f06
chore: add xjb-as to util
JairusSW Jun 9, 2026
c778be9
chore: add liceses to NOTICE
JairusSW Jun 9, 2026
1fdc61d
chore: update changed tests
JairusSW Jun 9, 2026
09c3ef8
chore: simplify and use smaller tables
JairusSW Jun 16, 2026
7cd14a4
chore: use table from number instead
JairusSW Jun 16, 2026
e0646ff
chore: update notice
JairusSW Jun 16, 2026
650a7c3
chore: clean up
JairusSW Jun 16, 2026
759c01f
chore: clean up
JairusSW Jun 16, 2026
fa93c15
chore: rename to dtoa.ts and remove XJB_SIMD toggle
JairusSW Jun 17, 2026
d41ce13
Update std/assembly/util/dtoa.ts
JairusSW Jun 17, 2026
4aa4210
Update std/assembly/util/dtoa.ts
JairusSW Jun 17, 2026
48f3ee5
Update std/assembly/util/dtoa.ts
JairusSW Jun 17, 2026
5dd492b
Update std/assembly/util/dtoa.ts
JairusSW Jun 17, 2026
b1bcc18
Update std/assembly/util/dtoa.ts
JairusSW Jun 17, 2026
4bdb432
chore: update import and update test outputs
JairusSW Jun 17, 2026
76c4b11
Update std/assembly/util/dtoa.ts
JairusSW Jun 17, 2026
b9cf897
Update std/assembly/util/dtoa.ts
JairusSW Jun 17, 2026
87c12f1
Update std/assembly/util/dtoa.ts
JairusSW Jun 17, 2026
c97a0e9
Update std/assembly/util/dtoa.ts
JairusSW Jun 17, 2026
9721226
chore: add lazy decorators where needed, update styling, etc
JairusSW Jun 17, 2026
2dfdb0f
use let
MaxGraey Jun 18, 2026
f322f2d
Apply suggestion from @MaxGraey
MaxGraey Jun 18, 2026
422a611
chore: add some comments for more esoteric literals
JairusSW Jun 18, 2026
e7b2dd8
Merge branch 'jairus/switch-to-xjb' of github.com:JairusSW/assemblysc…
JairusSW Jun 18, 2026
795b262
chore: use named constants instead of esoteric literals
JairusSW Jun 18, 2026
209ed02
chore: dedupe constants
JairusSW Jun 18, 2026
fe03f90
chore: standardize naming convention
JairusSW Jun 18, 2026
29ac707
core: more styling stuff
JairusSW Jun 18, 2026
d5b0607
chore: remove dbl ternary
JairusSW Jun 18, 2026
8044b88
reformat
MaxGraey Jun 18, 2026
43dbf58
chore: use more descriptive names
JairusSW Jun 24, 2026
c5c6e07
Merge branch 'jairus/switch-to-xjb' of github.com:JairusSW/assemblysc…
JairusSW Jun 24, 2026
d93842f
fix: correct dtoa digit counts and shortest formatting
JairusSW Sep 21, 2026
644040a
Merge origin/main into jairus/switch-to-xjb
JairusSW Sep 21, 2026
a28f957
fix: finalize float formatting and review cleanup
JairusSW Sep 21, 2026
c13739d
Avoid emitting unused dtoa globals in debug output
JairusSW Sep 21, 2026
42ff464
Optimize float formatting fast paths and validate scalar/SIMD output
JairusSW Sep 21, 2026
859401d
Cover f32 exact-integer fast-path boundary
JairusSW Sep 21, 2026
cf6bad1
Optimize SIMD digit packing and normalized f64 formatting
JairusSW Sep 21, 2026
f516ed4
Use SIMD digit packing for long integer formatting
JairusSW Sep 21, 2026
c9f8b9c
Use full dtoa power cache in speed builds
JairusSW Sep 21, 2026
fdbc7ed
Speed up subnormal f32 digit scaling
JairusSW Sep 21, 2026
1079de4
Use compact power cache in all builds
JairusSW Sep 21, 2026
ed4390a
Reuse float power cache for common doubles
JairusSW Sep 21, 2026
055a82d
Share minor powers with float cache
JairusSW Sep 21, 2026
f39d7b7
Use one shared power table in every build
JairusSW Sep 21, 2026
dcab81e
Trim shared power table to common f64 range
JairusSW Sep 21, 2026
881a8ec
Use compact power cache outside common exponents
JairusSW Sep 21, 2026
84f5f2f
Test exact dtoa output and compact powers
JairusSW Sep 21, 2026
660bd25
Speed up exact-integer string formatting
JairusSW Sep 21, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
Merge origin/main into jairus/switch-to-xjb
  • Loading branch information
JairusSW committed Sep 21, 2026
commit 644040af59e434b95ba8a14e6ba75e5b585dfa3a
58 changes: 29 additions & 29 deletions std/assembly/util/dtoa.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,42 +2,42 @@ import { CharCode, POWERS10 } from "./string";
import { DIGITS, MAX_DOUBLE_LENGTH } from "./number";

// Fixed-point log significands shared by the dec-exp / binary-exp estimates below.
const LOG10_2_SIGNIFICAND = 0x4D105; // ~(log10(2) * 2**20)
@lazy @inline const LOG10_2_SIGNIFICAND = 0x4D105; // ~(log10(2) * 2**20)
const LOG10_2_EXP = 20;
const LOG2_POW10_SIGNIFICAND = 0x3526B; // ~(log2(10) * 2**16)
@lazy @inline const LOG2_POW10_SIGNIFICAND = 0x3526B; // ~(log2(10) * 2**16)
const LOG2_POW10_EXP = 16;

const DIV10_EXP = 10;
@lazy @inline const DIV10_EXP = 10;
const DIV10_SIG: u64 = (1 << DIV10_EXP) / 10 + 1;
const NEG10: u64 = (1 << 8) - 10;
@lazy @inline const NEG10: u64 = (1 << 8) - 10;

const DIV100_EXP = 19;
@lazy @inline const DIV100_EXP = 19;
const DIV100_SIG: u64 = (1 << DIV100_EXP) / 100 + 1;
const NEG100: u64 = (1 << 16) - 100;
@lazy @inline const NEG100: u64 = (1 << 16) - 100;

const DIV10K_EXP = 40;
@lazy @inline const DIV10K_EXP = 40;
const DIV10K_SIG: u64 = ((<u64>1) << DIV10K_EXP) / 10000 + 1;
const NEG10K: u64 = ((<u64>1) << 32) - 10000;
@lazy @inline const NEG10K: u64 = ((<u64>1) << 32) - 10000;

export const BCD_ZEROS: u64 = 0x3030303030303030;
@lazy @inline export const BCD_ZEROS: u64 = 0x3030303030303030;

export const DOUBLE_EXP_OFFSET = 1075; // exp_bias(1023) + num_sig_bits(52)
@lazy @inline export const DOUBLE_EXP_OFFSET = 1075; // exp_bias(1023) + num_sig_bits(52)
export const DOUBLE_SIGNIFICAND_SIZE = 52; // explicit mantissa bits
export const DOUBLE_HIDDEN_BIT: u64 = (<u64>1) << DOUBLE_SIGNIFICAND_SIZE; // implicit leading 1
@lazy @inline export const DOUBLE_HIDDEN_BIT: u64 = (<u64>1) << DOUBLE_SIGNIFICAND_SIZE; // implicit leading 1
export const DOUBLE_SIGNIFICAND_MASK: u64 = DOUBLE_HIDDEN_BIT - 1;
export const EXTRA_SHIFT = 6;
@lazy @inline export const EXTRA_SHIFT = 6;
export const BIASED_HALF: u64 = ((<u64>1) << 63) + 6;
export const DOUBLE_MAX_DIGITS10 = 17;
@lazy @inline export const DOUBLE_MAX_DIGITS10 = 17;
// Fixed notation when decExp (= decimal-point position - 1) is in [-6, 20].
export const MIN_FIXED_DEC_EXP = -6;
@lazy @inline export const MIN_FIXED_DEC_EXP = -6;
export const MAX_FIXED_DEC_EXP = 20;

// Compact pow10 (Dougall Johnson's method, ported from vitaut/zmij)
// 10**i = top-128-bits(major[(i+10)/28] * minor[(i+10)%28]) minus a per-power round-down bit.

// 28 normalized exact powers 10**0..10**27 - the within-stride minor factors.
// @ts-ignore: decorator
@lazy const POW10_MINOR = memory.data<u64>([
@lazy @inline const POW10_MINOR = memory.data<u64>([
0x8000000000000000, 0xa000000000000000, 0xc800000000000000, 0xfa00000000000000,
0x9c40000000000000, 0xc350000000000000, 0xf424000000000000, 0x9896800000000000,
0xbebc200000000000, 0xee6b280000000000, 0x9502f90000000000, 0xba43b74000000000,
Expand All @@ -49,7 +49,7 @@ export const MAX_FIXED_DEC_EXP = 20;

// 23 full 128-bit anchors (hi, lo) spaced every 28 powers, covering 10**-303..10**313.
// @ts-ignore: decorator
@lazy const POW10_MAJOR = memory.data<u64>([
@lazy @inline const POW10_MAJOR = memory.data<u64>([
0xaf8e5410288e1b6f, 0x07ecf0ae5ee44dda, 0xb1442798f49ffb4a, 0x99cd11cfdf41779d,
0xb2fe3f0b8599ef07, 0x861fa7e6dcb4aa15, 0xb4bca50b065abe63, 0x0fed077a756b53aa,
0xb67f6455292cbf08, 0x1a3bc84c17b1d543, 0xb84687c269ef3bfb, 0x3d5d514f40eea742,
Expand All @@ -67,7 +67,7 @@ export const MAX_FIXED_DEC_EXP = 20;
// One round-down fixup bit per power: bit (i & 31) of word (i >> 5) is subtracted
// from the reconstructed low limb. 20 words cover all 618 powers.
// @ts-ignore: decorator
@lazy const POW10_FIXUPS = memory.data<u32>([
@lazy @inline const POW10_FIXUPS = memory.data<u32>([
0x0a4e363f, 0x00001840, 0x00006400, 0x24200040, 0x00000000,
0x0c000000, 0x82c81380, 0x5e4ce01f, 0xd730f60f, 0x0000001b,
0x00000000, 0xcdf7fffc, 0x6e8201d8, 0x40cd3fd1, 0xdb642501,
Expand All @@ -78,7 +78,7 @@ export const MAX_FIXED_DEC_EXP = 20;
// the xjb64 +1 low-limb rounding folded in. One hi-only multiply covers both the
// regular and power-of-two paths.
// @ts-ignore: decorator
@inline const POW10_FLOAT_HI = memory.data<u64>([
@lazy @inline const POW10_FLOAT_HI = memory.data<u64>([
0x8f7e32ce7bea5c70, 0xe596b7b0c643c71a, 0xb7abc627050305ae, 0x92efd1b8d0cf37bf,
0xeb194f8e1ae525fe, 0xbc143fa4e250eb32, 0x96769950b50d88f5, 0xf0bdc21abb48db21,
0xc097ce7bc90715b4, 0x9a130b963a6c115d, 0xf684df56c3e01bc7, 0xc5371912364ce306,
Expand All @@ -101,29 +101,29 @@ export const MAX_FIXED_DEC_EXP = 20;
0xcfb11ead453994bb,
]);

const FLOAT_EXP_OFFSET = 150; // exp_bias(127) + num_sig_bits(23)
@lazy @inline const FLOAT_EXP_OFFSET = 150; // exp_bias(127) + num_sig_bits(23)
const FLOAT_SIGNIFICAND_SIZE = 23; // explicit mantissa bits
const FLOAT_HIDDEN_BIT: u64 = (<u64>1) << FLOAT_SIGNIFICAND_SIZE; // implicit leading 1
@lazy @inline const FLOAT_HIDDEN_BIT: u64 = (<u64>1) << FLOAT_SIGNIFICAND_SIZE; // implicit leading 1
const FLOAT_SIGNIFICAND_MASK: u32 = (<u32>1 << FLOAT_SIGNIFICAND_SIZE) - 1;
const FLOAT_BIT = 36; // xjb's fixed-point split for the f32 core
@lazy @inline const FLOAT_BIT = 36; // xjb's fixed-point split for the f32 core
// xjb's c1, ASCII offset stripped so the `one` digit comes out numeric.
const FLOAT_ONE_BIAS: u64 = ((<u64>1) << (FLOAT_BIT - 2)) - 7;
@lazy @inline const FLOAT_ONE_BIAS: u64 = ((<u64>1) << (FLOAT_BIT - 2)) - 7;

export const FLOAT_MAX_DIGITS10 = 9;
@lazy @inline export const FLOAT_MAX_DIGITS10 = 9;

// @ts-ignore: decorator
@lazy export const SCRATCH = memory.data(128);
@lazy @inline export const SCRATCH = memory.data(128);

// Shared results where the caller needs more than one return value.
export let gPow10Hi: u64 = 0;
@lazy export let gPow10Hi: u64 = 0;
let gBcdValue: u64 = 0;
export let gDigHi: u64 = 0;
@lazy export let gDigHi: u64 = 0;
export let gDigLo: u64 = 0;
export let gDigits: i32 = 0;
@lazy export let gDigits: i32 = 0;
export let gSig: i64 = 0;
export let gExp: i32 = 0;
@lazy export let gExp: i32 = 0;
export let gLastDigit: i32 = 0;
export let gHasLastDigit: bool = false;
@lazy export let gHasLastDigit: bool = false;

// High 64 bits of the 128-bit product x * y. Matches umul128.
// @ts-ignore: decorator
Expand Down
78 changes: 25 additions & 53 deletions tests/compiler/NonNullable.debug.wat
Original file line number Diff line number Diff line change
Expand Up @@ -6,64 +6,36 @@
(type $4 (func (param i32 i32 i32 i32 i32) (result i32)))
(type $5 (func (param i32 i32 i32 i32)))
(import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32)))
(global $~lib/util/dtoa/LOG10_2_SIGNIFICAND i32 (i32.const 315653))
(global $~lib/util/dtoa/LOG10_2_EXP i32 (i32.const 20))
(global $~lib/util/dtoa/LOG2_POW10_SIGNIFICAND i32 (i32.const 217707))
(global $~lib/util/dtoa/LOG2_POW10_EXP i32 (i32.const 16))
(global $~lib/util/dtoa/gPow10Hi (mut i64) (i64.const 0))
(global $~lib/util/dtoa/gPow10Lo (mut i64) (i64.const 0))
(global $~lib/util/dtoa/DIV10_EXP i32 (i32.const 10))
(global $~lib/util/dtoa/DIV10_SIG i64 (i64.const 103))
(global $~lib/util/dtoa/NEG10 i64 (i64.const 246))
(global $~lib/util/dtoa/DIV100_EXP i32 (i32.const 19))
(global $~lib/util/dtoa/DIV100_SIG i64 (i64.const 5243))
(global $~lib/util/dtoa/NEG100 i64 (i64.const 65436))
(global $~lib/util/dtoa/DIV10K_EXP i32 (i32.const 40))
(global $~lib/util/dtoa/DIV10K_SIG i64 (i64.const 109951163))
(global $~lib/util/dtoa/NEG10K i64 (i64.const 4294957296))
(global $~lib/util/dtoa/ZEROS i64 (i64.const 3472328296227680304))
(global $~lib/util/dtoa/gBcd (mut i64) (i64.const 0))
(global $~lib/util/dtoa/gBcdLen (mut i32) (i32.const 0))
(global $~lib/util/dtoa/gDigHi (mut i64) (i64.const 0))
(global $~lib/util/dtoa/gDigLo (mut i64) (i64.const 0))
(global $~lib/util/dtoa/gDigits (mut i32) (i32.const 0))
(global $~lib/util/dtoa/gSig (mut i64) (i64.const 0))
(global $~lib/util/dtoa/gExp (mut i32) (i32.const 0))
(global $~lib/util/dtoa/gLastDigit (mut i32) (i32.const 0))
(global $~lib/util/dtoa/gHasLastDigit (mut i32) (i32.const 0))
(global $~lib/util/dtoa/DOUBLE_EXP_OFFSET i32 (i32.const 1075))
(global $~lib/util/dtoa/DOUBLE_SIGNIFICAND_SIZE i32 (i32.const 52))
(global $~lib/util/dtoa/DOUBLE_HIDDEN_BIT i64 (i64.const 4503599627370496))
(global $~lib/util/dtoa/DOUBLE_SIGNIFICAND_MASK i64 (i64.const 4503599627370495))
(global $~lib/util/dtoa/EXTRA_SHIFT i32 (i32.const 6))
(global $~lib/util/dtoa/BIASED_HALF i64 (i64.const -9223372036854775802))
(global $~lib/util/dtoa/DOUBLE_MAX_DIGITS10 i32 (i32.const 17))
(global $~lib/util/dtoa/MIN_FIXED_DEC_EXP i32 (i32.const -6))
(global $~lib/util/dtoa/MAX_FIXED_DEC_EXP i32 (i32.const 20))
(global $~lib/util/dtoa/FLOAT_EXP_OFFSET i32 (i32.const 150))
(global $~lib/util/dtoa/FLOAT_SIGNIFICAND_SIZE i32 (i32.const 23))
(global $~lib/util/dtoa/FLOAT_HIDDEN_BIT i64 (i64.const 8388608))
(global $~lib/util/dtoa/FLOAT_SIGNIFICAND_MASK i32 (i32.const 8388607))
(global $~lib/util/dtoa/FLOAT_BIT i32 (i32.const 36))
(global $~lib/util/dtoa/FLOAT_ONE_BIAS i64 (i64.const 17179869177))
(global $~lib/util/dtoa/FLOAT_MAX_DIGITS10 i32 (i32.const 9))
(global $~lib/util/dtoa/gBcdValue (mut i64) (i64.const 0))
(global $~lib/util/dtoa/gDigLo (mut i64) (i64.const 0))
(global $~lib/util/dtoa/gSig (mut i64) (i64.const 0))
(global $~lib/util/dtoa/gLastDigit (mut i32) (i32.const 0))
(global $~lib/shared/runtime/Runtime.Stub i32 (i32.const 0))
(global $~lib/shared/runtime/Runtime.Minimal i32 (i32.const 1))
(global $~lib/shared/runtime/Runtime.Incremental i32 (i32.const 2))
(global $~lib/native/ASC_SHRINK_LEVEL i32 (i32.const 0))
(global $NonNullable/z (mut i32) (i32.const 1104))
(global $~lib/memory/__data_end i32 (i32.const 1244))
(global $~lib/memory/__stack_pointer (mut i32) (i32.const 34012))
(global $~lib/memory/__heap_base i32 (i32.const 34012))
(global $NonNullable/z (mut i32) (i32.const 224))
(global $~lib/memory/__data_end i32 (i32.const 364))
(global $~lib/memory/__stack_pointer (mut i32) (i32.const 33132))
(global $~lib/memory/__heap_base i32 (i32.const 33132))
(memory $0 1)
(data $0 (i32.const 12) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\00u\003\002\00\00\00\00\00\00\00")
(data $1 (i32.const 48) "p\\\ea{\ce2~\8f\1a\c7C\c6\b0\b7\96\e5\ae\05\03\05\'\c6\ab\b7\bf7\cf\d0\b8\d1\ef\92\fe%\e5\1a\8eO\19\eb2\ebP\e2\a4?\14\bc\f5\88\r\b5P\99v\96!\dbH\bb\1a\c2\bd\f0\b4\15\07\c9{\ce\97\c0]\11l:\96\0b\13\9a\c7\1b\e0\c3V\df\84\f6\06\e3L6\12\197\c5\9e\b5p+\a8\ad\c5\9d\97\"\81E@|o\fc\dfNg\04\cd\c9\f2\c9\e6\0b\b96\d7\07\8f\a1\85\t\94\f8x9?\81:\0f \f4\'\8f\cb\ce\c8\a5\19\90\b9\a5o\a5\a0\84\14@aQY\84\00\a1\ed\cc\ce\1b\c2\d3\00\b4W\n?\16h\a9\00\90\acn2x\86\87\00\80z\17\b7&\d7\d8\00\00b\ac\c5\ebx\ad\00\00\e8\89\04#\c7\8a\00\00@v:k\0b\de\00\00\00\c5.\bc\a2\b1\00\00\00\04\bf\c9\1b\8e\00\00\00\a01\a9_\e3\00\00\00\80\f4 \e6\b5\00\00\00\00*\e7\84\91\00\00\00\00\10\a5\d4\e8\00\00\00\00@\b7C\ba\00\00\00\00\00\f9\02\95\00\00\00\00\00(k\ee\00\00\00\00\00 \bc\be\00\00\00\00\00\80\96\98\00\00\00\00\00\00$\f4\00\00\00\00\00\00P\c3\00\00\00\00\00\00@\9c\00\00\00\00\00\00\00\fa\00\00\00\00\00\00\00\c8\00\00\00\00\00\00\00\a0\00\00\00\00\00\00\00\80\cd\cc\cc\cc\cc\cc\cc\cc\0b\d7\a3p=\n\d7\a3<\dfO\8d\97n\12\83,e\19\e2X\17\b7\d1$\84G\1bG\ac\c5\a7\b6il\af\05\bd7\86\bdBz\e5\d5\94\bf\d6\fd\cea\84\11w\cc\ab\98\a5\b46A_p\89\bf\d5\ed\bd\ce\fe\e6\db\ff\aa$\cb\0b\ff\eb\af\cc\88Po\t\cc\bc\8c\14\0e\b4KB\13.\e1\10\d8\\\t5\dc$\b4\da\ac\b0:\f7|\1d\90\\\e1M\c4\be\94\95\e6J\b4\a462\aaw\b8\08]\1d\92\8e\ee\92\93\a6a\95\b6}J\1e\ec\eb\1a\11\92d\08\e5\bc\ef{\datP\a0\1d\97\b2,\f7\ba\80\00\c9\f1(\8a\92\95\00\9am\c1S;uD\cd\14\be\9aR\c5\ee\d3\ae\87\96\f7\db\9dXv%\06\12\c6I~\e0\91\b7\d1t\9e\0e\ca\00\83\f2\b5\87\fd?;\9a5\f5\f7\d2\ca2\fc\14^\f7_B\a2\f5\fcCK,\b3\ce\81\bb\949E\ad\1e\b1\cf")
(data $2 (i32.const 664) "\"\"#$!\"#$\"#$\"#$!\"#$\"#$\"#$!\"#$\"#$\"#$!\"#$\"#$\"#$!\"#$\"#$\"#$\"#$!\"#$\"#$\"#$!\"#$\"#$\"#$!\"#$\"#$\"#$!\"#$\"#$\"#$!\"#$\"#$\"#$!\"#$\"#$\"#$!\"#$\"#$\"#$!\"#$\"#$\"#$!\"#$\"#$\"#$\"#$!\"#$\"#$\"#$!\"#$\"#$\"#$!\"#$\"#$\"#$!\"#$\"#$\"#$!\"#$\"#$\"#$!\"#$\"#$\"#$!\"#$\"#$\"#$!\"#$\"#$\"#$!\"#$\"#$\"#$!\"#$\"#$\"#$\"#$!\"#")
(data $3 (i32.const 924) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1c\00\00\00N\00o\00n\00N\00u\00l\00l\00a\00b\00l\00e\00.\00t\00s\00")
(data $4 (i32.const 972) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\0c\00\00\00S\00t\00r\00i\00n\00g\00")
(data $5 (i32.const 1004) "L\00\00\00\00\00\00\00\00\00\00\00\02\00\00\002\00\00\00A\00r\00r\00a\00y\00<\00~\00l\00i\00b\00/\00s\00t\00r\00i\00n\00g\00/\00S\00t\00r\00i\00n\00g\00>\00\00\00\00\00\00\00\00\00\00\00")
(data $6 (i32.const 1084) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00z\00\00\00\00\00\00\00\00\00\00\00")
(data $7 (i32.const 1116) "|\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00^\00\00\00U\00n\00e\00x\00p\00e\00c\00t\00e\00d\00 \00\'\00n\00u\00l\00l\00\'\00 \00(\00n\00o\00t\00 \00a\00s\00s\00i\00g\00n\00e\00d\00 \00o\00r\00 \00f\00a\00i\00l\00e\00d\00 \00c\00a\00s\00t\00)\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00")
(data $1 (i32.const 44) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1c\00\00\00N\00o\00n\00N\00u\00l\00l\00a\00b\00l\00e\00.\00t\00s\00")
(data $2 (i32.const 92) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\0c\00\00\00S\00t\00r\00i\00n\00g\00")
(data $3 (i32.const 124) "L\00\00\00\00\00\00\00\00\00\00\00\02\00\00\002\00\00\00A\00r\00r\00a\00y\00<\00~\00l\00i\00b\00/\00s\00t\00r\00i\00n\00g\00/\00S\00t\00r\00i\00n\00g\00>\00\00\00\00\00\00\00\00\00\00\00")
(data $4 (i32.const 204) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00z\00\00\00\00\00\00\00\00\00\00\00")
(data $5 (i32.const 236) "|\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00^\00\00\00U\00n\00e\00x\00p\00e\00c\00t\00e\00d\00 \00\'\00n\00u\00l\00l\00\'\00 \00(\00n\00o\00t\00 \00a\00s\00s\00i\00g\00n\00e\00d\00 \00o\00r\00 \00f\00a\00i\00l\00e\00d\00 \00c\00a\00s\00t\00)\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00")
(table $0 1 1 funcref)
(elem $0 (i32.const 1))
(export "memory" (memory $0))
Expand Down Expand Up @@ -193,8 +165,8 @@
global.get $~lib/memory/__data_end
i32.lt_s
if
i32.const 34032
i32.const 34080
i32.const 33152
i32.const 33200
i32.const 1
i32.const 1
call $~lib/builtins/abort
Expand Down Expand Up @@ -353,7 +325,7 @@
i32.eqz
if
i32.const 0
i32.const 944
i32.const 64
i32.const 9
i32.const 3
call $~lib/builtins/abort
Expand Down Expand Up @@ -413,31 +385,31 @@
i32.eqz
if
i32.const 0
i32.const 944
i32.const 64
i32.const 3
i32.const 1
call $~lib/builtins/abort
unreachable
end
i32.const 992
i32.const 992
i32.const 112
i32.const 112
call $~lib/string/String.__eq
i32.eqz
if
i32.const 0
i32.const 944
i32.const 64
i32.const 4
i32.const 1
call $~lib/builtins/abort
unreachable
end
i32.const 1024
i32.const 1024
i32.const 144
i32.const 144
call $~lib/string/String.__eq
i32.eqz
if
i32.const 0
i32.const 944
i32.const 64
i32.const 5
i32.const 1
call $~lib/builtins/abort
Expand All @@ -451,8 +423,8 @@
if (result i32)
local.get $0
else
i32.const 1136
i32.const 944
i32.const 256
i32.const 64
i32.const 20
i32.const 40
call $~lib/builtins/abort
Expand Down
Loading
Loading
You are viewing a condensed version of this merge commit. You can view the full changes here.