1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 1.2 +++ b/js/src/jit-test/tests/jaeger/recompile/incdec.js Wed Dec 31 06:09:35 2014 +0100 1.3 @@ -0,0 +1,92 @@ 1.4 + 1.5 +/* Handle recompilation on overflow of inc/dec operations. */ 1.6 + 1.7 +function local() 1.8 +{ 1.9 + var j = 0x7ffffff0; 1.10 + for (var i = 0; i < 100; i++) 1.11 + j++; 1.12 + assertEq(j, 2147483732); 1.13 +} 1.14 +local(); 1.15 + 1.16 +function olocal() 1.17 +{ 1.18 + var j = 0x7ffffff0; 1.19 + for (var i = 0; i < 100; i++) { 1.20 + if (j++ == 5000) 1.21 + break; 1.22 + } 1.23 + assertEq(j, 2147483732); 1.24 +} 1.25 +olocal(); 1.26 + 1.27 +function arg(j) 1.28 +{ 1.29 + for (var i = 0; i < 100; i++) 1.30 + j++; 1.31 + assertEq(j, 2147483732); 1.32 +} 1.33 +arg(0x7ffffff0); 1.34 + 1.35 +function oarg(j) 1.36 +{ 1.37 + for (var i = 0; i < 100; i++) { 1.38 + if (j++ == 5000) 1.39 + break; 1.40 + } 1.41 + assertEq(j, 2147483732); 1.42 +} 1.43 +oarg(0x7ffffff0); 1.44 + 1.45 +// basic global inc/dec correctness 1.46 +var x = 1.23; 1.47 +x = x--; 1.48 +x = x++; 1.49 +x = ++x; 1.50 +x = --x; 1.51 +assertEq(x, 1.23); 1.52 + 1.53 +var g = 0x7ffffff0; 1.54 +function glob() 1.55 +{ 1.56 + for (var i = 0; i < 100; i++) 1.57 + g++; 1.58 + assertEq(g, 2147483732); 1.59 +} 1.60 +glob(); 1.61 + 1.62 +function gname() 1.63 +{ 1.64 + n = 0x7ffffff0; 1.65 + for (var i = 0; i < 100; i++) 1.66 + n++; 1.67 + assertEq(n, 2147483732); 1.68 +} 1.69 +gname(); 1.70 + 1.71 +function prop() 1.72 +{ 1.73 + var v = {f: 0x7ffffff0}; 1.74 + for (var i = 0; i < 100; i++) 1.75 + v.f++; 1.76 + assertEq(v.f, 2147483732); 1.77 +} 1.78 +prop(); 1.79 + 1.80 +function elem(v, f) 1.81 +{ 1.82 + for (var i = 0; i < 100; i++) 1.83 + v[f]++; 1.84 + assertEq(v.f, 2147483732); 1.85 +} 1.86 +elem({f: 0x7ffffff0}, "f"); 1.87 + 1.88 +function name() 1.89 +{ 1.90 + var v = 0x7ffffff0; 1.91 + var i; 1.92 + eval("for (i = 0; i < 100; i++) v++"); 1.93 + assertEq(v + 10, 2147483742); 1.94 +} 1.95 +name();