mirror of
https://github.com/pjh456/OxideJS.git
synced 2026-10-25 19:21:11 +08:00
style: 自动格式化
This commit is contained in:
@@ -1026,16 +1026,14 @@ impl Emitter {
|
|||||||
let mut hoisted_tla: HashSet<String> = HashSet::new();
|
let mut hoisted_tla: HashSet<String> = HashSet::new();
|
||||||
for (spec, is_defer) in &stmt_order {
|
for (spec, is_defer) in &stmt_order {
|
||||||
let phase = &phase_map[spec];
|
let phase = &phase_map[spec];
|
||||||
let data = dep_data.get(spec).cloned().unwrap_or_else(|| {
|
let data = dep_data.get(spec).cloned().unwrap_or_else(|| DepEmitData {
|
||||||
DepEmitData {
|
fn_reg: None,
|
||||||
fn_reg: None,
|
own_names: HashSet::new(),
|
||||||
own_names: HashSet::new(),
|
var_scoped: HashSet::new(),
|
||||||
var_scoped: HashSet::new(),
|
eval_async: false,
|
||||||
eval_async: false,
|
path: String::new(),
|
||||||
path: String::new(),
|
is_self: false,
|
||||||
is_self: false,
|
is_defer: false,
|
||||||
is_defer: false,
|
|
||||||
}
|
|
||||||
});
|
});
|
||||||
if *is_defer {
|
if *is_defer {
|
||||||
// defer 语句:提升本模块的 TLA 传递依赖(去重,已提升者不重发)。
|
// defer 语句:提升本模块的 TLA 传递依赖(去重,已提升者不重发)。
|
||||||
@@ -1068,8 +1066,7 @@ impl Emitter {
|
|||||||
// 哨兵:模块函数在导入方 prelude 期不可得。
|
// 哨兵:模块函数在导入方 prelude 期不可得。
|
||||||
let undef = self.emit_undefined(ctx);
|
let undef = self.emit_undefined(ctx);
|
||||||
let path_reg = self.load_string_const(&data.path, ctx);
|
let path_reg = self.load_string_const(&data.path, ctx);
|
||||||
let defer_ns =
|
let defer_ns = self.emit_module_call(ctx, "__moduleDeferObject", &[undef, undef, path_reg])?;
|
||||||
self.emit_module_call(ctx, "__moduleDeferObject", &[undef, undef, path_reg])?;
|
|
||||||
ctx.module_dep_ns_regs.insert(spec.clone(), defer_ns);
|
ctx.module_dep_ns_regs.insert(spec.clone(), defer_ns);
|
||||||
ctx.module_defer_ns_regs.insert(spec.clone(), defer_ns);
|
ctx.module_defer_ns_regs.insert(spec.clone(), defer_ns);
|
||||||
ctx.module_dep_paths.insert(spec.clone(), data.path.clone());
|
ctx.module_dep_paths.insert(spec.clone(), data.path.clone());
|
||||||
@@ -1077,8 +1074,7 @@ impl Emitter {
|
|||||||
let fn_reg = data.fn_reg.expect("非祖先 defer-only 依赖必有闭包寄存器");
|
let fn_reg = data.fn_reg.expect("非祖先 defer-only 依赖必有闭包寄存器");
|
||||||
let undef = self.emit_undefined(ctx);
|
let undef = self.emit_undefined(ctx);
|
||||||
let path_reg = self.load_string_const(&data.path, ctx);
|
let path_reg = self.load_string_const(&data.path, ctx);
|
||||||
let defer_ns =
|
let defer_ns = self.emit_module_call(ctx, "__moduleDeferObject", &[fn_reg, undef, path_reg])?;
|
||||||
self.emit_module_call(ctx, "__moduleDeferObject", &[fn_reg, undef, path_reg])?;
|
|
||||||
ctx.module_dep_ns_regs.insert(spec.clone(), defer_ns);
|
ctx.module_dep_ns_regs.insert(spec.clone(), defer_ns);
|
||||||
ctx.module_defer_ns_regs.insert(spec.clone(), defer_ns);
|
ctx.module_defer_ns_regs.insert(spec.clone(), defer_ns);
|
||||||
ctx.module_dep_paths.insert(spec.clone(), data.path.clone());
|
ctx.module_dep_paths.insert(spec.clone(), data.path.clone());
|
||||||
@@ -1133,8 +1129,10 @@ impl Emitter {
|
|||||||
|
|
||||||
// 登记本模块图节点:依赖路径集按源序(defer_order)、has_tla 为自身顶层
|
// 登记本模块图节点:依赖路径集按源序(defer_order)、has_tla 为自身顶层
|
||||||
// `await` 标志。
|
// `await` 标志。
|
||||||
let dep_paths_in_source_order: Vec<String> =
|
let dep_paths_in_source_order: Vec<String> = defer_order
|
||||||
defer_order.iter().filter_map(|s| dep_data.get(s).map(|d| d.path.clone())).collect();
|
.iter()
|
||||||
|
.filter_map(|s| dep_data.get(s).map(|d| d.path.clone()))
|
||||||
|
.collect();
|
||||||
graph.record_module(module_path, dep_paths_in_source_order, own_tla);
|
graph.record_module(module_path, dep_paths_in_source_order, own_tla);
|
||||||
|
|
||||||
// 本模块异步求值标志:自身含顶层 `await`,或任一 eager 依赖按异步求值
|
// 本模块异步求值标志:自身含顶层 `await`,或任一 eager 依赖按异步求值
|
||||||
@@ -1147,8 +1145,11 @@ impl Emitter {
|
|||||||
// promise(非命名空间),其命名空间在 gate 后从结算值提取(仅直接依赖)。
|
// promise(非命名空间),其命名空间在 gate 后从结算值提取(仅直接依赖)。
|
||||||
// 单 AWAIT 挂起模块体直至全部 promise 结算(由 drain 微任务释放),
|
// 单 AWAIT 挂起模块体直至全部 promise 结算(由 drain 微任务释放),
|
||||||
// 非 TLA 模块此集为空、零 IR 变化。——
|
// 非 TLA 模块此集为空、零 IR 变化。——
|
||||||
let all_promises: Vec<u32> =
|
let all_promises: Vec<u32> = async_dep_promises
|
||||||
async_dep_promises.iter().map(|(_, r)| *r).chain(hoisted_tla_promises.iter().copied()).collect();
|
.iter()
|
||||||
|
.map(|(_, r)| *r)
|
||||||
|
.chain(hoisted_tla_promises.iter().copied())
|
||||||
|
.collect();
|
||||||
if !all_promises.is_empty() {
|
if !all_promises.is_empty() {
|
||||||
let gate_reg = self.emit_module_call(ctx, "__moduleWaitAll", &all_promises)?;
|
let gate_reg = self.emit_module_call(ctx, "__moduleWaitAll", &all_promises)?;
|
||||||
ctx.inst(Inst::await_expr(Operand::Reg(gate_reg)));
|
ctx.inst(Inst::await_expr(Operand::Reg(gate_reg)));
|
||||||
@@ -1524,13 +1525,7 @@ impl Emitter {
|
|||||||
if module_has_top_level_await(&program.body) {
|
if module_has_top_level_await(&program.body) {
|
||||||
graph.set_ir(&resolved.path, ir.clone());
|
graph.set_ir(&resolved.path, ir.clone());
|
||||||
}
|
}
|
||||||
Ok((
|
Ok((ir, reassignable, own_export_names, var_scoped, eval_async))
|
||||||
ir,
|
|
||||||
reassignable,
|
|
||||||
own_export_names,
|
|
||||||
var_scoped,
|
|
||||||
eval_async,
|
|
||||||
))
|
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user