summaryrefslogtreecommitdiff
path: root/docs
diff options
context:
space:
mode:
authorCliff Click <cliffc@acm.org>2026-10-02 11:39:55 -0700
committerCliff Click <cliffc@acm.org>2026-10-02 11:39:55 -0700
commit6cd01a8d646750748a0af221073de8a7787472ad (patch)
tree4d4159f74efe288f51ca97c78252a8f77d9c69a9 /docs
parentd5352268a0a1355262eed78e3263c18486fb9d8a (diff)
downloadSimple-6cd01a8d646750748a0af221073de8a7787472ad.tar.gz
Simple-6cd01a8d646750748a0af221073de8a7787472ad.zip
Fix some older tests
Diffstat (limited to 'docs')
-rw-r--r--docs/chapter-backports.md38
1 files changed, 21 insertions, 17 deletions
diff --git a/docs/chapter-backports.md b/docs/chapter-backports.md
index 4b549771..02c0574a 100644
--- a/docs/chapter-backports.md
+++ b/docs/chapter-backports.md
@@ -282,10 +282,11 @@ pass complete spill reports after refreshing reduced-move expectations:
Cohort 22 includes the two zero-move C return ABI checks added since the older
24-entry audit. Chapter 25's frozen 212-entry manifest remains unchanged.
-Its reporter currently fails on ten pre-existing String-constructor parse errors;
+At that audit, its reporter failed on ten pre-existing String-constructor parse errors;
the unmodified allocator reproduces all ten. The same 216 successful allocations
(including 14 current cohort-25 allocations) improve from 2,563 / 5,496 to
-2,494 / 5,399, but these are partial totals. Fresh system-library encoding and
+2,494 / 5,399, but these are partial totals. The subsequent historical String
+fixture repair below restores complete reporting. Fresh system-library encoding and
native cohort-25 checks pass. Logs: `build/copy-forward21-spills-final.log`
through `build/copy-forward24-spills-final.log`, `build/copy-forward25-spills.log`,
`build/copy-forward25-baseline.log`, and `build/copy-forward*-tests*.log`.
@@ -349,18 +350,6 @@ lines beyond the original extraction.
### Other pending corrections
-- **Chapter 25 historical String fixtures.** Ten replay entries fail before RA
- because `Test.String.cs` is not fully initialized. They come from
- `Chapter21Test-testStringExport.smp` (four entries),
- `Chapter21AllocTest-testString.smp` (three), and
- `Chapter23AllocTest-testString.smp` (three), under
- `chapter25/src/test/java/com/seaofnodes/simple/spill/`. Both original and
- adjacent-copy-forwarding allocators reproduce them. Adapt these constructor
- fixtures separately and document the comparability change; do not omit the
- failed entries from a claimed complete spill total. The ordinary Chapter 25
- suite passes, including its current String programs.
-
-
- **Existing Chapter 18 floating-array assertion.** The unchanged
`TypeStruct.makeAry` assertion accepts integers and nullable references but
excludes TypeFloat; `return new flt[1];` fails under `-ea`. The Chapter 18
@@ -492,7 +481,7 @@ reports actual retained moves, per target and cohort, with assertions enabled.
| 22 | Stronger copy-chain/backedge bias and cheap-spill ordering | 39, 52, 26 |
| 23 | Group popular single-def uses by compatible register classes | 39, 52, 26, 30 |
| 24 | One cold-only attempt for loop-Phi self-conflicts, then mandatory fallback | 39, 52, 26, 30, 67 |
-| 25 | Existing area/cost ranking and later conflict strategies | 39, 52, 24, 30, 67, 14 (ten historical entries currently fail) |
+| 25 | Existing area/cost ranking and later conflict strategies | 39, 52, 24, 30, 67, 14 |
Shared corrections include RegMask/LRG bookkeeping, null use masks, kills without
an output LRG, self-conflict splitting, compatible rematerialization, clobber-aware
@@ -521,7 +510,9 @@ Chapter 25 freezes the 212 earlier compilation entries in
Constructor/library adaptations change IR, so this is a program-cohort comparison,
not identical machine graphs. Those rows replay allocation and legality checks;
current Chapter25Test native checks and a fresh system-library encoding contribute
-ten more allocations. Earlier audit total, before adjacent-copy forwarding: **2,597 moves / 5,579 loop-weighted moves** over 222
+14 more recorded allocations. The complete 2026-10-02 replay totals **2,568 moves /
+5,459 loop-weighted moves** over 226 compilations after the fixture repair below.
+Earlier audit total, before adjacent-copy forwarding: **2,597 moves / 5,579 loop-weighted moves** over 222
compilations. Chapter 25's area/cost implementation is retained. Substituting the
earlier ranking saves five moves on the clients but fails a fresh `sys` allocation
at the eight-round limit; a failed library cannot be omitted from the comparison.
@@ -556,6 +547,18 @@ The top-level runner accepts explicit chapter lists, e.g.
## Validation record
+- **Chapter 25 historical String fixtures (2026-10-02).** Added an explicit
+ constructor initializing the required non-null `cs` field in
+ `Chapter21Test-testStringExport.smp`, `Chapter21AllocTest-testString.smp`, and
+ `Chapter23AllocTest-testString.smp`. Equality/hash bodies and the frozen
+ 212-entry manifest are unchanged; all ten formerly failing entries now pass.
+ These source adaptations establish a new comparison baseline, rather than
+ demonstrating an allocator-only improvement. `make -C chapter25 spill-stats`
+ passes all 212 historical entries, fresh system-library encoding, and all 23
+ Chapter25Test tests, with zero spill-golden failures. The complete 226 recorded
+ allocations total **2,568 retained moves / 5,459 weighted moves**; the README
+ contains the cohort breakdown. Log: `build/string-fixtures-spill.log`.
+
- **Function loop-tree boundaries, Chapters 18-25.** Stop the post-order loop
walk at Return, seed each function's outer tree before visiting its body, and
use that tree for synthetic exit projections, return Regions and the parent
@@ -617,10 +620,11 @@ The top-level runner accepts explicit chapter lists, e.g.
invariant length, a possibly aliasing arm, a changing loop pointer, differing
stored values at a multiway merge, and reads before writes. Seeds 0 and 9 are
retained in the regression for unresolved Store aliases and nested Phi queueing.
- The historical spill replay retains exactly its **ten known String-constructor
+ At that audit, the historical spill replay retained exactly its **ten known String-constructor
parse failures**, with no spill-golden or native-check failures. The same 216
successful allocations total **2,488 moves / 5,379 weighted moves**, compared
with 2,494 / 5,399 before this port; this is not a complete-suite total.
+ The subsequent historical String fixture repair above restores a complete replay.
Logs: `build/mem25-negative.log`, `build/mem25-seeds.log`,
`build/mem25-final2.log` (spill replay), and `build/mem25-final4.log`
(full tests and release).