blob: 25f770ae6391f5b0198f5189a8208914d4a84b39 (
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
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
|
// Exercise incremental compacting GC
// Run with MOZ_GCTIMER to see the timings
if (!("gcstate" in this && "gczeal" in this))
quit();
gczeal(0);
function testCompacting(zoneCount, objectCount, sliceCount)
{
// Allocate objectCount objects in zoneCount zones
// On linux64 debug builds we will move them all
// Run compacting GC with multiple slices
var zones = [];
for (var i = 0; i < zoneCount; i++) {
var zone = newGlobal();
evaluate("var objects; " +
"function makeObjectGraph(objectCount) { " +
" objects = []; " +
" for (var i = 0; i < objectCount; i++) " +
" objects.push({ serial: i }); " +
"}",
{ global: zone });
zone.makeObjectGraph(objectCount);
zones.push(zone);
}
// Finish any alloc-triggered incremental GC
if (gcstate() !== "NotActive")
gc();
startgc(sliceCount, "shrinking");
while (gcstate() !== "NotActive") {
gcslice(sliceCount);
}
return zones;
}
testCompacting(1, 100000, 100000);
testCompacting(2, 100000, 100000);
testCompacting(4, 50000, 100000);
testCompacting(2, 100000, 50000);
|