summaryrefslogtreecommitdiffstats
path: root/js/src/jit-test/tests/jaeger/closure-04.js
blob: 10f8e447a1d4d879b879dc8a14365f5ae231678d (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
var depth = 0;
test();
function test() {
  // |test()| is called recursively. When the generator runs in the JIT, the
  // recursion limit is ~20x higher than in the interpreter. Limit the depth
  // here so that the test doesn't timeout or becomes extremely slow.
  if (++depth > 400)
     return;

  var catch1, catch2, catch3, finally1, finally2, finally3;
  function* gen() {
    yield 1;
    try {
      try {
        try {
          yield 1;
        } finally {
          test();
        }
      } catch (e) {
        finally2 = true;
      }
    } catch (e) {    }
  }
  iter = gen();
  iter.next();
  iter.next();
  iter.return();
  gc();
}