pjh123
|
013c0eb3cf
|
fix: CFG 异常边覆盖 try 体全部块,补全干涉图 keep 与 callee 边
|
2026-10-05 22:00:50 +00:00 |
|
pjh123
|
cf298ab3d1
|
perf: DCE Pass B 迭代全扫改工作队列单遍收敛
|
2026-09-28 18:24:19 +00:00 |
|
pjh123
|
a0bea413c0
|
perf: DCE 两入口零删除时跳过 mark-sweep 重建
|
2026-09-28 18:11:34 +00:00 |
|
pjh123
|
18737c70ea
|
fix: 可抛算术比较位 opcode 纯标翻转,DCE 不再删副作用指令
|
2026-09-27 01:28:49 +00:00 |
|
pjh123
|
f3e055eb54
|
docs: 改写死代码消除注释的先例引用
|
2026-09-17 17:03:05 +00:00 |
|
pjh123
|
263bdb5d27
|
test: 内联测试移入 oxide_dce 集成测试
|
2026-09-15 17:50:18 +00:00 |
|
pjh123
|
b8611d2c4b
|
perf: live 集改 u64 位集 + 不动点缓冲复用
LiveInfo 四矩阵由逐位 Vec<bool>(1 字节/位,长度 = max_vreg+1)改为
u64 压缩位集(1 字 64 位,长度 ÷8),dataflow 不动点 out/input 缓冲
提为循环外复用(clear + 覆盖,免逐迭代逐块分配)。dce_precise /
graph 建图 / call_window 三处消费方同步改为字内位移查询,越界语义
与旧 Vec<bool>::get 一致(越界 = 不 live)。位集遍历(call_window
存活上界)按 trailing_zeros 只走实际置位,活集小则近 O(活集) 而非
O(254)。
实测(debug,start-unicode-17.0.0.js):liveness 三趟合计
~536ms → ~118ms(-78%),矩阵内存 ÷8;graph 全 node 扫描为剩余
瓶颈,另行跟进。
|
2026-08-16 03:20:02 +08:00 |
|
pjh123
|
8a53bfb584
|
feat: 编译管线/类型层 crate 补全多级日志宏 + 关键路径日志
|
2026-08-10 17:56:28 +08:00 |
|
pjh123
|
31e28a03a6
|
docs: 补充注释与格式化
|
2026-08-06 23:10:27 +08:00 |
|
pjh123
|
9d619cd9bb
|
feat: liveness 驱动的精确二轮 dce_precise + is_top_level 标志(D-17/D-19/D-20)
|
2026-08-06 16:55:26 +08:00 |
|
pjh123
|
54720a9bfc
|
refactor: 拆分单文件为三 Pass 独立模块(可达性/迭代删除/重建)
|
2026-08-06 14:01:31 +08:00 |
|
pjh123
|
6c84ccca07
|
fix: STORE_VAR 一律判有副作用,修复顶层变量赋值被误删
|
2026-08-06 13:29:07 +08:00 |
|
pjh123
|
d210fb1610
|
fix: label 目标与 nested 逃逸变量槽保活,修复两处误删
1. label 目标指令强制保留:块头是控制流汇合点,删除使存活 JMP
的 label 引用悬空(do-while 锚暴露 'Label not found')。
2. nested 树引用的变量槽顶层写者保活:STORE_VAR 写槽可被闭包
跨函数读取(computed class field key 场景),D-03 不递归使
顶层 use 计数看不到跨函数读,误删 k 赋值致 key 变 undefined。
|
2026-08-06 12:17:06 +08:00 |
|
pjh123
|
2724592cbb
|
test: 补全 Pass C 单测与不动域断言(D-13/D-14/D-04/D-03)
- pass_c_sweep 尾部加 debug_assert 越界防御(T-04-03,空尾块映射合法透传)
- 存活 label 新旧下标对应、死 label 置 None、原 None 保持
- 空函数退化、幂等性(dce 两次一致)
- label_count/n_registers/constants/nested 不动断言
|
2026-08-06 11:35:58 +08:00 |
|
pjh123
|
213a9820de
|
feat: 实现 Pass A 可达性 + Pass B use 计数迭代删除
- Pass A 消费 build_cfg,entry 沿 succs DFS(含 Exception 边保守,Pitfall 4)展开指令粒度 keep
- Pass B 可达存活指令聚合 use 计数,def 无 use 且 is_pure 迭代删至不动点(D-02 连锁)
- Pass C 最小 mark-sweep 重建 insts + label_pos 重映射(死 label 置 None)
- 依赖 oxide_bytecode(测试需 OpCode 常量,Rust 无 crate 传递可见性,与 oxide_cfg 骨架一致)
- 单测 8 条:死链/负例/STORE_VAR 特判/if-else/死块/Exception 保守/死闭包/连锁
|
2026-08-06 11:33:27 +08:00 |
|
pjh123
|
b0ba874844
|
feat: 新建 oxide_dce crate 骨架并接入 workspace
- workspace.members 在 oxide_cfg 后追加 crates/oxide_dce
- Cargo.toml 骨架照抄 oxide_cfg(oxide_ir + oxide_cfg 依赖,dev-deps parser/emit/vm)
- lib.rs 中文文档头 + pub fn dce 入口(空函数退化先例,非空路径 Task 2/3 骨架)
|
2026-08-06 11:27:44 +08:00 |
|