summaryrefslogtreecommitdiffstats
path: root/js/src/jit-test/tests/basic/bug-1663741.js
blob: 866bd083a384b50559c483dd5a5060b53d3eed2b (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
const thisGlobal = this;
const otherGlobalSameCompartment = newGlobal({sameCompartmentAs: thisGlobal});
const otherGlobalNewCompartment = newGlobal({newCompartment: true});

const globals = [thisGlobal, otherGlobalSameCompartment, otherGlobalNewCompartment];

function testProperties(global, count) {
  let {object: source, transplant} = transplantableObject();

  // Create a bunch properties on |source|, which force allocation of dynamic
  // slots.
  for (let i = 0; i < count; i++) {
    source["foo" + i] = i;
  }

  // Calling |transplant| transplants the object and then returns undefined.
  transplant(global);

  // Check the properties were copied over to the swapped object.
  for (let i = 0; i < count; i++) {
    assertEq(source["foo" + i], i);
  }
}

for (let global of globals) {
  for (let count of [0, 10, 30]) {
    testProperties(global, count);
  }
}