// GC can turn off debug mode in a compartment.

var dbgs = [];
var nonDebugGlobals = [];
var f = gc;
for (var i = 0; i < 4; i++) {
    // Create two globals, one debuggee.
    var g1 = newGlobal();
    var g2 = g1.eval("newGlobal('same-compartment')");
    var dbg = Debugger(g1);
    dbg.onDebuggerStatement = function () {};

    // Thread a chain of functions through the non-debuggee globals.
    g2.eval("function f() { return g() + 1; }");
    g2.g = f;
    f = g2.f;

    // Root the Debugger objects and non-debuggee globals.
    dbgs[i] = dbg;
    nonDebugGlobals[i] = g2;
}

// Call the chain of functions. At the end of the chain is gc. This will
// collect (some or all of) the debuggee globals, leaving non-debuggee
// globals. It should disable debug mode in those debuggee compartments.
nonDebugGlobals[nonDebugGlobals.length - 1].f();

gc();
nonDebugGlobals[0].g = function () { return 0; }
assertEq(nonDebugGlobals[nonDebugGlobals.length - 1].f(), nonDebugGlobals.length);
