js/src/jit-test/tests/basic/eif-generator.js

branch
TOR_BUG_9701
changeset 15
b8a032363ba2
equal deleted inserted replaced
-1:000000000000 0:a20d2c1f9517
1 // |jit-test| debug
2 function f() {
3 let (x = 1) {
4 while (true) {
5 yield evalInFrame(0, "x");
6 x++;
7 let (y = 1) {
8 yield evalInFrame(0, "++y");
9 yield evalInFrame(0, "++y");
10 }
11 }
12 }
13 }
14
15 var gen = f();
16 assertEq(gen.next(), 1);
17 assertEq(gen.next(), 2);
18 gc();
19 assertEq(gen.next(), 3);
20 gc();
21 assertEq(gen.next(), 2);
22 assertEq(gen.next(), 2);
23 gc();
24 assertEq(gen.next(), 3);
25 gc();
26 assertEq(gen.next(), 3);
27 assertEq(gen.next(), 2);
28 gc();
29 assertEq(gen.next(), 3);
30 gen = null;
31 gc();
32
33 function g() {
34 let (x = 1) {
35 while (true) {
36 var inner = function (inc) { x += inc; return evalInFrame(0, "x") };
37 assertEq(inner(0), x);
38 yield inner;
39 assertEq(inner(0), x);
40 }
41 }
42 }
43
44 var gen = g();
45 var g1 = gen.next();
46 var g2 = gen.next();
47 gc();
48 assertEq(g1(1), 2);
49 assertEq(g2(1), 3);
50 gc();
51 assertEq(g1(1), 4);
52 assertEq(g2(1), 5);
53 gen = g1 = g2 = null;
54 gc();

mercurial