diff options
Diffstat (limited to 'js/src/jit-test/tests/debug/Memory-takeCensus-11.js')
-rw-r--r-- | js/src/jit-test/tests/debug/Memory-takeCensus-11.js | 62 |
1 files changed, 62 insertions, 0 deletions
diff --git a/js/src/jit-test/tests/debug/Memory-takeCensus-11.js b/js/src/jit-test/tests/debug/Memory-takeCensus-11.js new file mode 100644 index 0000000000..50388ef784 --- /dev/null +++ b/js/src/jit-test/tests/debug/Memory-takeCensus-11.js @@ -0,0 +1,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"); |