feat: 生成器基础支持(YIELD 帧快照挂起/恢复 + GeneratorPrototype next/return/throw)

- 新增 YIELD/SUSPEND_BODY opcode;function* 识别与 yield emit
- GeneratorState 全量快照 VM 执行上下文(regs/pc/bytecode/spill/save/try/cell 栈段/迭代器)
- 调用时参数初始化(默认值/解构副作用与异常在 g() 时刻生效)
- %GeneratorPrototype%/%GeneratorFunction.prototype% 内建对象与 next/return/throw
- session GC trace 生成器状态 JsValues;闭包捕获分析补 yield/赋值目标扫描
This commit is contained in:
爱特每羊队
2026-08-09 18:02:08 +08:00
parent 7c2e9ec1ff
commit 6f80c12ac9
26 changed files with 1265 additions and 107 deletions
+4
View File
@@ -68,6 +68,8 @@ pub struct CompiledModule {
pub is_derived_constructor: bool,
/// 原型方法是否需要运行时 home_object。
pub needs_home_object: bool,
/// 是否为生成器函数体(`function*`):调用返回迭代器对象,body 挂起/恢复执行。
pub is_generator: bool,
pub upvalue_captures: Vec<UpvalueCapture>,
pub cells_needed: u8,
/// 全局扁平模块 id:编译末端 flatten 阶段分配(顶层 0,子模块 DFS 递增)。
@@ -93,6 +95,7 @@ impl CompiledModule {
is_class_constructor: false,
is_derived_constructor: false,
needs_home_object: false,
is_generator: false,
upvalue_captures: Vec::new(),
cells_needed: 0,
flat_id: 0,
@@ -123,6 +126,7 @@ impl Clone for CompiledModule {
is_class_constructor: self.is_class_constructor,
is_derived_constructor: self.is_derived_constructor,
needs_home_object: self.needs_home_object,
is_generator: self.is_generator,
upvalue_captures: self.upvalue_captures.clone(),
cells_needed: self.cells_needed,
flat_id: self.flat_id,