1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 1.2 +++ b/js/src/jit-test/tests/ion/valueToInt32.js Wed Dec 31 06:09:35 2014 +0100 1.3 @@ -0,0 +1,41 @@ 1.4 +// vim: set ts=8 sts=4 et sw=4 tw=99: 1.5 + 1.6 +function f(x, y) { 1.7 + // Confuse the type analysis to not know the type of x. 1.8 + var u; 1.9 + var a = x + u; 1.10 + var b = x + 3; 1.11 + return x + y; 1.12 +} 1.13 + 1.14 +function g_bool(x, y) { 1.15 + var t; 1.16 + if (x + 0) 1.17 + t = true; 1.18 + else 1.19 + t = false; 1.20 + return t + y; 1.21 + 1.22 +} 1.23 +function g_null(x) { 1.24 + return null + x; 1.25 +} 1.26 + 1.27 +assertEq(g_bool(1, 2), 3); 1.28 +assertEq(g_bool(0, 2), 2); 1.29 +assertEq(g_null(2), 2); 1.30 + 1.31 +// These will not bailout. 1.32 +assertEq(f(Math.cos(Math.PI), 2), 1); 1.33 +assertEq(f(null, 2), 2); 1.34 +assertEq(f(false, 2), 2); 1.35 +assertEq(f(true, 2), 3); 1.36 +assertEq(f(17, 2), 19); 1.37 + 1.38 +// These will bailout. 1.39 +assertEq(f(undefined, 2), Number.NaN); 1.40 +assertEq(f("20", 2), "202"); 1.41 +assertEq(f(16.3, 2), 18.3); 1.42 +assertEq((1 / f(-0, -0)), -Infinity); 1.43 + 1.44 +