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 | |
michael@0 | 2 | // test local/arg liveness analysis in presence of many locals |
michael@0 | 3 | |
michael@0 | 4 | function foo(a, b, c) { |
michael@0 | 5 | var x = 0, y = 0, z = 0; |
michael@0 | 6 | if (a < b) { |
michael@0 | 7 | x = a + 0; |
michael@0 | 8 | y = b + 0; |
michael@0 | 9 | z = c + 0; |
michael@0 | 10 | } else { |
michael@0 | 11 | x = a; |
michael@0 | 12 | y = b; |
michael@0 | 13 | z = c; |
michael@0 | 14 | } |
michael@0 | 15 | return x + y + z; |
michael@0 | 16 | } |
michael@0 | 17 | assertEq(foo(1, 2, 3), 6); |
michael@0 | 18 | |
michael@0 | 19 | // restore liveness correctly before switch statements |
michael@0 | 20 | |
michael@0 | 21 | function foo(a, b, c) { |
michael@0 | 22 | var x = 0, y = 0, z = 0; |
michael@0 | 23 | if (a < b) { |
michael@0 | 24 | x = a + 0; |
michael@0 | 25 | y = b + 0; |
michael@0 | 26 | z = c + 0; |
michael@0 | 27 | } else { |
michael@0 | 28 | switch (c) { |
michael@0 | 29 | case 1: |
michael@0 | 30 | case 2: |
michael@0 | 31 | case 3: |
michael@0 | 32 | case 4: |
michael@0 | 33 | case 5: return 0; |
michael@0 | 34 | } |
michael@0 | 35 | x = 0; |
michael@0 | 36 | y = 0; |
michael@0 | 37 | z = 0; |
michael@0 | 38 | } |
michael@0 | 39 | return x + y + z; |
michael@0 | 40 | } |
michael@0 | 41 | assertEq(foo(1, 2, 3), 6); |