// Test that we only sample about allocationSamplingProbability * 100 percent of // allocations. const root = newGlobal(); 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);