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.

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

mercurial