js/src/jit-test/tests/ion/getelem-bounds-coalesce.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.

     1 var a = [1,2,3,4];
     3 // Basic constants.
     4 function foo(x) {
     5   return x[0] + x[1] + x[2] + x[3];
     6 }
     7 for (var i = 0; i < 100; i++)
     8   assertEq(foo(a), 10);
     9 assertEq(foo([1,2,3]), NaN);
    11 // Basic terms.
    12 function foo2(x, n) {
    13   return x[n] + x[n + 1] + x[n + 2];
    14 }
    15 for (var i = 0; i < 100; i++)
    16   assertEq(foo2(a, 1), 9);
    17 assertEq(foo2(a, 2), NaN);
    19 // Term underflow.
    20 function foo3(x, n) {
    21   return x[n] + x[n + 1] + x[n + 2];
    22 }
    23 for (var i = 0; i < 100; i++)
    24   assertEq(foo3(a, 1), 9);
    25 assertEq(foo3(a, -1), NaN);
    27 // Integer overflow computing bound.
    28 function foo4(x, n) {
    29   return x[n] + x[n + 1] + x[n + 2];
    30 }
    31 for (var i = 0; i < 45; i++)
    32   assertEq(foo4(a, 1), 9);
    33 assertEq(foo4(a, 0x7fffffff), NaN);
    35 // Underflow at an offset.
    36 function foo5(x, n) {
    37   return x[n + 10] + x[n + 11] + x[n + 12];
    38 }
    39 for (var i = 0; i < 45; i++)
    40   assertEq(foo5(a, -9), 9);
    41 assertEq(foo5(a, -11), NaN);
    43 // Overflow at offset.
    44 function foo6(x, n) {
    45   return x[n - 10] + x[n - 11] + x[n - 12];
    46 }
    47 for (var i = 0; i < 45; i++)
    48   assertEq(foo6(a, 13), 9);
    49 assertEq(foo6(a, 14), NaN);

mercurial