Commit Graph

67 Commits

Author SHA1 Message Date
pjh123 b6219188e7 fix: DefineOwnProperty 臂写参数寄存器补顶帧守卫 2026-10-10 00:12:44 +00:00
pjh123 2b18c4d264 feat: mapped arguments defineProperty 后参数与 arguments 再同步 2026-10-09 23:27:18 +00:00
pjh123 8c0bdf89a6 test: 补 import defer 读目标与内联 catch 回归单测 2026-10-09 15:46:40 +00:00
pjh123 b240cbd305 feat: 对象层惰性模块命名空间求值触发 2026-10-09 15:13:19 +00:00
pjh123 c6bc93a076 refactor: realm 与 Vm 生命周期解耦,Vm 持 Arc<Realm> 2026-10-07 01:35:16 +00:00
pjh123 14ef287a75 refactor: 提取 Realm 组合类型,session 与 GC 及原型槽归 realm 2026-10-07 00:13:24 +00:00
pjh123 bd14e332ba perf: 字符串 length 站点指针快判免 IC 读 2026-10-05 05:25:26 +00:00
pjh123 214494d3d5 refactor: 退役 new_array 死参数与三十四处调用点 2026-10-03 04:32:20 +00:00
pjh123 3ad2a4dca4 refactor: 退役逃逸写屏障 vm 侧调用点与固有方法 2026-10-03 01:24:15 +00:00
pjh123 d7f54e331a style: 折叠签名与调用折行对齐格式检查 2026-10-01 09:37:54 +00:00
pjh123 c067dcce21 fix: 数组长度收缩阻挡扫描取稠密与命名区最高阻挡点 2026-09-29 14:47:19 +00:00
pjh123 f70de8cb43 fix: 大数组索引写降级命名属性并扩展逻辑长度 2026-09-29 13:05:37 +00:00
pjh123 18b80f2f41 feat: TA 定义自身属性数值索引臂与原型链门口径 2026-09-23 08:31:47 +00:00
pjh123 0645a3d2e4 feat: TA Set 面接统一数值键门与 receiver 四分类裁决 2026-09-23 07:35:53 +00:00
pjh123 897cdf678e feat: TypedArray Get/Has 接统一数值键门三态分派 2026-09-23 06:30:37 +00:00
pjh123 f8ce0e58aa feat: TypedArray detach 数值键静默写与守卫臂语义对齐 2026-09-23 04:13:38 +00:00
pjh123 53029dbcc7 fix: 数组 push/pop/shift/unshift 按规范接收 arraylike 与字符串接收者 2026-09-22 13:07:40 +00:00
pjh123 9a502e634a fix: 删后裸读已知全局内置名经 A 侧抛 ReferenceError 2026-09-20 08:38:11 +00:00
pjh123 1d7561d07c fix: 恢复边界镜像重载跳过 native pack 实参区 2026-09-19 19:26:06 +00:00
pjh123 a953652da8 fix: shift 返回钉结果寄存器并收 length 写序偏离 2026-09-19 10:33:59 +00:00
pjh123 41bebaa05a fix: 数组长度赋值走统一检查并支持部分截断 2026-09-18 03:02:41 +00:00
pjh123 b45f979db7 fix: 数组长度定义异常原值抛出并保留错误类型 2026-09-18 02:42:11 +00:00
pjh123 a6411a495d fix: 数组长度收缩失败按阻挡索引部分截断 2026-09-18 02:41:09 +00:00
pjh123 5ecd03c1a1 fix: 数组长度按虚拟属性处理定义与截断 2026-09-18 02:05:57 +00:00
pjh123 ed65b5282f feat: 模块命名空间枚举读活值并支持写穿 2026-09-18 00:02:21 +00:00
pjh123 cafac572fa feat: 模块命名空间导出条目表与预注册 2026-09-17 23:47:04 +00:00
pjh123 6aa87cd40e fix: 模块命名空间对象设为不可扩展并拦截写入 2026-09-17 22:32:29 +00:00
pjh123 1250675930 docs: 改写虚拟机属性与支撑域注释
vm_props.rs(14 点纯注释):
- ordinary_get / ordinary_get_with_target / push_bytecode_getter_frame
  补文档,写清读路径顺序、hole 边界与 getter 帧化返回值契约;
- sync_global_builtin_mirror 首现展开「A 侧」= 全局对象自身属性槽;
- length 赋值路径去历史化并译中英文注释(ToUint32 校验、稠密上限、
  稀疏 hole 标记、逻辑长度另记、影子 length 同步);
- call_or_push_setter / set_or_create_prop_value / define_data_property /
  define_accessor_property 补调用与定义路径文档。

vm_support.rs(2 点纯注释):
- swap_intrinsic_proto 首现展开「P 原型」;
- full_reset_legacy_for_bench 去掉「旧版」历史化措辞。

无行为改动。
2026-09-17 13:43:34 +00:00
pjh123 7a5b1b2d06 refactor: vm.rs 内联测试按属主模块归位 2026-09-16 17:07:29 +00:00
pjh123 d877e63cf1 fix: 全局对象成员写与删后镜像槽反向同步防裸读失步 2026-09-14 13:10:17 +00:00
pjh123 c8bcff83f6 fix: sloppy 模式属性赋值静默 no-op——写失败按写方严格模式分派,内置写路径一律按严格 2026-09-09 17:48:33 +08:00
pjh123 a1c86a9335 feat: freeze/seal/preventExtensions 写路径拦截(逐属性 meta + extensible 检查)
freeze/seal 逐属性改写 meta(数据属性 writable/configurable=false,
访问器 configurable=false,含数组元素区),使 has_prop_meta() 恒 true,
IC 直写路径自动失效;ordinary_set/create_named_prop_fast/
set_or_create_prop_value/define_* 增补 extensible/frozen 检查,
SET_ELEM 直写入口回落 ordinary_set 或拒绝新元素。

引擎未实现 strict 标志,赋值失败统一 raise_type_error(sloppy 静默留待后续)。
2026-08-15 20:55:20 +08:00
pjh123 37252e55b5 perf: 三处手写压帧收敛单一入口并免实参堆 Vec 物化 2026-08-15 10:27:14 +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 5e14817eaa fix: member 复合写数组 length 分流 ordinary_set 防影子槽绕过 ArraySetLength 2026-08-15 09:17:03 +08:00
pjh123 aa4c28cdf0 perf: member 复合写路径接入 IC 写命中(depth 0)消除每次 DashMap 查询与回写
set_member_prop 增加 ic_set_hit_own(仅接受 depth==0 槽,跳过读侧学习的
原型条目防原型污染)命中直写槽,ext_pc 由 read_member_prop 显式带出消除
隐式 pc 契约;写新属性 miss 分支(IC_SET 分发 + member 写)统一改
CreateDataProperty 快路径(保留原型链 setter/readonly 检查),砍掉
ordinary_set 全链路的重复查询与 shape 转换开销。
2026-08-15 08:16:49 +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 ee4a12668f perf: 数组元素访问 dispatch 内联 fast path + length_si 缓存
GET_PROP_DYNAMIC/SET_PROP_DYNAMIC 开头内联数组元素 fast path:整数键 +
真数组 + 无元素 meta + 界内时直读/直写元素区,免 primitive_property_get /
ordinary_get/set 调用链与 __proto__ 每次 RwLock 查询;越界与有 meta
场景回退原路径(CreateDataProperty + length 扩展 / accessor/hole 协议)。
GET 侧 is_object() 快检先于 checked_object_ptr,保持原始值 receiver
不抛错。length_si 缓存为 Vm 字段(builtin 绑定后取 id,稳定非 0),
普通属性路径 5 处 hot spot 改读缓存,消除每次 intern 的共享锁开销。
2026-08-15 04:58:57 +08:00
pjh123 7362137720 chore: 清理 oxide_vm clippy 告警 2026-08-14 05:26:46 +08:00
pjh123 f3d411120e fix: accessor getter 调用异常经 raise_call_error 走 unwind(JS try/catch 可捕获,此前逃逸) 2026-08-12 17:55:58 +08:00
pjh123 e0d6a85261 fix: ArraySetLength 收缩遇不可配置元素静默失败、ToPrimitive 异常透传与既有属性描述符缺省回填
- arr.length 收缩时若 [newLen, oldLen) 内存在不可配置元素,整个收缩失败且不做任何修改(sloppy 赋值静默 no-op),不再抛错或截断
- length 赋值 ToPrimitive(valueOf/toString)抛错时按主 dispatch 约定直接返回,避免二次抛 RangeError 覆盖原异常(S15.4.5.1_A1.3_T2)
- Object.defineProperty/defineProperties/create 对已有属性省略描述符字段时保持现有属性值(无显式 meta 按 DEFAULT_DATA 回填),修复 toReversed/toSorted/toSpliced/with length-decreased-while-iterating
2026-08-12 13:07:32 +08:00
pjh123 d4cd52ba90 fix: 数组 length 赋值 ArraySetLength 语义与超长逻辑长度(a.length 读取/收缩校验/空洞同步) 2026-08-12 12:52:02 +08:00
pjh123 7efb26bc96 perf: 函数调用 bytecode 改 Arc 共享(O(1) 帧切换 + IC 写时复制) 2026-08-10 15:08:51 +08:00
pjh123 c8740bfb49 feat: 函数 length 属性(字节码函数/bind 包装器)+ getter/setter name 前缀 2026-08-09 15:38:45 +08:00
pjh123 2bebd822d0 feat: TypedArray 第一批解锁(%TypedArray% 构造器、原型访问器、of/from、bind 绑参、harness) 2026-08-09 12:26:31 +08:00
pjh123 6c79dbb21c feat: class 私有成员语义(字段/方法/访问器 + brand 检查 + 契约修复) 2026-08-09 11:08:36 +08:00
pjh123 9e3be30fe8 fix: TypedArray 元素写入进 buffer + BYTES_PER_ELEMENT 属性 2026-08-08 21:41:33 +08:00
pjh123 0b68baa802 fix: delete 真正删除属性(shape 链重建 + 数组元素 hole 标记)
字节码 delete 原先只清值为 undefined,属性残留在 shape 链,hasOwnProperty/
keys/枚举仍可见。统一走共享 delete_own_property(与 Reflect.deleteProperty
一致):
- 命名属性经 shape 链重建移除,数组重建前保存并恢复元素区
- 数组下标元素标记为 hole(PropMetaEntry.hole),length 不变,
  存在性检查(resolve_property/get_own_property_slot/ordinary_get/for-in)
  判 hole,重赋值自动清除标记
- 不可配置属性统一返回 false(sloppy 语义,strict 抛错留待 emit 追踪严格模式)
- set_or_create_prop_value 数组下标键路由元素区,修复 delete 后重赋值误入
  shape 链

test262 Object +212 PASS/-102 FAIL,Array +149 PASS/-60 FAIL,无回归。
2026-08-08 02:25:13 +08:00
pjh123 7e11a4d2b4 fix: defineProperty 内部错误不触发 unwind + enumerable/configurable 缺省回填 2026-08-08 01:18:21 +08:00
pjh123 bfc2312f6c fix: 数组元素写入越过元素区时搬移属性区 + defineProperty 数组索引走元素区 2026-08-07 23:20:32 +08:00