Commit Graph

77 Commits

Author SHA1 Message Date
pjh123 b5ff2c132a feat: using 声明登记释放栈指令与 GC 根 2026-10-09 17:55:08 +00:00
pjh123 0c277aac10 feat: try 语句压边界帧,空体内 break/continue 完成值物化 undefined 2026-10-09 10:04:23 +00:00
pjh123 0a1ca83661 fix: if 无 else 假支显式写 undefined 消除寄存器初始化巧合依赖 2026-10-05 22:38:53 +00:00
pjh123 75810cb8e7 fix: for 头名回填加作用域深度门控防体内同名遮蔽覆写头 cell 2026-10-05 17:30:42 +00:00
pjh123 6cb7964764 feat: 捕获 cell 换键——类合成 cell 切计数器分配,类名与函数声明改可见绑定索引 2026-10-05 17:05:08 +00:00
pjh123 1144b07534 feat: 捕获 cell 换键 for 头按绑定身份取索引 2026-10-05 16:21:42 +00:00
pjh123 34e22c5519 feat: 捕获 cell 按绑定身份换键 2026-10-05 14:32:42 +00:00
pjh123 2b565a4996 refactor: 移除 lexical 预声明函数的死参数 global_lexical 2026-09-28 19:12:13 +00:00
pjh123 4787f2180f fix: SET 原始值接收者按严格性分流并补脏重建本体标 2026-09-24 19:37:26 +00:00
pjh123 e29e74341e fix: for 头与解构赋值写点补 upvalue 与 cell 臂,捕获预扫补赋值头 2026-09-24 15:35:21 +00:00
pjh123 c9e1ee2e09 fix: 裸 return 物化 undefined,防调用残留值冒充完成值 2026-09-20 18:07:54 +00:00
pjh123 28ccbebd52 fix: break/continue 携当前语句列表累积值且循环出口值按迭代回写 2026-09-20 12:19:52 +00:00
pjh123 2b0238f310 fix: catch 参数名补入捕获扫描且 catch 入口新 cell 2026-09-20 04:46:41 +00:00
pjh123 d4df1ddaf4 fix: 循环体被捕获词法声明每迭代新建 cell 2026-09-19 19:58:13 +00:00
pjh123 c1dcc7a8f3 fix: 默认导出匿名函数与类设置隐式名 2026-09-17 22:16:17 +00:00
pjh123 e4b17d2ecf fix: 块级异步与生成器函数声明不再泄漏全局 2026-09-17 22:08:56 +00:00
pjh123 816fdc3dd6 fix: switch 无命中跳 default 且 case 比较改严格相等 2026-09-17 21:43:12 +00:00
pjh123 1e8861e14f fix: C 风格 for 词法头建立独立每迭代环境 2026-09-17 21:21:36 +00:00
pjh123 e86ec8d7d2 fix: 修正捕获可见性过滤的前向捕获与隐式全局误判 2026-09-17 20:07:23 +00:00
pjh123 3de3b639d9 fix: switch 语句补 case 块作用域与函数预声明 2026-09-17 19:09:22 +00:00
pjh123 f73f5b8005 fix: for-in/of 解构声明头支持与默认值 TDZ 2026-09-17 18:48:55 +00:00
pjh123 e90edba4ec fix: if 支臂函数绑定收集下钻容器语句 2026-09-17 18:29:44 +00:00
pjh123 24cc61d51e docs: 统一循环与声明写点的注释措辞 2026-09-17 15:37:12 +00:00
pjh123 fa4c9edb81 refactor: 闭包捕获分析拆目录并自由函数化去除接收者 2026-09-15 23:02:03 +00:00
pjh123 423f075ddc refactor: 顶层程序发射迁出 emit.rs 独立成 program 模块 2026-09-15 22:27:29 +00:00
pjh123 6cde7738b1 fix: 块级函数声明支臂不再块入口物化,声明点按入口物化状态区分写回 2026-09-15 16:41:37 +00:00
pjh123 0418820115 fix: 块级函数 builtin 名守卫收窄至只读三常量面,可配置 builtin 恢复实例化写回 2026-09-15 06:42:12 +00:00
pjh123 1b26bc7ed8 fix: 块级函数声明闭包物化提前至块入口,声明点退化为外层 var 写回 2026-09-15 05:42:08 +00:00
pjh123 320c660620 fix: 块级函数声明补 web-compat 外层 var 绑定实例化与声明点写回 2026-09-15 03:48:19 +00:00
pjh123 da5e6d13ba fix: for-in/of 词法头建独立 TDZ 环境,捕获与右值直读归正 2026-09-14 23:58:10 +00:00
pjh123 c50eb9e566 fix: 复合语句域收敛真实完成值,空体物化 undefined 不沿用前值 2026-09-14 22:51:29 +00:00
pjh123 fa67988ab4 fix: 变量声明完成值归空记录,脚本保留末非空完成值 2026-09-14 20:15:08 +00:00
pjh123 d161b7cfe3 fix: 顶层声明撞不可定义全局按规范抛 TypeError 2026-09-14 14:32:39 +00:00
pjh123 c564ec539b emit/kernel: 可写 builtin 全局标识符写双写全局属性,三常量描述符对齐规范 c:false,受限词法名集补 eval
- 谓词注册表化:targets_readonly_builtin 解析条件抽公共助手,新增
  targets_writable_builtin / is_writable_builtin_global(BUILTIN_GLOBALS
  减只读三常量派生,不复制名单)+ 只读/可写划分漂移守卫单测
- 12 个赋值族写点(简单/复合/更新/逻辑赋值、解构两臂、for-in/for-of
  标识符目标)补双写臂:STORE_VAR 后 0x98 同步全局对象属性(既有可写
  属性原地更值、保 e/c 位),裸读镜像与 globalThis 反射不失步
- for-in 头 tier 写点移除 builtin 名例外:可写 builtin 名迭代键照规范
  覆写全局属性(三常量仍由拦截臂跳过)
- 三常量(undefined/NaN/Infinity)全局描述符 configurable 翻正为
  false:delete 拒绝、属性保留,描述符读同步
- 脚本顶层受限词法名集 3→4(补 eval,静态受限臂):let/const/class
  eval 顶层声明编译期 SyntaxError
- 配套钉:7 处既有钉随 c 位翻正 + 2 枚 for-in/eval 形态钉反转,新增
  global_builtin_writable_tests(16 钉:双写六形态 + 遮蔽/strict/eval/
  宿主名面)

test262 子集:built-ins/global 29/29、三常量族 20/20、11.13.1-4 7/7、
assignmenttargettype plain 8/8 全绿;language/global-code 17 失败文件
双树单跑一致(pre-existing);annexB assignmenttargettype 7 个 parse
error 为既有解析器缺口
2026-09-13 10:46:10 +00:00
pjh123 1fdb7aca2d fix: eval 代码顶层函数声明撞不可写全局内置——sloppy 编译期首指令 TypeError、strict 函数声明不落全局 2026-09-13 09:05:54 +00:00
pjh123 6aff1101f3 fix: 顶层受限全局名 lexical 声明编译期拒绝——let/const undefined|NaN|Infinity 撞 GDI 三常量 SyntaxError 2026-09-12 22:45:24 +00:00
pjh123 44c16cab8a fix: 顶层 var 读写直连全局对象属性单一真值——GDI 序言 + 声明处同步删除,类原型 session 直分防晋升克隆 identity 分裂,自增减 int 保持 2026-09-12 15:48:32 +00:00
pjh123 ef3b95f6d3 fix: for-in/for-of 左侧未声明写改读写登记集并集判定——读侧登记的全局槽漏全局对象属性写与 strict 漏抛
左侧标识符先读后写时全局槽由读侧登记,写侧单集判定不命中:sloppy 写穿透漏发(循环后读陈旧值)、strict 漏抛 ReferenceError。与其余 8 写点统一为 is_implicit_global_reg;补 3 枚判别性钉(sloppy for-in / for-of 穿透 + strict for-in 漏抛,回退单集判定必红)。
2026-09-11 12:44:24 +00:00
pjh123 c0451a484a fix: do-while 的 continue 目标错指体首——改指条件位置使条件可被求值 2026-09-11 09:46:29 +00:00
pjh123 a5aab0077f fix: for-in var 头撞既有绑定复用槽位消除顶层编译报错,迭代键写不可写全局内置接只读拦截 2026-09-10 05:56:10 +08:00
pjh123 1f37c4c9e6 fix: 全局 var 绑定 0x6F 按 CreateGlobalVarBinding 不更新既有不可写数据描述符,for-in 枚举断言修运算符优先级括号化 2026-09-10 05:55:03 +08:00
pjh123 c87edd404a fix: 全局三常量描述符翻可配置,var 重复声明以 builtin 镜像值保留现存值 2026-09-10 04:16:08 +08:00
pjh123 b77a9322e5 fix: 不可写全局内置(undefined/NaN/Infinity)寄存器镜像写编译期拦截——sloppy 静默 no-op、strict 抛 TypeError 2026-09-09 23:17:01 +08:00
pjh123 2457f283fe fix: 顶层 var 全局属性求值前创建(声明定时语义)+ 无初始化 var 声明不再抹槽值 2026-09-09 22:00:29 +08:00
pjh123 d9c2847730 fix: sloppy 未声明写隐式全局创建 + strict ReferenceError——DEFINE_GLOBAL_PROP_C 0x98 2026-09-09 18:44:38 +08:00
pjh123 089179daab refactor: 函数 strict 标志入 IR/编译/缓存链(零行为地基) 2026-08-16 16:46:33 +08:00
pjh123 fe8892079e chore: 全仓 rustfmt 格式化归拢 2026-08-16 12:50:36 +08:00
pjh123 744899aae9 fix: for-of/for-in 提前退出时按规范顺序完成 IteratorClose
return/break/continue 逃出 for-of 时此前完全不执行 IteratorClose:
BREAK/CONTINUE/RETURN 指令现在经 ext 字携带词法逃出的迭代器层数
(for-of + for-in 各 16 位),运行时在全部 finally 穿越之后、真正
跳转/返回之前按 LIFO 关闭——与规范 §13.7.5.4(循环体完成值已含
内部 try-finally 处理,IteratorClose 在后)顺序一致。

- emit 词法:LabelCtx 增加 for-of/for-in 深度计数,loop/switch/label
  打开时快照,break/continue/return 按当前深度减目标深度计算逃出层数
  (switch 内 break 以 switch 打开点为基准,目标循环自身不计入)
- 指令编码:brk/cont/ret 三参构造,lower 跳转路径补发 ext 字
- 运行时:dispatch_break/continue/return 读取逃出计数,无 finally 时
  直接关闭后跳转/返回,有 finally 时随 Completion 悬挂由 TRY_FINALLY_END
  在穿越完成后消费;生成器 .return()/.throw() 注入经 complete_generator_return
  全关快照栈迭代器;return() 抛错经 unwind 替代完成值并关闭剩余迭代器
- 顺带:for-in 逃出残留(无 return() 语义,仅弹栈);for-await-of 的
  异步迭代器不做同步关闭(return() promise 须 await,走异步机制)
- 新增 15 项回归测试:return/labeled break/continue/switch/while/finally
  顺序/抛错优先/生成器注入/for-in/for-await-of 嵌套
2026-08-16 09:31:39 +08:00
pjh123 75153a909d fix: 未声明标识符读取抛 ReferenceError(typeof 特判返回 undefined) 2026-08-16 00:10:08 +08:00
pjh123 391f613653 fix: 块内函数声明预声明支持(Annex B 块级绑定) 2026-08-15 23:13:26 +08:00