blob: 53a14c067f48a25de2ac223f6a2fdf30854647a1 (
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
|
function testNuke() {
var wrapper = evaluate("({a: 15, b: {c: 42}})",
{global: newGlobal({newCompartment: true, sameZoneAs: this})});
var i, error;
try {
for (i = 0; i < 150; i++) {
assertEq(wrapper.b.c, 42);
assertEq(wrapper.a, 15);
if (i == 142) {
// Next access to wrapper.b should throw.
nukeCCW(wrapper);
}
}
} catch (e) {
error = e;
}
assertEq(error.message.includes("dead object"), true);
assertEq(i, 143);
}
function testSweep() {
var wrapper = evaluate("({a: 15, b: {c: 42}})",
{global: newGlobal({newCompartment: true})});
var error;
nukeCCW(wrapper);
gczeal(8, 1); // Sweep zones separately
try {
// Next access to wrapper.b should throw.
wrapper.x = 4;
} catch (e) {
error = e;
}
assertEq(error.message.includes("dead object"), true);
}
testNuke();
testSweep();
|