feat(sidecar): 翻译点增写 {sha1}.full.ll,Phase B 改用在线 FULL 产物(④-b/④-c)
- 翻译点(Phase1Main / Phase2 PhaseA / Phase2 includes 重试)在 dump stub/text/meta 后
追加 dump_ir(OUTPUT_FULL) → {sha1}.full.ll(FULL 缓冲 16MB = stub+text 2× 余量)
- Phase1 增量跳转新增要求 full.ll 存在(缺失即重译补写)
- 新增 StubMergerBuild.LoadFullIR(与 BuildCombinedIR 同契约:读文件到 out_buf)
- Phase B 三处调用点 BuildCombinedIR → LoadFullIR;COMBINED_IR_SIZE 4MB → 16MB
- 诊断报文/注释同步(读 full.ll 失败)
full.ll 为模型在线时产出的自足单模块 IR(类型定义在声明之前,天然满足 llc 顺序);
BuildCombinedIR 暂保留(④-d 再删)。未编译验证。
This commit is contained in:
1 parent
ec9e950185
commit
cc8ea01476
3 files changed
+120
-19
No files matched your search
@@ -1389,6 +1389,40 @@ def HoistTypeDefsBeforeDeclares(buf: bytes, length: sizet) -> sizet:
|
||||
stdlib.free(tmp)
|
||||
return new_len
|
||||
|
||||
# ============================================================
|
||||
# LoadFullIR - 读 {temp_dir}/{sha1}.full.ll 到 out_buf(④-c:合并期改用在线 FULL 产物)
|
||||
#
|
||||
# 与 BuildCombinedIR 同契约:返回写入长度(sizet;0=失败),out_buf 以 '\0' 结尾。
|
||||
# full.ll 由翻译点在模型在线时 dump_ir(OUTPUT_FULL) 产出 —— 自足的单模块 IR
|
||||
# (类型定义 + external 声明 + 定义 + DI 一次齐全,类型定义天然在声明之前),
|
||||
# 无需再把 stub + 依赖 stub/text 文本合并。
|
||||
# ============================================================
|
||||
def LoadFullIR(temp_dir: str, sha1: str,
|
||||
out_buf: bytes, out_size: sizet) -> sizet:
|
||||
"""读取 {sha1}.full.ll 到 out_buf;返回长度(0=失败)"""
|
||||
if temp_dir is None or sha1 is None or out_buf is None or out_size == 0:
|
||||
return 0
|
||||
td_len: sizet = string.strlen(temp_dir)
|
||||
p: str = StubMergerCollect._sliced_path(temp_dir, td_len, sha1, "full.ll")
|
||||
if p is None:
|
||||
return 0
|
||||
f: rawptr[fileio.File] = fileio.File(p, fileio.MODE.R)
|
||||
stdlib.free(p)
|
||||
out_buf[0] = '\0'
|
||||
if f.closed:
|
||||
return 0
|
||||
if f.size() >= out_size:
|
||||
f.close()
|
||||
VLogger.error("full.ll 超过 IR 缓冲上限", "StubMerger")
|
||||
return 0
|
||||
rd: int64 = f.read_all(out_buf, out_size)
|
||||
f.close()
|
||||
if rd <= 0:
|
||||
return 0
|
||||
out_buf[rd] = '\0'
|
||||
return sizet(rd)
|
||||
|
||||
|
||||
# ============================================================
|
||||
# BuildCombinedIR - 组合本地 stub + 依赖 stubs + 本地 text → 完整 IR
|
||||
#
|
||||
|
||||
Reference in new issue
Block a user