From 604a785bf95dbc7925ee392d2b714e97389360c3 Mon Sep 17 00:00:00 2001 From: pjh456 <147148383@qq.com> Date: Thu, 17 Sep 2026 15:03:21 +0000 Subject: [PATCH] =?UTF-8?q?docs:=20=E4=BF=AE=E6=AD=A3=20Promise=20?= =?UTF-8?q?=E5=AE=89=E5=85=A8=E6=B3=A8=E8=AE=B0=E7=9A=84=E6=8C=87=E9=92=88?= =?UTF-8?q?=E6=89=80=E6=9C=89=E6=9D=83=E8=A1=A8=E8=BF=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- crates/oxide_vm/src/promise/constructor.rs | 6 +++--- crates/oxide_vm/src/promise/settlement.rs | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/crates/oxide_vm/src/promise/constructor.rs b/crates/oxide_vm/src/promise/constructor.rs index 9dfbda8d..0a74b1aa 100644 --- a/crates/oxide_vm/src/promise/constructor.rs +++ b/crates/oxide_vm/src/promise/constructor.rs @@ -210,12 +210,12 @@ impl Vm { // 固定地址后互相接线:proto.constructor ↔ ctor.prototype。 Self::swap_intrinsic_proto(&mut self.promise_proto, *proto); Self::swap_intrinsic_proto(&mut self.promise_constructor, *ctor); - // SAFETY: `promise_proto` 为 Box,固定堆址且本行前刚经 + // SAFETY: `promise_proto` 为 `P`(Arc 透明包装),堆址固定且本行前刚经 // swap_intrinsic_proto 落地;与下一处 ctor_mut 指向不同对象,无别名。 let proto_mut = unsafe { &mut *self.promise_proto.as_mut_ptr() }; proto_mut.set_prop_at(0u32, JsValue::from_js_object(self.promise_constructor.as_ptr() as *mut JsObject)); - // SAFETY: `promise_constructor` 同为固定堆址的存活 Box;此处写 prototype - // 槽位(下标 2),与 proto_mut 分属不同对象,无别名。 + // SAFETY: `promise_constructor` 同为堆址固定的存活 `P`(Arc 透明包装); + // 此处写 prototype 槽位(下标 2),与 proto_mut 分属不同对象,无别名。 let ctor_mut = unsafe { &mut *self.promise_constructor.as_mut_ptr() }; // prototype 槽位在 length/name 之后(下标 2)。 ctor_mut.set_prop_at(2u32, JsValue::from_js_object(self.promise_proto.as_ptr() as *mut JsObject)); diff --git a/crates/oxide_vm/src/promise/settlement.rs b/crates/oxide_vm/src/promise/settlement.rs index 391f23c7..359bc0ed 100644 --- a/crates/oxide_vm/src/promise/settlement.rs +++ b/crates/oxide_vm/src/promise/settlement.rs @@ -139,7 +139,7 @@ impl Vm { /// 取出 Promise 状态盒指针(调用方须先校验 `is_promise_value`)。 pub(super) fn promise_state_ptr(&self, promise: JsValue) -> *mut PromiseState { // SAFETY: 调用方已按文档前提校验 `is_promise_value`,对象指针非空且 native_data - // 为 create_promise_object 写入的 Box;裸指针由调用方即时解引用。 + // 为 create_promise_object 或 promise_constructor 写入的 Box;裸指针由调用方即时解引用。 unsafe { (*promise.as_js_object_ptr()).native_data() as *mut PromiseState } }