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

Wed, 31 Dec 2014 06:09:35 +0100

author
Michael Schloh von Bennewitz <michael@schloh.com>
date
Wed, 31 Dec 2014 06:09:35 +0100
changeset 0
6474c204b198
permissions
-rw-r--r--

Cloned upstream origin tor-browser at tor-browser-31.3.0esr-4.5-1-build1
revision ID fc1c9ff7c1b2defdbc039f12214767608f46423f for hacking purpose.

     1 // After clearing one breakpoint, another breakpoint from a different Debugger object at the same instruction still works.
     3 function test(which) {
     4     var g = newGlobal();
     5     g.eval("var line0 = Error().lineNumber;\n" +
     6            "function f() {\n" +             // line0 + 1
     7            "    return " + which + ";\n" +  // line0 + 2
     8            "}\n");
    10     var log;
    11     var scripts = [];
    12     var handlers = [];
    13     function addDebugger(g, i) {
    14         var dbg = Debugger(g);
    15         dbg.onDebuggerStatement = function (frame) {
    16             var s = frame.eval("f").return.script;
    17             scripts[i] = s;
    18             var offs = s.getLineOffsets(g.line0 + 2);
    19             var handler = {hit: function (frame) { log += '' + i; } };
    20             s.setBreakpoint(0, handler);
    21             handlers[i] = handler;
    22         };
    23     }
    25     var expected = '';
    26     for (var i = 0; i < 3; i++) {
    27         addDebugger(g, i);
    28         if (i !== which)
    29             expected += '' + i;
    30     }
    31     g.eval('debugger;');
    33     for (var i = 0; i < 3; i++)
    34         assertEq(scripts[i].getBreakpoints()[0], handlers[i]);
    36     log = '';
    37     g.f();
    38     assertEq(log, '012');
    40     scripts[which].clearAllBreakpoints();
    42     log = '';
    43     g.f();
    44     assertEq(log, expected);
    45 }
    47 for (var j = 0; j < 3; j++)
    48     test(j);

mercurial