js/src/jit-test/tests/debug/cross-context-2.js

changeset 0
6474c204b198
equal deleted inserted replaced
-1:000000000000 0:3f44610acad3
1 // The debugger can eval in any frame in the stack even if every frame was
2 // pushed in a different context.
3
4 var g = newGlobal();
5 g.eval('function f(a) {\n' +
6 ' if (a == 1)\n' +
7 ' debugger;\n' +
8 ' else\n' +
9 ' evaluate("f(" + a + " - 1);", {newContext: true});\n' +
10 '}\n');
11 var N = 9;
12
13 var dbg = new Debugger(g);
14 var frames = [];
15 var hits = 0;
16 dbg.onEnterFrame = function (frame) {
17 if (frame.type == "call" && frame.callee.name == "f") {
18 frames.push(frame);
19 frame.onPop = function () { assertEq(frames.pop(), frame); };
20 }
21 };
22 dbg.onDebuggerStatement = function (frame) {
23 assertEq(frames.length, N);
24 var i = N;
25 for (var f of frames)
26 assertEq(f.eval('a').return, i--);
27 hits++;
28 };
29
30 g.f(N);
31 assertEq(hits, 1);
32 assertEq(frames.length, 0);

mercurial