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

Wed, 31 Dec 2014 06:09:35 +0100

author
Michael Schloh von Bennewitz <michael@schloh.com>
date
Wed, 31 Dec 2014 06:09:35 +0100
changeset 0
6474c204b198
permissions
-rw-r--r--

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();

mercurial