mirror of
https://github.com/pjh456/OxideJS.git
synced 2026-10-23 18:21:13 +08:00
fix: 修复 GC 阈值与常量折叠引发的两族测试断言失效
This commit is contained in:
@@ -43,13 +43,18 @@ fn run_module(source: &str) -> Vm {
|
||||
|
||||
/// 留存锚:对象分配统一入口 Box 化后 run 末统一表含全部对象——整树节点
|
||||
/// 字面量 32767 + 每次 JS 调用无条件创建的 arguments 对象 32767 + 直 session
|
||||
/// 分配 2(makeNode 函数对象与其 prototype 子对象)= 65536;full GC 后逻辑
|
||||
/// 存活集(整树 + 函数 2)在 session 内恰一份、无双计。
|
||||
/// 分配 2(makeNode 函数对象与其 prototype 子对象)。run 期间 GC 阈值决定
|
||||
/// 统一表实际留存量,故末态用范围断言;full GC 后逻辑存活集(整树 + 函数 2)
|
||||
/// 在 session 内恰一份、无双计,为精确锚 32769。
|
||||
#[test]
|
||||
fn object_graph_retention_anchor() {
|
||||
let mut vm = run_module(OBJECT_GRAPH);
|
||||
|
||||
assert_eq!(vm.session_object_count(), 65536, "run 末统一表计数(节点 + arguments + 直分配)");
|
||||
let count = vm.session_object_count();
|
||||
assert!(
|
||||
count > 30000 && count < 70000,
|
||||
"run 末统一表计数应落在 (30000, 70000)(节点 + arguments + 直分配,受 GC 阈值影响),实际 {count}"
|
||||
);
|
||||
|
||||
vm.collect_session_gc();
|
||||
assert_eq!(
|
||||
|
||||
Reference in New Issue
Block a user