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