pjh123
|
540116ed97
|
refactor: 资源栈类型注释改为纯语义描述
|
2026-08-16 19:23:10 +08:00 |
|
pjh123
|
eb12a12f2f
|
feat: DisposableStack 内置对象(状态盒 + use/adopt/defer/dispose/move + GC 六处接线 + 绑定三时机)
|
2026-08-16 19:22:57 +08:00 |
|
pjh123
|
d1f5a44d37
|
feat: DisposableStack/AsyncDisposableStack 对象类型标签与两栈原型字段入世界
|
2026-08-16 19:14:48 +08:00 |
|
pjh123
|
2b74fa81a6
|
fix: Error 子类型构造器描述符与原型链对齐规范(prototype/name meta + [[Prototype]] 指向 Error)
|
2026-08-16 19:10:51 +08:00 |
|
pjh123
|
d213d697d4
|
feat: SuppressedError 内置错误实现(三字段属性序 + 构造器接线)
|
2026-08-16 19:04:09 +08:00 |
|
pjh123
|
a171d3755d
|
fix: PlainDate 周/月/时代 getter 补 ensure branding 校验
|
2026-08-16 18:50:55 +08:00 |
|
pjh123
|
84addd714c
|
fix: 函数 async/generator 标志纳入编译缓存键防字节码错配
|
2026-08-16 17:34:03 +08:00 |
|
pjh123
|
4906e1502d
|
feat: Temporal 构造器严格校验日历并真实存槽(含 fast path 与日历传播)
|
2026-08-16 17:30:01 +08:00 |
|
pjh123
|
4fdc4ef91d
|
refactor: Temporal 槽迁移预埋日历槽(make_* 加日历参数、getter 读槽兜底 iso8601,行为不变)
|
2026-08-16 17:13:39 +08:00 |
|
pjh123
|
b6fb18153e
|
fix: 嵌套函数体/方法体 use strict 指令纳入编译缓存键防字节码错配
|
2026-08-16 17:04:41 +08:00 |
|
pjh123
|
cde3417e15
|
fix: sloppy 普通函数调用 this 未定义/null 绑定全局对象
|
2026-08-16 16:58:32 +08:00 |
|
pjh123
|
3e071d3337
|
refactor: 函数 strict 标志入 IR/编译/缓存链(零行为地基)
|
2026-08-16 16:46:33 +08:00 |
|
pjh123
|
a00ef2a7c6
|
feat: Iterator.prototype 返回迭代器方法(map/filter/take/drop/flatMap)
|
2026-08-16 16:38:45 +08:00 |
|
pjh123
|
327893043b
|
feat: Iterator.prototype 终端方法(forEach/every/some/find/reduce/toArray)
|
2026-08-16 16:02:14 +08:00 |
|
pjh123
|
2bee797da8
|
fix: Temporal 日历注解白名单化,u-ca 校验扩到 18 项内置日历
|
2026-08-16 15:19:45 +08:00 |
|
pjh123
|
95729403ef
|
feat: Iterator 构造器本体支持 subclass 基座
|
2026-08-16 15:09:41 +08:00 |
|
pjh123
|
f416f49113
|
test: cli 测试直调编译产物二进制,脱离 cargo run 递归
|
2026-08-16 15:02:04 +08:00 |
|
pjh123
|
7e180d9ac1
|
fix: 控制流逃出计数读越界防御,无 ext 字的返回安全降级
|
2026-08-16 15:02:04 +08:00 |
|
pjh123
|
6d4a91643c
|
fix: 对象断言测试持活 Vm 消除返回值裸指针 UAF
|
2026-08-16 15:02:04 +08:00 |
|
pjh123
|
34366f96a7
|
fix: 绑定模式内嵌默认值表达式补捕获扫描,嵌套函数引用外层绑定防 LOAD_GLOBAL 回归
|
2026-08-16 14:53:57 +08:00 |
|
pjh123
|
1f2a020585
|
feat: Iterator helpers 基建——Symbol.dispose 注册与 %IteratorHelperPrototype%
|
2026-08-16 14:44:47 +08:00 |
|
pjh123
|
84f84402ba
|
fix: 绑定侧解构计算键参与闭包捕获遍历防静默错值
|
2026-08-16 14:30:20 +08:00 |
|
pjh123
|
7de55b25d8
|
refactor: 测试断言改 assert!
|
2026-08-16 14:04:27 +08:00 |
|
pjh123
|
1a244398f1
|
refactor: match 可改 ? 的等价改写
|
2026-08-16 14:04:25 +08:00 |
|
pjh123
|
fd2b290927
|
feat: 解构计算键通用 fallback 支持任意键表达式
|
2026-08-16 13:49:17 +08:00 |
|
pjh123
|
457b1b874d
|
fix: new 表达式 native 构造收口 call_function_sync 防 255/254 槽污染
|
2026-08-16 13:41:01 +08:00 |
|
pjh123
|
1da9c98e62
|
fix: for-in/for-of 头名仅 var 提升入入口初始化名单,排除 let/const
|
2026-08-16 13:32:25 +08:00 |
|
pjh123
|
8f7d0f1186
|
fix: 类表达式真实名 cell 按声明路径门控,不再覆盖外层同名绑定
|
2026-08-16 13:32:25 +08:00 |
|
pjh123
|
5df04a8e58
|
chore: 全仓 rustfmt 格式化归拢
|
2026-08-16 12:50:36 +08:00 |
|
pjh123
|
4572ecffaa
|
feat: new.target MetaProperty emit 支持(LOAD_VAR NewTarget)
|
2026-08-16 12:43:50 +08:00 |
|
pjh123
|
2755894330
|
test: upvalue cell 时序判别用例(class 捕获/var 入口初始化/参数默认值链式捕获)
|
2026-08-16 12:34:14 +08:00 |
|
pjh123
|
23a5f35ae1
|
fix: 闭包链式捕获越界改编译错误早暴露防静默错值
|
2026-08-16 12:34:14 +08:00 |
|
pjh123
|
4911c058d8
|
fix: var 捕获绑定函数与程序入口统一初始化为 undefined 消除 TDZ 误报
|
2026-08-16 12:34:10 +08:00 |
|
pjh123
|
331691e8bd
|
fix: class 声明名纳入闭包捕获,嵌套函数经 cell 读取类绑定
|
2026-08-16 12:34:03 +08:00 |
|
pjh123
|
43c7ca1fd6
|
feat: 私有字段复合赋值 emit 支持(GET_PRIVATE→op→SET_PRIVATE 序列)
|
2026-08-16 12:12:26 +08:00 |
|
pjh123
|
82c088ac9f
|
fix: for-await-of 同步迭代器 return() 忽略路径补异常值槽配对
|
2026-08-16 12:00:59 +08:00 |
|
pjh123
|
75f28f6e3e
|
fix: class 生成器方法补 is_generator 标志,修正方法形态生成器语义
|
2026-08-16 11:44:20 +08:00 |
|
pjh123
|
16793d3b36
|
fix: 异常值通道配对——忽略调用槽配对、unwind 接住清槽、生成器参数初始化不覆盖异常值
|
2026-08-16 11:29:50 +08:00 |
|
pjh123
|
afa79aa5fb
|
fix: Date 多参构造年 0-99 按规范映射到 1900-1999
|
2026-08-16 10:58:50 +08:00 |
|
pjh123
|
e97473c8ad
|
fix: Date 普通调用忽略参数并移除 RFC2822 panic
|
2026-08-16 10:58:12 +08:00 |
|
pjh123
|
d237b4b70e
|
fix: clear_ic_caches ext 计数补登 BREAK/CONTINUE/RETURN
|
2026-08-16 10:43:03 +08:00 |
|
pjh123
|
8ac26fc01f
|
fix: IC 快速路径 symbol 原始值走 Symbol.prototype 链
|
2026-08-16 10:31:34 +08:00 |
|
pjh123
|
a8378694be
|
fix: for-of/for-in 提前退出时按规范顺序完成 IteratorClose
return/break/continue 逃出 for-of 时此前完全不执行 IteratorClose:
BREAK/CONTINUE/RETURN 指令现在经 ext 字携带词法逃出的迭代器层数
(for-of + for-in 各 16 位),运行时在全部 finally 穿越之后、真正
跳转/返回之前按 LIFO 关闭——与规范 §13.7.5.4(循环体完成值已含
内部 try-finally 处理,IteratorClose 在后)顺序一致。
- emit 词法:LabelCtx 增加 for-of/for-in 深度计数,loop/switch/label
打开时快照,break/continue/return 按当前深度减目标深度计算逃出层数
(switch 内 break 以 switch 打开点为基准,目标循环自身不计入)
- 指令编码:brk/cont/ret 三参构造,lower 跳转路径补发 ext 字
- 运行时:dispatch_break/continue/return 读取逃出计数,无 finally 时
直接关闭后跳转/返回,有 finally 时随 Completion 悬挂由 TRY_FINALLY_END
在穿越完成后消费;生成器 .return()/.throw() 注入经 complete_generator_return
全关快照栈迭代器;return() 抛错经 unwind 替代完成值并关闭剩余迭代器
- 顺带:for-in 逃出残留(无 return() 语义,仅弹栈);for-await-of 的
异步迭代器不做同步关闭(return() promise 须 await,走异步机制)
- 新增 15 项回归测试:return/labeled break/continue/switch/while/finally
顺序/抛错优先/生成器注入/for-in/for-await-of 嵌套
|
2026-08-16 09:31:39 +08:00 |
|
pjh123
|
b885b672b9
|
for-of 迭代器栈条目化:迭代器与最近 next 结果配对存放
单一 last_for_of_result 槽被嵌套迭代覆盖,CLOSE 判定本迭代器是否
自然 done 时误读他者结果,导致数组解构/spread/嵌套 for-of 提前退出
漏调或误调 return()。改为栈条目 (iterator, last_result) 配对:
- IterState.for_of_iters 元素改 ForOfEntry,删除 last_for_of_result
- INIT 压条目,DONE 写本条目,NEXT/CLOSE 读本条目结果判 done
- GC mark/rewrite、inline save/restore、挂起帧快照同步配对遍历
- for-await-of 数组解构提前 break 现正确触发 return()(任务 40 样例)
|
2026-08-16 04:00:06 +08:00 |
|
pjh123
|
19fcdd73d0
|
fix: Date 构造器缺省字段与溢出滚动语义符合规范
多参缺省字段固定为日=1、时分秒毫秒=0(不再取当前时刻);
月/日/时等分量越界按 MakeDay/MakeTime 滚动进位,负月同样归一;
单参字符串与 Date.parse 支持时区偏移(Z/+hh:mm/+hhmm)折算 UTC,
修复此前 NaiveDateTime 解析静默丢弃偏移的问题。
|
2026-08-16 03:43:42 +08:00 |
|
pjh123
|
1a2d8682ae
|
fix: builtins 对象分配统一走 alloc_object 登记消除高频路径泄漏
|
2026-08-16 03:36:02 +08:00 |
|
pjh123
|
63ccb0fcf3
|
regalloc: 建图只遍历活集 + rewrite use 点按指令分组
graph 建边由逐指令全 node 扫描(O(insts × nodes),活集小也扫全表)
改为只遍历该指令活集中置位的 vreg(u64 位集 trailing_zeros 升序,
与 node 表升序遍历逐字节同序,确定性不漂移)。rewrite 主循环对每
指令全扫全局 uses 表(O(insts × spills) 二次方)改为按指令分组的
use 点列表,只取本指令的 use 点。
实测(debug,test262 identifiers 最大样本):plain 17.0.0
16.9s → 1.06s(-94%),class 9.0.0 7.0s → 1.61s(-77%),
均低于 2s 达标线;identifiers 子集 268/268 全 PASS(原 32 个
10s 超时全部转 PASS)。
|
2026-08-16 03:26:57 +08:00 |
|
pjh123
|
9bbe5ae67a
|
liveness: 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
|
f899538535
|
regalloc: LiveInfo 维度守卫改 Cow 借用,合法路径免全量复制
alloc 与 encode_call_window 在 LiveInfo 维度匹配(正常路径)时仍全量
clone 稠密 bitset 矩阵,随后只读消费。改为 Cow::Borrowed 借用原分析
结果,维度不符才 Cow::Owned 重建。零语义变化,消除每次 alloc/编码
的无谓内存复制。
|
2026-08-16 03:03:55 +08:00 |
|
pjh123
|
0737ce3ef1
|
test262: supervise 模式回传失败类别,汇总可按根因拆分
子进程心跳扩展失败分类计数(类别\t计数逐行写出),supervise_window
聚合为 RunStats 而非裸三计数,父进程汇总打印 FAIL categories(与
in-process 共用 print_fail_categories)。此前子进程 stdout 被丢弃、
heartbeat 只带 pass/fail/skip,categorize_fail 在 supervise 下完全
不可用,10k+ fail 无法按 VM/parse/compile 根因拆分;现在类别基线
可数据化。超时/崩溃归入 timeout/crash 类别。
|
2026-08-16 02:50:29 +08:00 |
|