(ta, index)
| 424 | } |
| 425 | |
| 426 | function TestAtomicsOperations(ta, index) { |
| 427 | const one = IsBigIntTypedArray(ta) ? 1n : 1; |
| 428 | const two = IsBigIntTypedArray(ta) ? 2n : 2; |
| 429 | const three = IsBigIntTypedArray(ta) ? 3n : 3; |
| 430 | |
| 431 | Atomics.store(ta, index, one); |
| 432 | assertEquals(one, Atomics.load(ta, index)); |
| 433 | assertEquals(one, Atomics.exchange(ta, index, two)); |
| 434 | assertEquals(two, Atomics.load(ta, index)); |
| 435 | assertEquals(two, Atomics.compareExchange(ta, index, two, three)); |
| 436 | assertEquals(three, Atomics.load(ta, index)); |
| 437 | |
| 438 | assertEquals(three, Atomics.sub(ta, index, two)); // 3 - 2 = 1 |
| 439 | assertEquals(one, Atomics.load(ta, index)); |
| 440 | |
| 441 | assertEquals(one, Atomics.add(ta, index, one)); // 1 + 1 = 2 |
| 442 | assertEquals(two, Atomics.load(ta, index)); |
| 443 | |
| 444 | assertEquals(two, Atomics.or(ta, index, one)); // 2 | 1 = 3 |
| 445 | assertEquals(three, Atomics.load(ta, index)); |
| 446 | |
| 447 | assertEquals(three, Atomics.xor(ta, index, one)); // 3 ^ 1 = 2 |
| 448 | assertEquals(two, Atomics.load(ta, index)); |
| 449 | |
| 450 | assertEquals(two, Atomics.and(ta, index, three)); // 2 & 3 = 2 |
| 451 | assertEquals(two, Atomics.load(ta, index)); |
| 452 | } |
| 453 | |
| 454 | function AssertAtomicsOperationsThrow(ta, index, error) { |
| 455 | const one = IsBigIntTypedArray(ta) ? 1n : 1; |
no test coverage detected