summaryrefslogtreecommitdiffstats
path: root/js/src/jit-test/tests/debug/Memory-takeCensus-11.js
blob: 50388ef78457751674ead956043faf885d293972 (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
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
// |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 });
g.evaluate("setJitCompilerOption('ion.warmup.trigger', 1000)",
           {
             forceFullParse: true,
           });

const dbg = new Debugger(g);

g.evaluate("function one() {}",
           {
             fileName: "one.js",
             forceFullParse: true,
           });
g.evaluate(`function two1() {}
            function two2() {}`,
           {
             fileName: "two.js",
             forceFullParse: true,
           });
g.evaluate(`function three1() {}
            function three2() {}
            function three3() {}`,
           {
             fileName: "three.js",
             forceFullParse: true,
           });

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");