错拼 rowptr 改为 rawptr

This commit is contained in:
TermiNexus committed 2026-09-16 11:42:28 +08:00
1 parent 7cba4cbc95
commit 9a191daa8d
70 files changed
+585 -585

No files matched your search

+8 -8
View File
@@ -492,7 +492,7 @@ class ClassGenBase:
elif string.strcmp(at.attr, "deleter") == 0:
meta |= GenTypes.META_PROP_DELETER
return meta
def register_class_meta(self, pool: rowptr[memhub.MemBuddy],
def register_class_meta(self, pool: rawptr[memhub.MemBuddy],
kind: int, cls: str, field: str) -> int:
"""注册类编译期元数据字段(__provides__/__requires__/__require_must__,幂等)"""
if pool is None or cls is None or field is None:
@@ -545,7 +545,7 @@ class ClassGenBase:
return self.ClassMetaFields + i * 64
n_cm2 += 1
return None
def register_decorator(self, pool: rowptr[memhub.MemBuddy],
def register_decorator(self, pool: rawptr[memhub.MemBuddy],
func_name: str, wrapper_name: str,
arg0: int64) -> int:
"""注册自定义装饰器函数(@log/@skip/@repeat(3) → __decor_wrap_{name})
@@ -606,7 +606,7 @@ class ClassGenBase:
"""懒初始化异常表(perm_pool),返回 0 成功"""
if self.ExceptionNames is not None:
return 0
pp_e: rowptr[memhub.MemBuddy] = CompilerFactory.factory.PermPool
pp_e: rawptr[memhub.MemBuddy] = CompilerFactory.factory.PermPool
if pp_e is None:
return -1
self.ExceptionNames = pp_e.alloc(EXCEPTION_MAX * EXCEPTION_NAME_LEN)
@@ -785,7 +785,7 @@ class ClassGenBase:
parent_e: str = self._get_exception_parent_name(cd)
self.register_exception(cd.name, parent_e)
return 0
def _register_class_meta_list(self, pool: rowptr[memhub.MemBuddy],
def _register_class_meta_list(self, pool: rawptr[memhub.MemBuddy],
kind: int, cls: str, value_node: ast.AST | t.CPtr) -> None:
"""解析类体 __provides__/__requires__ 的 list[str] 字面量并注册"""
if value_node is None or cls is None:
@@ -903,7 +903,7 @@ class ClassGenBase:
return 1
return 0
def _get_base_name(self, base_node: ast.AST | t.CPtr,
pool: rowptr[memhub.MemBuddy] = None) -> str:
pool: rawptr[memhub.MemBuddy] = None) -> str:
"""从 base AST 节点提取基类名,返回 None=失败
对于 Subscript 节点,需要 pool 分配内存拼接特化名;
@@ -960,7 +960,7 @@ class ClassGenBase:
"""获取 ClassDef 的真实父类名,返回 None=无真实父类"""
if cd is None or cd.bases is None:
return None
pool: rowptr[memhub.MemBuddy] = None
pool: rawptr[memhub.MemBuddy] = None
if trans is not None:
pool = trans.Pool
bases: list[ast.AST | t.CPtr] | t.CPtr = cd.bases
@@ -1007,7 +1007,7 @@ class ClassGenBase:
og_buf[og_len] = '\0'
return og_buf
return base_name
def _collect_parents(self, pool: rowptr[memhub.MemBuddy],
def _collect_parents(self, pool: rawptr[memhub.MemBuddy],
cd: ast.ClassDef | t.CPtr,
parents_buf: sizet | t.CPtr,
max_parents: int,
@@ -1061,7 +1061,7 @@ class ClassGenBase:
"""触发 base 中 Subscript 的泛型特化(如 GSListNode[Value])"""
if trans is None or cd is None or cd.bases is None:
return
pool: rowptr[memhub.MemBuddy] = trans.Pool
pool: rawptr[memhub.MemBuddy] = trans.Pool
bases: list[ast.AST | t.CPtr] | t.CPtr = cd.bases
bn: sizet = len(bases)
if bn == 0:
+1 -1
View File
@@ -38,7 +38,7 @@ class ClassGenDef(ClassGenBase.ClassGenBase):
if cd is None or cd.name is None:
return 0
pool: rowptr[memhub.MemBuddy] = trans.Pool
pool: rawptr[memhub.MemBuddy] = trans.Pool
class_name: str = cd.name
if trans.ModuleSha1 is None:
+14 -14
View File
@@ -34,7 +34,7 @@ RENUM_ALIAS_MAX: t.CDefine = 512
class ClassGenEnum(ClassGenBase.ClassGenBase):
"""enum/union/renum 定义与变体表"""
def _resolve_enum_member_type(self, pool: rowptr[memhub.MemBuddy],
def _resolve_enum_member_type(self, pool: rawptr[memhub.MemBuddy],
ann_node: ast.AST | t.CPtr,
imported_modules: str,
from_imports: str) -> llvmlite.LLVMType | t.CPtr:
@@ -151,7 +151,7 @@ class ClassGenEnum(ClassGenBase.ClassGenBase):
if cd is None or cd.name is None or trans is None:
return 0
pool: rowptr[memhub.MemBuddy] = trans.Pool
pool: rawptr[memhub.MemBuddy] = trans.Pool
class_name: str = cd.name
# 不按全局同名跳过:跨模块可能同名枚举(includes/w32/fileio.vp 的
@@ -398,7 +398,7 @@ class ClassGenEnum(ClassGenBase.ClassGenBase):
if cd is None or cd.name is None or trans is None:
return 0
pool: rowptr[memhub.MemBuddy] = trans.Pool
pool: rawptr[memhub.MemBuddy] = trans.Pool
class_name: str = cd.name
# 命名空间隔离:标记为当前文件可见(必须在 existing 检查之前)
@@ -552,7 +552,7 @@ class ClassGenEnum(ClassGenBase.ClassGenBase):
VLogger.info(f"registered {class_name} with {field_count} fields, max_size={max_size}", "UNION")
return 0
def _get_annotation_field_size(self, pool: rowptr[memhub.MemBuddy],
def _get_annotation_field_size(self, pool: rawptr[memhub.MemBuddy],
annotation: ast.AST | t.CPtr) -> int:
"""计算注解类型的字节大小,用于 REnum 布局计算"""
if annotation is None:
@@ -622,7 +622,7 @@ class ClassGenEnum(ClassGenBase.ClassGenBase):
if cd is None or cd.name is None or trans is None:
return 0
pool: rowptr[memhub.MemBuddy] = trans.Pool
pool: rawptr[memhub.MemBuddy] = trans.Pool
class_name: str = cd.name
# 命名空间隔离:标记为当前文件可见
@@ -643,7 +643,7 @@ class ClassGenEnum(ClassGenBase.ClassGenBase):
return 0
# 变体表缺失:中和旧 entry(对齐 ClassGenDef needs_rereg 先例),使
# find_struct_by_module 不再命中(按 Name 精确匹配),走下方完整注册路径
# 以同时修正 struct 布局 + 变体表。
# 以同时修正 struct 布局 + 变体表。
if existing.Name is not None:
existing.Name[0] = '\0'
existing.Ty = None
@@ -859,7 +859,7 @@ class ClassGenEnum(ClassGenBase.ClassGenBase):
# 注册变体字段名别名已在变体遍历时直接完成(避免 CSizeT→str 转换问题)。
# 注意:遍历发生在 register_struct 之前,注解引用本类自身(如
# LLVMType.Ptr.Pointee: rowptr[LLVMType])时类尚未注册 → 别名表类型槽
# LLVMType.Ptr.Pointee: rawptr[LLVMType])时类尚未注册 → 别名表类型槽
# 为 0 → match 绑定回退槽位 i64 把指针字段读成整数。此处类已注册,
# 补一遍字段类型解析回填 0 槽(详见 _refill_renum_field_types)。
self._refill_renum_field_types(trans, pool, class_name, cd)
@@ -867,18 +867,18 @@ class ClassGenEnum(ClassGenBase.ClassGenBase):
VLogger.info(f"registered {class_name} with {variant_count} variants, {total_positions} positions", "RENUM")
return 0
def _refill_renum_field_types(self, trans: HT.Translator | t.CPtr,
pool: rowptr[memhub.MemBuddy],
pool: rawptr[memhub.MemBuddy],
class_name: str,
cd: ast.ClassDef | t.CPtr):
"""REnum 注册完成后补解析变体字段类型(仅回填类型槽为 0 的别名记录)
第一遍变体字段遍历发生在 register_struct 之前:字段注解引用本 REnum 类
自身(如 LLVMType.Ptr.Pointee: rowptr[LLVMType]、Array.ElemTy:
rowptr[LLVMType]、Func.Ret: rowptr[LLVMType])时,find_struct 查不到
自身(如 LLVMType.Ptr.Pointee: rawptr[LLVMType]、Array.ElemTy:
rawptr[LLVMType]、Func.Ret: rawptr[LLVMType])时,find_struct 查不到
正在注册的类 → resolve_annotation_type 返回 None → _register_renum_field_alias
类型槽(RenumAliasTy)落 0。match 绑定时 _lookup_renum_member_ty 查不到
成员类型 → 绑定变量按 payload 槽位(i64)读取,把指针字段读成整数 →
递归传参/赋值给 rowptr[LLVMType] 形参被 int→ptr 显式拦截误报 CastError
递归传参/赋值给 rawptr[LLVMType] 形参被 int→ptr 显式拦截误报 CastError
(llvmlite __types.vp L448 根因)。
本方法在 register_struct 完成(自身类已可查)后按与第一遍相同的位置
@@ -932,7 +932,7 @@ class ClassGenEnum(ClassGenBase.ClassGenBase):
pool, class_name, vnm.id, field_idx + 1,
mem_ty_l, variant_cd.name)
field_idx += 1
def _register_renum_variants(self, pool: rowptr[memhub.MemBuddy],
def _register_renum_variants(self, pool: rawptr[memhub.MemBuddy],
class_name: str,
cd: ast.ClassDef | t.CPtr,
variant_count: int):
@@ -1175,7 +1175,7 @@ class ClassGenEnum(ClassGenBase.ClassGenBase):
return self.RenumVariantTags[name_offset]
return -1
return -1
def _register_renum_field_alias(self, pool: rowptr[memhub.MemBuddy],
def _register_renum_field_alias(self, pool: rawptr[memhub.MemBuddy],
class_name: str,
field_name: str,
payload_idx: int,
@@ -1194,7 +1194,7 @@ class ClassGenEnum(ClassGenBase.ClassGenBase):
# 懒初始化表(perm_pool:1a 每文件 reset 后表本体不被回收)
if self.RenumAliasClass is None:
alias_pool_rfa: rowptr[memhub.MemBuddy] = CompilerFactory.factory.PermPool
alias_pool_rfa: rawptr[memhub.MemBuddy] = CompilerFactory.factory.PermPool
self.RenumAliasClass = alias_pool_rfa.alloc(8 * RENUM_ALIAS_MAX)
self.RenumAliasField = alias_pool_rfa.alloc(8 * RENUM_ALIAS_MAX)
self.RenumAliasIndex = alias_pool_rfa.alloc(8 * RENUM_ALIAS_MAX)
+9 -9
View File
@@ -52,7 +52,7 @@ class ClassGenGeneric(ClassGenBase.ClassGenBase):
if tp is None:
return 0
return 1
def _register_generic_template(self, pool: rowptr[memhub.MemBuddy],
def _register_generic_template(self, pool: rawptr[memhub.MemBuddy],
cd: ast.ClassDef | t.CPtr,
module_sha1: str) -> None:
"""注册泛型类模板(类名 + ClassDef 节点 + 来源模块 SHA1)"""
@@ -115,7 +115,7 @@ class ClassGenGeneric(ClassGenBase.ClassGenBase):
string.strcat(buf, " ")
string.strcat(buf, tp_name)
return buf
def _find_generic_template_tp_params(self, pool: rowptr[memhub.MemBuddy],
def _find_generic_template_tp_params(self, pool: rawptr[memhub.MemBuddy],
class_name: str) -> list[str] | t.CPtr:
"""查找泛型类模板的类型参数名列表,未找到返回 None
@@ -209,7 +209,7 @@ class ClassGenGeneric(ClassGenBase.ClassGenBase):
f_val: str = files_local.get(i)
return f_val
return None
def _mangle_generic_class_name(self, pool: rowptr[memhub.MemBuddy],
def _mangle_generic_class_name(self, pool: rawptr[memhub.MemBuddy],
class_name: str,
type_args: list[str] | t.CPtr) -> str:
"""生成特化类名: list + [int] -> list[int]
@@ -246,7 +246,7 @@ class ClassGenGeneric(ClassGenBase.ClassGenBase):
string.strcat(mangled, ta)
string.strcat(mangled, "]")
return mangled
def _clone_annotation(self, pool: rowptr[memhub.MemBuddy],
def _clone_annotation(self, pool: rawptr[memhub.MemBuddy],
node: ast.AST | t.CPtr,
tp_names: list[str] | t.CPtr,
type_args: list[str] | t.CPtr) -> ast.AST | t.CPtr:
@@ -318,7 +318,7 @@ class ClassGenGeneric(ClassGenBase.ClassGenBase):
# 其他: 直接引用(不拷贝)
return node
def _clone_arguments(self, pool: rowptr[memhub.MemBuddy],
def _clone_arguments(self, pool: rawptr[memhub.MemBuddy],
args: ast.AST | t.CPtr,
tp_names: list[str] | t.CPtr,
type_args: list[str] | t.CPtr) -> ast.AST | t.CPtr:
@@ -347,7 +347,7 @@ class ClassGenGeneric(ClassGenBase.ClassGenBase):
new_arg_list.append(arg_node)
return ast.Arguments(pool, new_arg_list, old_args.vararg, old_args.kwarg,
old_args.defaults, old_args.kw_defaults)
def _clone_classdef_for_spec(self, pool: rowptr[memhub.MemBuddy],
def _clone_classdef_for_spec(self, pool: rawptr[memhub.MemBuddy],
cd: ast.ClassDef | t.CPtr,
spec_name: str,
tp_names: list[str] | t.CPtr,
@@ -416,7 +416,7 @@ class ClassGenGeneric(ClassGenBase.ClassGenBase):
if name_addr != 0:
return (str | t.CPtr)(t.CVoid(name_addr, t.CPtr))
return None
def _cache_spec(self, pool: rowptr[memhub.MemBuddy], spec_key: str, spec_name: str):
def _cache_spec(self, pool: rawptr[memhub.MemBuddy], spec_key: str, spec_name: str):
"""缓存特化结果(stdlib 深拷贝存储,跨文件安全)"""
if spec_key is None or spec_name is None:
return
@@ -463,7 +463,7 @@ class ClassGenGeneric(ClassGenBase.ClassGenBase):
merged[cur_len] = ' '
string.strcpy(merged + cur_len + 1, tdeps)
trans._imported_modules = merged
def _record_spec_trigger(self, pool: rowptr[memhub.MemBuddy],
def _record_spec_trigger(self, pool: rawptr[memhub.MemBuddy],
spec_name: str, trigger_sha1: str) -> int:
"""记录泛型特化类的触发文件 sha1(StructEntry.SpecTriggerSha1)
@@ -528,7 +528,7 @@ class ClassGenGeneric(ClassGenBase.ClassGenBase):
if ta_rsv_g is not None and string.strcmp(ta_raw_g, ta_rsv_g) != 0:
type_args.set(ta_i_g, ta_rsv_g)
pool: rowptr[memhub.MemBuddy] = trans.Pool
pool: rawptr[memhub.MemBuddy] = trans.Pool
# 1. 查找泛型模板
template_cd: ast.ClassDef | t.CPtr = self._find_generic_template(class_name)
+4 -4
View File
@@ -84,7 +84,7 @@ class ClassGenVTable(ClassGenBase.ClassGenBase):
if trans is None or cd is None or class_name is None:
return 0
pool: rowptr[memhub.MemBuddy] = trans.Pool
pool: rawptr[memhub.MemBuddy] = trans.Pool
mod: llvmlite.LLVMModule | t.CPtr = trans.Module
children: list[ast.AST | t.CPtr] | t.CPtr = cd.children
@@ -296,7 +296,7 @@ class ClassGenVTable(ClassGenBase.ClassGenBase):
return 0
pool: rowptr[memhub.MemBuddy] = trans.Pool
pool: rawptr[memhub.MemBuddy] = trans.Pool
mod: llvmlite.LLVMModule | t.CPtr = trans.Module
# 收集虚方法信息(继承父类 + 自身,结果存 self.VtFullNames 等暂存区)
@@ -579,7 +579,7 @@ class ClassGenVTable(ClassGenBase.ClassGenBase):
return 0
pool: rowptr[memhub.MemBuddy] = trans.Pool
pool: rawptr[memhub.MemBuddy] = trans.Pool
mod: llvmlite.LLVMModule | t.CPtr = trans.Module
imported_modules: str = trans._imported_modules
from_imports: str = trans._from_imports
@@ -1086,7 +1086,7 @@ class ClassGenVTable(ClassGenBase.ClassGenBase):
return 0
pool: rowptr[memhub.MemBuddy] = trans.Pool
pool: rawptr[memhub.MemBuddy] = trans.Pool
mod: llvmlite.LLVMModule | t.CPtr = trans.Module
funcs_ptr: GenTypes.FuncEntry | t.CPtr = trans._funcs
func_count: int = trans._func_count