refactor(tpv): rowptr[T] 迁移 + D 表定长缓冲改精确分配 + SHA1 前缀判定收敛(D1/D3/D4/D5/D6/D7/C10)
This commit is contained in:
1 parent
7471cc64f9
commit
82eea2719f
66 files changed
+2709
-2604
No files matched your search
@@ -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:
|
||||
|
||||
Reference in new issue
Block a user