js/src/jit-test/tests/saved-stacks/evals.js

branch
TOR_BUG_3246
changeset 7
129ffea94266
equal deleted inserted replaced
-1:000000000000 0:3b8ff7329c00
1 // Test that we can save stacks with direct and indirect eval calls.
2
3 const directEval = (function iife() {
4 return eval("(" + function evalFrame() {
5 return saveStack();
6 } + "())");
7 }());
8
9 assertEq(directEval.source.contains("> eval"), true);
10 assertEq(directEval.functionDisplayName, "evalFrame");
11
12 assertEq(directEval.parent.source.contains("> eval"), true);
13
14 assertEq(directEval.parent.parent.source.contains("> eval"), false);
15 assertEq(directEval.parent.parent.functionDisplayName, "iife");
16
17 assertEq(directEval.parent.parent.parent.source.contains("> eval"), false);
18
19 assertEq(directEval.parent.parent.parent.parent, null);
20
21 const lave = eval;
22 const indirectEval = (function iife() {
23 return lave("(" + function evalFrame() {
24 return saveStack();
25 } + "())");
26 }());
27
28 assertEq(indirectEval.source.contains("> eval"), true);
29 assertEq(indirectEval.functionDisplayName, "evalFrame");
30
31 assertEq(indirectEval.parent.source.contains("> eval"), true);
32
33 assertEq(indirectEval.parent.parent.source.contains("> eval"), false);
34 assertEq(indirectEval.parent.parent.functionDisplayName, "iife");
35
36 assertEq(indirectEval.parent.parent.parent.source.contains("> eval"), false);
37
38 assertEq(indirectEval.parent.parent.parent.parent, null);

mercurial