diff options
| author | Cliff Click <cliffc@acm.org> | 2026-09-30 19:25:04 -0700 |
|---|---|---|
| committer | Cliff Click <cliffc@acm.org> | 2026-09-30 19:25:04 -0700 |
| commit | c4dcf6f751b35c7a2a3b46fa2d69b95d37d082a6 (patch) | |
| tree | e5ad31706399578310cfbb3b0387a77cf83372ba /chapter25/README.md | |
| parent | a996996a1ad776089a4cb9cbf7744f5f4e8dde6d (diff) | |
| download | Simple-c4dcf6f751b35c7a2a3b46fa2d69b95d37d082a6.tar.gz Simple-c4dcf6f751b35c7a2a3b46fa2d69b95d37d082a6.zip | |
Finish forward-port mem ops thru ch25
Diffstat (limited to 'chapter25/README.md')
| -rw-r--r-- | chapter25/README.md | 18 |
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) |
