summaryrefslogtreecommitdiffstats
path: root/js/src/jit-test/tests/debug/Memory-allocationSamplingProbability-02.js
blob: bbd2582a682ffd8c98128d37c76b5c469804c0a2 (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
// Test that we only sample about allocationSamplingProbability * 100 percent of
// allocations.

const root = newGlobal({newCompartment: true});

const dbg = new Debugger();
const wrappedRoot = dbg.addDebuggee(root);

root.eval(`
  objs = [];
  objs.push(new Object);
`);

root.eval("" + function makeSomeAllocations() {
  for (var i = 0; i < 100; i++) {
    objs.push(new Object);
  }
});

function measure(P, expected) {
  root.setSavedStacksRNGState(Number.MAX_SAFE_INTEGER - 1);
  dbg.memory.allocationSamplingProbability = P;
  root.makeSomeAllocations();
  assertEq(dbg.memory.drainAllocationsLog().length, expected);
}

dbg.memory.trackingAllocationSites = true;

// These are the sample counts that were correct when this test was last
// updated; changes to SpiderMonkey may occasionally cause changes
// here. Anything that is within a plausible range for the given sampling
// probability is fine.
measure(0.0, 0);
measure(1.0, 100);
measure(0.1, 11);
measure(0.5, 49);