1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 1.2 +++ b/js/src/jit-test/tests/debug/cross-context-2.js Wed Dec 31 06:09:35 2014 +0100 1.3 @@ -0,0 +1,32 @@ 1.4 +// The debugger can eval in any frame in the stack even if every frame was 1.5 +// pushed in a different context. 1.6 + 1.7 +var g = newGlobal(); 1.8 +g.eval('function f(a) {\n' + 1.9 + ' if (a == 1)\n' + 1.10 + ' debugger;\n' + 1.11 + ' else\n' + 1.12 + ' evaluate("f(" + a + " - 1);", {newContext: true});\n' + 1.13 + '}\n'); 1.14 +var N = 9; 1.15 + 1.16 +var dbg = new Debugger(g); 1.17 +var frames = []; 1.18 +var hits = 0; 1.19 +dbg.onEnterFrame = function (frame) { 1.20 + if (frame.type == "call" && frame.callee.name == "f") { 1.21 + frames.push(frame); 1.22 + frame.onPop = function () { assertEq(frames.pop(), frame); }; 1.23 + } 1.24 +}; 1.25 +dbg.onDebuggerStatement = function (frame) { 1.26 + assertEq(frames.length, N); 1.27 + var i = N; 1.28 + for (var f of frames) 1.29 + assertEq(f.eval('a').return, i--); 1.30 + hits++; 1.31 +}; 1.32 + 1.33 +g.f(N); 1.34 +assertEq(hits, 1); 1.35 +assertEq(frames.length, 0);