Source code
Revision control
Copy as Markdown
Other Tools
function test() {
var i8 = new Int8Array(4);
var i16 = new Int16Array(i8.buffer, 0, 2);
for (var i = 0; i < 100; ++i) {
i8.set([
0x11,
0x22,
0x33,
0x44,
]);
var oldval = 0x22_11;
// Ensure initial state is correct. (Little endian order!)
assertEq(i16[0], oldval);
assertEq(i16[1], 0x44_33);
// 0x88_99_55_66 will get truncated to 0x55_66.
var newval = 0x88_99_55_66;
oldval = Atomics.compareExchange(i16, 0, 0x22_11, newval);
// Assert success.
assertEq(oldval, 0x22_11);
// Ensure high bits 0x33_44 weren't overwritten with 0x88_99.
assertEq(i8[0], 0x66);
assertEq(i8[1], 0x55);
assertEq(i8[2], 0x33);
assertEq(i8[3], 0x44);
}
}
test();