fix(gen): 移除 vtable 临时诊断代码并扩容 MAX_FUNCS 256→1024
1) 移除 _generate_vtable 中临时诊断块(含 self.find_func_global 调用), 该调用被当成 ClassGenMixin 类方法 mangling 导致 bootstrap 链接失败 (undefined symbol: ClassGenMixin.find_func_global)。 2) MAX_FUNCS 256→1024:VpiReader 注入依赖 declare(~102)+ 大模块方法 (stmts 162 个)累积使函数表恰好溢出,ImportFrom.dump 等第 257 个 注册静默失败 → vtable 缺实现误杀。同步 7 处(HandlesTranslator/ TranslatorGenMixin 常量 + ClassGenMixin/FuncGenMixin/VpiReader 硬编码)。
This commit is contained in:
1 parent
9d0ecf1c5d
commit
07e1efeb82
5 files changed
+7
-7
No files matched your search
@@ -896,7 +896,7 @@ def _ParseVpiIntoModuleImpl(pool: memhub.MemBuddy | t.CPtr,
|
||||
|
||||
# 函数表信息
|
||||
funcs_ptr: HandlesExprCall.FuncEntry | t.CPtr = trans._funcs
|
||||
max_funcs: int = 256
|
||||
max_funcs: int = 1024
|
||||
|
||||
i: t.CSizeT
|
||||
for i in range(n):
|
||||
|
||||
@@ -3497,7 +3497,7 @@ class ClassGenMixin:
|
||||
md_default_count = len(md_dlist)
|
||||
|
||||
# 注册到函数表(用 ClassName.method_name 作为查找名,支持后缀匹配)
|
||||
max_funcs: int = 256
|
||||
max_funcs: int = 1024
|
||||
if HandlesExprCall.add_func_to_table(funcs_ptr, func_count, full_name, func, max_funcs,
|
||||
md_defaults, md_default_count, md_param_count,
|
||||
pool) == 0:
|
||||
@@ -3765,7 +3765,7 @@ class ClassGenMixin:
|
||||
return 0
|
||||
|
||||
# 注册到函数表
|
||||
max_funcs: int = 256
|
||||
max_funcs: int = 1024
|
||||
rc_add: int = HandlesExprCall.add_func_to_table(funcs_ptr, func_count, full_name, func, max_funcs, None, 0, 0, pool)
|
||||
if rc_add == 0:
|
||||
trans._func_count = func_count + 1
|
||||
|
||||
@@ -415,7 +415,7 @@ class FuncGenMixin:
|
||||
fd_default_count = len(fd_dlist)
|
||||
|
||||
# 注册到函数表(用裸名 fd.name,不是 mangled_name)
|
||||
max_funcs: int = 256
|
||||
max_funcs: int = 1024
|
||||
cur_count: int = trans._func_count
|
||||
if HandlesExprCall.add_func_to_table(funcs_ptr, cur_count, fd.name, func, max_funcs,
|
||||
fd_defaults, fd_default_count, fd_param_count,
|
||||
@@ -663,7 +663,7 @@ class FuncGenMixin:
|
||||
tfd_default_count = len(tfd_dlist)
|
||||
|
||||
# 注册到函数表
|
||||
max_funcs: int = 256
|
||||
max_funcs: int = 1024
|
||||
if HandlesExprCall.add_func_to_table(funcs_ptr, func_count, fd.name, func, max_funcs,
|
||||
tfd_defaults, tfd_default_count, tfd_param_count,
|
||||
trans.Pool) == 0:
|
||||
|
||||
@@ -45,7 +45,7 @@ import lib.core.Handles.HandlesAnnAssign as HandlesAnnAssign
|
||||
# 常量(与 HandlesTranslator 保持一致)
|
||||
# ============================================================
|
||||
MAX_VARS: t.CDefine = 256
|
||||
MAX_FUNCS: t.CDefine = 256
|
||||
MAX_FUNCS: t.CDefine = 1024
|
||||
MAX_GLOBAL_NAMES: t.CDefine = 32
|
||||
|
||||
|
||||
|
||||
@@ -48,7 +48,7 @@ import lib.Projectrans.Config as Config
|
||||
|
||||
# 常量
|
||||
MAX_VARS: t.CDefine = 256
|
||||
MAX_FUNCS: t.CDefine = 256
|
||||
MAX_FUNCS: t.CDefine = 1024
|
||||
MAX_GLOBAL_NAMES: t.CDefine = 32
|
||||
|
||||
|
||||
|
||||
Reference in new issue
Block a user