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
45
46
47
48
49
|
// |jit-test| skip-if: isLcovEnabled()
// NOTE: Code coverage keeps top-level script alive even if normally it would be
// GC'd. Skip this test in that case.
// Check byte counts produced by takeCensus.
const g = newGlobal({newCompartment: true, disableLazyParsing: true });
g.eval("setJitCompilerOption('ion.warmup.trigger', 1000)");
const dbg = new Debugger(g);
g.evaluate("function one() {}", { fileName: "one.js" });
g.evaluate(`function two1() {}
function two2() {}`,
{ fileName: "two.js" });
g.evaluate(`function three1() {}
function three2() {}
function three3() {}`,
{ fileName: "three.js" });
const report = dbg.memory.takeCensus({
breakdown: {
by: "coarseType",
scripts: {
by: "filename",
then: { by: "count", count: true, bytes: false },
noFilename: {
by: "internalType",
then: { by: "count", count: true, bytes: false }
}
},
// Not really interested in these, but they're here for completeness.
objects: { by: "count", count: true, byte: false },
strings: { by: "count", count: true, byte: false },
other: { by: "count", count: true, byte: false },
}
});
print(JSON.stringify(report, null, 4));
assertEq(report.scripts["one.js"].count, 1);
assertEq(report.scripts["two.js"].count, 2);
assertEq(report.scripts["three.js"].count, 3);
const noFilename = report.scripts.noFilename;
assertEq(!!noFilename, true);
assertEq(typeof noFilename, "object");
|