js/src/jit-test/tests/debug/breakpoint-multi-02.js

changeset 0
6474c204b198
equal deleted inserted replaced
-1:000000000000 0:f6f94815da31
1 // After clearing one breakpoint, another breakpoint at the same instruction still works.
2
3 var g = newGlobal();
4 var dbg = Debugger(g);
5 var script = null;
6 var handlers = [];
7 dbg.onDebuggerStatement = function (frame) {
8 function handler(i) {
9 return {hit: function (frame) { g.log += '' + i; }};
10 }
11 var f = frame.eval("f").return;
12 var s = f.script;
13 if (script === null)
14 script = s;
15 else
16 assertEq(s, script);
17
18 var offs = s.getLineOffsets(g.line0 + 3);
19 for (var i = 0; i < 3; i++) {
20 handlers[i] = handler(i);
21 for (var j = 0; j < offs.length; j++)
22 s.setBreakpoint(offs[j], handlers[i]);
23 }
24 };
25
26 g.eval("var line0 = Error().lineNumber;\n" +
27 "function f() {\n" + // line0 + 1
28 " log += 'x';\n" + // line0 + 2
29 " log += 'y';\n" + // line0 + 3
30 "}\n" +
31 "debugger;\n");
32 assertEq(handlers.length, 3);
33
34 g.log = '';
35 g.f();
36 assertEq(g.log, 'x012y');
37
38 script.clearBreakpoint(handlers[0]);
39
40 g.log = '';
41 g.f();
42 assertEq(g.log, 'x12y');

mercurial