js/src/jit-test/tests/ion/truncateToInt32.js

changeset 0
6474c204b198
     1.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     1.2 +++ b/js/src/jit-test/tests/ion/truncateToInt32.js	Wed Dec 31 06:09:35 2014 +0100
     1.3 @@ -0,0 +1,46 @@
     1.4 +// vim: set ts=8 sts=4 et sw=4 tw=99:
     1.5 +
     1.6 +function w(y)
     1.7 +{
     1.8 +    var x = 23.5;
     1.9 +    return x & y;
    1.10 +}
    1.11 +
    1.12 +function f(x, y) {
    1.13 +    // Confuse the type analysis to not know the type of x.
    1.14 +    var t = 3.5 + x;
    1.15 +    t + 3.5;
    1.16 +    return x & y;
    1.17 +}
    1.18 +
    1.19 +function g_bool(x, y) {
    1.20 +    var t;
    1.21 +    if (x + 0)
    1.22 +        t = true;
    1.23 +    else
    1.24 +        t = false;
    1.25 +    return t & y;
    1.26 +
    1.27 +}
    1.28 +
    1.29 +function g_null(x) {
    1.30 +    return null & x;
    1.31 +}
    1.32 +
    1.33 +var obj = { valueOf: function () { return 5; } }
    1.34 +
    1.35 +assertEq(w(93), 21);
    1.36 +assertEq(g_bool(1, 3), 1);
    1.37 +assertEq(g_bool(0, 3), 0);
    1.38 +assertEq(g_null(2), 0);
    1.39 +
    1.40 +assertEq(f(1, 7), 1);
    1.41 +assertEq(f(true, 7), 1);
    1.42 +assertEq(f(false, 7), 0);
    1.43 +assertEq(f("3", 7), 3);
    1.44 +assertEq(f(obj, 7), 5);
    1.45 +assertEq(f(3.5, 7), 3);
    1.46 +assertEq(f(undefined, 7), 0);
    1.47 +assertEq(f(null, 7), 0);
    1.48 +assertEq(f(Math.NaN, 7), 0);
    1.49 +

mercurial