pjh123
|
ae73fb8da5
|
feat: 异常与 return 穿越释放资源,dispose_count 门控
|
2026-10-09 19:14:36 +00:00 |
|
pjh123
|
efcb92b47e
|
fix: 运行时 cell TDZ 消息带上被访问绑定名
|
2026-10-06 01:09:33 +00:00 |
|
pjh123
|
18737c70ea
|
fix: 可抛算术比较位 opcode 纯标翻转,DCE 不再删副作用指令
|
2026-09-27 01:28:49 +00:00 |
|
pjh123
|
de236fb5d1
|
feat: 共享 ThrowTypeError 对象并拆分 arguments callee 四象限
|
2026-09-26 15:01:50 +00:00 |
|
pjh123
|
d0a95309ba
|
refactor: 删除占位 opcode 表项与派发兜底臂
|
2026-09-26 08:44:36 +00:00 |
|
pjh123
|
70e03c6a62
|
feat: 类体计算键访问器落地动态定义访问器指令
|
2026-09-24 09:16:08 +00:00 |
|
pjh123
|
f3b6229a05
|
docs: 统一中间表示与契约测试注释措辞
|
2026-09-17 16:35:54 +00:00 |
|
pjh123
|
b0ed3641f3
|
test: 构造器内联测试移入 oxide_ir 集成测试
|
2026-09-15 17:21:01 +00:00 |
|
pjh123
|
7b1a37cd66
|
test: 契约内联测试移入 oxide_ir 集成测试
|
2026-09-15 17:20:26 +00:00 |
|
pjh123
|
d161b7cfe3
|
fix: 顶层声明撞不可定义全局按规范抛 TypeError
|
2026-09-14 14:32:39 +00:00 |
|
pjh123
|
699059aee5
|
emit/vm: delete 全局可写内置标识符真删属性并清镜像槽——新增 DELETE_GLOBAL_PROP_C,可删名集自可写划分单源派生(除 globalThis 与宿主名),test262 delete JSON 用例由红转绿
|
2026-09-13 12:26:01 +00:00 |
|
pjh123
|
44c16cab8a
|
fix: 顶层 var 读写直连全局对象属性单一真值——GDI 序言 + 声明处同步删除,类原型 session 直分防晋升克隆 identity 分裂,自增减 int 保持
|
2026-09-12 15:48:32 +00:00 |
|
pjh123
|
d9c2847730
|
fix: sloppy 未声明写隐式全局创建 + strict ReferenceError——DEFINE_GLOBAL_PROP_C 0x98
|
2026-09-09 18:44:38 +08:00 |
|
pjh123
|
0ffb5d2cf3
|
fix: tagged template 语义修正——cooked undefined/this绑定/site缓存/冻结 + groupBy getter 异常传播 + defineGetter setter 保留
|
2026-08-22 11:15:55 +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
|
744899aae9
|
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
|
75153a909d
|
fix: 未声明标识符读取抛 ReferenceError(typeof 特判返回 undefined)
|
2026-08-16 00:10:08 +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
|
38a4f20743
|
perf: CONCAT_N 多操作数拼接单趟精确预分配替代逐次 ADD
新增 CONCAT_N opcode(0x93):连续加号左结合链摊平为单条指令,
字符串模式单趟精确总长预分配,消除 N-2 次中间串分配与逐次整串重拷贝。
- emit 只下钻 left 链、right 括号不拆(a+(b+c) 退化 ADD),求值序与
f64 结合性保持左结合原义;摊平上限 14 防超长链寄存器压力
- dispatch 两阶段:数值前缀逐项复用 ADD 判定序列(int 溢出升 double、
BigInt 混合 TypeError、对象 ToPrimitive 副作用序),遇字符串转入
字符串模式单趟预分配拼接(concat_n_strings)
- RegAlloc graph/rewrite 登记 CONCAT_N ext 操作数(漏收集即错值);
ic_helper ext_word_count 登记(clear_ic_caches 字节定位)
- contract golden 显式 CONCAT_N 分支(规避 canonical_inst _ 兜底)
|
2026-08-15 09:08:05 +08:00 |
|
pjh123
|
abeab6f216
|
fix: finally 体直落进入时置位 finally_active 防完成穿越计数错乱
catch 体正常结束后指令直落入 finally 体,此前 finally_active 未被置位,
finally 内 break/continue/return/throw 触发未进入分支导致 finally 体重复
执行、完成计数错乱。新增无操作数标记指令 TRY_FINALLY_ENTER,在 finally
体入口统一置位栈顶 handler 的 finally_active,覆盖 JMP/直落/unwind/完成
穿越/挂起恢复全部进入路径,并删除 control_flow.rs 中对跳转目标匹配的
脆弱栈顶检测。
|
2026-08-15 07:47:54 +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
|
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
|
f1b7a908f9
|
fix: class 方法/访问器/constructor/prototype 属性描述符(非枚举/只读),新增 DEFINE_PROP_ATTRS/DEFINE_ACCESSOR_ATTRS
- opcode.rs/inst.rs/contract.rs/vm.rs/vm_dispatch_ctrl.rs:新增两个带 attrs 扩展字的 define 指令
(attrs bit0=writable, bit1=enumerable, bit2=configurable,与 PropAttributes 一致)
- class/method.rs:方法与非计算访问器改按规范非枚举安装(DefineMethod 语义)
- class/prototype.rs:proto.constructor 非枚举;ctor.prototype 三标志全 false(MakeConstructor)
- 效果:language/statements/class 1782 pass/948 fail -> 1910 pass/716 fail(+128/-232)
|
2026-08-12 14:11:02 +08:00 |
|
pjh123
|
e6d70664d3
|
fix: 模板表达式高位寄存器槽保留
|
2026-08-11 17:17:30 +08:00 |
|
pjh123
|
b44bc3d7f2
|
feat: 新增 DEFINE_ACCESSOR_DYNAMIC opcode 支持计算键对象访问器
|
2026-08-10 23:28:18 +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
|
03b510b2ef
|
refactor: opcode 语义单张声明式表(def/use/pure/jump/term/ic 六维收敛)
|
2026-08-10 12:23:19 +08:00 |
|
pjh123
|
9f6f694be9
|
fix: 私有字段 brand 检查 own 槽(字段不跨原型,规避 cell 值缺陷)
|
2026-08-10 11:23:52 +08:00 |
|
pjh123
|
80cb1c2feb
|
feat: 循环 let/const 每迭代绑定(MAKE_CELL_FRESH + 解构捕获修复)
|
2026-08-10 10:18:39 +08:00 |
|
pjh123
|
e03ec0f635
|
fix: 脚本顶层 var/function 声明落 globalThis(DEFINE_GLOBAL_PROP 非可配置数据属性)
|
2026-08-10 03:52:17 +08:00 |
|
pjh123
|
a5a910a24e
|
feat: for-await-of + Symbol.asyncIterator + AsyncFromSyncIterator
|
2026-08-10 03:21:37 +08:00 |
|
pjh123
|
85c192a747
|
feat: rest 参数(function f(...args)),实参区收集数组
|
2026-08-10 00:33:25 +08:00 |
|
pjh123
|
fd47cd56d0
|
feat: async/await 语法支持(AWAIT 帧快照挂起/恢复 + 微任务驱动 + AsyncFunction intrinsics)
|
2026-08-09 22:02:15 +08:00 |
|
pjh123
|
464712f7ba
|
feat: 实现 yield* 委托语法(内层迭代器 next/return/throw 转发)
|
2026-08-09 20:00:16 +08:00 |
|
pjh123
|
783e89e4cb
|
feat: 生成器基础支持(YIELD 帧快照挂起/恢复 + GeneratorPrototype next/return/throw)
- 新增 YIELD/SUSPEND_BODY opcode;function* 识别与 yield emit
- GeneratorState 全量快照 VM 执行上下文(regs/pc/bytecode/spill/save/try/cell 栈段/迭代器)
- 调用时参数初始化(默认值/解构副作用与异常在 g() 时刻生效)
- %GeneratorPrototype%/%GeneratorFunction.prototype% 内建对象与 next/return/throw
- session GC trace 生成器状态 JsValues;闭包捕获分析补 yield/赋值目标扫描
|
2026-08-09 18:02:08 +08:00 |
|
pjh123
|
c8740bfb49
|
feat: 函数 length 属性(字节码函数/bind 包装器)+ getter/setter name 前缀
|
2026-08-09 15:38:45 +08:00 |
|
pjh123
|
36fb61fc74
|
feat: 解构模式语义补齐(REST 枚举/getter/computed 排除、IteratorClose、RegAlloc def 干涉、for-in 捕获遮蔽)
|
2026-08-09 15:01:31 +08:00 |
|
pjh123
|
6c79dbb21c
|
feat: class 私有成员语义(字段/方法/访问器 + brand 检查 + 契约修复)
|
2026-08-09 11:08:36 +08:00 |
|
pjh123
|
8669f55470
|
feat: class 公有字段 define 语义 + computed key 类定义期求值一次
|
2026-08-09 09:35:24 +08:00 |
|
pjh123
|
5611d90ad0
|
feat: with 语句、成员位/移位复合赋值、CALL_NATIVE 无目标修复
with 语句:新增 emit 支持,with 体内自由标识符动态解析(对象属性优先,
回退外层),支持读/写/复合赋值/自增自减/delete/var 初始化动态化,
TO_OBJECT opcode 处理原始值对象,顶层 this 绑定全局对象。
复合赋值:新增 6 个 COMPOUND_MEMBER_BIT_* opcode 支持成员位/移位复合赋值,
修复 computed member 复合赋值覆盖 bug,with 内标识符复合赋值动态化。
CALL_NATIVE:实现全局 isNaN/isFinite 并绑定,用户覆盖 builtin 名时
回退通用调用路径而非报错,局部遮蔽 builtin 名走普通 CALL。
test262: with 34 pass(基线 0),compound-assignment 320 pass(基线 223)
|
2026-08-09 07:22:46 +08:00 |
|
pjh123
|
cd214069cd
|
fix: try/finally 支持 break/continue/return 穿越 finally(completion 机制)
|
2026-08-08 12:38:25 +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
|
bfcf132d73
|
feat: arguments 对象绑定(CREATE_ARGUMENTS + 帧实参 spill 区)
|
2026-08-08 00:01:22 +08:00 |
|
pjh123
|
de67cc8eee
|
fix: 链式 upvalue 捕获支持多层嵌套函数引用深层变量
|
2026-08-07 14:56:51 +08:00 |
|
pjh123
|
fd94ff6931
|
fix: 子模块全局扁平化根治逃逸闭包上下文错位
|
2026-08-07 10:49:15 +08:00 |
|