Sat, 03 Jan 2015 20:18:00 +0100
Conditionally enable double key logic according to:
private browsing mode or privacy.thirdparty.isolate preference and
implement in GetCookieStringCommon and FindCookie where it counts...
With some reservations of how to convince FindCookie users to test
condition and pass a nullptr when disabling double key logic.
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();