| // 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); |