js/src/jit-test/tests/debug/Debugger-debuggees-24.js

changeset 0
6474c204b198
equal deleted inserted replaced
-1:000000000000 0:524d14eacfbf
1 // Turning debugger on for a particular global with on-stack scripts shouldn't
2 // make other globals' scripts observable.
3
4 var g1 = newGlobal();
5 var g2 = newGlobal();
6 var g3 = newGlobal();
7
8 g1.eval("" + function f() {
9 var name = "f";
10 g();
11 return name;
12 });
13 g2.eval("" + function g() {
14 var name = "g";
15 h();
16 return name;
17 });
18 g3.eval("" + function h() {
19 var name = "h";
20 toggle();
21 return name;
22 });
23
24 g1.g = g2.g;
25 g2.h = g3.h;
26
27 function name(f) {
28 return f.environment.getVariable("name");
29 }
30
31 var dbg = new Debugger;
32 g3.toggle = function () {
33 var frame;
34
35 // Only f should be visible.
36 dbg.addDebuggee(g1);
37 frame = dbg.getNewestFrame();
38 assertEq(name(frame), "f");
39
40 // Now h should also be visible.
41 dbg.addDebuggee(g3);
42 frame = dbg.getNewestFrame();
43 assertEq(name(frame), "h");
44 assertEq(name(frame.older), "f");
45
46 // Finally everything should be visible.
47 dbg.addDebuggee(g2);
48 frame = dbg.getNewestFrame();
49 assertEq(name(frame), "h");
50 assertEq(name(frame.older), "g");
51 assertEq(name(frame.older.older), "f");
52 };
53
54 g1.eval("(" + function () { f(); } + ")();");
55

mercurial