pjh123
|
f821f6838f
|
fix: CI 修复——emit_program 测试调用点补 repl_persist 参数 + clippy 告警清零 + 删空 bench_tests
|
2026-09-09 15:14:39 +08: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
|
b7b6ffd7b1
|
test: 新增运行时等价对比集成测试(D-08 主验证)
- parse→emit→(dce 开/关)→lower→Vm::run 双管线对比
- 覆盖语句丢弃/重复赋值/if(false)/死闭包/try-catch/对象算术/顶层返回值/先调用后丢弃/const 重赋值
|
2026-08-06 11:43:39 +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 |
|