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, DataView, SharedArrayBuffer, Symbol, TypedArray]
--- |
1062 |
bigint |
|
|
browser.js |
|
0 |
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, SharedArrayBuffer, TypedArray]
flags: [CanBlockIsFalse]
--- |
1078 |
descriptor.js |
---
esid: sec-atomics.wait
description: Testing descriptor property of Atomics.wait
includes: [propertyHelper.js]
features: [Atomics]
--- |
492 |
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, SharedArrayBuffer, TypedArray]
--- |
2103 |
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, SharedArrayBuffer, Symbol, Symbol.toPrimitive, TypedArray]
flags: [CanBlockIsTrue]
--- |
1510 |
good-views.js |
---
esid: sec-atomics.wait
description: >
Test Atomics.wait on arrays that allow atomic operations,
in an Agent that is allowed to wait.
includes: [atomicsHelper.js]
features: [Atomics]
--- |
1960 |
length.js |
---
esid: sec-atomics.wait
description: >
Atomics.wait.length is 4.
info: |
Atomics.wait ( ia, index, expect, timeout )
17 ECMAScript Standard Built-in Objects:
Every built-in Function object, including constructors, has a length
property whose value is an integer. Unless otherwise specified, this
value is equal to the largest number of named arguments shown in the
subclause headings for the function description, including optional
parameters. However, rest parameters shown using the form “...name”
are not included in the default argument count.
Unless otherwise specified, the length property of a built-in Function
object has the attributes { [[Writable]]: false, [[Enumerable]]: false,
[[Configurable]]: true }.
includes: [propertyHelper.js]
features: [Atomics]
--- |
1260 |
name.js |
---
esid: sec-atomics.wait
description: >
Atomics.wait.name is "wait".
includes: [propertyHelper.js]
features: [Atomics]
--- |
567 |
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, SharedArrayBuffer, TypedArray]
--- |
1516 |
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, SharedArrayBuffer, TypedArray]
--- |
1399 |
negative-timeout-agent.js |
---
esid: sec-atomics.wait
description: >
Test that Atomics.wait times out with a negative timeout
includes: [atomicsHelper.js]
features: [Atomics, SharedArrayBuffer, TypedArray]
--- |
1347 |
negative-timeout.js |
---
esid: sec-atomics.wait
description: >
Test that Atomics.wait times out with a negative timeout
features: [Atomics, SharedArrayBuffer, TypedArray]
flags: [CanBlockIsTrue]
--- |
896 |
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, SharedArrayBuffer, TypedArray]
--- |
1945 |
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, SharedArrayBuffer, TypedArray]
--- |
1707 |
no-spurious-wakeup-on-and.js |
---
esid: sec-atomics.wait
description: >
Waiter does not spuriously notify on index which is subject to And operation
includes: [atomicsHelper.js]
features: [Atomics, SharedArrayBuffer, TypedArray]
--- |
1707 |
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, SharedArrayBuffer, TypedArray]
--- |
1734 |
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, SharedArrayBuffer, TypedArray]
--- |
1717 |
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, SharedArrayBuffer, TypedArray]
--- |
1705 |
no-spurious-wakeup-on-store.js |
---
esid: sec-atomics.wait
description: >
Waiter does not spuriously notify on index which is subject to Store operation
includes: [atomicsHelper.js]
features: [Atomics, SharedArrayBuffer, TypedArray]
--- |
1718 |
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, SharedArrayBuffer, TypedArray]
--- |
1707 |
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, SharedArrayBuffer, TypedArray]
--- |
1707 |
non-int32-typedarray-throws.js |
---
esid: sec-atomics.wait
description: >
Throws a TypeError if typedArray arg is not an Int32Array
info: |
Atomics.wait( typedArray, index, value, timeout )
1.Let buffer be ? ValidateSharedIntegerTypedArray(typedArray, true).
...
5.If onlyInt32 is true, then
If typeName is not "Int32Array", throw a TypeError exception.
features: [Atomics, Float32Array, Float64Array, Int8Array, TypedArray, Uint16Array, Uint8Array, Uint8ClampedArray]
--- |
2621 |
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, TypedArray]
--- |
1063 |
not-a-typedarray-throws.js |
---
esid: sec-atomics.wait
description: >
Throws a TypeError if the typedArray arg is not a TypedArray object
info: |
Atomics.wait( typedArray, index, value, timeout )
1.Let buffer be ? ValidateSharedIntegerTypedArray(typedArray, true).
...
3.If typedArray does not have a [[TypedArrayName]] internal slot, throw a TypeError exception.
features: [Atomics]
--- |
903 |
not-an-object-throws.js |
---
esid: sec-atomics.wait
description: >
Throws a TypeError if typedArray arg is not an Object
info: |
Atomics.wait( typedArray, index, value, timeout )
1.Let buffer be ? ValidateSharedIntegerTypedArray(typedArray, true).
...
2. if Type(typedArray) is not Object, throw a TypeError exception
features: [Atomics, Symbol]
--- |
1419 |
null-bufferdata-throws.js |
---
esid: sec-atomics.wait
description: >
A null value for bufferData (detached) throws a TypeError
info: |
Atomics.wait( typedArray, index, value, timeout )
Let buffer be ? ValidateIntegerTypedArray(typedArray, true).
...
Let buffer be ? ValidateTypedArray(typedArray).
...
If IsDetachedBuffer(buffer) is true, throw a TypeError exception.
...
If arrayBuffer.[[ArrayBufferData]] is null, return true.
includes: [detachArrayBuffer.js]
features: [ArrayBuffer, Atomics, TypedArray]
--- |
1308 |
null-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).
Null -> Return +0.
includes: [atomicsHelper.js]
features: [Atomics, SharedArrayBuffer, TypedArray]
--- |
2044 |
null-for-timeout.js |
---
esid: sec-atomics.wait
description: >
Throws a TypeError if index arg can not be converted to an Integer
info: |
Atomics.wait( typedArray, index, value, timeout )
4. Let q be ? ToNumber(timeout).
Null -> Return +0.
features: [Atomics, SharedArrayBuffer, Symbol, Symbol.toPrimitive, TypedArray]
flags: [CanBlockIsTrue]
--- |
1472 |
object-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).
Null -> Return +0.
includes: [atomicsHelper.js]
features: [Atomics, SharedArrayBuffer, TypedArray]
--- |
2120 |
object-for-timeout.js |
---
esid: sec-atomics.wait
description: >
Throws a TypeError if index arg can not be converted to an Integer
info: |
Atomics.wait( typedArray, index, value, timeout )
4. Let q be ? ToNumber(timeout).
Object -> Apply the following steps:
Let primValue be ? ToPrimitive(argument, hint Number).
Return ? ToNumber(primValue).
features: [Atomics, SharedArrayBuffer, Symbol, Symbol.toPrimitive, TypedArray]
flags: [CanBlockIsTrue]
--- |
1658 |
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, SharedArrayBuffer, TypedArray]
--- |
1412 |
poisoned-object-for-timeout-throws-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).
Null -> Return +0.
includes: [atomicsHelper.js]
features: [Atomics, SharedArrayBuffer, TypedArray]
--- |
2172 |
poisoned-object-for-timeout-throws.js |
---
esid: sec-atomics.wait
description: >
Throws a TypeError if index arg can not be converted to an Integer
info: |
Atomics.wait( typedArray, index, value, timeout )
4. Let q be ? ToNumber(timeout).
Object -> Apply the following steps:
Let primValue be ? ToPrimitive(argument, hint Number).
Return ? ToNumber(primValue).
features: [Atomics, SharedArrayBuffer, Symbol, Symbol.toPrimitive, TypedArray]
--- |
1421 |
shell.js |
---
description: >
Collection of functions used to interact with Atomics.* operations across agent boundaries.
defines:
- $262.agent.getReportAsync
- $262.agent.getReport
- $262.agent.safeBroadcastAsync
- $262.agent.safeBroadcast
- $262.agent.setTimeout
- $262.agent.tryYield
- $262.agent.trySleep
--- |
11923 |
symbol-for-index-throws-agent.js |
---
esid: sec-atomics.wait
description: >
Throws a TypeError if index arg can not be converted to an Integer
info: |
Atomics.wait( typedArray, index, value, timeout )
2. Let i be ? ValidateAtomicAccess(typedArray, index).
ValidateAtomicAccess( typedArray, requestIndex )
2. Let accessIndex be ? ToIndex(requestIndex).
ToIndex ( value )
2. Else,
a. Let integerIndex be ? ToInteger(value).
ToInteger(value)
1. Let number be ? ToNumber(argument).
Symbol --> Throw a TypeError exception.
includes: [atomicsHelper.js]
features: [Atomics, SharedArrayBuffer, Symbol, Symbol.toPrimitive, TypedArray]
--- |
2534 |
symbol-for-index-throws.js |
---
esid: sec-atomics.wait
description: >
Throws a TypeError if index arg can not be converted to an Integer
info: |
Atomics.wait( typedArray, index, value, timeout )
2. Let i be ? ValidateAtomicAccess(typedArray, index).
ValidateAtomicAccess( typedArray, requestIndex )
2. Let accessIndex be ? ToIndex(requestIndex).
ToIndex ( value )
2. Else,
a. Let integerIndex be ? ToInteger(value).
ToInteger(value)
1. Let number be ? ToNumber(argument).
Symbol --> Throw a TypeError exception.
features: [Atomics, SharedArrayBuffer, Symbol, Symbol.toPrimitive, TypedArray]
--- |
1876 |
symbol-for-timeout-throws-agent.js |
---
esid: sec-atomics.wait
description: >
Throws a TypeError if index arg can not be converted to an Integer
info: |
Atomics.wait( typedArray, index, value, timeout )
4. Let q be ? ToNumber(timeout).
Symbol --> Throw a TypeError exception.
includes: [atomicsHelper.js]
features: [Atomics, SharedArrayBuffer, Symbol, Symbol.toPrimitive, TypedArray]
--- |
1913 |
symbol-for-timeout-throws.js |
---
esid: sec-atomics.wait
description: >
Throws a TypeError if index arg can not be converted to an Integer
info: |
Atomics.wait( typedArray, index, value, timeout )
4. Let q be ? ToNumber(timeout).
Symbol --> Throw a TypeError exception.
features: [Atomics, SharedArrayBuffer, Symbol, Symbol.toPrimitive, TypedArray]
--- |
1481 |
symbol-for-value-throws-agent.js |
---
esid: sec-atomics.wait
description: >
Throws a TypeError if value arg is a Symbol
info: |
Atomics.wait( typedArray, index, value, timeout )
3. Let v be ? ToInt32(value).
ToInt32(value)
1.Let number be ? ToNumber(argument).
Symbol --> Throw a TypeError exception.
includes: [atomicsHelper.js]
features: [Atomics, SharedArrayBuffer, Symbol, Symbol.toPrimitive, TypedArray]
--- |
2270 |
symbol-for-value-throws.js |
---
esid: sec-atomics.wait
description: >
Throws a TypeError if value arg is a Symbol
info: |
Atomics.wait( typedArray, index, value, timeout )
3. Let v be ? ToInt32(value).
ToInt32(value)
1.Let number be ? ToNumber(argument).
Symbol --> Throw a TypeError exception.
features: [Atomics, SharedArrayBuffer, Symbol, Symbol.toPrimitive, TypedArray]
--- |
1596 |
true-for-timeout-agent.js |
---
esid: sec-atomics.wait
description: >
True 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, SharedArrayBuffer, TypedArray]
--- |
2099 |
true-for-timeout.js |
---
esid: sec-atomics.wait
description: >
Throws a TypeError if index arg can not be converted to an Integer
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, SharedArrayBuffer, Symbol, Symbol.toPrimitive, TypedArray]
flags: [CanBlockIsTrue]
--- |
1528 |
undefined-for-timeout.js |
---
esid: sec-atomics.wait
description: >
Undefined 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, SharedArrayBuffer, TypedArray]
--- |
2285 |
undefined-index-defaults-to-zero.js |
---
esid: sec-atomics.wait
description: >
An undefined index arg should translate to 0
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, SharedArrayBuffer, TypedArray]
--- |
1928 |
validate-arraytype-before-index-coercion.js |
---
esid: sec-atomics.wait
description: >
TypedArray type is validated before `index` argument is coerced.
info: |
24.4.11 Atomics.wait ( typedArray, index, value, timeout )
1. Let buffer be ? ValidateSharedIntegerTypedArray(typedArray, true).
...
24.4.1.1 ValidateSharedIntegerTypedArray ( typedArray [ , onlyInt32 ] )
...
4. Let typeName be typedArray.[[TypedArrayName]].
5. If onlyInt32 is true, then
a. If typeName is not "Int32Array", throw a TypeError exception.
6. Else,
a. If typeName is not "Int8Array", "Uint8Array", "Int16Array", "Uint16Array", "Int32Array",
or "Uint32Array", throw a TypeError exception.
...
includes: [testTypedArray.js]
features: [Atomics, TypedArray]
--- |
1406 |
validate-arraytype-before-timeout-coercion.js |
---
esid: sec-atomics.notify
description: >
TypedArray type is validated before `timeout` argument is coerced.
info: |
24.4.11 Atomics.wait ( typedArray, index, value, timeout )
1. Let buffer be ? ValidateSharedIntegerTypedArray(typedArray, true).
...
24.4.1.1 ValidateSharedIntegerTypedArray ( typedArray [ , onlyInt32 ] )
...
4. Let typeName be typedArray.[[TypedArrayName]].
5. If onlyInt32 is true, then
a. If typeName is not "Int32Array", throw a TypeError exception.
6. Else,
a. If typeName is not "Int8Array", "Uint8Array", "Int16Array", "Uint16Array", "Int32Array",
or "Uint32Array", throw a TypeError exception.
...
includes: [testTypedArray.js]
features: [Atomics, TypedArray]
--- |
1416 |
validate-arraytype-before-value-coercion.js |
---
esid: sec-atomics.notify
description: >
TypedArray type is validated before `value` argument is coerced.
info: |
24.4.11 Atomics.wait ( typedArray, index, value, timeout )
1. Let buffer be ? ValidateSharedIntegerTypedArray(typedArray, true).
...
24.4.1.1 ValidateSharedIntegerTypedArray ( typedArray [ , onlyInt32 ] )
...
4. Let typeName be typedArray.[[TypedArrayName]].
5. If onlyInt32 is true, then
a. If typeName is not "Int32Array", throw a TypeError exception.
6. Else,
a. If typeName is not "Int8Array", "Uint8Array", "Int16Array", "Uint16Array", "Int32Array",
or "Uint32Array", throw a TypeError exception.
...
includes: [testTypedArray.js]
features: [Atomics, TypedArray]
--- |
1408 |
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 ? ToInt32(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, SharedArrayBuffer, TypedArray]
--- |
1879 |
wait-index-value-not-equal.js |
---
esid: sec-atomics.wait
description: >
Returns "not-equal" when value of index is not equal
info: |
Atomics.wait( typedArray, index, value, timeout )
14.If v is not equal to w, then
a.Perform LeaveCriticalSection(WL).
b. Return the String "not-equal".
includes: [atomicsHelper.js]
features: [Atomics, SharedArrayBuffer, TypedArray]
--- |
1936 |
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, SharedArrayBuffer, TypedArray]
--- |
2333 |
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, SharedArrayBuffer, TypedArray]
--- |
2957 |
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, SharedArrayBuffer, TypedArray]
--- |
2055 |