immutable-array-buffers-transferable.js (929B)
1 // |jit-test| --enable-arraybuffer-immutable; skip-if: !ArrayBuffer.prototype.transferToImmutable 2 3 load(libdir + "asserts.js"); 4 5 const scopes = [ 6 "SameProcess", 7 "DifferentProcess", 8 "DifferentProcessForIndexedDB", 9 ]; 10 11 function testArrayBufferTransferable(scope) { 12 var length = 4; 13 var byteLength = length * Uint8Array.BYTES_PER_ELEMENT; 14 15 var ab = new ArrayBuffer(byteLength); 16 assertEq(ab.immutable, false); 17 assertEq(ab.byteLength, byteLength); 18 19 var ta = new Uint8Array(ab); 20 ta.set([33, 44, 55, 66]); 21 22 var iab = ab.transferToImmutable(); 23 var ita = new Uint8Array(iab); 24 25 assertEq(ab.detached, true); 26 assertEq(iab.detached, false); 27 assertEq(ita.toString(), "33,44,55,66"); 28 29 assertThrowsInstanceOf(() => serialize(iab, [iab], {scope}), TypeError); 30 31 assertEq(ab.detached, true); 32 assertEq(iab.detached, false); 33 assertEq(ita.toString(), "33,44,55,66"); 34 } 35 scopes.forEach(testArrayBufferTransferable);