diff options
Diffstat (limited to 'js/src/jit-test/tests/large-buffers/basic.js')
-rw-r--r-- | js/src/jit-test/tests/large-buffers/basic.js | 50 |
1 files changed, 50 insertions, 0 deletions
diff --git a/js/src/jit-test/tests/large-buffers/basic.js b/js/src/jit-test/tests/large-buffers/basic.js new file mode 100644 index 0000000000..58db1ee128 --- /dev/null +++ b/js/src/jit-test/tests/large-buffers/basic.js @@ -0,0 +1,50 @@ +// Basic smoke tests for large ArrayBuffers. + +let gb = 1 * 1024 * 1024 * 1024; + +function test1() { + let ab = new ArrayBuffer(7 * gb); + assertEq(ab.byteLength, 7 * gb); + + let taInt16 = new Int16Array(ab); + assertEq(taInt16.byteOffset, 0); + assertEq(taInt16.byteLength, 7 * gb); + assertEq(taInt16.length, 3.5 * gb); + + let taInt16LastGb = new Int16Array(ab, 6 * gb); + assertEq(taInt16LastGb.byteOffset, 6 * gb); + assertEq(taInt16LastGb.byteLength, 1 * gb); + assertEq(taInt16LastGb.length, 0.5 * gb); + + taInt16LastGb[0] = -99; + assertEq(taInt16[3 * gb], -99); + + let taUint8 = new Uint8Array(ab); + assertEq(taUint8.length, 7 * gb); + assertEq(taUint8[7 * gb - 1], 0); + + taUint8[7 * gb - 1] = 42; + taUint8[7 * gb - 1]++; + ++taUint8[7 * gb - 1]; + assertEq(taUint8[7 * gb - 1], 44); + + let dv = new DataView(ab); + assertEq(dv.getInt16(6 * gb, true), -99); + assertEq(dv.getUint8(7 * gb - 1, true), 44); + + dv.setInt16(6 * gb + 2, 123, true); + assertEq(taInt16LastGb[1], 123); +} +test1(); + +function test2() { + let taInt8 = new Int8Array(4 * gb); + assertEq(taInt8.length, 4 * gb); + taInt8[4 * gb - 4] = 42; + assertEq(taInt8[4 * gb - 4], 42); + + let dv = new DataView(taInt8.buffer); + assertEq(dv.getInt32(4 * gb - 4, true), 42); + assertEq(dv.getBigInt64(4 * gb - 8, true), 180388626432n); +} +test2(); |