js/src/jit-test/tests/ion/setelem.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 testInt32() {
     2     function f(arr, i) {
     3         arr[0] = 1;
     4         arr[1] = arr[0] + 1;
     5         arr[2] = arr[1] + arr[0];
     6         var x = arr[2]; // 3
     7         arr[x] = arr[x-1] + 1;
     8         arr[x+1] = arr[x] + i;
     9         return arr[4];
    10     }
    11     var a = [1, 2, 3, 4, 5, 6, 7, 8];
    12     for (var i=0; i<70; i++) {
    13         assertEq(f(a, i), i + 4);
    14     }
    15 }
    16 testInt32();
    18 function testDouble() {
    19     function f(arr, d) {
    20         arr[0] = d;
    21         for (var i=1; i<8; i++) {
    22             arr[i] = arr[i-1] + d;
    23         }
    24         return arr[7];
    25     }
    26     var a = [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0];
    27     for (var i=0; i<50; i++) {
    28         assertEq(f(a, Math.PI + i)|0, ((Math.PI + i) * 8)|0);
    29     }
    30 }
    31 testDouble();
    33 function testOutOfBounds() {
    34     function f(arr, i, v) {
    35         arr[i] = v;
    36     }
    37     var a = [1, 2];
    38     for (var i=0; i<90; i++) {
    39         f(a, 1, i);
    40     }
    41     assertEq(a[1], 89);
    43     f(a, 2, 40);
    44     f(a, 100, 50);
    45     f(a, -1, 3);
    47     assertEq(a[2], 40);
    48     assertEq(a[100], 50);
    49     assertEq(a[-1], 3);
    50 }
    51 testOutOfBounds();
    53 function testClassGuard() {
    54     function f(arr, v) {
    55         arr[1] = v;
    56     }
    57     var a = [1, 2, 3, 4];
    58     for (var i=0; i<90; i++) {
    59         f(a, i);
    60     }
    61     assertEq(a[1], 89);
    63     var b = {};
    64     f(b, 100);
    65     assertEq(b[1], 100);
    66 }
    67 testClassGuard();
    69 function testMultipleTypes() {
    70     function f(arr, v) {
    71         arr[1] = v;
    72     }
    73     var a = [1, 2, 3, 4];
    74     var b = [1.1, -233.2, 3.3];
    76     for (var i=0; i<90; i++) {
    77         f(a, i);
    78     }
    79     assertEq(a[1], 89);
    80     f(b, 20);
    81     assertEq(b[1], 20);
    82 }
    83 testMultipleTypes();
    85 function testNull() {
    86     function f(arr) {
    87         arr[0] = null;
    88     }
    90     var arr = [undefined];
    91     for (var i=0; i<100; i++) {
    92         f(arr);
    93     }
    94     assertEq(arr[0], null);
    95 }
    96 testNull();
    98 // Bug 722245.
    99 function testConstantGcThing() {
   100     function f(arr, x) {
   101         arr[x] = "abc";
   102     }
   103     var arr = ["", ""];
   104     for (var i=0; i<100; i++) {
   105         f(arr, 1);
   106     }
   107     assertEq(arr[1], "abc");
   108 }
   109 testConstantGcThing();

mercurial