Wed, 31 Dec 2014 06:09:35 +0100
Cloned upstream origin tor-browser at tor-browser-31.3.0esr-4.5-1-build1
revision ID fc1c9ff7c1b2defdbc039f12214767608f46423f for hacking purpose.
michael@0 | 1 | var foo; |
michael@0 | 2 | |
michael@0 | 3 | function gen() { |
michael@0 | 4 | var x = 0; |
michael@0 | 5 | foo = function() { return x++; } |
michael@0 | 6 | for (var i = 0; i < 10; ++i) |
michael@0 | 7 | yield x++; |
michael@0 | 8 | } |
michael@0 | 9 | |
michael@0 | 10 | var j = 0; |
michael@0 | 11 | for (i in gen()) |
michael@0 | 12 | assertEq(i, j++); |
michael@0 | 13 | |
michael@0 | 14 | // now mess up the stack |
michael@0 | 15 | |
michael@0 | 16 | function f1(x) { |
michael@0 | 17 | var a, b, c, d, e, f, g; |
michael@0 | 18 | return x <= 0 ? 0 : f1(x-1); |
michael@0 | 19 | } |
michael@0 | 20 | f1(10); |
michael@0 | 21 | function f2(x) { |
michael@0 | 22 | var a = x, b = x; |
michael@0 | 23 | return x <= 0 ? 0 : f2(x-1); |
michael@0 | 24 | } |
michael@0 | 25 | f2(10); |
michael@0 | 26 | |
michael@0 | 27 | // now observe gen's call object (which should have been put) |
michael@0 | 28 | |
michael@0 | 29 | gc(); |
michael@0 | 30 | assertEq(foo(), 10); |
michael@0 | 31 | gc(); |
michael@0 | 32 | assertEq(foo(), 11); |
michael@0 | 33 | gc(); |
michael@0 | 34 | assertEq(foo(), 12); |
michael@0 | 35 | |
michael@0 | 36 | reportCompare(true,true); |