mirror of
https://github.com/pjh456/OxideJS.git
synced 2026-10-23 18:21:13 +08:00
style: 修 rustfmt 格式化差异
This commit is contained in:
@@ -48,7 +48,8 @@ pub fn bind_message_channel(core: &Arc<KernelCore>, session: &KernelSession, glo
|
||||
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("MessageChannel").0)));
|
||||
ctor.ensure_hash_props()
|
||||
.push(JsValue::perm_string(sf.string_ptr(sf.intern("MessageChannel").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();
|
||||
@@ -101,8 +102,16 @@ pub fn bind_message_channel(core: &Arc<KernelCore>, session: &KernelSession, glo
|
||||
oxide_builtins::message_channel::message_port_post_message::<crate::vm::Vm> as *const (),
|
||||
2,
|
||||
),
|
||||
("close", oxide_builtins::message_channel::message_port_close::<crate::vm::Vm> as *const (), 0),
|
||||
("start", oxide_builtins::message_channel::message_port_start::<crate::vm::Vm> as *const (), 0),
|
||||
(
|
||||
"close",
|
||||
oxide_builtins::message_channel::message_port_close::<crate::vm::Vm> as *const (),
|
||||
0,
|
||||
),
|
||||
(
|
||||
"start",
|
||||
oxide_builtins::message_channel::message_port_start::<crate::vm::Vm> as *const (),
|
||||
0,
|
||||
),
|
||||
],
|
||||
);
|
||||
}
|
||||
|
||||
@@ -372,12 +372,6 @@ impl oxide_runtime_api::VmHost for Vm {
|
||||
}
|
||||
}
|
||||
fn bc_lookup(&self, name: &str) -> Vec<*mut JsObject> {
|
||||
self.realm
|
||||
.gc
|
||||
.borrow()
|
||||
.broadcast_channels
|
||||
.get(name)
|
||||
.cloned()
|
||||
.unwrap_or_default()
|
||||
self.realm.gc.borrow().broadcast_channels.get(name).cloned().unwrap_or_default()
|
||||
}
|
||||
}
|
||||
|
||||
@@ -657,10 +657,7 @@ impl Vm {
|
||||
///
|
||||
/// # 副作用
|
||||
/// - 任务体对 `self` 的全部改写(寄存器 / 帧栈 / 对象表 / 异常侧通道)原样保留。
|
||||
pub fn execute_task(
|
||||
&mut self,
|
||||
task: impl FnOnce(&mut Self) -> Result<JsValue, String>,
|
||||
) -> Result<JsValue, String> {
|
||||
pub fn execute_task(&mut self, task: impl FnOnce(&mut Self) -> Result<JsValue, String>) -> Result<JsValue, String> {
|
||||
task(self)
|
||||
}
|
||||
|
||||
@@ -1081,11 +1078,7 @@ mod tests {
|
||||
assert!(!vm.job_queue.is_empty(), "反应应已入队");
|
||||
vm.drain_microtasks();
|
||||
assert!(vm.job_queue.is_empty(), "drain 后队列应清空");
|
||||
assert_eq!(
|
||||
global_value(&mut vm, "done"),
|
||||
JsValue::bool(true),
|
||||
"promise 反应应已置 done = true"
|
||||
);
|
||||
assert_eq!(global_value(&mut vm, "done"), JsValue::bool(true), "promise 反应应已置 done = true");
|
||||
}
|
||||
|
||||
#[test]
|
||||
|
||||
@@ -72,10 +72,7 @@ pub struct WorkerHandle {
|
||||
/// - 每条 `Message` 经 rehydrate → execute_task → drain_microtasks 处理后,把处理
|
||||
/// 值 detach 回 worker → 主线程通道(935.3 的回显语义,935.4 的 onmessage 替换之)。
|
||||
fn worker_event_loop(
|
||||
core: Arc<KernelCore>,
|
||||
compiler: Arc<dyn CompilerService>,
|
||||
script: String,
|
||||
rx: Receiver<WorkerMail>,
|
||||
core: Arc<KernelCore>, compiler: Arc<dyn CompilerService>, script: String, rx: Receiver<WorkerMail>,
|
||||
out_tx: Sender<MessageValue>,
|
||||
) {
|
||||
let mut vm = Vm::with_kernel_core(core);
|
||||
@@ -164,12 +161,7 @@ impl Vm {
|
||||
worker_event_loop(core, compiler, script_owned, rx, out_tx);
|
||||
});
|
||||
|
||||
let worker = WorkerHandle {
|
||||
id,
|
||||
tx,
|
||||
rx_out: out_rx,
|
||||
handle,
|
||||
};
|
||||
let worker = WorkerHandle { id, tx, rx_out: out_rx, handle };
|
||||
self.worker_registry.insert(id, worker);
|
||||
Ok(id)
|
||||
}
|
||||
@@ -183,10 +175,7 @@ impl Vm {
|
||||
/// # 返回值
|
||||
/// 投递成功 `Ok(())`,失败 `Err`(含错误描述)。
|
||||
pub fn worker_post_message(&mut self, id: u64, msg: MessageValue) -> Result<(), String> {
|
||||
let worker = self
|
||||
.worker_registry
|
||||
.get_mut(&id)
|
||||
.ok_or_else(|| format!("worker {id} 不存在"))?;
|
||||
let worker = self.worker_registry.get_mut(&id).ok_or_else(|| format!("worker {id} 不存在"))?;
|
||||
worker
|
||||
.tx
|
||||
.send(WorkerMail::Message(msg))
|
||||
@@ -212,14 +201,8 @@ impl Vm {
|
||||
let _ = worker.tx.send(WorkerMail::Terminate);
|
||||
}
|
||||
// 从注册表移除并 join 线程(句柄 drop 前必须 join)。
|
||||
let worker = self
|
||||
.worker_registry
|
||||
.remove(&id)
|
||||
.ok_or_else(|| format!("worker {id} 不存在"))?;
|
||||
worker
|
||||
.handle
|
||||
.join()
|
||||
.map_err(|_| format!("worker {id} 线程异常退出"))?;
|
||||
let worker = self.worker_registry.remove(&id).ok_or_else(|| format!("worker {id} 不存在"))?;
|
||||
worker.handle.join().map_err(|_| format!("worker {id} 线程异常退出"))?;
|
||||
Ok(())
|
||||
}
|
||||
|
||||
@@ -313,8 +296,7 @@ mod tests {
|
||||
let id = vm.spawn_worker("1 + 1").expect("worker 应派生成功");
|
||||
assert_eq!(vm.active_workers(), vec![id], "应有唯一活跃 worker");
|
||||
|
||||
vm.worker_post_message(id, MessageValue::Number(42.0))
|
||||
.expect("投递应成功");
|
||||
vm.worker_post_message(id, MessageValue::Number(42.0)).expect("投递应成功");
|
||||
let messages = poll_until_message(&mut vm, id);
|
||||
assert_eq!(messages.len(), 1, "应回显一条消息");
|
||||
// 整数值经 number_to_js 归为 Int 表示。
|
||||
@@ -329,9 +311,7 @@ mod tests {
|
||||
fn worker_script_compile_failure_reports_error() {
|
||||
let mut vm = vm_with_compiler();
|
||||
|
||||
let id = vm
|
||||
.spawn_worker("function { 语法错误")
|
||||
.expect("worker 应派生成功");
|
||||
let id = vm.spawn_worker("function { 语法错误").expect("worker 应派生成功");
|
||||
let messages = poll_until_message(&mut vm, id);
|
||||
assert!(!messages.is_empty(), "编译失败应上报错误串");
|
||||
assert!(messages[0].is_string(), "错误串应为字符串值");
|
||||
@@ -348,10 +328,8 @@ mod tests {
|
||||
let id_b = vm.spawn_worker("2").expect("worker B 应派生成功");
|
||||
assert_eq!(vm.active_workers(), vec![id_a, id_b], "应有两个活跃 worker");
|
||||
|
||||
vm.worker_post_message(id_a, MessageValue::Number(1.0))
|
||||
.expect("投递 A 应成功");
|
||||
vm.worker_post_message(id_b, MessageValue::Number(2.0))
|
||||
.expect("投递 B 应成功");
|
||||
vm.worker_post_message(id_a, MessageValue::Number(1.0)).expect("投递 A 应成功");
|
||||
vm.worker_post_message(id_b, MessageValue::Number(2.0)).expect("投递 B 应成功");
|
||||
|
||||
let messages_a = poll_until_message(&mut vm, id_a);
|
||||
assert_eq!(messages_a[0], JsValue::int(1), "A 应回显 1");
|
||||
|
||||
Reference in New Issue
Block a user