incdec.js (1310B)
1 /* Handle recompilation on overflow of inc/dec operations. */ 2 3 function local() 4 { 5 var j = 0x7ffffff0; 6 for (var i = 0; i < 100; i++) 7 j++; 8 assertEq(j, 2147483732); 9 } 10 local(); 11 12 function olocal() 13 { 14 var j = 0x7ffffff0; 15 for (var i = 0; i < 100; i++) { 16 if (j++ == 5000) 17 break; 18 } 19 assertEq(j, 2147483732); 20 } 21 olocal(); 22 23 function arg(j) 24 { 25 for (var i = 0; i < 100; i++) 26 j++; 27 assertEq(j, 2147483732); 28 } 29 arg(0x7ffffff0); 30 31 function oarg(j) 32 { 33 for (var i = 0; i < 100; i++) { 34 if (j++ == 5000) 35 break; 36 } 37 assertEq(j, 2147483732); 38 } 39 oarg(0x7ffffff0); 40 41 // basic global inc/dec correctness 42 var x = 1.23; 43 x = x--; 44 x = x++; 45 x = ++x; 46 x = --x; 47 assertEq(x, 1.23); 48 49 var g = 0x7ffffff0; 50 function glob() 51 { 52 for (var i = 0; i < 100; i++) 53 g++; 54 assertEq(g, 2147483732); 55 } 56 glob(); 57 58 function gname() 59 { 60 n = 0x7ffffff0; 61 for (var i = 0; i < 100; i++) 62 n++; 63 assertEq(n, 2147483732); 64 } 65 gname(); 66 67 function prop() 68 { 69 var v = {f: 0x7ffffff0}; 70 for (var i = 0; i < 100; i++) 71 v.f++; 72 assertEq(v.f, 2147483732); 73 } 74 prop(); 75 76 function elem(v, f) 77 { 78 for (var i = 0; i < 100; i++) 79 v[f]++; 80 assertEq(v.f, 2147483732); 81 } 82 elem({f: 0x7ffffff0}, "f"); 83 84 function name() 85 { 86 var v = 0x7ffffff0; 87 var i; 88 eval("for (i = 0; i < 100; i++) v++"); 89 assertEq(v + 10, 2147483742); 90 } 91 name();