fix: 晋升 Promise 克隆迁移原件 reactions 并接结算链——in-run collect 后结算走克隆引用时原件侧消费者永久丢失洞闭合

This commit is contained in:
2026-09-12 17:22:51 +00:00
parent 44c16cab8a
commit e368751f59
3 changed files with 206 additions and 19 deletions
+5 -1
View File
@@ -78,10 +78,14 @@ impl Vm {
self.promote_value_if_epoch_object(value, forwarding)
});
} else if src_ref.is_promise_obj() {
// Promise 状态盒深拷贝到新对象:源盒随 epoch 释放,互不共享。
// Promise 状态盒深拷贝到新对象:源盒随 epoch 释放,互不共享;
// 反应迁入新克隆并接结算链(原件/旧克隆结算沿链传导到最新克隆)。
crate::promise::clone_promise_native_with_rewrite(src_ref, dst_ref, |value| {
self.promote_value_if_epoch_object(value, forwarding)
});
crate::promise::migrate_settlement_to_newest_clone(src_ref, dst_ref, |value| {
self.promote_value_if_epoch_object(value, forwarding)
});
} else if src_ref.is_async_obj() {
// 异步状态盒深拷贝到新对象:源盒随 epoch 释放,互不共享。
crate::async_func::clone_async_native_with_rewrite(src_ref, dst_ref, |value| {