Imported Upstream version 1.0.0
[platform/upstream/js.git] / js / src / jit-test / tests / basic / testSlowArrayPopNestedTrees.js
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 < RUNLOOP; i++)
8         a[i] = [0];
9     a[RUNLOOP-1].__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 < RUNLOOP; l++)
14             if (i == RUNLOOP-1 && j == RUNLOOP-1 && k == RUNLOOP-1)
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 < RUNLOOP; 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 < RUNLOOP; j++)
27             last = parent(a, i, j);
28         return last;
29     }
30
31     var last;
32     for (var i = 0; i < RUNLOOP; i++)
33         last = gramps(a, i);
34     return last;
35 }
36 assertEq(testSlowArrayPopNestedTrees(), 3.14159);