summaryrefslogtreecommitdiff
path: root/skills/chapter25-codex-notes.md
diff options
context:
space:
mode:
Diffstat (limited to 'skills/chapter25-codex-notes.md')
-rw-r--r--skills/chapter25-codex-notes.md13
1 files changed, 12 insertions, 1 deletions
diff --git a/skills/chapter25-codex-notes.md b/skills/chapter25-codex-notes.md
index 5084ab63..7fe2724c 100644
--- a/skills/chapter25-codex-notes.md
+++ b/skills/chapter25-codex-notes.md
@@ -16,7 +16,8 @@ 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, chapter-incomplete-types, and chapter-construction; numbered 24/25
+chapter-interprocedural-sccp, chapter-incomplete-types, chapter-construction,
+and chapter-escape; numbered 24/25
remain comparison baselines.
For shared viewer work, read [the graph viewer notes](graph-viewer-codex-notes.md).
@@ -81,6 +82,16 @@ For shared viewer work, read [the graph viewer notes](graph-viewer-codex-notes.m
Construction privacy follows language rules; global escape discovery is a
separate topic, with no required teaching order between them.
+- The escape snapshot carries function/alias exposure sets in TypeMem. Stop
+ feeds externally visible results/memory back to Start; SCCP restores unknown
+ callers only for exposed function identities. Their parameters use declared
+ bounds, never the narrower values inferred from known calls. External callers
+ already hold their object arguments, so writes through them expose addresses.
+ Native calls are exposure roots even when their path has no live Return.
+ FinalizeIR freezes this feedback before replacing call edges with emission
+ roots; the analysis cycle is not runtime CFG. Keep construction's local SSA
+ representation and early-self restrictions for the planned boundary review.
+
- 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