fix: Vm 增加 Drop 收尾释放全部 session 堆数据消除逐实例泄漏

test262 每测试新建 Vm 直接 drop,此前对象堆数据/串/BigInt/cell 全部
泄漏。新增 teardown 收尾函数(epoch+session 对象堆数据、串、BigInt、
cell 统一释放)供 full_reset 与 Drop 共用。连带补齐 promote 分支的
ArrayBuffer 字节缓冲深拷贝(与 sweep 对齐,消除共享所有权 double-free),
并修正依赖旧泄漏行为跨 Vm 解析字符串的 error 测试。
This commit is contained in:
2026-08-15 19:13:51 +08:00
parent 9e8ee96491
commit 18aaa0fb0f
6 changed files with 64 additions and 43 deletions
+1 -4
View File
@@ -578,10 +578,7 @@ impl SessionGc {
live.clear();
Self::record_object_string_edges(&mut live, obj);
for s_ptr in live.drain() {
assert!(
self.live_strings.contains(&s_ptr),
"存活对象持有未登记的 session 字符串边"
);
assert!(self.live_strings.contains(&s_ptr), "存活对象持有未登记的 session 字符串边");
}
}
}