// Test drainAllocationsLog() and constructor names. const root = newGlobal(); const dbg = new Debugger(); const wrappedRoot = dbg.addDebuggee(root); root.eval( ` function Ctor() {} var nested = {}; nested.Ctor = function () {}; function makeInstance() { let LexicalCtor = function () {}; return new LexicalCtor; } function makeObject() { let object = {}; return object; } this.tests = [ { name: "Ctor", fn: () => new Ctor }, { name: "nested.Ctor", fn: () => new nested.Ctor }, { name: "makeInstance/LexicalCtor", fn: () => makeInstance() }, { name: null, fn: () => ({}) }, { name: null, fn: () => (nested.object = {}) }, { name: null, fn: () => makeObject() }, ]; ` ); for (let { name, fn } of root.tests) { print(name); dbg.memory.trackingAllocationSites = true; fn(); let entries = dbg.memory.drainAllocationsLog(); let ctors = entries.map(e => e.constructor); assertEq(ctors.some(ctor => ctor === name), true); dbg.memory.trackingAllocationSites = false; }