summaryrefslogtreecommitdiffstats
path: root/js/src/jit-test/tests/debug/Memory-takeCensus-10.js
diff options
context:
space:
mode:
Diffstat (limited to 'js/src/jit-test/tests/debug/Memory-takeCensus-10.js')
-rw-r--r--js/src/jit-test/tests/debug/Memory-takeCensus-10.js57
1 files changed, 57 insertions, 0 deletions
diff --git a/js/src/jit-test/tests/debug/Memory-takeCensus-10.js b/js/src/jit-test/tests/debug/Memory-takeCensus-10.js
new file mode 100644
index 0000000000..abe01d56d4
--- /dev/null
+++ b/js/src/jit-test/tests/debug/Memory-takeCensus-10.js
@@ -0,0 +1,57 @@
+// Check byte counts produced by takeCensus.
+
+let g = newGlobal({newCompartment: true});
+let dbg = new Debugger(g);
+
+let sizeOfAM = byteSize(allocationMarker());
+
+// Allocate a single allocation marker, and check that we can find it.
+g.eval('var hold = allocationMarker();');
+let census = dbg.memory.takeCensus({ breakdown: { by: 'objectClass' } });
+assertEq(census.AllocationMarker.count, 1);
+assertEq(census.AllocationMarker.bytes, sizeOfAM);
+
+g.evaluate(`
+ var objs = [];
+ function fnerd() {
+ objs.push(allocationMarker());
+ for (let i = 0; i < 10; i++)
+ objs.push(allocationMarker());
+ }
+ `,
+ { fileName: 'J. Edgar Hoover', lineNumber: 2000 });
+
+dbg.memory.allocationSamplingProbability = 1;
+dbg.memory.trackingAllocationSites = true;
+
+g.hold = null;
+g.fnerd();
+
+census = dbg.memory.takeCensus({
+ breakdown: { by: 'objectClass',
+ then: { by: 'allocationStack' }
+ }
+});
+
+let seen = 0;
+census.AllocationMarker.forEach((v, k) => {
+ assertEq(k.functionDisplayName, 'fnerd');
+ assertEq(k.source, 'J. Edgar Hoover');
+ switch (k.line) {
+ case 2003:
+ assertEq(v.count, 1);
+ assertEq(v.bytes, sizeOfAM);
+ seen++;
+ break;
+
+ case 2005:
+ assertEq(v.count, 10);
+ assertEq(v.bytes, 10 * sizeOfAM);
+ seen++;
+ break;
+
+ default: assertEq(true, false);
+ }
+});
+
+assertEq(seen, 2);