phi-specialization.js (718B)
1 // |jit-test| --fast-warmup 2 3 var sum = 0; 4 5 function foo(copy, shouldThrow) { 6 switch (copy) { 7 case 0: 8 var x = 0; 9 try { 10 if (shouldThrow) { throw 0;} 11 x = 1; 12 } catch { 13 x = "a"; 14 } 15 // We create a specialized phi for x here, which bails out. 16 for (var i = 0; i < 100; i++) { 17 sum += x; 18 } 19 break; 20 case 1: 21 var y = 0; 22 try { 23 if (shouldThrow) { throw 0;} 24 y = 1; 25 } catch { 26 y = "a"; 27 } 28 // We do not create a specialized phi the second time. 29 for (var i = 0; i < 100; i++) { 30 sum += y; 31 } 32 break; 33 } 34 } 35 36 with ({}) {} 37 for (var i = 0; i < 2; i++) { 38 for (var j = 0; j < 50; j++) { 39 foo(i, false); 40 } 41 foo(i, true); 42 }