js/src/jit-test/tests/basic/testArrayBufferSlice.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 testSlice() {
     2     function test(subBuf, starts, size) {
     3         var byteLength = size;
     4         var subBuffer = eval(subBuf);
     5         var subArray = new Int8Array(subBuffer);
     6         assertEq(subBuffer.byteLength, byteLength);
     7         for (var i = 0; i < size; ++i)
     8             assertEq(starts + i, subArray[i]);
     9     }
    11     var buffer = new ArrayBuffer(32);
    12     var array = new Int8Array(buffer);
    13     for (var i = 0; i < 32; ++i)
    14         array[i] = i;
    16     test("buffer.slice(0)", 0, 32);
    17     test("buffer.slice(16)", 16, 16);
    18     test("buffer.slice(24)", 24, 8);
    19     test("buffer.slice(32)", 32, 0);
    20     test("buffer.slice(40)", 32, 0);
    21     test("buffer.slice(80)", 32, 0);
    23     test("buffer.slice(-8)", 24, 8);
    24     test("buffer.slice(-16)", 16, 16);
    25     test("buffer.slice(-24)", 8, 24);
    26     test("buffer.slice(-32)", 0, 32);
    27     test("buffer.slice(-40)", 0, 32);
    28     test("buffer.slice(-80)", 0, 32);
    30     test("buffer.slice(0, 32)", 0, 32);
    31     test("buffer.slice(0, 16)", 0, 16);
    32     test("buffer.slice(8, 24)", 8, 16);
    33     test("buffer.slice(16, 32)", 16, 16);
    34     test("buffer.slice(24, 16)", 24, 0);
    36     test("buffer.slice(16, -8)", 16, 8);
    37     test("buffer.slice(-20, 30)", 12, 18);
    39     test("buffer.slice(-8, -20)", 24, 0);
    40     test("buffer.slice(-20, -8)", 12, 12);
    41     test("buffer.slice(-40, 16)", 0, 16);
    42     test("buffer.slice(-40, 40)", 0, 32);
    44     gczeal(7, 100000);
    45     var nurseryBuf = new ArrayBuffer(32);
    46     var arr = new Int8Array(nurseryBuf);
    47     arr[0] = 77;
    49     // tenure nurseryBuf during the slice operation
    50     nurseryBuf.slice; // Creates an object
    51     schedulegc(1);
    52     var newbuf = nurseryBuf.slice(0);
    53     var arr2 = new Int8Array(newbuf);
    54     assertEq(arr2[0], 77);
    55 }
    57 testSlice();

mercurial