pjh123
|
7dbb8aa2bf
|
fix: 关系比较处理器补 Symbol 守卫,替换 BigInt 混合检查
|
2026-09-27 00:31:38 +00:00 |
|
pjh123
|
717960a9e8
|
perf: upvalue 读取缓存 callee 切片指针省解引用链
|
2026-09-26 20:30:53 +00:00 |
|
pjh123
|
7f545ad99e
|
perf: 数组 length 读走 IC 虚拟槽快路径
|
2026-09-26 16:13:44 +00:00 |
|
pjh123
|
de236fb5d1
|
feat: 共享 ThrowTypeError 对象并拆分 arguments callee 四象限
|
2026-09-26 15:01:50 +00:00 |
|
pjh123
|
00e607f67e
|
fix: IsHTMLDDA 宿主对象补可调用并调整 typeof 判定序
|
2026-09-26 05:33:10 +00:00 |
|
pjh123
|
53b16537bc
|
fix: 字符串原始值整数索引读返码元子串
|
2026-09-25 16:52:25 +00:00 |
|
pjh123
|
613013224f
|
feat: arguments 对象补 @@iterator 数据属性
|
2026-09-25 15:04:49 +00:00 |
|
pjh123
|
4787f2180f
|
fix: SET 原始值接收者按严格性分流并补脏重建本体标
|
2026-09-24 19:37:26 +00:00 |
|
pjh123
|
53505dc38c
|
fix: 补 Error 族原型与 Math 六函数边及 Symbol 面描述符
|
2026-09-24 17:33:49 +00:00 |
|
pjh123
|
dfa85d3eac
|
fix: 通用构造 GpFC 读体传播读与内建原型回落
|
2026-09-24 02:41:28 +00:00 |
|
pjh123
|
dce132acec
|
fix: TA 构造形态改读构造入口标记替代寄存器推断
|
2026-09-22 19:41:55 +00:00 |
|
pjh123
|
20843c8c1d
|
fix: TailCall 转发不可调用目标改抛可捕获 TypeError
|
2026-09-22 14:46:55 +00:00 |
|
pjh123
|
098375aa9e
|
fix: DataView 原型访问器与 ToNumber 强转序位收口
|
2026-09-22 05:57:39 +00:00 |
|
pjh123
|
cc0f6975ca
|
fix: 私有访问器 brand 槽放行
|
2026-09-21 15:28:19 +00:00 |
|
pjh123
|
1a6feadac4
|
fix: Array @@species 绑定并暴露真 [[Construct]],隐式返回交付当前 this
|
2026-09-20 13:07:38 +00:00 |
|
pjh123
|
a953652da8
|
fix: shift 返回钉结果寄存器并收 length 写序偏离
|
2026-09-19 10:33:59 +00:00 |
|
pjh123
|
4d0f11e30a
|
fix: 符号原语数值与字符串转换改抛类型错误
|
2026-09-17 23:32:28 +00:00 |
|
pjh123
|
79518ba827
|
fix: strict 删除非可配置属性抛错并修正数组长度
|
2026-09-17 19:17:16 +00:00 |
|
pjh123
|
86c5757b1f
|
docs: 删除分发层空占位模块
|
2026-09-17 14:15:51 +00:00 |
|
pjh123
|
6c4b49b196
|
docs: 补齐虚拟机运行时与调用绑定注释
|
2026-09-17 14:11:06 +00:00 |
|
pjh123
|
aafd07728c
|
fix: delete 非对象基按 ToObject 装箱判删,仅 null/undefined 基抛错
|
2026-09-15 03:56:18 +00:00 |
|
pjh123
|
da5e6d13ba
|
fix: for-in/of 词法头建独立 TDZ 环境,捕获与右值直读归正
|
2026-09-14 23:58:10 +00:00 |
|
pjh123
|
92df76565b
|
fix: 迭代可选入口对非空不可调用 @@iterator 抛错并实现 IsHTMLDDA 宿主值
|
2026-09-14 22:16:43 +00:00 |
|
pjh123
|
d877e63cf1
|
fix: 全局对象成员写与删后镜像槽反向同步防裸读失步
|
2026-09-14 13:10:17 +00:00 |
|
pjh123
|
3acac721b0
|
types/kernel/vm/builtins: JsString UTF-16 载荷层(FlatU16 变体 + 单元入口)——原 UTF-8 载荷只存 well-formed 串、孤立 surrogate lossy 转 U+FFFD 回写,FromCodePoint/属性转义与字符串面码点语义皆破;现载荷直存 [u64;3](Flat well-formed / FlatU16 单元序列 / Cons 拼接),utf16_len 独立 32 位字,32B 布局锚保持;from_units 智能路由(含孤立→FlatU16),as_str 仅限 Flat,units/units_borrowed 单元借用,as_lossy_str 宽容读;string_forge 编解码 surrogate 感知(孤立 surrogate 逃逸 hex4 编码、解码展开 astral 代理对、string_ptr 由单元物化);VmHost 单元物化/分配/查询入口 + runtime_api 单元 API;字符串内置全法单元化(charAt/slice/substr/split/replace/search/match/matchAll 单元定位;空模式边界:search→0、match→[""]、replace 插 0 位、matchAll 游标耗尽守卫;接收者 ToString 错误原样传播);正则内置单元化(exec/test/search/symbol_* 单元文本,替换串 \u{...} 与孤立 surrogate 文本处理,lastIndex 与 matchAll 游标单元化);字符串迭代器码点化(高代理+后续低代理成对产出,astral 值回真实码点);String(Symbol) 抛 TypeError;回归钉更新五处(charAt/split/slice/substr 单元精确语义 + dispose 钉改 TypeError 断言);四 crate 全绿(oxide_vm 98 套件 2403 测)+ clippy/fmt 零新增
|
2026-09-13 22:42:10 +00:00 |
|
pjh123
|
699059aee5
|
emit/vm: delete 全局可写内置标识符真删属性并清镜像槽——新增 DELETE_GLOBAL_PROP_C,可删名集自可写划分单源派生(除 globalThis 与宿主名),test262 delete JSON 用例由红转绿
|
2026-09-13 12:26:01 +00:00 |
|
pjh123
|
41a3aef29e
|
fix: CREATE_CLOSURE 跨 run 帧按执行帧表代际解析——嵌套闭包错代盖写闭合,挂起恢复重设活跃代际,OOB 消息上界对齐实际查表代际
|
2026-09-12 22:04:42 +00:00 |
|
pjh123
|
d9c469e9d0
|
fix: 子模块表代际注册表——跨 run 存活函数按创建期表代解析子模块,索引悬空与静默错模块闭合
|
2026-09-12 19:27:22 +00:00 |
|
pjh123
|
44c16cab8a
|
fix: 顶层 var 读写直连全局对象属性单一真值——GDI 序言 + 声明处同步删除,类原型 session 直分防晋升克隆 identity 分裂,自增减 int 保持
|
2026-09-12 15:48:32 +00:00 |
|
pjh123
|
c8bcff83f6
|
fix: sloppy 模式属性赋值静默 no-op——写失败按写方严格模式分派,内置写路径一律按严格
|
2026-09-09 17:48:33 +08:00 |
|
pjh123
|
885c43e0e4
|
refactor: match 可改 ? 的等价改写
|
2026-08-16 14:04:25 +08:00 |
|
pjh123
|
fe8892079e
|
chore: 全仓 rustfmt 格式化归拢
|
2026-08-16 12:50:36 +08:00 |
|
pjh123
|
926d907965
|
fix: 闭包链式捕获越界改编译错误早暴露防静默错值
|
2026-08-16 12:34:14 +08:00 |
|
pjh123
|
e54b877f17
|
fix: 异常值通道配对——忽略调用槽配对、unwind 接住清槽、生成器参数初始化不覆盖异常值
|
2026-08-16 11:29:50 +08:00 |
|
pjh123
|
4a1e0a3e9e
|
fix: IC 快速路径 symbol 原始值走 Symbol.prototype 链
|
2026-08-16 10:31:34 +08:00 |
|
pjh123
|
c8c6349fcc
|
fix: NEW_OBJECT 走统一分配入口登记 epoch 对象消除属性向量泄漏
|
2026-08-16 02:16:34 +08:00 |
|
pjh123
|
8c4b766e70
|
fix: 构造帧 super 状态改显式标志修复多层继承与 return 语义
derived 构造器 super 状态改由 CallFrame.super_called 显式标志承载,
取代依赖 regs[254] 值判定:多层继承中间 derived 帧由 SUPER_CALL 压入
this=构造对象,值判定三重失效(未调 super 不报错 / this-before-super
失效 / 合法 super() 误判 more-than-once)。父构造器正常返回经
construct_result_reg==Some(254) 识别置位调用方帧(该 ABI 不变量仅
SUPER_CALL 压帧满足),抛错走 unwind 不置位。
do_return 检查放宽为非对象返回值(含 undefined/null/原始值)且未调
super 时抛 ReferenceError(规范 §9.2.2.2),调过 super 回退构造 this。
super 构造器改取当前帧 callee 原型而非 newTarget 原型:newTarget 跨
SUPER_CALL 压帧保持为最外层类,取其原型在中间 derived 层解析回同一
父类导致无限压帧。
|
2026-08-16 01:23:52 +08:00 |
|
pjh123
|
75153a909d
|
fix: 未声明标识符读取抛 ReferenceError(typeof 特判返回 undefined)
|
2026-08-16 00:10:08 +08:00 |
|
pjh123
|
c052f5a619
|
feat: Function.prototype[Symbol.hasInstance] 绑定与 bound 函数构造语义
@@hasInstance 按 OrdinaryHasInstance 实现(非可调用 this 返回 false、
prototype 非对象抛 TypeError、bound 链递归到最内层 target);
new boundFn() 解包 [[BoundTargetFunction]] 链后转发构造:绑定实参前置、
新对象原型取 target.prototype、new.target 替换为最内层 target。
|
2026-08-15 22:40:45 +08:00 |
|
pjh123
|
26db7ae07c
|
fix: TDZ 写与 const 赋值检查补全(含闭包捕获路径)
|
2026-08-15 21:55:43 +08:00 |
|
pjh123
|
78976cad0c
|
feat: 二元幂运算 opcode 支持 number 与 BigInt
- 新增 EXP opcode(0x94)与 emit 层 Exponential 分支,二元 a ** b 不再 compile error
- dispatch_exp 与 dispatch_compound_exp 共享 exp_result:IEEE-754 powf 快路径 +
BigInt 幂(负/超 u32 指数 RangeError)+ 混合 BigInt/Number TypeError
- 复合 **= 补 BigInt 语义(此前走 f64 近似),与二元 ** 行为一致
|
2026-08-15 21:17:49 +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
|
f81b7bca46
|
fix: upvalue cell 改独立堆分配消除 GC sweep 后悬垂
upvalue cell 原先分配于 session_epoch bump arena,对象 sweep 替换 arena
后旧 Bump drop,全部闭包 cell 悬垂:后续分配复用其内存导致 upvalue 值
被覆盖(私有字段 brand 检查跨语句误报、release 下可致 SIGSEGV)。
cell 改为 Box::into_raw 独立堆分配并登记进 session_cell_ptrs 追踪表,
与 arena 生命周期解耦:sweep 搬移对象时 cell 指针稳定,只重写
cell.value 中的对象引用;full_reset 统一释放,无 double-free。
|
2026-08-15 18:50:07 +08:00 |
|
pjh123
|
9a7fe9777d
|
perf: typeof 改 js_type 单次提取并复用进程级静态字符串消除每次分配
|
2026-08-15 16:09:19 +08:00 |
|
pjh123
|
350b65c091
|
perf: 字符串 +/+= 二元拼接改 Cons rope 惰性扁平化消除 O(n²)
JsString 拆 Flat/Cons 变体:Cons 经独立 ConsNode 保存左右子节点 + O(1)
字节长 + 惰性扁平化产物缓存(OnceLock 原子发布,产物挂节点生命周期)。
concat_strings 接线:总长 ≤ 128B 的小链急切扁平(与 rope 前同款,拼接即
消费场景零开销),大链 O(1) 链接——大段重复拼接从 O(n²) 拷贝降为 O(n)
链接,文本在消费点(.length/==/string_ref/方法族)首次扁平化后缓存。
GC 兼容:mark 收口 mark_string_live 传播 Cons 子节点与产物闭包(显式栈
防深链爆栈);sweep/full_reset 共用 drop 辅助连带释放产物;节点字节记账
用 O(1) byte_len。rope 节点登记 session 字符串表,与执行期字符串 GC
(指令边界触发)天然兼容。JsString 结构 32B 与 rope 前同 bin,小串路径
零结构回退;unsafe impl Send/Sync 论证同 StringPtr(perm 恒 Flat)。
|
2026-08-15 14:32:08 +08:00 |
|
pjh123
|
41f030dfc8
|
fix: NEW_SPREAD/SUPER_SPREAD 构造深递归统一走压帧入口可捕获深度检查
收敛后普通 NEW/SUPER 深递归经 push_bytecode_frame 深度检查抛可捕获
RangeError,而 NEW_SPREAD/SUPER_SPREAD 仍保留显式引擎 Err(不可捕获),
构造路径行为分叉。删除两处显式检查,交由统一入口处理:spread 变体与
普通路径一致抛可捕获 RangeError。补浅深度配置下 NEW/NEW_SPREAD 深递归
try/catch 可捕获断言(普通 NEW 作对照锚点)。
|
2026-08-15 12:13:36 +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
|
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
|
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 |
|