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:
TermiNexus committed 2026-08-13 06:54:40 +08:00
1 parent 9d0ecf1c5d
commit 07e1efeb82
5 files changed
+7 -7

No files matched your search

+1 -1
View File
@@ -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):
+2 -2
View File
@@ -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
+2 -2
View File
@@ -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:
+1 -1
View File
@@ -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
+1 -1
View File
@@ -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