summaryrefslogtreecommitdiffstats
path: root/js/src/jit-test/tests/debug/Frame-onPop-23.js
blob: 894250ef5bb498afb9b84271bfd95a2d9d9ab26d (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
// Check that the line number reported at an onPop stop makes sense,
// even when it happens on an "artificial" instruction.

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

// This bit of code arranges for the line number of the "artificial"
// instruction to be something nonsensical -- the middle of a loop
// which cannot be entered.
g.eval(`function f() {
  debugger;                   // +0
  if(false) {                 // +1
    for(var b=0; b<0; b++) {  // +2
      c = 2;                  // +3
    }                         // +4
  }                           // +5
}                             // +6
`);

var dbg = Debugger(g);

let debugLine;
let foundLine;

dbg.onDebuggerStatement = function(frame) {
  debugLine = frame.script.getOffsetLocation(frame.offset).lineNumber;
  frame.onPop = function(c) {
    foundLine = this.script.getOffsetLocation(this.offset).lineNumber;
  };
};

g.eval("f();\n");

// The stop should happen on the closing brace of the function.
assertEq(foundLine == debugLine + 6, true);