js/src/jit-test/tests/basic/testArrayBufferSlice.js

branch
TOR_BUG_3246
changeset 7
129ffea94266
equal deleted inserted replaced
-1:000000000000 0:4e3da1b0381e
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 }
10
11 var buffer = new ArrayBuffer(32);
12 var array = new Int8Array(buffer);
13 for (var i = 0; i < 32; ++i)
14 array[i] = i;
15
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);
22
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);
29
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);
35
36 test("buffer.slice(16, -8)", 16, 8);
37 test("buffer.slice(-20, 30)", 12, 18);
38
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);
43
44 gczeal(7, 100000);
45 var nurseryBuf = new ArrayBuffer(32);
46 var arr = new Int8Array(nurseryBuf);
47 arr[0] = 77;
48
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 }
56
57 testSlice();

mercurial