diff options
Diffstat (limited to 'js/src/jit-test/tests/debug/Script-global-02.js')
-rw-r--r-- | js/src/jit-test/tests/debug/Script-global-02.js | 40 |
1 files changed, 40 insertions, 0 deletions
diff --git a/js/src/jit-test/tests/debug/Script-global-02.js b/js/src/jit-test/tests/debug/Script-global-02.js new file mode 100644 index 000000000..fb4f30205 --- /dev/null +++ b/js/src/jit-test/tests/debug/Script-global-02.js @@ -0,0 +1,40 @@ +// Debugger.Script.prototype.script returns the global the script runs in. +// Multi-global version. + +var dbg = new Debugger; + +var g1 = newGlobal(); +var g1w = dbg.addDebuggee(g1); + +var g2 = newGlobal(); +var g2w = dbg.addDebuggee(g2); + +var g3 = newGlobal(); +var g3w = dbg.addDebuggee(g3); + +var log = ''; +dbg.onDebuggerStatement = function (frame) { + log += 'd'; + assertEq(frame.script.global, g1w); + assertEq(frame.older.script.global, g2w); + assertEq(frame.older.older.script.global, g3w); + assertEq(frame.older.older.older.script.global, g1w); +} + +g1.eval('function f() { debugger; }'); + +g2.g1 = g1; +g2.eval('function g() { g1.f(); }'); + +g3.g2 = g2; +g3.eval('function h() { g2.g(); }'); + +g1.g3 = g3; +g1.eval('function i() { g3.h(); }'); + +g1.i(); +assertEq(log, 'd'); + +assertEq(g1w.getOwnPropertyDescriptor('f').value.global, g1w); +assertEq(g2w.getOwnPropertyDescriptor('g').value.global, g2w); +assertEq(g3w.getOwnPropertyDescriptor('h').value.global, g3w); |