diff options
| author | Cliff Click <cliffc@acm.org> | 2026-10-22 15:47:50 -0700 |
|---|---|---|
| committer | Cliff Click <cliffc@acm.org> | 2026-10-22 15:47:50 -0700 |
| commit | deafd9a6fa34938c0c8c9589097e8c84e39bfa1b (patch) | |
| tree | db39ecbad856f986b84e229dbc4c023473892976 /skills/chapter25-codex-notes.md | |
| parent | dbcaebdefff26658debc29cae284ad4aa0da4c65 (diff) | |
| download | Simple-deafd9a6fa34938c0c8c9589097e8c84e39bfa1b.tar.gz Simple-deafd9a6fa34938c0c8c9589097e8c84e39bfa1b.zip | |
Split out the constructor chaptermain
Diffstat (limited to 'skills/chapter25-codex-notes.md')
| -rw-r--r-- | skills/chapter25-codex-notes.md | 16 |
1 files changed, 15 insertions, 1 deletions
diff --git a/skills/chapter25-codex-notes.md b/skills/chapter25-codex-notes.md index f1afd669..5084ab63 100644 --- a/skills/chapter25-codex-notes.md +++ b/skills/chapter25-codex-notes.md @@ -16,7 +16,7 @@ count changes. Cliff approved starting with both proposed boundaries and wants to review/play with construction versus escape after the snapshots run. Keep that border open to refinement. Revisit 17a/17b when choosing final names or numbers. The first extracted snapshots are chapter-sccp, -chapter-interprocedural-sccp, and chapter-incomplete-types; numbered 24/25 +chapter-interprocedural-sccp, chapter-incomplete-types, and chapter-construction; numbered 24/25 remain comparison baselines. For shared viewer work, read [the graph viewer notes](graph-viewer-codex-notes.md). @@ -67,6 +67,20 @@ For shared viewer work, read [the graph viewer notes](graph-viewer-codex-notes.m ## Mutability and chapter boundaries +- A symbolic Store with alias 1 is a barrier to Load forwarding: until its + field resolves it may write the queried alias. Skipping it can turn a byte + compound assignment at 255 into a stale read of 255 instead of 2. Both + incomplete-types and construction keep this barrier; exercise worklist seeds. +- Constructor fields stay in local SSA values and ordinary Phis. Emit ordinary + initializing Stores at helper exits and package precise aliases in MemMerge. + Private memory carries fields between helpers and into publication; it does + not carry each loop update. Keep converted field values in private summaries + and keep unwritten fields visible to completion checks. Constructor bodies + are parsed after the field list closes, so later fields also have local slots. + The discarded InitStore/InitPhi design must not be brought into the EA split. + Construction privacy follows language rules; global escape discovery is a + separate topic, with no required teaching order between them. + - Native function addresses in AMD64 ELF use low-address tail-jump thunks. Static fields and computed addresses must name the same weak entry across objects; direct calls can still use the native PLT. A native FunPtr has no |
