Wed, 31 Dec 2014 06:09:35 +0100
Cloned upstream origin tor-browser at tor-browser-31.3.0esr-4.5-1-build1
revision ID fc1c9ff7c1b2defdbc039f12214767608f46423f for hacking purpose.
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 }
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();
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 }
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();