feat: async/await 语法支持(AWAIT 帧快照挂起/恢复 + 微任务驱动 + AsyncFunction intrinsics)

This commit is contained in:
爱特每羊队
2026-08-09 22:02:15 +08:00
parent dcbe3d9320
commit 0d9e6eabc9
28 changed files with 1055 additions and 28 deletions
+6
View File
@@ -579,6 +579,11 @@ impl Emitter {
self.collect_capture_names_expr(a, ref_set, shadow, out);
}
}
// await 表达式:被等待的值里引用的父变量须纳入捕获(与 yield 同因——
// 异步体挂起恢复后寄存器已被覆盖,只能经 cell 读取)。
Expression::AwaitExpression(ae) => {
self.collect_capture_names_expr(&ae.argument, ref_set, shadow, out);
}
Expression::ChainExpression(c) => self.collect_capture_names_chain(&c.expression, ref_set, shadow, out),
_ => {}
}
@@ -891,6 +896,7 @@ impl Emitter {
self.collect_captured_expr(a, own, out);
}
}
Expression::AwaitExpression(ae) => self.collect_captured_expr(&ae.argument, own, out),
Expression::ChainExpression(c) => self.collect_captured_chain(&c.expression, own, out),
_ => {}
}