michael@0: // Debugger.Script.prototype.script returns the global the script runs in. michael@0: // Multi-global version. michael@0: michael@0: var dbg = new Debugger; michael@0: michael@0: var g1 = newGlobal(); michael@0: var g1w = dbg.addDebuggee(g1); michael@0: michael@0: var g2 = newGlobal(); michael@0: var g2w = dbg.addDebuggee(g2); michael@0: michael@0: var g3 = newGlobal(); michael@0: var g3w = dbg.addDebuggee(g3); michael@0: michael@0: var log = ''; michael@0: dbg.onDebuggerStatement = function (frame) { michael@0: log += 'd'; michael@0: assertEq(frame.script.global, g1w); michael@0: assertEq(frame.older.script.global, g2w); michael@0: assertEq(frame.older.older.script.global, g3w); michael@0: assertEq(frame.older.older.older.script.global, g1w); michael@0: } michael@0: michael@0: g1.eval('function f() { debugger; }'); michael@0: michael@0: g2.g1 = g1; michael@0: g2.eval('function g() { g1.f(); }'); michael@0: michael@0: g3.g2 = g2; michael@0: g3.eval('function h() { g2.g(); }'); michael@0: michael@0: g1.g3 = g3; michael@0: g1.eval('function i() { g3.h(); }'); michael@0: michael@0: g1.i(); michael@0: assertEq(log, 'd'); michael@0: michael@0: assertEq(g1w.getOwnPropertyDescriptor('f').value.global, g1w); michael@0: assertEq(g2w.getOwnPropertyDescriptor('g').value.global, g2w); michael@0: assertEq(g3w.getOwnPropertyDescriptor('h').value.global, g3w);