bug1983499.js (741B)
1 function test() { 2 var i8 = new Int8Array(4); 3 var i16 = new Int16Array(i8.buffer, 0, 2); 4 5 for (var i = 0; i < 100; ++i) { 6 i8.set([ 7 0x11, 8 0x22, 9 0x33, 10 0x44, 11 ]); 12 13 var oldval = 0x22_11; 14 15 // Ensure initial state is correct. (Little endian order!) 16 assertEq(i16[0], oldval); 17 assertEq(i16[1], 0x44_33); 18 19 // 0x88_99_55_66 will get truncated to 0x55_66. 20 var newval = 0x88_99_55_66; 21 22 oldval = Atomics.compareExchange(i16, 0, 0x22_11, newval); 23 24 // Assert success. 25 assertEq(oldval, 0x22_11); 26 27 // Ensure high bits 0x33_44 weren't overwritten with 0x88_99. 28 assertEq(i8[0], 0x66); 29 assertEq(i8[1], 0x55); 30 assertEq(i8[2], 0x33); 31 assertEq(i8[3], 0x44); 32 } 33 } 34 test();