large-lengths-offsets.js (2187B)
1 const gb = 1 * 1024 * 1024 * 1024; 2 3 const bufferSmall = new ArrayBuffer(8); 4 const bufferLarge = new ArrayBuffer(6 * gb); 5 6 const taSmall = new Uint8Array(bufferSmall); 7 const taLargeOffset = new Uint8Array(bufferLarge, 5 * gb); 8 const taLargeLength = new Uint8Array(bufferLarge); 9 10 const dvSmall = new DataView(bufferSmall); 11 const dvLargeOffset = new DataView(bufferLarge, 5 * gb); 12 const dvLargeLength = new DataView(bufferLarge); 13 14 const TypedArrayLength = getSelfHostedValue("TypedArrayLength"); 15 16 function testBufferByteLengthInt32() { 17 var arr = [bufferLarge, bufferSmall]; 18 for (var i = 0; i < 2000; i++) { 19 var idx = +(i < 1900); // First 1 then 0. 20 assertEq(arr[idx].byteLength, idx === 0 ? 6 * gb : 8); 21 } 22 } 23 testBufferByteLengthInt32(); 24 25 function testTypedArrayByteOffsetInt32() { 26 var arr = [taLargeOffset, taSmall]; 27 for (var i = 0; i < 2000; i++) { 28 var idx = +(i < 1900); // First 1 then 0. 29 assertEq(arr[idx].byteOffset, idx === 0 ? 5 * gb : 0); 30 } 31 } 32 testTypedArrayByteOffsetInt32(); 33 34 function testTypedArrayLengthInt32() { 35 var arr = [taLargeLength, taSmall]; 36 for (var i = 0; i < 2000; i++) { 37 var idx = +(i < 1900); // First 1 then 0. 38 assertEq(TypedArrayLength(arr[idx]), idx === 0 ? 6 * gb : 8); 39 assertEq(arr[idx].length, idx === 0 ? 6 * gb : 8); 40 } 41 } 42 testTypedArrayLengthInt32(); 43 44 function testTypedArrayByteLengthInt32() { 45 var arr = [taLargeLength, taSmall]; 46 for (var i = 0; i < 2000; i++) { 47 var idx = +(i < 1900); // First 1 then 0. 48 assertEq(arr[idx].byteLength, idx === 0 ? 6 * gb : 8); 49 } 50 } 51 testTypedArrayByteLengthInt32(); 52 53 function testDataViewByteOffsetInt32() { 54 var arr = [dvLargeOffset, dvSmall]; 55 for (var i = 0; i < 2000; i++) { 56 var idx = +(i < 1900); // First 1 then 0. 57 assertEq(arr[idx].byteOffset, idx === 0 ? 5 * gb : 0); 58 } 59 } 60 testDataViewByteOffsetInt32(); 61 62 function testDataViewByteLengthInt32() { 63 var arr = [dvLargeLength, dvSmall]; 64 for (var i = 0; i < 2000; i++) { 65 var idx = +(i < 1900); // First 1 then 0. 66 assertEq(arr[idx].byteLength, idx === 0 ? 6 * gb : 8); 67 } 68 } 69 testDataViewByteLengthInt32();