summaryrefslogtreecommitdiffstats
path: root/js/src/jit-test/tests/debug/Memory-drainAllocationsLog-16.js
blob: b147d6ded0bff7d09ec150dc11d0714a8e2debeb (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
37
38
39
40
41
42
43
44
45
46
47
// 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;
}