pjh123
|
4f9b6ab444
|
refactor: 动态编译改经 CompilerService 注入,oxide_vm 去编译器依赖
|
2026-10-08 05:51:58 +00:00 |
|
pjh123
|
18737c70ea
|
fix: 可抛算术比较位 opcode 纯标翻转,DCE 不再删副作用指令
|
2026-09-27 01:28:49 +00:00 |
|
pjh123
|
70e03c6a62
|
feat: 类体计算键访问器落地动态定义访问器指令
|
2026-09-24 09:16:08 +00:00 |
|
pjh123
|
de3a9af0e1
|
fix: 内置全局纯读形不占镜像槽的锚期望订正
|
2026-09-20 10:07:17 +00:00 |
|
pjh123
|
21348be840
|
docs: 收敛结构哈希绑定名口径注释
|
2026-09-17 14:53:41 +00:00 |
|
pjh123
|
1ec72a832e
|
docs: 修正结构哈希口径注释并展开编译管线黑话
|
2026-09-17 14:43:54 +00:00 |
|
pjh123
|
7ca2f764c2
|
test: 移除 var 与 let 寄存器数相等的过时断言
|
2026-09-15 15:21:20 +00:00 |
|
pjh123
|
e5d0558388
|
test: 类原型断言期望同步 session 直分形
|
2026-09-14 16:35:47 +00:00 |
|
pjh123
|
68d2974eb5
|
kernel/builtins/test262: 本批新码 clippy 三则 + fmt 归净——obfuscated_if_else(source_escape_to_key 值域判定改 if/else)、needless_range_loop(decode_uri_units 保留字符原样段改 extend_from_slice)、needless_borrows_for_generic_args(844f2f4 rename 调用两处冗余借用);fmt 漂移(compiler.rs/vm.rs 构造体折行)一并归净。七 crate clippy 零告警、fmt --check 净、七 crate 2879/1(唯一失败 compile_class_declaration 既有)、release 子集 8/8 + 2/2 终验
|
2026-09-14 08:18:38 +00:00 |
|
pjh123
|
6f70d7d09f
|
vm/kernel/emit/builtins: 动态源编码重设计 + 数值键 2^32 边界 + 单元域解码/Source 面——14 头独占 test262 回归 13 修 0 新增
全量 A/B 差分撞出 14 个头独占回归,本提交闭合 13(text-self.js 双树同败归 pre-existing):
数值键 u32 回绕(release 态,debug 为 panic 故单测未现):canonical_index_str/
units 的 v.checked_mul(10)? + d as u32 在乘积合法而和溢出 2^32 时静默回绕
(10 位数字串 "4294967296".."4294967299" 误判整数键 0..3,属性查找回
退、Object.keys 串键),改 checked_mul+checked_add 双段防溢出;str/units 各
钉一枚 2^30-1/2^30/2^32-1/2^32 边界(Group B 5 文件:defineProperty/
defineProperties 2^32 键族 + Array property-cast-number)。
decodeURI/decodeURIComponent 单元域重写(Group A 2 文件):decode_uri_units
按单元扫描(非 % 单元原样透传——孤立 surrogate 往返不再被 lossy 串值面
打碎),%XX 解单元入缓冲;string_arg_units 经 to_units_full 取单元。
动态源编码(eval/Function/$262.evalScript)重设计(Group A 6 文件 + value-u):
source_escape 旧设计把源码域反斜杠恒双写(与 marker 起始区分),但源码即
JS 程序、反斜杠恒为字面量内转义序列起始,双写改变程序语义——
/\u{1d306}/u 变 /\\u{1d306}/u,u 模式撞裸 { 直接 SyntaxError(value-u 回归
根因)。现反斜杠原样透传;孤立 surrogate/FFFD 单元仍以 \\uXXXX 转义文本
注入(Rust str 无法承载裸孤立 surrogate,转义文本是唯一注入形态);
source_escape_to_key 逆路径仅还原注入 marker(\\ud800..\\udfff/\\ufffd
小写转义文本 → FFFD+hex4 池键形态,物化 decode_key 还原原始单元,正则
.source 按原始源返回;用户转义文本 \\u0041/\\u{1d306} 等逐字透传),
\\+marker 拼接形态(数据反斜杠紧邻注入,S7.8.5_A1.4 族 cu=d800 断言)按
前瞻还原 [数据反斜杠, 单元]。source_encoded 标志经 Compiler→Emitter→CompileCtx
(嵌套继承)贯通,仅动态编译入口置位;静态源切片维持 pool_key_plain 不变。
RegExp [[Source]]/[[Flags]] 单元域(regexp 构造器):to_units_full →
new_string_units_owned 入键(旧 lossy to_string 把孤立 surrogate 单元打成
FFFD,src_match 探针 false);regress 编译仍 lossy(既有缺口,另行报告)。
三并钉:source_escape marker 形态 / 反斜杠透传 / decode_key∘to_key∘escape
闭环(含 \\+marker 相邻与 astral 对)。实测:Group A 8/8、Group B 5/5、
value-u 1/1;8178 文件回归子集(13 目录)双树 A/B 差分 HEAD-only=∅、
13 文件转双树同 pass;text-self.js 双树同 compile 败
(requested module export is not exported: default)归 pre-existing;
七 crate 单测 2879/1(唯一失败 compile_class_declaration_emits_constructor
为 HEAD~0 既有,本提交未引入)。
|
2026-09-14 07:16:00 +00:00 |
|
pjh123
|
2457f283fe
|
fix: 顶层 var 全局属性求值前创建(声明定时语义)+ 无初始化 var 声明不再抹槽值
|
2026-09-09 22:00:29 +08:00 |
|
pjh123
|
3f393b6acb
|
fix: eval 脚本 var 声明落全局 configurable:true——is_eval_script 穿透
|
2026-09-09 19:17:57 +08:00 |
|
pjh123
|
355230b745
|
fix: REPL 变量跨轮次丢失 —— let/const 脚本顶层写全局对象
|
2026-08-21 22:44:48 +08:00 |
|
pjh123
|
ae6c60d99d
|
fix: 函数 async/generator 标志纳入编译缓存键防字节码错配
|
2026-08-16 17:34:03 +08:00 |
|
pjh123
|
440b0492f2
|
fix: 嵌套函数体/方法体 use strict 指令纳入编译缓存键防字节码错配
|
2026-08-16 17:04:41 +08:00 |
|
pjh123
|
089179daab
|
refactor: 函数 strict 标志入 IR/编译/缓存链(零行为地基)
|
2026-08-16 16:46:33 +08:00 |
|
pjh123
|
fe8892079e
|
chore: 全仓 rustfmt 格式化归拢
|
2026-08-16 12:50:36 +08:00 |
|
pjh123
|
d9acda7417
|
perf: 字节码调用压帧窗口按调用点存活上界拷贝减少整窗搬移
RegAlloc 改写后补第三次 liveness,为每条 CALL/NEW/SUPER_CALL 计算调用点
存活上界(最大存活物理槽号 + 1,254/255 由帧单独保存不计入),编码进
ext 高 8 位(nargs 低 8 位不变)。三处手写压帧窗口 = min(调用方活动寄存
器, 存活上界),restore_frame 按窗口回拷;CallFrame 新增
caller_active_reg_limit 保存调用方真实活动上限,恢复时不随截断窗口缩水。
生成器/异步函数体调用点保持全量窗口。spread 调用与运行时发起压帧
(accessor/内联)走全量路径不受影响。
|
2026-08-15 09:56:22 +08:00 |
|
pjh123
|
54b6955f6b
|
perf: IC 多态化 4 槽缓存(FIFO 滚动写回)消除多态场景 miss 重解析
每条 IC 指令扩展字 3→8(4 槽 × [shape_id|proto_depth, slot]),命中槽 0
单态快路径零额外成本,槽 1..3 懒解码遍历,miss 写回 FIFO 滚动(新条目进
槽 0、最老丢弃)。修复原型链 IC 深度解析多走一步与 prop_forge 模板不匹配
不写回两个使缓存恒失效的问题。ic_cache 基准命中率 34.8%→78.9%,
耗时 -29%;单态 prop_access 因扩展字布局膨胀有 ~20% 取指回归(后续
side-table 方案可根除)。
|
2026-08-15 06:40:19 +08:00 |
|
pjh123
|
5061ad7a44
|
fix: 计算成员复合赋值保规范求值序
|
2026-08-14 11:41:50 +08:00 |
|
pjh123
|
6a39bccc94
|
perf: 常量字符串键计算成员折叠走 IC 静态路径
|
2026-08-14 10:20:32 +08:00 |
|
pjh123
|
cc3c04216e
|
test: 类编译断言更新为新属性描述符字节码布局
|
2026-08-14 05:45:46 +08:00 |
|
pjh123
|
0d9004f8e2
|
perf: 对象字面量批量构造键序预建 shape
|
2026-08-14 04:47:15 +08:00 |
|
pjh123
|
df23fdff39
|
feat: compiler/test262 runner 接线 + 模块顶层 this 绑定
- Compiler::compile_module:Emitter::emit_program_module → 统一 IR 管线(DCE/regalloc/lower/flatten)
- CompiledModule.is_es_module:VM run 时模块顶层 this=undefined(脚本仍为全局对象)
- 全局注册 __moduleLinkGet
- test262 runner:Test262ModuleLoader(相对路径解析 + import attributes 判定 json/text/bytes),is_module 走 compile_module
|
2026-08-12 17:37:33 +08:00 |
|
pjh123
|
33dae0a8c2
|
fix: 闭包捕获对象键与循环变量绑定
|
2026-08-11 14:17:45 +08:00 |
|
pjh123
|
8a53bfb584
|
feat: 编译管线/类型层 crate 补全多级日志宏 + 关键路径日志
|
2026-08-10 17:56:28 +08:00 |
|
pjh123
|
8163a5d25e
|
perf: 子模块树改 Arc 共享,run() 免深拷贝模块树
|
2026-08-10 17:23:29 +08:00 |
|
pjh123
|
7efb26bc96
|
perf: 函数调用 bytecode 改 Arc 共享(O(1) 帧切换 + IC 写时复制)
|
2026-08-10 15:08:51 +08:00 |
|
pjh123
|
7942269be8
|
fix: 结构哈希补全全部变体(消除 code cache 确定性碰撞)
|
2026-08-10 11:49:50 +08:00 |
|
pjh123
|
6c79dbb21c
|
feat: class 私有成员语义(字段/方法/访问器 + brand 检查 + 契约修复)
|
2026-08-09 11:08:36 +08:00 |
|
pjh123
|
d759338fd5
|
fix: 全量单测修复(flatten 健壮性 + 测试链路补 flatten + 断言对齐规范)
|
2026-08-08 16:03:24 +08:00 |
|
pjh123
|
6c29515624
|
feat: 对象字面量 spread({...obj} 展开可枚举自有属性)
|
2026-08-08 11:24:09 +08:00 |
|
pjh123
|
ab979dc47b
|
feat: 调用实参 spread(f(...args) / new F(...args) / super(...args))
|
2026-08-08 10:33:16 +08:00 |
|
pjh123
|
fd94ff6931
|
fix: 子模块全局扁平化根治逃逸闭包上下文错位
|
2026-08-07 10:49:15 +08:00 |
|
pjh123
|
31e28a03a6
|
docs: 补充注释与格式化
|
2026-08-06 23:10:27 +08:00 |
|
pjh123
|
d3385bc838
|
feat: 管线接入 liveness/精确DCE/RegAlloc + --no-regalloc flag(D-17/D-18)
|
2026-08-06 17:56:55 +08:00 |
|
pjh123
|
8952c1eccd
|
test: 迁移 lowering 测试到 oxide_ir(测试随实现落位)
|
2026-08-06 14:11:54 +08:00 |
|
pjh123
|
27b7f28726
|
test: compile_multiple_stmts 锚按 D-11 放宽为存在性断言
DCE 默认开启删除死 '1; 2' 链的 LOAD_CONST,仅剩顶层值 '3'。
精确计数断言 load_count >= 3 实测失败,放宽为 any(LOAD_CONST)。
|
2026-08-06 12:16:51 +08:00 |
|
pjh123
|
d1bfae2723
|
feat: Compiler 增加 enable_dce 字段与 with_dce 开关(D-10)
- unit struct 改带字段 struct,new() 默认开启 DCE
- compile 在 emit 与 lower 之间插入 oxide_dce::dce(nested 不递归 D-03)
- Cargo.toml 追加 oxide_dce path 依赖;dev 环经 resolver v2 解析通过
|
2026-08-06 11:45:26 +08:00 |
|
pjh123
|
263fd255b6
|
docs: 添加 Rustdoc 注释
|
2026-08-05 21:46:47 +08:00 |
|
pjh123
|
7c8f19f61a
|
refactor: 拆分 oxide_emit 为独立 emit pass crate(依赖倒置)
|
2026-08-05 20:13:18 +08:00 |
|
pjh123
|
4f670eb7fd
|
refactor: 拆分 oxide_ir 为独立 crate
|
2026-08-05 19:34:44 +08:00 |
|
pjh123
|
3ae2eeee42
|
refactor: 拆分闭包分析与预扫描模块,拆分函数体编译子步骤
|
2026-08-05 19:29:02 +08:00 |
|
pjh123
|
050f75c952
|
fix: 完善闭包捕获(cell 索引稳定、参数遮蔽、函数/类名捕获、b 槽立即数)
|
2026-08-05 19:19:29 +08:00 |
|
pjh123
|
179960ed75
|
fix: 重写闭包捕获分析为 AST 级,修复 MAKE_CELL 时序
|
2026-08-05 18:41:48 +08:00 |
|
pjh123
|
0028a1787e
|
chore: 清理过时 dead_code 标注与空代码块
|
2026-08-05 18:26:46 +08:00 |
|
pjh123
|
1171c53ff6
|
test: 补 IR 结构测试
|
2026-08-05 18:03:21 +08:00 |
|
pjh123
|
90f932680d
|
test: 补薄弱域字节码断言测试
|
2026-08-05 18:01:42 +08:00 |
|
pjh123
|
76e650ce82
|
refactor: 抽取 assemble_ir 共用出口组装
|
2026-08-05 17:55:32 +08:00 |
|
pjh123
|
f34f791b9a
|
refactor: 原子切换 emit 产出符号化 IR
|
2026-08-05 17:52:42 +08:00 |
|