From 8f5b226cf472bc249b935320b8f3b7ac71d09579 Mon Sep 17 00:00:00 2001 From: Cliff Click Date: Mon, 10 Aug 2026 14:09:04 -0700 Subject: A few missed ser/de-ser tags A little less aggressive FunPtr trimming before Opto --- .../seaofnodes/simple/test_smp/seed_repro/sys.smp | 3 ++ .../simple/test_smp/seed_repro/sys/Ary.smp | 6 +++ .../simple/test_smp/seed_repro/sys/aryi64.smp | 29 +++++++++++++ .../simple/test_smp/seed_repro/sys/aryu8.smp | 50 ++++++++++++++++++++++ 4 files changed, 88 insertions(+) create mode 100644 chapter25/src/test/java/com/seaofnodes/simple/test_smp/seed_repro/sys.smp create mode 100644 chapter25/src/test/java/com/seaofnodes/simple/test_smp/seed_repro/sys/Ary.smp create mode 100644 chapter25/src/test/java/com/seaofnodes/simple/test_smp/seed_repro/sys/aryi64.smp create mode 100644 chapter25/src/test/java/com/seaofnodes/simple/test_smp/seed_repro/sys/aryu8.smp (limited to 'chapter25/src/test/java') diff --git a/chapter25/src/test/java/com/seaofnodes/simple/test_smp/seed_repro/sys.smp b/chapter25/src/test/java/com/seaofnodes/simple/test_smp/seed_repro/sys.smp new file mode 100644 index 00000000..1725c57d --- /dev/null +++ b/chapter25/src/test/java/com/seaofnodes/simple/test_smp/seed_repro/sys.smp @@ -0,0 +1,3 @@ +// Reduced multi-compilation-unit reproducer for order-sensitive inlining. +var aryu8 = aryu8; +var aryi64 = aryi64; diff --git a/chapter25/src/test/java/com/seaofnodes/simple/test_smp/seed_repro/sys/Ary.smp b/chapter25/src/test/java/com/seaofnodes/simple/test_smp/seed_repro/sys/Ary.smp new file mode 100644 index 00000000..e3dd6140 --- /dev/null +++ b/chapter25/src/test/java/com/seaofnodes/simple/test_smp/seed_repro/sys/Ary.smp @@ -0,0 +1,6 @@ +// Array utilities, discovered indirectly from aryu8. +val copy = { u8[] dst, int doff, u8[~] src, int soff, int len -> + for( int i=0; i buf = b; }; + + val _grow = { int len2 -> + if( len+len2 < buf# ) return self; + int newlen = buf# * 2; + while( len+len2 >= newlen ) newlen *= 2; + i64[] !buf2 = new i64[newlen]; + for( int i=0; i + _grow(1).buf[len++] = c; + self; + }; + + val str = { -> + var str = new aryu8(new u8[1]).add('['); + for( int i=0; i buf = b; }; + + val _grow = { int len2 -> + if( len+len2 < buf# ) return self; + int newlen = buf# * 2; + while( len+len2 >= newlen ) newlen *= 2; + u8[] !buf2 = new u8[newlen]; + Ary.copy(buf2,0,buf,0,buf#); + buf = buf2; + self; + }; + + val clear = { -> len = 0; self; }; + + val add = { u8 c -> + _grow(1).buf[len++] = c; + self; + }; + + val addAry = { u8[~] ary -> + _grow(ary#); + Ary.copy(buf,len,ary,0,ary#); + len += ary#; + self; + }; + + val undo = { int x -> + len = len >= x ? len-x : 0; + self; + }; + + val num = { i64 x -> + if( !x ) { add('0'); return self; } + if( x < 0 ) { add('-'); x = -x; } + i64 ten = 1, log = 0; + while( ten <= x ) { ten *= 10; log++; } + for( int i=0; i