summaryrefslogtreecommitdiffstats
path: root/js/src/jit-test/tests/environments/bug1710089.js
blob: 3bd78a14d3a615345b35dc6c2656ad75a1366892 (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
// |jit-test| skip-if: getBuildConfiguration("wasi")

// Recursion depth reduced to allow PBL with debug build (hence larger
// frames) to work.
var iters = 75;

// Generate a deeply nested version of:
//   function outer() {
//     var top_level_var = 42;
//     var x3 = 0;
//     function f2() {
//       var x2 = x3;
//       function f1() {
//         var x1 = x2;
//         function f0() {
//           var x0 = x1;
//           return top_level_var + x0;
//         }
//         return f0();
//       }
//       return f1();
//     }
//     return f2();
//   }

var src = "return top_level_var + x0; "

for (var i = 0; i < iters; i++) {
  var def = "var x" + i + " = x" + (i+1) + "; ";
  src = "function f" + i + "() { " + def + src + "} return f" + i + "();"
}
src = "var x" + iters + " = 0;" + src;
src = "var top_level_var = 42; " + src;

var outer = Function(src);
for (var i = 0; i < 2; i++) {
  assertEq(outer(), 42);
}