summaryrefslogtreecommitdiff
path: root/chapter25/README.md
diff options
context:
space:
mode:
authorCliff Click <cliffc@acm.org>2026-09-30 19:25:04 -0700
committerCliff Click <cliffc@acm.org>2026-09-30 19:25:04 -0700
commitc4dcf6f751b35c7a2a3b46fa2d69b95d37d082a6 (patch)
treee5ad31706399578310cfbb3b0387a77cf83372ba /chapter25/README.md
parenta996996a1ad776089a4cb9cbf7744f5f4e8dde6d (diff)
downloadSimple-c4dcf6f751b35c7a2a3b46fa2d69b95d37d082a6.tar.gz
Simple-c4dcf6f751b35c7a2a3b46fa2d69b95d37d082a6.zip
Finish forward-port mem ops thru ch25
Diffstat (limited to 'chapter25/README.md')
-rw-r--r--chapter25/README.md18
1 files changed, 15 insertions, 3 deletions
diff --git a/chapter25/README.md b/chapter25/README.md
index 4feef80f..b7925a1f 100644
--- a/chapter25/README.md
+++ b/chapter25/README.md
@@ -9,6 +9,16 @@ These are the contents of the current snapshot. Independent correctness fixes
will move to earlier chapters first; moving the larger SSA redesign backward,
or splitting this chapter, is deferred. See the [backport queue](../docs/chapter-backports.md).
+The memory work from Chapters 21-24 carries forward here: Load search proves
+all arms of a merge before moving a read out of a loop, Phi factoring checks
+memory clobbers, and scheduling follows aliases through memory aggregates.
+The search follows `EscapeNode` to private or public memory and waits for
+unresolved Store aliases. Array-length reads have no element bounds check;
+array-element reads retain control. Integer value Phis use the existing typed
+conversion machinery to preserve the load's width across loop widening.
+New still produces private constructor memory, with publication handled by
+Escape; the earlier chapters' allocation-input design does not replace it.
+
You can also read [this chapter](https://github.com/SeaOfNodes/Simple/tree/linear-chapter25)
in the [linear history](https://github.com/SeaOfNodes/Simple/tree/linear) and
[compare it with Chapter 24](https://github.com/SeaOfNodes/Simple/compare/linear-chapter24...linear-chapter25).
@@ -168,10 +178,12 @@ used only by the next instruction is removed when the operand accepts its
source register and is not tied to the instruction's result.
The table below is the **earlier audit**, before adjacent-copy forwarding.
-The current replay has ten String-constructor parse failures, also reproduced
+The replay has ten String-constructor parse failures, also reproduced
with the original allocator. On the identical 216 successful allocations,
-forwarding reduces 2,563 / 5,496 moves / weighted moves to 2,494 / 5,399.
-This is a partial comparison, not a replacement complete-suite total. The
+adjacent-copy forwarding reduced 2,563 / 5,496 moves / weighted moves to
+2,494 / 5,399. The subsequent memory corrections produce 2,488 / 5,379 on
+those same 216 successful allocations. These are partial comparisons, not
+replacement complete-suite totals. The
current cohort 25 has 14 allocations, including later C return ABI checks;
the historical table has ten. Native cohort-25 checks and fresh system-library
encoding pass in both runs. See the [backport record](../docs/chapter-backports.md)