TermiNexus
|
eef84657a1
|
fix(tpv): 修正 REnum 表按名查找与 match 分派,恢复 str() 指针强转
str() 对整数(sizet/i64)走 snprintf 十进制格式化(Python 语义),不是 i8* 强转;用它读 sizet|t.CPtr 联合表元素再 strcmp 永不相等 => _is_renum_class_name 恒 0、变体名查不到(__types.vp:407 bits / :159 Void 根因)。IR 实证 output/a8891afb66d3eda4.text.ll L5551-5558。
- ClassGenEnum: RenumClassNames/RenumVariantNames 读侧统一改 (str)(t.CVoid(x, t.CPtr));新增 _is_renum_by_entry 与 RenumTableDump;REnum 注册静默早退改 fail-fast
- MatchGenMixin/CallGenMixin: match 分派 2a/2b 与变体构造入口并上 by_entry 判据
- TypeGenResolve: 泛型下标 Phase B 解析不出特化时 fail-fast
- CallGenProp: 泛型特化名末段按括号外点切分
- CompilerFactory/ClassGenBase: REnum 注册表改挂编译期单例
- ClassGenDef: CEnum/REnum 分派歧义 fail-fast
|
2026-09-12 23:14:23 +08:00 |
|
TermiNexus
|
82eea2719f
|
refactor(tpv): rowptr[T] 迁移 + D 表定长缓冲改精确分配 + SHA1 前缀判定收敛(D1/D3/D4/D5/D6/D7/C10)
|
2026-09-12 11:09:35 +08:00 |
|
TermiNexus
|
7471cc64f9
|
docs(tpv): 精简 CompilerFactory 装配设计注释块
|
2026-09-12 10:52:00 +08:00 |
|
TermiNexus
|
54462320d2
|
简化了一些表达,最后仍使用 fb 缓冲区的版本(新版本使用 栈f-string)
|
2026-08-28 04:50:09 +08:00 |
|
TermiNexus
|
8d5dbeab89
|
feat: 引入 CompilerFactory 永久内存池,1a 每文件 reset 解 NewAstTest OOM
main 创建 512MB perm_pool(MemBuddy 第二实例,永不 reset)并注册
CompilerFactory 工厂(对齐 TPC Translator 装配模式,memhub 保持通用)。
各 Gen Mixin 跨 mark 持久表(struct/枚举/Renum/spec/vtable/全局函数/
闭包/函数指针/Cexport/Reexport/TraceFrames/Doc)全部迁移到 perm_pool,
替代 stdlib.malloc 深拷贝提升速度。
Phase1 1a 主循环(98 includes 全量 parse AST 驻留主 pool → 1GB 耗尽)
改为:StdlibAlloc=1 注册数据进 perm_pool + 每文件翻译完 reset_to(文件级
mark) 回收 AST;1b-pre vpi 预生成循环同样 reset_to(mark1)。同步修 7 处
reset 后悬空隐患:StructTable 表体、add_field DefaultVal、Renum 变体/
别名表内容、vtable full_names 内容、FuncptrRets 深拷贝。
CompilerFactory 类名与模块名同名(合法场景,TPC 已支持模块别名优先)。
|
2026-08-14 04:02:36 +08:00 |
|