perf: 对象统一入口 Box 化合并对象表退役晋升档

This commit is contained in:
2026-10-01 06:39:51 +00:00
parent 0e3992722e
commit 1711ae948b
13 changed files with 262 additions and 523 deletions
@@ -424,15 +424,16 @@ fn promote_then_reset_keeps_entries_alive() {
assert_eq!(text, "true|false");
}
/// drop 记账:无引用的栈对象被收集时释放状态盒(freed 字节增长)。
/// drop 记账:无引用的栈对象被收集时释放状态盒并计入释放字节。
/// 低阈值使执行期收集在循环内触发(默认 32MiB 阈值下本负载不触发收集)。
#[test]
fn drop_accounts_capability_bytes() {
let mut vm = make_vm();
let mut config = KernelConfig::minimal();
config.set_session_gc_threshold(1);
let mut vm = Vm::with_kernel_core(KernelCore::new(config));
eval_in(&mut vm, "for (var i = 0; i < 500; i++) { new DisposableStack(); } 0").expect("run");
let before = vm.session_gc_stats().total_bytes_freed;
vm.reset();
let after = vm.session_gc_stats().total_bytes_freed;
assert!(after > before, "reset 应回收栈对象状态盒,before={before} after={after}");
let freed = vm.session_gc_stats().total_bytes_freed;
assert!(freed > 0, "收集应释放死栈对象状态盒并记账,freed={freed}");
}
/// full_reset(dirty 重建):global 与 object 家族重建后 DisposableStack 仍完整可用