notes for next RDI pass to support namespacing, support scope-based lookups for local-statics, support fully-qualified namespace name resolution, & simplify/merge RDI variable symbol types, & reduce a lot of size in RDIs!

This commit is contained in:
Ryan Fleury
2026-03-04 15:35:57 -08:00
parent f59da0be9c
commit 953f58fd44
+14
View File
@@ -4,6 +4,20 @@
////////////////////////////////
//~ rjf: post-0.9.20 TODO notes
//
//- namespace/locations/variables RDI pass
// [ ] RDI_Local, RDI_GlobalVariable, RDI_ThreadVariable -> RDI_Variable
// [ ] RDI_Variable gets RDI_ContainerFlags, and a container_idx
// [ ] RDI_Namespace can be a container, same as types/procedures
// [ ] If procedure-contained, then index goes to scope now, not procedure
// [ ] Location sections -> split by location kind, fixed tables for simple locations, one catch-all table for bytecode.
// [ ] Location kind -> can be thread-local offset, or module virtual offset, to enclose globals/tlocals cases
// [ ] Referring to one location -> kind * index
// [ ] Referring to many locations, based on scope offsets -> kind = BlockList; BlockList encodes a first/opl pair into Block table, each Block has scope_off_first/opl, location_kind, location_idx - but a block's location kind CANNOT BE BlockList
// [ ] RDI_Variable has location_kind, location_idx
// [ ] symbols only store their *partly-qualified name*, e.g. `x` for A::B::C::x
// [ ] default name maps look up *partly-qualified names*
// [ ] to match a *fully qualified name*, there needs to be a second kind of different lookup - instead of string-matching, we need to match against the *fully qualified names*. the maps must be built by hashing the *fully qualified name*, but redirecting to the symbol with the *partially qualified name*. this is to allow fully-qualified lookups, but avoid storing fully-qualified names.
//
//- urgent fixes
// [ ] (use msvc assert as an example) show fastfail exception info (code, name, etc.) - comes from ExceptionInformation @fastfail
// [ ] stepping w/ spoofs & shadow stack enabled - writing spoof will send a stack buffer overrun event @shadow_stack_step