69 lines
1.9 KiB
JavaScript
69 lines
1.9 KiB
JavaScript
/* Any copyright is dedicated to the Public Domain.
|
|
http://creativecommons.org/publicdomain/zero/1.0/ */
|
|
|
|
// Check byte counts produced by takeCensus.
|
|
//
|
|
// Ported from js/src/jit-test/tests/debug/Memory-take Census-10.js
|
|
|
|
function run_test() {
|
|
let g = newGlobal();
|
|
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 = saveHeapSnapshotAndTakeCensus(dbg, { breakdown: { by: "objectClass" } });
|
|
equal(census.AllocationMarker.count, 1);
|
|
equal(census.AllocationMarker.bytes, sizeOfAM);
|
|
g.hold = null;
|
|
|
|
g.eval(` // 1
|
|
var objs = []; // 2
|
|
function fnerd() { // 3
|
|
objs.push(allocationMarker()); // 4
|
|
for (let i = 0; i < 10; i++) // 5
|
|
objs.push(allocationMarker()); // 6
|
|
} // 7
|
|
`); // 8
|
|
|
|
dbg.memory.allocationSamplingProbability = 1;
|
|
dbg.memory.trackingAllocationSites = true;
|
|
g.fnerd();
|
|
dbg.memory.trackingAllocationSites = false;
|
|
|
|
census = saveHeapSnapshotAndTakeCensus(dbg, {
|
|
breakdown: { by: "objectClass",
|
|
then: { by: "allocationStack" }
|
|
}
|
|
});
|
|
|
|
let seen = 0;
|
|
census.AllocationMarker.forEach((v, k) => {
|
|
equal(k.functionDisplayName, "fnerd");
|
|
switch (k.line) {
|
|
case 4:
|
|
equal(v.count, 1);
|
|
equal(v.bytes, sizeOfAM);
|
|
seen++;
|
|
break;
|
|
|
|
case 6:
|
|
equal(v.count, 10);
|
|
equal(v.bytes, 10 * sizeOfAM);
|
|
seen++;
|
|
break;
|
|
|
|
default:
|
|
dumpn("Unexpected stack:");
|
|
k.toString().split(/\n/g).forEach(s => dumpn(s));
|
|
ok(false);
|
|
break;
|
|
}
|
|
});
|
|
|
|
equal(seen, 2);
|
|
|
|
do_test_finished();
|
|
}
|