错拼 rowptr 改为 rawptr
This commit is contained in:
1 parent
7cba4cbc95
commit
9a191daa8d
70 files changed
+585
-585
No files matched your search
@@ -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:
|
||||
|
||||
@@ -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:
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in new issue
Block a user