summaryrefslogtreecommitdiffstats
path: root/js/src/jit-test/tests/basic/cross-realm-iterator-suppression.js
blob: cded3d4c884f0f93e93fb7d51b95a097dab89276 (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
function foo(o) {
  // Ensure a NativeIterator exists for o.
  for (var s in o) {}

  // Loop over the keys, deleting y.
  // If y is correctly suppressed, then result should
  // be the name of the first property.
  var result = "";
  for (var s in o) {
    delete o.y;
    result += s;
  }
  assertEq(o[result], 42);
}

with ({}) {}
for (var i = 0; i < 100; i++) {
  var o = {};
  o["x" + i] = 42;
  o.y = 1;
  foo(o);
}

// Cross-realm, same-compartment
var g = newGlobal({newCompartment: false});
g.eval("var o = {x: 42, y: 1}");
foo(g.o);

// Cross-realm, cross-compartment
var g2 = newGlobal({newCompartment: true});
g2.eval("var o = {x: 42, y: 1}");
foo(g2.o);