| function shouldBe(actual, expected) { |
| if (actual !== expected) |
| throw new Error('bad value: ' + actual); |
| } |
| |
| var array = new BigUint64Array(new SharedArrayBuffer(8 * 8)); |
| shouldBe(array.length, 8); |
| |
| function test(array) { |
| shouldBe(Atomics.add(array, 0, 8n), 0n); |
| shouldBe(array[0], 8n); |
| shouldBe(Atomics.sub(array, 0, 1n), 8n); |
| shouldBe(array[0], 7n); |
| shouldBe(Atomics.and(array, 0, 0b11110n), 7n); |
| shouldBe(array[0], 6n); |
| shouldBe(Atomics.compareExchange(array, 0, 5n, 0n), 6n); |
| shouldBe(array[0], 6n); |
| shouldBe(Atomics.compareExchange(array, 0, 6n, 1n), 6n); |
| shouldBe(array[0], 1n); |
| shouldBe(Atomics.exchange(array, 0, 2n), 1n); |
| shouldBe(array[0], 2n); |
| shouldBe(Atomics.load(array, 0), 2n); |
| shouldBe(Atomics.or(array, 0, 1n), 2n); |
| shouldBe(array[0], 3n); |
| shouldBe(Atomics.store(array, 0, 6n), 6n); |
| shouldBe(array[0], 6n); |
| shouldBe(Atomics.xor(array, 0, 0b11111n), 6n); |
| shouldBe(array[0], 25n); |
| shouldBe(Atomics.store(array, 0, 0n), 0n); |
| } |
| noInline(array); |
| |
| for (var i = 0; i < 1e4; ++i) |
| test(array); |