Source code

Revision control

Copy as Markdown

Other Tools

// Allocate many objects, changing the lifetime from long-lived to short lived
// and check that we recover.
load(libdir + "pretenure.js");
setupPretenureTest();
// Phase 1: long lived.
allocateArrays(nurseryCount, true);
let { minor, major } = runTestAndCountCollections(
() => allocateArrays(tenuredCount, true)
);
print(`${minor} minor GCs, ${major} major GCs`);
assertEq(minor <= 1, true);
assertEq(major >= 5, true);
// Phase 2: short lived.
allocateArrays(tenuredCount, false);
({ minor, major } = runTestAndCountCollections(
() => allocateArrays(nurseryCount * 5, false)
));
print(`${minor} minor GCs, ${major} major GCs`);
assertEq(minor >= 5, true);
assertEq(major == 0, true);