stage1 修复类型体内部函数前向引用时 CALL 地址错误

This commit is contained in:
zzy
2026-07-12 22:16:17 +08:00
parent 1ceda90207
commit b67edc5cee
7 changed files with 273 additions and 44 deletions

View File

@@ -390,6 +390,15 @@ int spl_prog_add_func_simple(spl_prog_t *prog, const char *name, spl_val_t nargs
return (int)vec_size(prog->funcs) - 1;
}
int spl_prog_update_func(spl_prog_t *prog, int func_idx, const char *name, spl_val_t nargs) {
if (!prog || func_idx < 0 || func_idx >= (int)vec_size(prog->funcs))
return spl_prog_add_func_simple(prog, name, nargs);
spl_func_t *func = &vec_at(prog->funcs, func_idx);
func->address = vec_size(prog->insns);
func->nargs = nargs;
return func_idx;
}
void spl_prog_end_func(spl_prog_t *prog, int func_idx) {
if (!prog || func_idx < 0 || func_idx >= (int)vec_size(prog->funcs))
return;