style: 全 workspace 格式订正,消除 fmt 漂移

This commit is contained in:
2026-10-09 23:58:34 +00:00
parent dbdc5556c6
commit c7f7588b81
23 changed files with 172 additions and 218 deletions
+32 -8
View File
@@ -574,9 +574,8 @@ impl Vm {
/// 续 dispatch 并结算:运行 body 到下一个 AWAIT/RETURN/异常,挂起则快照新状态,
/// 完成/异常则结算 capability。恢复调用方状态。
fn dispatch_and_finish_async(
&mut self, state_ptr: *mut AsyncState, saved: Box<InlineSyncState>,
prev_ctx: Option<JsValue>, prev_dispatch: bool, prev_gen_ctx: Option<JsValue>,
prev_gen_dispatch: bool,
&mut self, state_ptr: *mut AsyncState, saved: Box<InlineSyncState>, prev_ctx: Option<JsValue>,
prev_dispatch: bool, prev_gen_ctx: Option<JsValue>, prev_gen_dispatch: bool,
) -> Result<(), String> {
let result = self.dispatch();
if std::mem::take(&mut self.async_suspended) {
@@ -695,7 +694,12 @@ impl Vm {
return Ok(());
}
self.dispatch_and_finish_async(
state_ptr, saved, prev_ctx, prev_dispatch, prev_gen_ctx, prev_gen_dispatch,
state_ptr,
saved,
prev_ctx,
prev_dispatch,
prev_gen_ctx,
prev_gen_dispatch,
)
}
DisposeResumeKind::Unwind(handler) => {
@@ -712,7 +716,12 @@ impl Vm {
return Ok(());
}
self.dispatch_and_finish_async(
state_ptr, saved, prev_ctx, prev_dispatch, prev_gen_ctx, prev_gen_dispatch,
state_ptr,
saved,
prev_ctx,
prev_dispatch,
prev_gen_ctx,
prev_gen_dispatch,
)
}
DisposeResumeKind::Escape(completion_val) => {
@@ -727,7 +736,12 @@ impl Vm {
return Ok(());
}
self.dispatch_and_finish_async(
state_ptr, saved, prev_ctx, prev_dispatch, prev_gen_ctx, prev_gen_dispatch,
state_ptr,
saved,
prev_ctx,
prev_dispatch,
prev_gen_ctx,
prev_gen_dispatch,
)
} else {
// 无合并错误:执行完成。
@@ -742,13 +756,23 @@ impl Vm {
return Ok(());
}
self.dispatch_and_finish_async(
state_ptr, saved, prev_ctx, prev_dispatch, prev_gen_ctx, prev_gen_dispatch,
state_ptr,
saved,
prev_ctx,
prev_dispatch,
prev_gen_ctx,
prev_gen_dispatch,
)
}
Completion::Break { target_pc, .. } | Completion::Continue { target_pc, .. } => {
self.pc = target_pc;
self.dispatch_and_finish_async(
state_ptr, saved, prev_ctx, prev_dispatch, prev_gen_ctx, prev_gen_dispatch,
state_ptr,
saved,
prev_ctx,
prev_dispatch,
prev_gen_ctx,
prev_gen_dispatch,
)
}
}
+15 -15
View File
@@ -1,8 +1,8 @@
use std::sync::Arc;
use crate::bindings::{
apply_binding_table, bind_accessor_getter, bind_accessor_getset, bind_accessor_getter_key,
bind_well_known_method, configure_native_constructor,
apply_binding_table, bind_accessor_getset, bind_accessor_getter, bind_accessor_getter_key, bind_well_known_method,
configure_native_constructor,
};
use oxide_kernel::kernel::{KernelCore, KernelSession};
use oxide_types::object::JsObject;
@@ -50,16 +50,7 @@ pub fn bind_regexp(core: &Arc<KernelCore>, session: &KernelSession, global: &mut
let sf = core.perm_interner().as_ref();
let mut bind_getset = |name: &str, getter: *const (), setter: *const ()| {
let key = sf.intern(name).0;
bind_accessor_getset(
core,
session,
ctor,
key,
&format!("get {name}"),
&format!("set {name}"),
getter,
setter,
);
bind_accessor_getset(core, session, ctor, key, &format!("get {name}"), &format!("set {name}"), getter, setter);
};
// input/$_:get+set 对(唯一带 setter 的遗留访问器)。
bind_getset(
@@ -74,9 +65,15 @@ pub fn bind_regexp(core: &Arc<KernelCore>, session: &KernelSession, global: &mut
);
// 其余 18 个 getter(set 恒 undefined)。
for (name, getter) in [
("lastMatch", oxide_builtins::regexp::regexp_legacy_get_last_match::<crate::vm::Vm> as *const ()),
(
"lastMatch",
oxide_builtins::regexp::regexp_legacy_get_last_match::<crate::vm::Vm> as *const (),
),
("$&", oxide_builtins::regexp::regexp_legacy_get_last_match::<crate::vm::Vm> as *const ()),
("lastParen", oxide_builtins::regexp::regexp_legacy_get_last_paren::<crate::vm::Vm> as *const ()),
(
"lastParen",
oxide_builtins::regexp::regexp_legacy_get_last_paren::<crate::vm::Vm> as *const (),
),
("$+", oxide_builtins::regexp::regexp_legacy_get_last_paren::<crate::vm::Vm> as *const ()),
(
"leftContext",
@@ -87,7 +84,10 @@ pub fn bind_regexp(core: &Arc<KernelCore>, session: &KernelSession, global: &mut
"rightContext",
oxide_builtins::regexp::regexp_legacy_get_right_context::<crate::vm::Vm> as *const (),
),
("$'", oxide_builtins::regexp::regexp_legacy_get_right_context::<crate::vm::Vm> as *const ()),
(
"$'",
oxide_builtins::regexp::regexp_legacy_get_right_context::<crate::vm::Vm> as *const (),
),
("index", oxide_builtins::regexp::regexp_legacy_get_index::<crate::vm::Vm> as *const ()),
("$1", oxide_builtins::regexp::regexp_legacy_get_dollar_1::<crate::vm::Vm> as *const ()),
("$2", oxide_builtins::regexp::regexp_legacy_get_dollar_2::<crate::vm::Vm> as *const ()),
+5 -16
View File
@@ -45,11 +45,7 @@ pub fn bind_worker(core: &Arc<KernelCore>, session: &KernelSession, global: &mut
let function_proto = world.function_proto.as_ptr() as *mut JsObject;
let mut ctor = JsObject::new_empty(EMPTY_SHAPE_ID, JsValue::from_js_object(function_proto));
ctor.set_function(true);
configure_native_constructor(
&mut ctor,
crate::worker::bindings::worker_constructor as *const (),
1,
);
configure_native_constructor(&mut ctor, crate::worker::bindings::worker_constructor as *const (), 1);
let ptr = Box::into_raw(Box::new(ctor));
world.track_leaked_object(ptr);
ptr
@@ -63,7 +59,8 @@ pub fn bind_worker(core: &Arc<KernelCore>, session: &KernelSession, global: &mut
if sh.lookup_position(ctor.shape_id(), si_name).is_none() {
let shape = sh.make_shape(ctor.shape_id(), si_name);
ctor.set_shape_id(shape);
ctor.ensure_hash_props().push(JsValue::perm_string(sf.string_ptr(sf.intern("Worker").0)));
ctor.ensure_hash_props()
.push(JsValue::perm_string(sf.string_ptr(sf.intern("Worker").0)));
let pos = ctor.hash_props_vec().map_or(0, |v| v.len() as u32).saturating_sub(1);
ctor.set_data_meta(pos, PropAttributes::new(false, false, true));
ctor.bump_generation();
@@ -116,11 +113,7 @@ pub fn bind_worker(core: &Arc<KernelCore>, session: &KernelSession, global: &mut
proto,
core,
&[
(
"postMessage",
crate::worker::bindings::worker_post_message as *const (),
1,
),
("postMessage", crate::worker::bindings::worker_post_message as *const (), 1),
("terminate", crate::worker::bindings::worker_terminate as *const (), 0),
],
);
@@ -147,11 +140,7 @@ pub fn bind_worker(core: &Arc<KernelCore>, session: &KernelSession, global: &mut
global,
core,
&[
(
"postMessage",
crate::worker::bindings::self_post_message as *const (),
1,
),
("postMessage", crate::worker::bindings::self_post_message as *const (), 1),
("close", crate::worker::bindings::self_close as *const (), 0),
],
);
+2 -2
View File
@@ -56,8 +56,6 @@ pub mod bind_shared_array_buffer;
pub mod bind_string;
/// 未实现内置(Proxy/BigInt/WeakMap 等)的 stub 构造器绑定。
pub mod bind_stubs;
/// Worker 构造器绑定(Box 分配,不占 BuiltinWorld P 字段)。
pub mod bind_worker;
/// Symbol 构造器与原型的 native 方法绑定。
pub mod bind_symbol;
/// Temporal 命名空间对象(Now/Instant/PlainDate/PlainTime)绑定。
@@ -66,6 +64,8 @@ pub mod bind_temporal;
pub mod bind_typed_array;
/// WeakMap 构造器与原型四方法的 native 绑定(弱族不占 BuiltinWorld 槽)。
pub mod bind_weak;
/// Worker 构造器绑定(Box 分配,不占 BuiltinWorld P 字段)。
pub mod bind_worker;
use std::sync::Arc;
+9 -13
View File
@@ -1,6 +1,6 @@
use crate::vm::{
Completion, DisposeResumeKind, ForInIter, FrameArgs, FrameContinuation, PendingAsyncDispose,
TryHandler, Vm, MAX_PROTO_CHAIN_DEPTH,
Completion, DisposeResumeKind, ForInIter, FrameArgs, FrameContinuation, PendingAsyncDispose, TryHandler, Vm,
MAX_PROTO_CHAIN_DEPTH,
};
use crate::vm_trace;
use oxide_builtins::iterator::is_callable;
@@ -817,18 +817,14 @@ impl Vm {
/// 异常穿越释放:逆序释放 `depth` 以上资源。在途异常作 completion 种子(被折叠
/// 进 suppressed)。挂起时携 `Unwind(handler)`(handler 已弹出,恢复时重压再入
/// unwind)。
pub(crate) fn dispose_above(
&mut self, depth: usize, handler: Option<TryHandler>,
) -> Result<DisposePhase, String> {
pub(crate) fn dispose_above(&mut self, depth: usize, handler: Option<TryHandler>) -> Result<DisposePhase, String> {
self.dispose_above_core(depth, DisposeResumeKind::Unwind(handler), self.exception_value)
}
/// 释放栈顶部 `n` 条资源(逃出释放:return/break/continue 完成值逃出作用域时
/// 逆序释放被逃出的资源)。`n` 超过栈长时按全量释放。在途 completion 初值为
/// None(完成值非 throw),挂起时携 `Escape(completion)` 供恢复后执行。
pub(crate) fn dispose_top_n(
&mut self, n: usize, completion: Completion,
) -> Result<DisposePhase, String> {
pub(crate) fn dispose_top_n(&mut self, n: usize, completion: Completion) -> Result<DisposePhase, String> {
let depth = self.dispose_stack.len().saturating_sub(n);
self.dispose_above_core(depth, DisposeResumeKind::Escape(completion), None)
}
@@ -896,16 +892,16 @@ impl Vm {
let dispose_key = encode_symbol_key(self.realm_id(), WELL_KNOWN_SYMBOL_DISPOSE);
let method = if hint == 1 {
let async_key = encode_symbol_key(self.realm_id(), WELL_KNOWN_SYMBOL_ASYNC_DISPOSE);
let async_method = self
.ordinary_get(val_obj, async_key, value)
.map_err(|e| self.dispose_exc(e))?;
let async_method = self.ordinary_get(val_obj, async_key, value).map_err(|e| self.dispose_exc(e))?;
if async_method.is_undefined() {
self.ordinary_get(val_obj, dispose_key, value).map_err(|e| self.dispose_exc(e))?
self.ordinary_get(val_obj, dispose_key, value)
.map_err(|e| self.dispose_exc(e))?
} else {
async_method
}
} else {
self.ordinary_get(val_obj, dispose_key, value).map_err(|e| self.dispose_exc(e))?
self.ordinary_get(val_obj, dispose_key, value)
.map_err(|e| self.dispose_exc(e))?
};
Ok(method)
}
+1 -4
View File
@@ -876,10 +876,7 @@ impl Vm {
// 异常穿越释放:逆序释放该作用域内登记的资源(规范序 IteratorClose 先、
// DisposeResources 后)。释放方法抛错时新错误替代在途异常继续向外展开;
// 异步释放挂起时登记在途状态并让出(恢复方重压 handler 再入本函数)。
if matches!(
self.dispose_above(handler.dispose_depth, Some(handler))?,
DisposePhase::Suspended
) {
if matches!(self.dispose_above(handler.dispose_depth, Some(handler))?, DisposePhase::Suspended) {
return Ok(());
}
if let Some(finally_pc) = handler.finally_pc {
+11 -9
View File
@@ -86,12 +86,7 @@ pub(crate) fn worker_constructor(vm: &mut Vm, args: &[u8]) -> NativeResult {
let url_val = if args.len() > 1 { vm.reg(args[1]) } else { JsValue::undefined() };
let url = match vm.lookup_str(url_val) {
Some(u) => u,
None => {
return NativeResult::Err(oxide_builtins::error::create_type_error(
vm,
"Worker url must be a string",
))
}
None => return NativeResult::Err(oxide_builtins::error::create_type_error(vm, "Worker url must be a string")),
};
// 主线程侧读 url 文件(worker 脚本源码)。
@@ -120,9 +115,11 @@ pub(crate) fn worker_constructor(vm: &mut Vm, args: &[u8]) -> NativeResult {
// onmessage / onerror / onmessageerror:普通 own 数据属性(非枚举),初值 undefined。
let si_onmessage = vm.perm_intern("onmessage");
let _ = vm.define_data_property(worker_obj, si_onmessage, JsValue::undefined(), PropAttributes::new(true, false, true));
let _ =
vm.define_data_property(worker_obj, si_onmessage, JsValue::undefined(), PropAttributes::new(true, false, true));
let si_onerror = vm.perm_intern("onerror");
let _ = vm.define_data_property(worker_obj, si_onerror, JsValue::undefined(), PropAttributes::new(true, false, true));
let _ =
vm.define_data_property(worker_obj, si_onerror, JsValue::undefined(), PropAttributes::new(true, false, true));
let si_onmessageerror = vm.perm_intern("onmessageerror");
let _ = vm.define_data_property(
worker_obj,
@@ -133,7 +130,12 @@ pub(crate) fn worker_constructor(vm: &mut Vm, args: &[u8]) -> NativeResult {
// workerId:非枚举数据属性(值为 worker 编号,数值表示无 GC 边)。
let si_worker_id = vm.perm_intern("workerId");
let _ = vm.define_data_property(worker_obj, si_worker_id, JsValue::float(id as f64), PropAttributes::new(true, false, true));
let _ = vm.define_data_property(
worker_obj,
si_worker_id,
JsValue::float(id as f64),
PropAttributes::new(true, false, true),
);
// 登记 Worker 对象进注册表(GC 根,主线程事件循环据编号反查 onmessage)。
vm.worker_objects.insert(id, JsValue::from_js_object(ptr));