清理了 t.CVoid

This commit is contained in:
TermiNexus committed 2026-09-16 16:06:48 +08:00
1 parent 9a191daa8d
commit cb0836de8a
43 files changed
+274 -355

No files matched your search

+3 -6
View File
@@ -569,8 +569,7 @@ def run_llc_parallel(tasks: bytes, task_count: int, max_threads: int) -> int:
# --phase2command 模式:不 spawn 线程,把 opt(ASan)+ llc 命令全部写入 bat
if _phase2_cmd_path is not None:
for pi2 in range(task_count):
tsk_p: LlcTask | t.CPtr = (LlcTask | t.CPtr)(t.CVoid(
uint64(tasks) + sizet(pi2) * LlcTask.__sizeof__(), t.CPtr))
tsk_p: LlcTask | t.CPtr = (LlcTask | t.CPtr)(uint64(tasks) + sizet(pi2) * LlcTask.__sizeof__())
if tsk_p is None:
continue
if tsk_p.OptCmd is not None:
@@ -596,8 +595,7 @@ def run_llc_parallel(tasks: bytes, task_count: int, max_threads: int) -> int:
batch_n = task_count - batch_start
# 本批 spawn
for j in range(batch_n):
tsk: LlcTask | t.CPtr = (LlcTask | t.CPtr)(t.CVoid(
uint64(tasks) + sizet(batch_start + j) * slot_size, t.CPtr))
tsk: LlcTask | t.CPtr = (LlcTask | t.CPtr)(uint64(tasks) + sizet(batch_start + j) * slot_size)
th: vthreading.Thread | t.CPtr = vthreading.Thread(_llc_task_worker, t.CPtr(tsk))
th.start()
# start() 后立即取出句柄(Thread 对象栈地址可能被后续构造复用,
@@ -611,8 +609,7 @@ def run_llc_parallel(tasks: bytes, task_count: int, max_threads: int) -> int:
w32.win32base.CloseHandle(h_j)
# 本批结果检查
for j in range(batch_n):
tsk2: LlcTask | t.CPtr = (LlcTask | t.CPtr)(t.CVoid(
uint64(tasks) + sizet(batch_start + j) * slot_size, t.CPtr))
tsk2: LlcTask | t.CPtr = (LlcTask | t.CPtr)(uint64(tasks) + sizet(batch_start + j) * slot_size)
if tsk2 is not None and tsk2.Result != 0:
# 失败:打印模块 sha1 + 退出码 + 完整命令(.ll 路径即命令末参数)
VLogger.error(f"llc 编译失败: {(tsk2.ModuleSha1 if tsk2.ModuleSha1 is not None else "?")} (exit={tsk2.ExitCode} cmd={(tsk2.LlcCmd if tsk2.LlcCmd is not None else "?")})", "LLC")
+7 -7
View File
@@ -256,7 +256,7 @@ def _BuildReachableResult(mb: rawptr[memhub.MemBuddy],
if StubMerger._sha1_store_incdir[iidx] == '\0':
continue
eaddr: uint64 = uint64(result.Entries) + uint64(result.Count) * entry_size
entry: IncludesScanner.FileEntry | t.CPtr = (IncludesScanner.FileEntry | t.CPtr)(t.CVoid(eaddr, t.CPtr))
entry: IncludesScanner.FileEntry | t.CPtr = (IncludesScanner.FileEntry | t.CPtr)(eaddr)
if entry is None:
continue
# SHA1 深拷贝(store 槽 17 字节)
@@ -507,7 +507,7 @@ def RunPhase1(mb: rawptr[memhub.MemBuddy], includes_dir: str, temp_dir: str,
topo_order, topo_count_box,
temp_dir, td_len_ts_call)
if ret_topo == 0:
tc_ptr: t.CPtr = (int | t.CPtr)(t.CVoid(topo_count_box, t.CPtr))
tc_ptr: t.CPtr = (int | t.CPtr)(topo_count_box)
if tc_ptr is not None:
topo_count = tc_ptr[0]
VLogger.info(f"拓扑排序: {class_count_scanned} 个类, {topo_count} 个文件按依赖顺序处理", "Phase1")
@@ -550,12 +550,12 @@ def RunPhase1(mb: rawptr[memhub.MemBuddy], includes_dir: str, temp_dir: str,
file_idx: int = i
if topo_count > 0:
od_addr: uint64 = uint64(topo_order) + i * 4
od_ptr: t.CPtr = (int | t.CPtr)(t.CVoid(od_addr, t.CPtr))
od_ptr: t.CPtr = (int | t.CPtr)(t.CPtr(od_addr))
if od_ptr is not None:
file_idx = od_ptr[0]
entry_addr_r: uint64 = uint64(result.Entries) + file_idx * entry_size
entry_r: IncludesScanner.FileEntry | t.CPtr = (IncludesScanner.FileEntry | t.CPtr)(t.CVoid(entry_addr_r, t.CPtr))
entry_r: IncludesScanner.FileEntry | t.CPtr = (IncludesScanner.FileEntry | t.CPtr)(entry_addr_r)
if entry_r is None:
p1a_fl += 1
continue
@@ -715,7 +715,7 @@ def RunPhase1(mb: rawptr[memhub.MemBuddy], includes_dir: str, temp_dir: str,
t_pv0: uint64 = w32.win32base.GetTickCount64()
for i_pv in range(result.Count):
entry_addr_pv: uint64 = uint64(result.Entries) + i_pv * entry_size
entry_pv: IncludesScanner.FileEntry | t.CPtr = (IncludesScanner.FileEntry | t.CPtr)(t.CVoid(entry_addr_pv, t.CPtr))
entry_pv: IncludesScanner.FileEntry | t.CPtr = (IncludesScanner.FileEntry | t.CPtr)(entry_addr_pv)
if entry_pv is None or entry_pv.Sha1 is None:
p1bpre_failed += 1
continue
@@ -836,11 +836,11 @@ def RunPhase1(mb: rawptr[memhub.MemBuddy], includes_dir: str, temp_dir: str,
file_idx_b: int = i
if topo_count > 0:
od_addr_b: uint64 = uint64(topo_order) + sizet(i) * 4
od_ptr_b: t.CPtr = (int | t.CPtr)(t.CVoid(od_addr_b, t.CPtr))
od_ptr_b: t.CPtr = (int | t.CPtr)(od_addr_b)
if od_ptr_b is not None:
file_idx_b = od_ptr_b[0]
entry_addr: uint64 = uint64(result.Entries) + sizet(file_idx_b) * entry_size
entry: IncludesScanner.FileEntry | t.CPtr = (IncludesScanner.FileEntry | t.CPtr)(t.CVoid(entry_addr, t.CPtr))
entry: IncludesScanner.FileEntry | t.CPtr = (IncludesScanner.FileEntry | t.CPtr)(entry_addr)
if entry is None:
failed += 1
continue
+4 -4
View File
@@ -79,7 +79,7 @@ def _ScanClassInheritance(mb: rawptr[memhub.MemBuddy],
# class_names_buf/parent_names_buf/def_sha1s_buf 与 generic_file_indices 在调用前分配、位于本 mark 之前,reset 不影响。
scan_mark: sizet = mb.mark()
entry_addr: uint64 = uint64(result.Entries) + i * entry_size
entry: IncludesScanner.FileEntry | t.CPtr = (IncludesScanner.FileEntry | t.CPtr)(t.CVoid(entry_addr, t.CPtr))
entry: IncludesScanner.FileEntry | t.CPtr = (IncludesScanner.FileEntry | t.CPtr)(entry_addr)
if entry is None or entry.Sha1 is None:
continue
@@ -154,12 +154,12 @@ def _ScanClassInheritance(mb: rawptr[memhub.MemBuddy],
if tp_scan is not None:
file_has_generic = 1
if generic_file_count_box is not None:
gfc_ptr_scan: t.CPtr = (int | t.CPtr)(t.CVoid(generic_file_count_box, t.CPtr))
gfc_ptr_scan: t.CPtr = (int | t.CPtr)(generic_file_count_box)
if gfc_ptr_scan is not None:
gfc_scan: int = gfc_ptr_scan[0]
if gfc_scan < Phase1.MAX_FILE_DEPS and generic_file_indices is not None:
gi_addr_scan: uint64 = uint64(generic_file_indices) + gfc_scan * 4
gi_ptr_scan: t.CPtr = (int | t.CPtr)(t.CVoid(gi_addr_scan, t.CPtr))
gi_ptr_scan: t.CPtr = (int | t.CPtr)(gi_addr_scan)
if gi_ptr_scan is not None:
gi_ptr_scan[0] = i
gfc_ptr_scan[0] = gfc_scan + 1
@@ -265,7 +265,7 @@ def _PreRegisterAllGenericTemplates(mb: rawptr[memhub.MemBuddy],
for i in range(result.Count):
entry_addr_pg: uint64 = uint64(result.Entries) + i * p1e_size
entry_pg: IncludesScanner.FileEntry | t.CPtr = (
IncludesScanner.FileEntry | t.CPtr)(t.CVoid(entry_addr_pg, t.CPtr))
IncludesScanner.FileEntry | t.CPtr)(entry_addr_pg)
if entry_pg is None or entry_pg.Sha1 is None:
continue
# 读取文件
+18 -18
View File
@@ -91,7 +91,7 @@ def _TopoSortFiles(mb: rawptr[memhub.MemBuddy],
# sha1→file_index 映射(简单线性查找,文件数不多)
for i in range(result.Count):
entry_addr: uint64 = uint64(result.Entries) + i * entry_size
entry: IncludesScanner.FileEntry | t.CPtr = (IncludesScanner.FileEntry | t.CPtr)(t.CVoid(entry_addr, t.CPtr))
entry: IncludesScanner.FileEntry | t.CPtr = (IncludesScanner.FileEntry | t.CPtr)(entry_addr)
if entry is None or entry.Sha1 is None:
continue
@@ -141,7 +141,7 @@ def _TopoSortFiles(mb: rawptr[memhub.MemBuddy],
# 读取当前依赖数量
cnt_addr: uint64 = uint64(file_dep_counts) + fi * 4
cnt_ptr: t.CPtr = (int | t.CPtr)(t.CVoid(cnt_addr, t.CPtr))
cnt_ptr: t.CPtr = (int | t.CPtr)(cnt_addr)
if cnt_ptr is None:
break
cur_cnt: int = cnt_ptr[0]
@@ -209,7 +209,7 @@ def _TopoSortFiles(mb: rawptr[memhub.MemBuddy],
break
# 去重 + 加边:fi_imp 依赖 fj_imp(InDegree[fi_imp]++)
cnt_addr_imp: uint64 = uint64(file_dep_counts) + fi_imp * 4
cnt_ptr_imp: t.CPtr = (int | t.CPtr)(t.CVoid(cnt_addr_imp, t.CPtr))
cnt_ptr_imp: t.CPtr = (int | t.CPtr)(cnt_addr_imp)
if cnt_ptr_imp is None:
break
cur_cnt_imp: int = cnt_ptr_imp[0]
@@ -235,9 +235,9 @@ def _TopoSortFiles(mb: rawptr[memhub.MemBuddy],
# 依赖为 0 的先处理,处理后减少依赖它的文件入度
for fi in range(file_count):
cnt_addr3: uint64 = uint64(file_dep_counts) + fi * 4
cnt_ptr3: t.CPtr = (int | t.CPtr)(t.CVoid(cnt_addr3, t.CPtr))
cnt_ptr3: t.CPtr = (int | t.CPtr)(cnt_addr3)
ind_addr3: uint64 = uint64(file_indegrees) + fi * 4
ind_ptr3: t.CPtr = (int | t.CPtr)(t.CVoid(ind_addr3, t.CPtr))
ind_ptr3: t.CPtr = (int | t.CPtr)(ind_addr3)
if cnt_ptr3 is not None and ind_ptr3 is not None:
ind_ptr3[0] = cnt_ptr3[0]
@@ -249,12 +249,12 @@ def _TopoSortFiles(mb: rawptr[memhub.MemBuddy],
for fi in range(file_count):
# 检查处理状态
proc_addr4: uint64 = uint64(file_processed) + fi * 4
proc_ptr4: t.CPtr = (int | t.CPtr)(t.CVoid(proc_addr4, t.CPtr))
proc_ptr4: t.CPtr = (int | t.CPtr)(proc_addr4)
if proc_ptr4 is None or proc_ptr4[0] != 0:
continue
# 检查入度
ind_addr4: uint64 = uint64(file_indegrees) + fi * 4
ind_ptr4: t.CPtr = (int | t.CPtr)(t.CVoid(ind_addr4, t.CPtr))
ind_ptr4: t.CPtr = (int | t.CPtr)(ind_addr4)
if ind_ptr4 is None or ind_ptr4[0] > 0:
continue
@@ -263,12 +263,12 @@ def _TopoSortFiles(mb: rawptr[memhub.MemBuddy],
target_sha1: str = file_sha1s_buf + fi * Phase1.SHA1_LEN
for ri in range(result.Count):
ea_r: uint64 = uint64(result.Entries) + ri * entry_size
ent_r: IncludesScanner.FileEntry | t.CPtr = (IncludesScanner.FileEntry | t.CPtr)(t.CVoid(ea_r, t.CPtr))
ent_r: IncludesScanner.FileEntry | t.CPtr = (IncludesScanner.FileEntry | t.CPtr)(ea_r)
if ent_r is not None and ent_r.Sha1 is not None:
if string.strcmp(ent_r.Sha1, target_sha1) == 0:
# 写入输出索引数组
out_idx_addr: uint64 = uint64(out_order) + out_idx * 4
out_int_ptr: t.CPtr = (int | t.CPtr)(t.CVoid(out_idx_addr, t.CPtr))
out_int_ptr: t.CPtr = (int | t.CPtr)(out_idx_addr)
if out_int_ptr is not None:
out_int_ptr[0] = ri
out_idx += 1
@@ -281,12 +281,12 @@ def _TopoSortFiles(mb: rawptr[memhub.MemBuddy],
# 减少依赖该文件的其他文件的入度
for fj in range(file_count):
proc_addr5: uint64 = uint64(file_processed) + fj * 4
proc_ptr5: t.CPtr = (int | t.CPtr)(t.CVoid(proc_addr5, t.CPtr))
proc_ptr5: t.CPtr = (int | t.CPtr)(proc_addr5)
if proc_ptr5 is None or proc_ptr5[0] != 0:
continue
# 读取 fj 的依赖数量
cnt_addr5: uint64 = uint64(file_dep_counts) + fj * 4
cnt_ptr5: t.CPtr = (int | t.CPtr)(t.CVoid(cnt_addr5, t.CPtr))
cnt_ptr5: t.CPtr = (int | t.CPtr)(cnt_addr5)
if cnt_ptr5 is None:
continue
fj_dep_cnt: int = cnt_ptr5[0]
@@ -294,7 +294,7 @@ def _TopoSortFiles(mb: rawptr[memhub.MemBuddy],
dep_slot5: str = file_deps_buf + fj * Phase1.MAX_DEP_EDGES * Phase1.SHA1_LEN + di * Phase1.SHA1_LEN
if string.strcmp(dep_slot5, target_sha1) == 0:
ind_addr5: uint64 = uint64(file_indegrees) + fj * 4
ind_ptr5: t.CPtr = (int | t.CPtr)(t.CVoid(ind_addr5, t.CPtr))
ind_ptr5: t.CPtr = (int | t.CPtr)(ind_addr5)
if ind_ptr5 is not None:
ind_ptr5[0] = ind_ptr5[0] - 1
break
@@ -310,7 +310,7 @@ def _TopoSortFiles(mb: rawptr[memhub.MemBuddy],
if rem_idx is not None and rem_depcnt is not None:
for fi in range(file_count):
proc_addr7: uint64 = uint64(file_processed) + fi * 4
proc_ptr7: t.CPtr = (int | t.CPtr)(t.CVoid(proc_addr7, t.CPtr))
proc_ptr7: t.CPtr = (int | t.CPtr)(proc_addr7)
if proc_ptr7 is not None and proc_ptr7[0] == 0:
rem_idx[rem_count] = fi
rem_depcnt[rem_count] = 0
@@ -324,7 +324,7 @@ def _TopoSortFiles(mb: rawptr[memhub.MemBuddy],
if fi_b == fi_a:
continue
cnt_addr_b: uint64 = uint64(file_dep_counts) + fi_b * 4
cnt_ptr_b: t.CPtr = (int | t.CPtr)(t.CVoid(cnt_addr_b, t.CPtr))
cnt_ptr_b: t.CPtr = (int | t.CPtr)(cnt_addr_b)
if cnt_ptr_b is None:
continue
cnt_b: int = cnt_ptr_b[0]
@@ -347,17 +347,17 @@ def _TopoSortFiles(mb: rawptr[memhub.MemBuddy],
for i_a in range(rem_count):
fi_a2: int = rem_idx[i_a]
proc_addr8: uint64 = uint64(file_processed) + fi_a2 * 4
proc_ptr8: t.CPtr = (int | t.CPtr)(t.CVoid(proc_addr8, t.CPtr))
proc_ptr8: t.CPtr = (int | t.CPtr)(proc_addr8)
if proc_ptr8 is None or proc_ptr8[0] != 0:
continue
target_sha1_2: str = file_sha1s_buf + fi_a2 * Phase1.SHA1_LEN
for ri in range(result.Count):
ea_r2: uint64 = uint64(result.Entries) + ri * entry_size
ent_r2: IncludesScanner.FileEntry | t.CPtr = (IncludesScanner.FileEntry | t.CPtr)(t.CVoid(ea_r2, t.CPtr))
ent_r2: IncludesScanner.FileEntry | t.CPtr = (IncludesScanner.FileEntry | t.CPtr)(ea_r2)
if ent_r2 is not None and ent_r2.Sha1 is not None:
if string.strcmp(ent_r2.Sha1, target_sha1_2) == 0:
out_idx_addr2: uint64 = uint64(out_order) + out_idx * 4
out_int_ptr2: t.CPtr = (int | t.CPtr)(t.CVoid(out_idx_addr2, t.CPtr))
out_int_ptr2: t.CPtr = (int | t.CPtr)(out_idx_addr2)
if out_int_ptr2 is not None:
out_int_ptr2[0] = ri
out_idx += 1
@@ -367,7 +367,7 @@ def _TopoSortFiles(mb: rawptr[memhub.MemBuddy],
stdlib.free(rem_depcnt)
# 写入输出数量
out_count_ptr: t.CPtr = (int | t.CPtr)(t.CVoid(out_count, t.CPtr))
out_count_ptr: t.CPtr = (int | t.CPtr)(out_count)
if out_count_ptr is not None:
out_count_ptr[0] = out_idx
+15 -17
View File
@@ -130,7 +130,7 @@ def _ScanDirForPyFiles(mb: rawptr[memhub.MemBuddy],
sha1_val: str = IncludesScanner.compute_file_sha1(mb, full_path)
if sha1_val is not None:
ea: uint64 = uint64(entries) + file_count * entry_size
ent: SrcFileEntry | t.CPtr = (SrcFileEntry | t.CPtr)(t.CVoid(ea, t.CPtr))
ent: SrcFileEntry | t.CPtr = (SrcFileEntry | t.CPtr)(ea)
if ent is not None:
ent.Path = full_path
ent.Sha1 = sha1_val
@@ -231,7 +231,7 @@ def _ScanDirForAsmFiles(mb: rawptr[memhub.MemBuddy],
sha1_val: str = IncludesScanner.compute_file_sha1(mb, full_path)
if sha1_val is not None:
ea: uint64 = uint64(entries) + file_count * entry_size
ent: SrcFileEntry | t.CPtr = (SrcFileEntry | t.CPtr)(t.CVoid(ea, t.CPtr))
ent: SrcFileEntry | t.CPtr = (SrcFileEntry | t.CPtr)(ea)
if ent is not None:
ent.Path = full_path
ent.Sha1 = sha1_val
@@ -266,7 +266,7 @@ def _PreRegisterAppGenericTemplates(mb: rawptr[memhub.MemBuddy],
handled: int = 0
for i in range(file_count):
ea_pa: uint64 = uint64(entries) + i * entry_size
ent_pa: SrcFileEntry | t.CPtr = (SrcFileEntry | t.CPtr)(t.CVoid(ea_pa, t.CPtr))
ent_pa: SrcFileEntry | t.CPtr = (SrcFileEntry | t.CPtr)(ea_pa)
if ent_pa is None or ent_pa.Path is None or ent_pa.Sha1 is None:
continue
# 读取文件
@@ -705,7 +705,7 @@ def RunMultiFileProject(mb: rawptr[memhub.MemBuddy],
app_filled: int = 0
for i in range(file_count):
ea_am: uint64 = uint64(entries) + i * entry_size
ent_am: SrcFileEntry | t.CPtr = (SrcFileEntry | t.CPtr)(t.CVoid(ea_am, t.CPtr))
ent_am: SrcFileEntry | t.CPtr = (SrcFileEntry | t.CPtr)(ea_am)
if ent_am is None or ent_am.Path is None or ent_am.Sha1 is None:
continue
# 计算相对路径(去除 source_dir 前缀,保留目录结构)
@@ -747,7 +747,7 @@ def RunMultiFileProject(mb: rawptr[memhub.MemBuddy],
vpi_failed_p2: int = 0
for i_vp2 in range(file_count):
ea_vp2: uint64 = uint64(entries) + i_vp2 * entry_size
ent_vp2: SrcFileEntry | t.CPtr = (SrcFileEntry | t.CPtr)(t.CVoid(ea_vp2, t.CPtr))
ent_vp2: SrcFileEntry | t.CPtr = (SrcFileEntry | t.CPtr)(ea_vp2)
if ent_vp2 is None or ent_vp2.Path is None or ent_vp2.Sha1 is None:
vpi_failed_p2 += 1
VLogger.error("[Phase A-pre-vpi] 源文件条目无效(Path/Sha1 缺失),跳过", "PhaseA")
@@ -874,7 +874,7 @@ def RunMultiFileProject(mb: rawptr[memhub.MemBuddy],
is_app_file_inc: int = 0
for i_app_inc in range(file_count):
ea_app_inc: uint64 = uint64(entries) + i_app_inc * entry_size
ent_app_inc: SrcFileEntry | t.CPtr = (SrcFileEntry | t.CPtr)(t.CVoid(ea_app_inc, t.CPtr))
ent_app_inc: SrcFileEntry | t.CPtr = (SrcFileEntry | t.CPtr)(ea_app_inc)
if ent_app_inc is not None and ent_app_inc.Sha1 is not None \
and string.strcmp(ent_app_inc.Sha1, inc_sha1_pre) == 0:
is_app_file_inc = 1
@@ -935,7 +935,7 @@ def RunMultiFileProject(mb: rawptr[memhub.MemBuddy],
struct_count_before: int = GenApi.get_struct_count()
for i in range(file_count):
ea_pre: uint64 = uint64(entries) + i * entry_size
ent_pre: SrcFileEntry | t.CPtr = (SrcFileEntry | t.CPtr)(t.CVoid(ea_pre, t.CPtr))
ent_pre: SrcFileEntry | t.CPtr = (SrcFileEntry | t.CPtr)(ea_pre)
if ent_pre is None or ent_pre.Path is None:
continue
pkg_pre: str = None
@@ -986,7 +986,7 @@ def RunMultiFileProject(mb: rawptr[memhub.MemBuddy],
if done_flags[i] != 0:
continue
ea: uint64 = uint64(entries) + i * entry_size
ent: SrcFileEntry | t.CPtr = (SrcFileEntry | t.CPtr)(t.CVoid(ea, t.CPtr))
ent: SrcFileEntry | t.CPtr = (SrcFileEntry | t.CPtr)(ea)
# 计时点 0:本文件处理开始(translate 段起点)
t_pa0: uint64 = w32.win32base.GetTickCount64()
if ent is None or ent.Path is None:
@@ -1111,7 +1111,7 @@ def RunMultiFileProject(mb: rawptr[memhub.MemBuddy],
for i_err in range(file_count):
if done_flags[i_err] == 0:
ea_err: uint64 = uint64(entries) + i_err * entry_size
ent_err: SrcFileEntry | t.CPtr = (SrcFileEntry | t.CPtr)(t.CVoid(ea_err, t.CPtr))
ent_err: SrcFileEntry | t.CPtr = (SrcFileEntry | t.CPtr)(ea_err)
if ent_err is not None and ent_err.Path is not None:
if ent_err.Sha1 is not None:
_PhaseADumpFailGraph(temp_dir, td_len_fail, ent_err.Path, ent_err.Sha1)
@@ -1166,7 +1166,7 @@ def RunMultiFileProject(mb: rawptr[memhub.MemBuddy],
for i in range(file_count):
ea: uint64 = uint64(entries) + i * entry_size
ent: SrcFileEntry | t.CPtr = (SrcFileEntry | t.CPtr)(t.CVoid(ea, t.CPtr))
ent: SrcFileEntry | t.CPtr = (SrcFileEntry | t.CPtr)(ea)
if ent is None or ent.Path is None or ent.Sha1 is None:
continue
# 单文件三步计时起点(GetTickCount64,ms)
@@ -1198,8 +1198,7 @@ def RunMultiFileProject(mb: rawptr[memhub.MemBuddy],
if llc_ir_path is None:
VLogger.error("llc 输入路径构造失败", "PhaseB")
sys.exit(1)
tslot: BuildPipeline.LlcTask | t.CPtr = (BuildPipeline.LlcTask | t.CPtr)(t.CVoid(
uint64(llc_tasks) + sizet(llc_task_count) * BuildPipeline.LlcTask.__sizeof__(), t.CPtr))
tslot: BuildPipeline.LlcTask | t.CPtr = (BuildPipeline.LlcTask | t.CPtr)(uint64(llc_tasks) + sizet(llc_task_count) * BuildPipeline.LlcTask.__sizeof__())
if BuildPipeline.init_llc_task(tslot, llc_ir_path, output_dir, ent.Sha1,
cc_cmd, cc_flags) != 0:
VLogger.error(f"llc 任务构造失败: {ent.Path}", "PhaseB")
@@ -1252,8 +1251,7 @@ def RunMultiFileProject(mb: rawptr[memhub.MemBuddy],
# 释放 llc 任务(命令串 + 记录)
ti: int = 0
while ti < llc_task_count:
tfree: BuildPipeline.LlcTask | t.CPtr = (BuildPipeline.LlcTask | t.CPtr)(t.CVoid(
uint64(llc_tasks) + sizet(ti) * BuildPipeline.LlcTask.__sizeof__(), t.CPtr))
tfree: BuildPipeline.LlcTask | t.CPtr = (BuildPipeline.LlcTask | t.CPtr)(uint64(llc_tasks) + sizet(ti) * BuildPipeline.LlcTask.__sizeof__())
BuildPipeline.free_llc_task(tfree)
ti += 1
stdlib.free(llc_tasks)
@@ -1264,7 +1262,7 @@ def RunMultiFileProject(mb: rawptr[memhub.MemBuddy],
asm_compiled: int = 0
for ai_as in range(asm_file_count):
ea_as: uint64 = uint64(asm_entries) + ai_as * entry_size
ent_as: SrcFileEntry | t.CPtr = (SrcFileEntry | t.CPtr)(t.CVoid(ea_as, t.CPtr))
ent_as: SrcFileEntry | t.CPtr = (SrcFileEntry | t.CPtr)(ea_as)
if ent_as is None or ent_as.Path is None or ent_as.Sha1 is None:
continue
aret_as: int = BuildPipeline.asm_to_obj(
@@ -1381,7 +1379,7 @@ def RunMultiFileProject(mb: rawptr[memhub.MemBuddy],
app_skip_mi: int = 0
for ai_mi in range(file_count):
ea_ap: uint64 = uint64(entries) + ai_mi * entry_size
ent_ap: SrcFileEntry | t.CPtr = (SrcFileEntry | t.CPtr)(t.CVoid(ea_ap, t.CPtr))
ent_ap: SrcFileEntry | t.CPtr = (SrcFileEntry | t.CPtr)(ea_ap)
if ent_ap is not None and ent_ap.Sha1 is not None:
if string.strcmp(ent_ap.Sha1, inc_sha1_mi) == 0:
app_skip_mi = 1
@@ -1653,7 +1651,7 @@ def RunMultiFileProject(mb: rawptr[memhub.MemBuddy],
app_skip_pc: int = 0
for ai_pc in range(file_count):
ea_pc: uint64 = uint64(entries) + ai_pc * entry_size
ent_pc: SrcFileEntry | t.CPtr = (SrcFileEntry | t.CPtr)(t.CVoid(ea_pc, t.CPtr))
ent_pc: SrcFileEntry | t.CPtr = (SrcFileEntry | t.CPtr)(ea_pc)
if ent_pc is not None and ent_pc.Sha1 is not None:
if string.strcmp(ent_pc.Sha1, rsha1_pc) == 0:
app_skip_pc = 1