| // Test retrieving the log multiple times. |
| |
| const root = newGlobal(); |
| const dbg = new Debugger(); |
| dbg.addDebuggee(root) |
| |
| root.eval([ |
| "this.allocs = [];", |
| "this.doFirstAlloc = " + function () { |
| this.allocs.push({}); this.firstAllocLine = Error().lineNumber; |
| }, |
| "this.doSecondAlloc = " + function () { |
| this.allocs.push(new Object()); this.secondAllocLine = Error().lineNumber; |
| } |
| ].join("\n")); |
| |
| dbg.memory.trackingAllocationSites = true; |
| |
| root.doFirstAlloc(); |
| let allocs1 = dbg.memory.drainAllocationsLog(); |
| root.doSecondAlloc(); |
| let allocs2 = dbg.memory.drainAllocationsLog(); |
| |
| let allocs1Lines = allocs1.filter(x => !!x.frame).map(x => x.frame.line); |
| assertEq(allocs1Lines.indexOf(root.firstAllocLine) != -1, true); |
| assertEq(allocs1Lines.indexOf(root.secondAllocLine) == -1, true); |
| |
| let allocs2Lines = allocs2.filter(x => !!x.frame).map(x => x.frame.line); |
| assertEq(allocs2Lines.indexOf(root.secondAllocLine) != -1, true); |
| assertEq(allocs2Lines.indexOf(root.firstAllocLine) == -1, true); |