清理了 t.CVoid
This commit is contained in:
1 parent
9a191daa8d
commit
cb0836de8a
43 files changed
+274
-355
No files matched your search
@@ -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")
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
# 读取文件
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in new issue
Block a user