js/src/jit-test/tests/basic/mathImul.js

Wed, 31 Dec 2014 06:09:35 +0100

author
Michael Schloh von Bennewitz <michael@schloh.com>
date
Wed, 31 Dec 2014 06:09:35 +0100
changeset 0
6474c204b198
permissions
-rw-r--r--

Cloned upstream origin tor-browser at tor-browser-31.3.0esr-4.5-1-build1
revision ID fc1c9ff7c1b2defdbc039f12214767608f46423f for hacking purpose.

     2 var table = [
     3     [NaN, 0, 0],
     4     [Infinity, Infinity, 0],
     5     [NaN, 1000, 0],
     7     [-1, -2, 2],
     8     [1, 2, 2],
     9     [-1, 2, -2],
    10     [1, -2, -2],
    11     [-0, 0, 0],
    12     [0, -0, 0],
    13     [-1, -0, 0],
    14     [1, -0, 0],
    16     [0xffffffff, 1, -1],
    18     [0xffffffff, 0xffffffff, 1],
    19     [0xffffffff, -0xffffffff, -1],
    20     [0xffffffff, 0xfffffffe, 2],
    21     [0xffffffff, -0xfffffffe, -2],
    22     [0x10000, 0x10000, 0],
    24     [{}, {}, 0],
    25     [[], [], 0],
    26     [{}, [], 0],
    27     [[], {}, 0],
    29     [{valueOf: function() { return -1; }}, 0x100000, -1048576],
    30     ["3", "-4", -12],
    31     [3.4, 6, 18]
    32 ];
    34 try {
    35     Math.imul({ valueOf: function() { throw "ha ha ha"; } });
    36     assertEq(true, false, "no error thrown");
    37 } catch (e) {
    38     assertEq(e, "ha ha ha");
    39 }
    41 var order = [];
    42 assertEq(Math.imul({ valueOf: function() { order.push("first"); return 0; } },
    43                    { valueOf: function() { order.push("second"); return 0; } }),
    44          0);
    45 assertEq(order[0], "first");
    46 assertEq(order[1], "second");
    48 var seen = [];
    49 try
    50 {
    51     Math.imul({ valueOf: function() { seen.push("one"); return 17; } },
    52               { valueOf: function() { throw "abort!"; } });
    53     assertEq(true, false, "no error thrown");
    54 }
    55 catch (e)
    56 {
    57   assertEq(e, "abort!", "should have thrown partway through, instead threw " + e);
    58 }
    59 assertEq(seen.length, 1);
    60 assertEq(seen[0], "one");
    62 assertEq(Math.imul(), 0);
    63 assertEq(Math.imul(100), 0);
    64 assertEq(Math.imul(NaN, 100), 0);
    65 assertEq(Math.imul(NaN, NaN), 0);
    66 assertEq(Math.imul(5, Infinity), 0);
    68 for (var i = 0; i < table.length; i++) {
    69     assertEq(Math.imul(table[i][0], table[i][1]), table[i][2]);
    70     assertEq(Math.imul(table[i][1], table[i][0]), table[i][2]);
    71 }

mercurial