summaryrefslogtreecommitdiffstats
path: root/js/src/jit-test/tests/debug/Script-getBreakpoints-02.js
blob: ead429889ebdc8785be993d3bc5bf89ac3b84510 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
// Script.prototype.getBreakpoints returns breakpoints for the current Debugger object only.

var g = newGlobal({newCompartment: true});

var debuggers = [];
var hits = 0;
function attach(g, i) {
    var dbg = Debugger(g);
    dbg.onDebuggerStatement = function (frame) {
        var s = frame.script;
        var offs = s.getLineOffsets(g.line0 + 2);
        var hitAny = false;
        var handler = {
            hit: function (frame) {
                assertEq(this, handler);
                assertEq(frame.script, s);
                var bps = s.getBreakpoints();
                assertEq(bps.length, offs.length);
                for (var i = 0; i < bps.length; i++)
                    assertEq(bps[i], handler);

                if (!hitAny) {
                    hitAny = true;
                    hits++;
                }
            }
        };
        for (var i = 0; i < offs.length; i++)
            s.setBreakpoint(offs[i], handler);
        hits++;
    };
    debuggers[i] = dbg;
}

for (var i = 0; i < 3; i++)
    attach(g, i);
g.done = false;
g.eval("var line0 = Error().lineNumber;\n" +
       "debugger;\n" +      // line0 + 1
       "done = true;\n");   // line0 + 2
assertEq(hits, 6);
assertEq(g.done, true);