From b4e36fc147132bc499cf67a3606e2e75dbced63d Mon Sep 17 00:00:00 2001 From: pjh456 <147148383@qq.com> Date: Thu, 1 Oct 2026 09:42:20 +0000 Subject: [PATCH] =?UTF-8?q?style:=20=E5=86=97=E4=BD=99=E9=97=AD=E5=8C=85?= =?UTF-8?q?=E6=94=B9=E5=87=BD=E6=95=B0=E8=B7=AF=E5=BE=84=E5=B9=B6=E8=A1=A5?= =?UTF-8?q?=E6=96=87=E6=A1=A3=E6=AE=B5=E7=A9=BA=E8=A1=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- crates/oxide_vm/src/session_arena.rs | 4 ++-- crates/oxide_vm/src/session_gc.rs | 2 +- crates/oxide_vm/tests/generator_gc_tests.rs | 1 + 3 files changed, 4 insertions(+), 3 deletions(-) diff --git a/crates/oxide_vm/src/session_arena.rs b/crates/oxide_vm/src/session_arena.rs index bfca1a91..679f2830 100644 --- a/crates/oxide_vm/src/session_arena.rs +++ b/crates/oxide_vm/src/session_arena.rs @@ -266,7 +266,7 @@ impl Vm { if obj.is_weak_map_obj() { weak_map::rewrite_weak_map_native( obj, - |key| crate::session_gc::resolve_weak_key_after_promotion(key), + crate::session_gc::resolve_weak_key_after_promotion, |value| value, ); } @@ -279,7 +279,7 @@ impl Vm { if obj.is_weak_map_obj() { weak_map::rewrite_weak_map_native( obj, - |key| crate::session_gc::resolve_weak_key_after_promotion(key), + crate::session_gc::resolve_weak_key_after_promotion, |value| value, ); } diff --git a/crates/oxide_vm/src/session_gc.rs b/crates/oxide_vm/src/session_gc.rs index 7268a863..ea3dd123 100644 --- a/crates/oxide_vm/src/session_gc.rs +++ b/crates/oxide_vm/src/session_gc.rs @@ -622,7 +622,7 @@ impl SessionGc { if obj.is_gc_marked() && obj.is_weak_map_obj() { // SAFETY: 弱表 native 盒独占,整表重建在定夺期间无并发读者。 unsafe { - weak_map::rewrite_weak_map_native(&mut *ptr, |key| resolve_weak_key_sweep(key), |value| value); + weak_map::rewrite_weak_map_native(&mut *ptr, resolve_weak_key_sweep, |value| value); } } } diff --git a/crates/oxide_vm/tests/generator_gc_tests.rs b/crates/oxide_vm/tests/generator_gc_tests.rs index 60aa0605..26425658 100644 --- a/crates/oxide_vm/tests/generator_gc_tests.rs +++ b/crates/oxide_vm/tests/generator_gc_tests.rs @@ -1,5 +1,6 @@ //! 生成器 × session GC 回归:full_reset 逐对象释放 session 生成器(本体 + 堆数据 //! + upvalue 列表,各单所有权),不 double-free、不悬垂,VM 继续可用。 +//! //! sweep 变体与闭包捕获变体见 `vm_support.rs` 内部测试(需 crate 内 `resume_generator` //! 在模块表未重建时恢复执行,integration 层无法触达)。