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 |
|