tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

testSlowArrayPopNestedTrees.js (1055B)


      1 // Same thing but nested trees, each reconstructing one or more stack frames 
      2 // (so, several functions with loops, such that the loops end up being
      3 // nested though they are not lexically nested)
      4 
      5 function testSlowArrayPopNestedTrees() {    
      6    var a = [];
      7    for (var i = 0; i < 9; i++)
      8        a[i] = [0];
      9    a[8].__defineGetter__("0", function () { return 3.14159 });
     10 
     11    function child(a, i, j, k) {
     12        var last = 2.71828;
     13        for (var l = 0; l < 9; l++)
     14            if (i == 8 && j == 8 && k == 8)
     15                last = a[l].pop();  // reenters interpreter in getter
     16        return last;
     17    }
     18    function parent(a, i, j) {
     19        var last;
     20        for (var k = 0; k < 9; k++)
     21            last = child(a, i, j, k);
     22        return last;
     23    }
     24    function gramps(a, i) { 
     25        var last;
     26        for (var j = 0; j < 9; j++)
     27            last = parent(a, i, j);
     28        return last;
     29    }
     30 
     31    var last;
     32    for (var i = 0; i < 9; i++)
     33        last = gramps(a, i);
     34    return last;
     35 }
     36 assertEq(testSlowArrayPopNestedTrees(), 3.14159);