Commit Graph
2 Commits
Author SHA1 Message Date
TermiNexus 485ab0d329 docs(todo): 记录 list[ptr].append 运行期读零页崩溃待查
编译问题已解(2f0d52e 系列),但 list[ptr].append 运行期崩溃(读零页
0xf8/0x128/0x148)未根修:构造插桩确认 pool 有效 elem=8,差异在
item:t.CPtr 参数/lem_ptr[0]=item store 生成。当前 BuildPipeline 用
list[str] 绕开(TPV dc5bb21)。
2026-08-19 23:35:12 +08:00
TermiNexus 2f0d52e736 fix(gentype): list[t.CPtr] 特化与 list[对象] elem_size 根本修复
两处根因:
1. list[t.CPtr] 报 Undefined method 'append':
   - _resolve_generic_slice_type 对 t.CPtr 返回裸名 'CPtr',type_map['T']='CPtr'
     替换进模板(item: CPtr)后 CPtr 不在顶层作用域 → append 声明注册失败
   - 改保留带前缀 't.CPtr'(可解析)
   - 查找端(SymbolUtils.FindStructNameInAnnotation)与声明端
     (DeclarationGenerator)的 CPtr 统一规范化为 'ptr',与特化端
     _mangle_generic_class_name 一致(list[CPtr]/list[i8*] vs list[ptr])
   - _specialize_generic_class 的 cptr_params/class_type_names 判定改 tn_bare
2. list[对象] elem_size=0(get(0)==get(1) 同槽根因):
   - T.__sizeof__() 特化后为 'X | t.CPtr'(BinOp 联合),_HandleSizeofLlvm
     对 BinOp 落到 else 返回 0 → list.__elem_size__=0 → 元素全写同槽
   - 改含 t.CPtr 的联合类型返回 8(指针大小)
2026-08-19 22:44:15 +08:00