| bad-range.js |
---
esid: sec-atomics.wait
description: >
Test range checking of Atomics.wait on arrays that allow atomic operations
info: |
Atomics.wait( typedArray, index, value, timeout )
1. Let buffer be ? ValidateSharedIntegerTypedArray(typedArray, true).
...
includes: [testAtomics.js]
features: [ArrayBuffer, Atomics, BigInt, DataView, SharedArrayBuffer, Symbol, TypedArray]
--- |
760 |
- |
| cannot-suspend-throws.js |
---
esid: sec-atomics.wait
description: >
Atomics.wait throws if agent cannot be suspended, CanBlock is false
info: |
Assuming [[CanBlock]] is false for the main host.
Atomics.wait( typedArray, index, value, timeout )
... (after args validation)
6. Let B be AgentCanSuspend().
7. If B is false, throw a TypeError exception.
...
features: [Atomics, BigInt, SharedArrayBuffer, TypedArray]
flags: [CanBlockIsFalse]
--- |
732 |
- |
| false-for-timeout-agent.js |
---
esid: sec-atomics.wait
description: >
False timeout arg should result in an +0 timeout
info: |
Atomics.wait( typedArray, index, value, timeout )
4. Let q be ? ToNumber(timeout).
Boolean -> If argument is true, return 1. If argument is false, return +0.
includes: [atomicsHelper.js]
features: [Atomics, BigInt, SharedArrayBuffer, TypedArray]
--- |
1816 |
- |
| false-for-timeout.js |
---
esid: sec-atomics.wait
description: >
False timeout arg should result in an +0 timeout
info: |
Atomics.wait( typedArray, index, value, timeout )
4. Let q be ? ToNumber(timeout).
Boolean -> If argument is true, return 1. If argument is false, return +0.
features: [Atomics, BigInt, SharedArrayBuffer, Symbol, Symbol.toPrimitive, TypedArray]
flags: [CanBlockIsTrue]
--- |
1172 |
- |
| nan-for-timeout.js |
---
esid: sec-atomics.wait
description: >
NaN timeout arg should result in an infinite timeout
info: |
Atomics.wait( typedArray, index, value, timeout )
4.Let q be ? ToNumber(timeout).
...
Undefined Return NaN.
5.If q is NaN, let t be +∞, else let t be max(q, 0)
includes: [atomicsHelper.js]
features: [Atomics, BigInt, SharedArrayBuffer, TypedArray]
--- |
1227 |
- |
| negative-index-throws.js |
---
esid: sec-atomics.wait
description: >
Throws a RangeError is index < 0
info: |
Atomics.wait( typedArray, index, value, timeout )
2.Let i be ? ValidateAtomicAccess(typedArray, index).
...
2.Let accessIndex be ? ToIndex(requestIndex).
...
2.b If integerIndex < 0, throw a RangeError exception
features: [Atomics, BigInt, SharedArrayBuffer, TypedArray]
--- |
1102 |
- |
| negative-timeout-agent.js |
---
esid: sec-atomics.wait
description: >
Test that Atomics.wait times out with a negative timeout
includes: [atomicsHelper.js]
features: [Atomics, BigInt, SharedArrayBuffer, TypedArray]
--- |
1052 |
- |
| negative-timeout.js |
---
esid: sec-atomics.wait
description: >
Test that Atomics.wait times out with a negative timeout
features: [Atomics, BigInt, SharedArrayBuffer, TypedArray]
flags: [CanBlockIsTrue]
--- |
542 |
- |
| no-spurious-wakeup-no-operation.js |
---
esid: sec-atomics.wait
description: >
Test that Atomics.wait returns the right result when it timed out and that
the time to time out is reasonable.
info: |
17. Let awoken be Suspend(WL, W, t).
18. If awoken is true, then
a. Assert: W is not on the list of waiters in WL.
19. Else,
a.Perform RemoveWaiter(WL, W).
includes: [atomicsHelper.js]
features: [Atomics, BigInt, SharedArrayBuffer, TypedArray]
--- |
1656 |
- |
| no-spurious-wakeup-on-add.js |
---
esid: sec-atomics.wait
description: >
Waiter does not spuriously notify on index which is subject to Add operation
includes: [atomicsHelper.js]
features: [Atomics, BigInt, SharedArrayBuffer, TypedArray]
--- |
1421 |
- |
| no-spurious-wakeup-on-and.js |
---
esid: sec-atomics.wait
description: >
Waiter does not spuriously nofity on index which is subject to And operation
includes: [atomicsHelper.js]
features: [Atomics, BigInt, SharedArrayBuffer, TypedArray]
--- |
1421 |
- |
| no-spurious-wakeup-on-compareExchange.js |
---
esid: sec-atomics.wait
description: >
Waiter does not spuriously notify on index which is subject to compareExchange operation
includes: [atomicsHelper.js]
features: [Atomics, BigInt, SharedArrayBuffer, TypedArray]
--- |
1447 |
- |
| no-spurious-wakeup-on-exchange.js |
---
esid: sec-atomics.wait
description: >
Waiter does not spuriously notify on index which is subject to exchange operation
includes: [atomicsHelper.js]
features: [Atomics, BigInt, SharedArrayBuffer, TypedArray]
--- |
1429 |
- |
| no-spurious-wakeup-on-or.js |
---
esid: sec-atomics.wait
description: >
Waiter does not spuriously notify on index which is subject to Or operation
includes: [atomicsHelper.js]
features: [Atomics, BigInt, SharedArrayBuffer, TypedArray]
--- |
1417 |
- |
| no-spurious-wakeup-on-store.js |
---
esid: sec-atomics.wait
description: >
Demonstrates that Atomics.store(...) is causing a waiting
includes: [atomicsHelper.js]
features: [Atomics, BigInt, SharedArrayBuffer, TypedArray]
--- |
1409 |
- |
| no-spurious-wakeup-on-sub.js |
---
esid: sec-atomics.wait
description: >
Waiter does not spuriously notify on index which is subject to Sub operation
includes: [atomicsHelper.js]
features: [Atomics, BigInt, SharedArrayBuffer, TypedArray]
--- |
1419 |
- |
| no-spurious-wakeup-on-xor.js |
---
esid: sec-atomics.wait
description: >
Waiter does not spuriously notify on index which is subject to xor operation
includes: [atomicsHelper.js]
features: [Atomics, BigInt, SharedArrayBuffer, TypedArray]
--- |
1419 |
- |
| non-bigint64-typedarray-throws.js |
---
esid: sec-validatesharedintegertypedarray
description: >
Throws a TypeError if typedArray arg is not a BigInt64Array
info: |
Atomics.wait( typedArray, index, value, timeout )
1.Let buffer be ? ValidateSharedIntegerTypedArray(typedArray, true).
...
ValidateSharedIntegerTypedArray(typedArray [ , waitable ] )
...
5. If waitable is true, then
a. If typeName is not "BigInt64Array",
throw a TypeError exception.
features: [Atomics, BigInt, SharedArrayBuffer]
--- |
1005 |
- |
| non-shared-bufferdata-throws.js |
---
esid: sec-atomics.wait
description: >
Throws a TypeError if typedArray.buffer is not a SharedArrayBuffer
info: |
Atomics.wait( typedArray, index, value, timeout )
1.Let buffer be ? ValidateSharedIntegerTypedArray(typedArray, true).
...
9.If IsSharedArrayBuffer(buffer) is false, throw a TypeError exception.
...
4.If bufferData is a Data Block, return false.
features: [ArrayBuffer, Atomics, BigInt, TypedArray]
--- |
951 |
- |
| null-bufferdata-throws.js |
---
esid: sec-atomics.wait
description: >
A null value for bufferData throws a TypeError
info: |
Atomics.wait( typedArray, index, value, timeout )
1.Let buffer be ? ValidateSharedIntegerTypedArray(typedArray, true).
...
ValidateSharedIntegerTypedArray(typedArray [ , onlyInt32 ] )
...
9.If IsSharedArrayBuffer(buffer) is false, throw a TypeError exception.
IsSharedArrayBuffer( obj )
...
3.If bufferData is null, return false.
includes: [detachArrayBuffer.js]
features: [ArrayBuffer, Atomics, BigInt, TypedArray]
--- |
1214 |
- |
| out-of-range-index-throws.js |
---
esid: sec-atomics.wait
description: >
Throws a RangeError if value of index arg is out of range
info: |
Atomics.wait( typedArray, index, value, timeout )
2.Let i be ? ValidateAtomicAccess(typedArray, index).
...
2.Let accessIndex be ? ToIndex(requestIndex).
...
5. If accessIndex ≥ length, throw a RangeError exception.
features: [Atomics, BigInt, SharedArrayBuffer, TypedArray]
--- |
1028 |
- |
| value-not-equal.js |
---
esid: sec-atomics.wait
description: >
Returns "not-equal" when value arg does not match an index in the typedArray
info: |
Atomics.wait( typedArray, index, value, timeout )
3.Let v be ? ToBigInt64(value).
...
14.If v is not equal to w, then
a.Perform LeaveCriticalSection(WL).
b. Return the String "not-equal".
includes: [atomicsHelper.js]
features: [Atomics, BigInt, SharedArrayBuffer, TypedArray]
--- |
1574 |
- |
| waiterlist-block-indexedposition-wake.js |
---
esid: sec-atomics.wait
description: >
Get the correct WaiterList
info: |
Atomics.wait( typedArray, index, value, timeout )
...
11. Let WL be GetWaiterList(block, indexedPosition).
...
GetWaiterList( block, i )
...
4. Return the WaiterList that is referenced by the pair (block, i).
includes: [atomicsHelper.js]
features: [Atomics, BigInt, SharedArrayBuffer, TypedArray]
--- |
2056 |
- |
| waiterlist-order-of-operations-is-fifo.js |
---
esid: sec-atomics.wait
description: >
New waiters should be applied to the end of the list and woken by order they entered the list (FIFO)
info: |
Atomics.wait( typedArray, index, value, timeout )
16.Perform AddWaiter(WL, W).
...
3.Add W to the end of the list of waiters in WL.
includes: [atomicsHelper.js]
features: [Atomics, BigInt, SharedArrayBuffer, TypedArray]
--- |
2679 |
- |
| was-woken-before-timeout.js |
---
esid: sec-atomics.wait
description: >
Test that Atomics.wait returns the right result when it was awoken before
a timeout
info: |
Atomics.wait( typedArray, index, value, timeout )
2.Let i be ? ValidateAtomicAccess(typedArray, index).
...
2.Let accessIndex be ? ToIndex(requestIndex).
9.If IsSharedArrayBuffer(buffer) is false, throw a TypeError exception.
...
3.If bufferData is a Data Block, return false
If value is undefined, then
Let index be 0.
includes: [atomicsHelper.js]
features: [Atomics, BigInt, SharedArrayBuffer, TypedArray]
--- |
1766 |
- |