js/src/jit-test/tests/debug/Source-introductionScript-02.js

changeset 0
6474c204b198
equal deleted inserted replaced
-1:000000000000 0:1b4a06976085
1 // Calls to 'eval', etc. by JS primitives get attributed to the point of
2 // the primitive's call.
3
4 var g = newGlobal();
5 var dbg = new Debugger;
6 var gDO = dbg.addDebuggee(g);
7 var log = '';
8
9 function outerHandler(frame) {
10 log += 'o';
11 var outerScript = frame.script;
12
13 dbg.onDebuggerStatement = function (frame) {
14 log += 'i';
15 var source = frame.script.source;
16 var introScript = source.introductionScript;
17 assertEq(introScript, outerScript);
18 assertEq(introScript.getOffsetLine(source.introductionOffset), 1234);
19 };
20 };
21
22 log = '';
23 dbg.onDebuggerStatement = outerHandler;
24 g.evaluate('debugger; ["debugger;"].map(eval)', { lineNumber: 1234 });
25 assertEq(log, 'oi');
26
27 log = '';
28 dbg.onDebuggerStatement = outerHandler;
29 g.evaluate('debugger; "debugger;".replace(/.*/, eval);',
30 { lineNumber: 1234 });
31 assertEq(log, 'oi');
32
33
34 // If the call takes place in another global, however, we don't record the
35 // introduction script.
36 log = '';
37 dbg.onDebuggerStatement = function (frame) {
38 log += 'd';
39 assertEq(frame.script.source.introductionScript, undefined);
40 assertEq(frame.script.source.introductionOffset, undefined);
41 };
42 ["debugger;"].map(g.eval);
43 "debugger;".replace(/.*/, g.eval);
44 assertEq(log, 'dd');

mercurial