michael@0: // Same thing but it needs to reconstruct multiple stack frames (so, michael@0: // multiple functions called inside the loop) michael@0: function testSlowArrayPopMultiFrame() { michael@0: var a = []; michael@0: for (var i = 0; i < 9; i++) michael@0: a[i] = [0]; michael@0: a[8].__defineGetter__("0", function () { return 23; }); michael@0: michael@0: function child(a, i) { michael@0: return a[i].pop(); // reenters interpreter in getter michael@0: } michael@0: function parent(a, i) { michael@0: return child(a, i); michael@0: } michael@0: function gramps(a, i) { michael@0: return parent(a, i); michael@0: } michael@0: michael@0: var last; michael@0: for (var i = 0; i < 9; i++) michael@0: last = gramps(a, i); michael@0: return last; michael@0: } michael@0: assertEq(testSlowArrayPopMultiFrame(), 23);