refactor(tpv): rowptr[T] 迁移 + D 表定长缓冲改精确分配 + SHA1 前缀判定收敛(D1/D3/D4/D5/D6/D7/C10)

This commit is contained in:
TermiNexus committed 2026-09-12 11:09:35 +08:00
1 parent 7471cc64f9
commit 82eea2719f
66 files changed
+2709 -2604

No files matched your search

+9 -9
View File
@@ -25,7 +25,7 @@ import lib.core.Gen.GenApi as GenApi
class ExprGenName(ExprGenBase.ExprGenBase):
"""Name/Subscript/下标访问"""
def _cut_from_import_mod(self, pool: memhub.MemBuddy | t.CPtr,
def _cut_from_import_mod(self, pool: rowptr[memhub.MemBuddy],
raw: str) -> str:
"""截断 lookup_from_import 返回的模块名到独立缓冲
@@ -51,7 +51,7 @@ class ExprGenName(ExprGenBase.ExprGenBase):
return buf_c
def translate_name_value(self, builder: llvmlite.IRBuilder | t.CPtr,
pool: memhub.MemBuddy | t.CPtr,
pool: rowptr[memhub.MemBuddy],
node: ast.AST | t.CPtr,
trans: HT.Translator | t.CPtr = None) -> llvmlite.Value | t.CPtr:
"""翻译变量引用(Name 节点)→ load"""
@@ -387,7 +387,7 @@ class ExprGenName(ExprGenBase.ExprGenBase):
# 返回元素地址 (i8*),调用方根据元素类型 load 正确的值
# ============================================================
def list_getitem_inline(self, builder: llvmlite.IRBuilder | t.CPtr,
pool: memhub.MemBuddy | t.CPtr,
pool: rowptr[memhub.MemBuddy],
lm_obj: llvmlite.Value | t.CPtr,
idx_val: llvmlite.Value | t.CPtr,
node: ast.AST | t.CPtr = None) -> llvmlite.Value | t.CPtr:
@@ -427,7 +427,7 @@ class ExprGenName(ExprGenBase.ExprGenBase):
# 支持: list[int]→i32, list[str]/list[bytes]→i8*, list[CInt]→i32 等
# 默认: i32
# ============================================================
def _list_elem_type_from_name(self, pool: memhub.MemBuddy | t.CPtr,
def _list_elem_type_from_name(self, pool: rowptr[memhub.MemBuddy],
struct_name: str) -> llvmlite.LLVMType | t.CPtr:
"""从 list 类型名提取元素 LLVM 类型"""
if pool is None or struct_name is None:
@@ -488,7 +488,7 @@ class ExprGenName(ExprGenBase.ExprGenBase):
# llvmlite.Ptr(entry.Ty)(list 元素槽 8 字节存对象指针)。全部未命中
# 返回 None(调用方回退 Ptr(i8) 旧行为,不影响已支持的内置元素)。
# ============================================================
def _list_elem_obj_ty_from_struct_name(self, pool: memhub.MemBuddy | t.CPtr,
def _list_elem_obj_ty_from_struct_name(self, pool: rowptr[memhub.MemBuddy],
struct_name: str) -> llvmlite.LLVMType | t.CPtr:
"""从 list 特化类型名还原元素对象指针 LLVM 类型,失败返回 None"""
if pool is None or struct_name is None:
@@ -556,7 +556,7 @@ class ExprGenName(ExprGenBase.ExprGenBase):
# 直接存储 rhs_val 到元素地址 (coerce 为 i8* 后 store)
# ============================================================
def list_setitem_inline(self, builder: llvmlite.IRBuilder | t.CPtr,
pool: memhub.MemBuddy | t.CPtr,
pool: rowptr[memhub.MemBuddy],
lm_obj: llvmlite.Value | t.CPtr,
idx_val: llvmlite.Value | t.CPtr,
rhs_val: llvmlite.Value | t.CPtr,
@@ -669,7 +669,7 @@ class ExprGenName(ExprGenBase.ExprGenBase):
# 正确路径:从 env 读堆地址(_load_raw_var_ptr)→ bitcast → GEP。
# ============================================================
def _nonlocal_subscript_ptr(self, builder: llvmlite.IRBuilder | t.CPtr,
pool: memhub.MemBuddy | t.CPtr,
pool: rowptr[memhub.MemBuddy],
trans: HT.Translator | t.CPtr,
nm_id: str,
idx_val: llvmlite.Value | t.CPtr) -> llvmlite.Value | t.CPtr:
@@ -712,7 +712,7 @@ class ExprGenName(ExprGenBase.ExprGenBase):
# list[T]: 泛型类不注册 struct,subscript 走 __getitem__ 内联路径
# ============================================================
def translate_subscript(self, builder: llvmlite.IRBuilder | t.CPtr,
pool: memhub.MemBuddy | t.CPtr,
pool: rowptr[memhub.MemBuddy],
mod: llvmlite.LLVMModule | t.CPtr,
node: ast.AST | t.CPtr,
trans: HT.Translator | t.CPtr = None) -> llvmlite.Value | t.CPtr:
@@ -1095,7 +1095,7 @@ class ExprGenName(ExprGenBase.ExprGenBase):
return 0
def get_subscript_ptr(self, builder: llvmlite.IRBuilder | t.CPtr,
pool: memhub.MemBuddy | t.CPtr,
pool: rowptr[memhub.MemBuddy],
mod: llvmlite.LLVMModule | t.CPtr,
node: ast.AST | t.CPtr,
trans: HT.Translator | t.CPtr = None) -> llvmlite.Value | t.CPtr: