summaryrefslogtreecommitdiffstats
path: root/js/src/jit-test/tests/gc/pretenure-array-short-then-long-lived.js
blob: 1cef28c89c9cea23e1978a7d4171be2a3020b3ef (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
// Allocate many objects, changing the lifetime from short-lived to long-lived
// and check that we recover.

load(libdir + "pretenure.js");

setupPretenureTest();

// Phase 1: short lived.

allocateArrays(nurseryCount, false);
let { minor, major } = runTestAndCountCollections(
  () => allocateArrays(tenuredCount, false)
);

print(`${minor} minor GCs, ${major} major GCs`);
assertEq(minor >= 5, true);
assertEq(major == 0, true);

// Phase 2: long lived.

allocateArrays(tenuredCount, true);
({ minor, major } = runTestAndCountCollections(
  () => allocateArrays(tenuredCount * 5, true)
));

print(`${minor} minor GCs, ${major} major GCs`);
assertEq(minor <= 1, true);
assertEq(major >= 5, true);