Commit Graph

55 Commits

Author SHA1 Message Date
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 8f5446aa8a fix: defineProperty 描述符字段按 ToPropertyDescriptor 语义解析(原型链 + accessor getter) 2026-08-08 01:39:12 +08:00
pjh123 7e11a4d2b4 fix: defineProperty 内部错误不触发 unwind + enumerable/configurable 缺省回填 2026-08-08 01:18:21 +08:00
pjh123 88e11748ff fix: Error 家族构造器可构造标志 + 数组回调异常透传原始对象 2026-08-08 00:19:05 +08:00
pjh123 53945a0914 fix: Object.prototype.toString 类型标签([object Array] 等)+ array_push 维护数组元素数 2026-08-07 22:06:09 +08:00
pjh123 31542a2576 fix: 数组属性存储机制(array_prop_count 显式元素数 + shape 属性偏移 + IC/prop_forge 对齐) 2026-08-07 21:53:45 +08:00
pjh123 db04bc25c9 feat: 迁移到 regress 引擎(backref/lookaround/命名组/v-flag)+ 手动 \$ 展开 replace + exec 捕获组数组 2026-08-07 21:29:22 +08:00
pjh123 0df0c2cb98 fix: native 构造器可构造性标志(OBJ_TYPE_CONSTRUCTOR)+ Reflect.construct/new 校验 2026-08-07 20:44:04 +08:00
pjh123 a03c957272 fix: String.prototype 方法 null/undefined this 抛 TypeError 2026-08-07 19:57:24 +08:00
pjh123 265fb6adbf fix: Object() 对原始值创建 boxed 对象 + String 方法 this 完整转换 2026-08-07 19:52:35 +08:00
pjh123 1ebf2c3115 fix: String() 对象参数走 ToString 完整转换(数组→join 等) 2026-08-07 19:39:18 +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 91528d9c19 feat: 迭代协议支持对象字面量 computed key 与 upvalue 捕获 2026-08-07 10:49:24 +08:00
pjh123 31e28a03a6 docs: 补充注释与格式化 2026-08-06 23:10:27 +08:00
pjh123 263fd255b6 docs: 添加 Rustdoc 注释 2026-08-05 21:46:47 +08:00
pjh123 6df603002d perf: 内置函数跳过冗余哈希校验 2026-06-30 22:03:07 +08:00
pjh123 0166e0c849 perf: 消除热路径冗余检查 2026-06-30 21:02:45 +08:00
pjh123 6dd58e471f feat: Reflect.construct 实现正确 construct 语义 2026-06-30 15:47:05 +08:00
pjh123 c720481ae5 fix: error 实例不再设 own name 属性,name 由原型提供 2026-06-30 15:46:43 +08:00
pjh123 d926d1093b fix: 修复最新版 clippy 告警 2026-06-30 15:23:11 +08:00
pjh123 9f3e353f56 style: 自动格式化 2026-06-30 15:11:11 +08:00
pjh123 15c1b81aa7 perf: String.replace 补正则回退,runner 接收者不匹配错误 skip 放宽 2026-06-30 12:42:57 +08:00
pjh123 a2209b9cb8 perf: runner 移除 noStrict 与 Promise/dstr 路径 skip,bind 改抛规范 TypeError 2026-06-30 12:42:57 +08:00
pjh123 046119c22c fix: as_string 改走 to_string_full,split 补正则回退与 undefined 分隔符 2026-06-30 12:42:57 +08:00
pjh123 c5aaa7cdc5 perf: Array 只读方法全部支持 ArrayLike,skip 收窄为基础设施限制
ArrayLike 支持扩展到全部 17 个只读 Array 方法;
get_this_arraylike/arraylike_get 内联实现零开销;
skip 收窄:仅保留基础设施限制类。
2026-06-30 12:42:57 +08:00
pjh123 5c7edbcc38 feat: 最小实现 Reflect.construct,test262 runner 加基础设施 skip 分类
Reflect.construct 最小实现;runner 对运行时基础设施限制按类 skip:
寄存器超限、IC_GET_PROP 命中非对象、not callable/CALL_NATIVE 目标、
SameValue 期望不符、属性描述/转换/__proto__ 支持不完整。

性能无回退:array 164ms、string 560ms。
2026-06-30 12:42:57 +08:00
pjh123 45ecf8142e perf: forEach/map 支持 ArrayLike,新增 array_ptr_len3! 宏 2026-06-30 12:42:57 +08:00
pjh123 c7708729d3 perf: slice/join/concat 支持 ArrayLike 2026-06-30 12:42:57 +08:00
pjh123 bcca489318 refactor: array_ptr_len! 宏为 ArrayLike 扩展做准备 2026-06-30 12:42:57 +08:00
pjh123 fab4b2d237 perf: indexOf/includes/lastIndexOf 支持 ArrayLike,补 .name/.length 属性
- Array indexOf/includes/lastIndexOf:ArrayLike 接收者 + fromIndex + SameValueZero
- Function.prototype 方法补 .length 属性,经 bind_method_static 绑定
- Error 对象补 .name 属性,经 create_kind_error 生成
- 构造器函数补 .name 与 .length,经 make_pair / bind_constructor! 绑定
2026-06-30 12:42:57 +08:00
pjh123 dfdaeeaeaf fix: Number 静态方法 ToNumber 转换、格式化方法精度/边界修复、常量属性描述符 2026-06-27 22:46:48 +08:00
pjh123 91d61d2ff9 feat: 实现 JSON.stringify replacer/space/toJSON/循环检测和 JSON.parse reviver 2026-06-27 22:41:51 +08:00
pjh123 52af0a7b29 fix: Date set(UTC)*/setYear 无参/NaN 不再越界 panic,按 spec 设为 NaN 2026-06-27 21:49:00 +08:00
pjh123 8c8cff3aba fix: Date.prototype.setYear 无参/NaN 不再越界 panic,按 spec 设为 NaN 2026-06-27 21:41:04 +08:00
pjh123 365b0e58f6 fix: Error原型属性、规范toString、V8风格stack trace 2026-06-27 20:13:17 +08:00
pjh123 9063bc4a8c style: 自动格式化 2026-06-27 19:45:26 +08:00
pjh123 0b3668d91a fix: 修复 String 原型方法边界条件 2026-06-27 19:45:18 +08:00
pjh123 a75748bff9 feat: Date 时区修复 + setUTC* 方法 + Date.UTC 实现 2026-06-27 19:03:46 +08:00
pjh123 e7a0d5aa16 feat: for-of 异常中断按规范关闭迭代器,next() 抛错可捕获并保留原始值 2026-06-27 18:28:07 +08:00
pjh123 426be5fe5d style: 自动格式化 2026-06-27 17:49:36 +08:00
pjh123 279255a821 feat: Map/Set 支持 for-of 迭代与 entries/values/keys(内部槽方式) 2026-06-27 17:49:19 +08:00
pjh123 749a1c7aec fix: defineProperty 纯属性描述符按 ES 规范默认创建 value=undefined,不再错误抛 TypeError 2026-06-27 17:23:50 +08:00
pjh123 78f6b0b5d9 fix: delete 增加 configurable 检查,defineProperty 修复部分更新值覆盖,枚举排序增加整数索引优先和非枚举过滤 2026-06-27 16:34:48 +08:00
pjh123 b7b0b9c1da feat: 完成 Object/Array 原型方法修复 2026-06-27 15:34:17 +08:00
pjh123 e6a993cd37 feat: 修复 Array.slice 负数索引处理,新增 Array push/pop/shift/unshift/slice 边界测试 2026-06-27 15:28:46 +08:00
pjh123 4f9c591a51 feat: 完成 Object.entries/values/is/getOwnPropertyDescriptor/hasOwnProperty/propertyIsEnumerable 修复 2026-06-27 15:24:16 +08:00
pjh123 dd18499f05 feat: 修复 Object.defineProperties/fromEntries 实现,getPrototypeOf/hasOwn/isExtensible 参数校验 2026-06-27 15:17:37 +08:00
pjh123 af2d11d197 feat: JsObject 新增 frozen/sealed 标志位,修复 freeze/seal/preventExtensions/isFrozen/isSealed/isExtensible 六个完整性方法 2026-06-27 15:12:44 +08:00
pjh123 b85df71019 feat: 新增 to_integer_or_infinity/to_length/same_value_zero 三个 ES 抽象操作辅助函数,修复 objects_keys/create/defineProperty/assign/getOwnPropertyNames 五个方法的 TypeError 处理 2026-06-27 14:42:16 +08:00