js/src/jit-test/tests/ion/getelem.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 function testValue() {
     2     function f(arr, x) {
     3         return arr[x];
     4     }
     5     var a = [1, undefined, null, Math, 2.1, ""];
     6     for (var i=0; i<50; i++) {
     7         assertEq(f(a, 0), 1);
     8         assertEq(f(a, 1), undefined);
     9         assertEq(f(a, 2), null);
    10         assertEq(f(a, 3), Math);
    11         assertEq(f(a, 4), 2.1);
    12         assertEq(f(a, 5), "");
    13         assertEq(f(a, -1), undefined);
    14         assertEq(f(a, 6), undefined);
    15     }
    16 }
    17 testValue();
    19 function testOutOfBounds() {
    20     function f(arr, x) {
    21         return arr[x];
    22     }
    23     var a = [0, 1, 2, 3, 4];
    25     for (var j=0; j<4; j++) {
    26         for (var i=0; i<5; i++) {
    27             assertEq(f(a, i), i);
    28         }
    29         for (var i=5; i<10; i++) {
    30             assertEq(f(a, i), undefined);
    31         }
    32         for (var i=-1; i>-10; i--) {
    33             assertEq(f(a, i), undefined);
    34         }
    35     }
    36 }
    37 testOutOfBounds();
    39 function testHole() {
    40     function f(arr, x) {
    41         return arr[x];
    42     }
    43     var a = [0, , 2, ];
    44     for (var i=0; i<70; i++) {
    45         assertEq(f(a, 0), 0);
    46         assertEq(f(a, 1), undefined);
    47         assertEq(f(a, 2), 2);
    48         assertEq(f(a, 3), undefined);
    49     }
    50 }
    51 testHole();
    53 function testClassGuard() {
    54     function f(arr) {
    55         return arr[2];
    56     }
    57     var a = [1, 2, 3, 4];
    58     for (var i=0; i<90; i++) {
    59         assertEq(f(a), 3);
    60     }
    61     var b = {2: 100};
    62     assertEq(f(b), 100);
    63 }
    64 testClassGuard();
    66 function testGeneric1() {
    67     function f(o, i) {
    68         return o[i];
    69     }
    70     for (var i=0; i<100; i++) {
    71         assertEq(f("abc", 1), "b");
    72         assertEq(f("foo", "length"), 3);
    73         assertEq(f([], -1), undefined);
    74         assertEq(f({x: 1}, "x"), 1);
    75     }
    76 }
    77 testGeneric1();

mercurial