michael@0: // Debugger.prototype.makeGlobalObjectReference returns a D.O for a global michael@0: // without adding it as a debuggee. michael@0: michael@0: let g1 = newGlobal(); michael@0: let dbg = new Debugger; michael@0: assertEq(dbg.hasDebuggee(g1), false); michael@0: michael@0: let g1w = dbg.makeGlobalObjectReference(g1); michael@0: assertEq(dbg.hasDebuggee(g1), false); michael@0: assertEq(g1w.unsafeDereference(), g1); michael@0: assertEq(g1w, g1w.makeDebuggeeValue(g1)); michael@0: michael@0: assertEq(dbg.addDebuggee(g1w), g1w); michael@0: assertEq(dbg.hasDebuggee(g1), true); michael@0: assertEq(dbg.hasDebuggee(g1w), true); michael@0: assertEq(g1w.unsafeDereference(), g1); michael@0: assertEq(g1w, g1w.makeDebuggeeValue(g1)); michael@0: michael@0: // makeGlobalObjectReference dereferences CCWs. michael@0: let g2 = newGlobal(); michael@0: g2.g1 = g1; michael@0: let g2w = dbg.addDebuggee(g2); michael@0: let g2g1w = g2w.getOwnPropertyDescriptor('g1').value; michael@0: assertEq(g2g1w !== g1w, true); michael@0: assertEq(g2g1w.unwrap(), g1w); michael@0: assertEq(dbg.makeGlobalObjectReference(g2g1w), g1w);