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 |
|
pjh123
|
31542a2576
|
fix: 数组属性存储机制(array_prop_count 显式元素数 + shape 属性偏移 + IC/prop_forge 对齐)
|
2026-08-07 21:53:45 +08:00 |
|
pjh123
|
e6886eb1d0
|
feat: 实现整数索引读取与 for-of 迭代(get_iterator 支持)
|
2026-08-07 18:10:19 +08:00 |
|
pjh123
|
192b697335
|
fix: 数组元素访问器属性触发 getter 并透传异常
|
2026-08-07 15:05:44 +08:00 |
|
pjh123
|
31e28a03a6
|
docs: 补充注释与格式化
|
2026-08-06 23:10:27 +08:00 |
|
pjh123
|
969eacb047
|
perf: IC hit/miss 路径 depth=0 快速路径内联,跳过 proto 遍历函数调用
|
2026-06-30 23:45:52 +08:00 |
|
pjh123
|
56d41441e5
|
perf: 优化调用原型链的 IC 命中加速
|
2026-06-30 21:41:05 +08:00 |
|
pjh123
|
0166e0c849
|
perf: 消除热路径冗余检查
|
2026-06-30 21:02:45 +08:00 |
|
pjh123
|
3e7c082293
|
feat: 为 VM 添加结构化日志
|
2026-06-26 20:50:05 +08:00 |
|
pjh123
|
f23d4e61b2
|
feat: 提取 oxide_builtins 独立 crate,泛型化 <H: VmHost>
|
2026-06-25 22:38:23 +08:00 |
|
pjh123
|
d195d7615c
|
refactor: Vm 状态分组、dispatch 拆分为分发表、IC 辅助函数独立成模块
|
2026-06-25 19:22:16 +08:00 |
|
pjh123
|
ddffa8504e
|
refactor: 字符串值改用 JsString 指针表示,键与字面量改用 PermInterner
|
2026-06-24 20:15:15 +08:00 |
|
pjh123
|
b1cd4661ed
|
refactor: 统一错误对象构造与异常类型传播
|
2026-06-23 14:51:58 +08:00 |
|