From 7edca9823ec8ef0aed10c88fa07ef969792aab77 Mon Sep 17 00:00:00 2001 From: Cliff Click Date: Mon, 19 Oct 2026 14:56:14 -0700 Subject: Split from ch25, SCCP and interprocedural SCCP --- chapter25/ROADMAP.md | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) (limited to 'chapter25/ROADMAP.md') diff --git a/chapter25/ROADMAP.md b/chapter25/ROADMAP.md index 966bf8e9..b5647587 100644 --- a/chapter25/ROADMAP.md +++ b/chapter25/ROADMAP.md @@ -487,6 +487,26 @@ Mutable fields may have static initial contents without becoming constants. Choose read-only storage only when no runtime writes remain. Static reference cycles can use relocations without requiring a dynamic initialization cycle. +For a wholly immutable, pre-initialized class, eliminate the mutable `$init` +state as well as the checks so the class image can reside in ROM. The native +function thunks preserve static initialization of function fields. + +### Compact code and data arenas + +Keep four-byte Simple references into bounded code and data arenas; the arenas +need not overlap or live near zero. Choose absolute addresses versus offsets +from an arena base when implementing placement and indirect calls. Native +function thunks can occupy the code arena while native libraries live elsewhere. +The current thunk implementation uses the existing low-address executable; +ordinary data pointers still occupy eight bytes. + +Give full-width native pointers separate types and foreign lifetime contracts. +Opaque device addresses may need to be passed through without CPU dereference. +Simple object lifetimes should be managed automatically without a GC; +ownership, borrowing, cycles, and native retention still need design. Compact +storage alone does not establish those rules. Preserve static class images and +explicit native boundary conversions when choosing the arena representation. + ### CFG frequency estimates After lowering and loop-tree construction, estimate block frequencies for GCM -- cgit v1.2.3