bad-range.js |
---
esid: sec-atomics.waitasync
description: >
Test range checking of Atomics.waitAsync on arrays that allow atomic operations
info: |
Atomics.waitAsync( typedArray, index, value, timeout )
1. Return DoWait(async, typedArray, index, value, timeout).
DoWait ( mode, typedArray, index, value, timeout )
...
2. Let i be ? ValidateAtomicAccess(typedArray, index).
...
includes: [testAtomics.js]
features: [Atomics.waitAsync, Atomics, SharedArrayBuffer, ArrayBuffer, DataView, Symbol, TypedArray]
--- |
1163 |
bigint |
|
|
browser.js |
|
0 |
descriptor.js |
---
esid: sec-atomics.waitasync
description: Atomics.waitAsync property descriptor
info: |
ES Section 17
Every other data property described in clauses 18 through 26 and in Annex
B.2 has the attributes { [[Writable]]: true, [[Enumerable]]: false,
[[Configurable]]: true } unless otherwise specified.
includes: [propertyHelper.js]
features: [Atomics.waitAsync, Atomics]
--- |
698 |
false-for-timeout-agent.js |
---
esid: sec-atomics.waitasync
description: >
False timeout arg should result in an +0 timeout
info: |
Atomics.waitAsync( typedArray, index, value, timeout )
1. Return DoWait(async, typedArray, index, value, timeout).
DoWait ( mode, typedArray, index, value, timeout )
6. Let q be ? ToNumber(timeout).
flags: [async]
includes: [atomicsHelper.js]
features: [Atomics.waitAsync, SharedArrayBuffer, TypedArray, Atomics, arrow-function, async-functions]
--- |
2928 |
false-for-timeout.js |
---
esid: sec-atomics.waitasync
description: >
False timeout arg should result in an +0 timeout
info: |
Atomics.waitAsync( typedArray, index, value, timeout )
1. Return DoWait(async, typedArray, index, value, timeout).
DoWait ( mode, typedArray, index, value, timeout )
6. Let q be ? ToNumber(timeout).
flags: [async]
features: [Atomics.waitAsync, SharedArrayBuffer, TypedArray, Atomics, computed-property-names, Symbol, Symbol.toPrimitive, arrow-function]
--- |
1985 |
good-views.js |
---
esid: sec-atomics.waitasync
description: >
Test Atomics.waitAsync on arrays that allow atomic operations
flags: [async]
includes: [atomicsHelper.js, asyncHelpers.js]
features: [Atomics.waitAsync, Atomics]
--- |
2232 |
implicit-infinity-for-timeout.js |
---
esid: sec-atomics.waitasync
description: >
Undefined timeout arg is coerced to zero
info: |
Atomics.waitAsync( typedArray, index, value, timeout )
1. Return DoWait(async, typedArray, index, value, timeout).
DoWait ( mode, typedArray, index, value, timeout )
6. Let q be ? ToNumber(timeout).
...
Undefined Return NaN.
5.If q is NaN, let t be +∞, else let t be max(q, 0)
flags: [async]
features: [Atomics.waitAsync, SharedArrayBuffer, TypedArray, Atomics, computed-property-names, Symbol, Symbol.toPrimitive, arrow-function]
--- |
1162 |
is-function.js |
---
esid: sec-atomics.waitasync
description: Atomics.waitAsync is callable
features: [Atomics.waitAsync, Atomics]
--- |
443 |
length.js |
---
esid: sec-atomics.waitasync
description: >
Atomics.waitAsync.length is 4.
info: |
Atomics.waitAsync ( 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.waitAsync, Atomics]
--- |
1193 |
name.js |
---
esid: sec-atomics.waitasync
description: >
Atomics.waitAsync.name is "waitAsync".
includes: [propertyHelper.js]
features: [Atomics.waitAsync, Atomics]
--- |
505 |
nan-for-timeout-agent.js |
---
esid: sec-atomics.waitasync
description: >
NaN timeout arg should result in an infinite timeout
info: |
Atomics.waitAsync( typedArray, index, value, timeout )
1. Return DoWait(async, typedArray, index, value, timeout).
DoWait ( mode, typedArray, index, value, timeout )
6. Let q be ? ToNumber(timeout).
flags: [async]
includes: [atomicsHelper.js]
features: [Atomics.waitAsync, SharedArrayBuffer, TypedArray, Atomics, arrow-function, async-functions]
--- |
1638 |
negative-index-throws.js |
---
esid: sec-atomics.waitasync
description: >
Throws a RangeError is index < 0
info: |
Atomics.waitAsync( typedArray, index, value, timeout )
1. Return DoWait(async, typedArray, index, value, timeout).
DoWait ( mode, typedArray, index, value, timeout )
1. Let buffer be ? ValidateSharedIntegerTypedArray(typedArray, true).
2. Let i be ? ValidateAtomicAccess(typedArray, index).
features: [Atomics.waitAsync, SharedArrayBuffer, TypedArray, Atomics]
--- |
1720 |
negative-timeout-agent.js |
---
esid: sec-atomics.waitasync
description: >
Test that Atomics.waitAsync times out with a negative timeout
info: |
Atomics.waitAsync( typedArray, index, value, timeout )
1. Return DoWait(async, typedArray, index, value, timeout).
DoWait ( mode, typedArray, index, value, timeout )
6. Let q be ? ToNumber(timeout).
flags: [async]
includes: [atomicsHelper.js]
features: [Atomics.waitAsync, SharedArrayBuffer, TypedArray, Atomics, arrow-function, async-functions]
--- |
1646 |
negative-timeout.js |
---
esid: sec-atomics.waitasync
description: >
Test that Atomics.waitAsync times out with a negative timeout
info: |
Atomics.waitAsync( typedArray, index, value, timeout )
1. Return DoWait(async, typedArray, index, value, timeout).
DoWait ( mode, typedArray, index, value, timeout )
6. Let q be ? ToNumber(timeout).
flags: [async]
features: [Atomics.waitAsync, SharedArrayBuffer, TypedArray, Atomics, destructuring-binding, arrow-function]
--- |
1077 |
no-spurious-wakeup-no-operation.js |
---
esid: sec-atomics.waitasync
description: >
Test that Atomics.waitAsync returns the right result when it timed out and that
the time to time out is reasonable.
info: |
AddWaiter ( WL, waiterRecord )
5. Append waiterRecord as the last element of WL.[[Waiters]]
6. If waiterRecord.[[Timeout]] is finite, then in parallel,
a. Wait waiterRecord.[[Timeout]] milliseconds.
b. Perform TriggerTimeout(WL, waiterRecord).
TriggerTimeout( WL, waiterRecord )
3. If waiterRecord is in WL.[[Waiters]], then
a. Set waiterRecord.[[Result]] to "timed-out".
b. Perform RemoveWaiter(WL, waiterRecord).
c. Perform NotifyWaiter(WL, waiterRecord).
4. Perform LeaveCriticalSection(WL).
flags: [async]
includes: [atomicsHelper.js]
features: [Atomics.waitAsync, SharedArrayBuffer, TypedArray, Atomics, arrow-function, async-functions]
--- |
2369 |
no-spurious-wakeup-on-add.js |
---
esid: sec-atomics.waitasync
description: >
Waiter does not spuriously notify on index which is subject to Add operation
info: |
AddWaiter ( WL, waiterRecord )
5. Append waiterRecord as the last element of WL.[[Waiters]]
6. If waiterRecord.[[Timeout]] is finite, then in parallel,
a. Wait waiterRecord.[[Timeout]] milliseconds.
b. Perform TriggerTimeout(WL, waiterRecord).
TriggerTimeout( WL, waiterRecord )
3. If waiterRecord is in WL.[[Waiters]], then
a. Set waiterRecord.[[Result]] to "timed-out".
b. Perform RemoveWaiter(WL, waiterRecord).
c. Perform NotifyWaiter(WL, waiterRecord).
4. Perform LeaveCriticalSection(WL).
flags: [async]
includes: [atomicsHelper.js]
features: [Atomics.waitAsync, SharedArrayBuffer, TypedArray, Atomics, arrow-function, async-functions]
--- |
2356 |
no-spurious-wakeup-on-and.js |
---
esid: sec-atomics.waitasync
description: >
Waiter does not spuriously notify on index which is subject to And operation
info: |
AddWaiter ( WL, waiterRecord )
5. Append waiterRecord as the last element of WL.[[Waiters]]
6. If waiterRecord.[[Timeout]] is finite, then in parallel,
a. Wait waiterRecord.[[Timeout]] milliseconds.
b. Perform TriggerTimeout(WL, waiterRecord).
TriggerTimeout( WL, waiterRecord )
3. If waiterRecord is in WL.[[Waiters]], then
a. Set waiterRecord.[[Result]] to "timed-out".
b. Perform RemoveWaiter(WL, waiterRecord).
c. Perform NotifyWaiter(WL, waiterRecord).
4. Perform LeaveCriticalSection(WL).
flags: [async]
includes: [atomicsHelper.js]
features: [Atomics.waitAsync, SharedArrayBuffer, TypedArray, Atomics, arrow-function, async-functions]
--- |
2356 |
no-spurious-wakeup-on-compareExchange.js |
---
esid: sec-atomics.waitasync
description: >
Waiter does not spuriously notify on index which is subject to compareExchange operation
info: |
AddWaiter ( WL, waiterRecord )
5. Append waiterRecord as the last element of WL.[[Waiters]]
6. If waiterRecord.[[Timeout]] is finite, then in parallel,
a. Wait waiterRecord.[[Timeout]] milliseconds.
b. Perform TriggerTimeout(WL, waiterRecord).
TriggerTimeout( WL, waiterRecord )
3. If waiterRecord is in WL.[[Waiters]], then
a. Set waiterRecord.[[Result]] to "timed-out".
b. Perform RemoveWaiter(WL, waiterRecord).
c. Perform NotifyWaiter(WL, waiterRecord).
4. Perform LeaveCriticalSection(WL).
flags: [async]
includes: [atomicsHelper.js]
features: [Atomics.waitAsync, SharedArrayBuffer, TypedArray, Atomics, arrow-function, async-functions]
--- |
2383 |
no-spurious-wakeup-on-exchange.js |
---
esid: sec-atomics.waitasync
description: >
Waiter does not spuriously notify on index which is subject to exchange operation
info: |
AddWaiter ( WL, waiterRecord )
5. Append waiterRecord as the last element of WL.[[Waiters]]
6. If waiterRecord.[[Timeout]] is finite, then in parallel,
a. Wait waiterRecord.[[Timeout]] milliseconds.
b. Perform TriggerTimeout(WL, waiterRecord).
TriggerTimeout( WL, waiterRecord )
3. If waiterRecord is in WL.[[Waiters]], then
a. Set waiterRecord.[[Result]] to "timed-out".
b. Perform RemoveWaiter(WL, waiterRecord).
c. Perform NotifyWaiter(WL, waiterRecord).
4. Perform LeaveCriticalSection(WL).
flags: [async]
includes: [atomicsHelper.js]
features: [Atomics.waitAsync, SharedArrayBuffer, TypedArray, Atomics, arrow-function, async-functions]
--- |
2366 |
no-spurious-wakeup-on-or.js |
---
esid: sec-atomics.waitasync
description: >
Waiter does not spuriously notify on index which is subject to Or operation
info: |
AddWaiter ( WL, waiterRecord )
5. Append waiterRecord as the last element of WL.[[Waiters]]
6. If waiterRecord.[[Timeout]] is finite, then in parallel,
a. Wait waiterRecord.[[Timeout]] milliseconds.
b. Perform TriggerTimeout(WL, waiterRecord).
TriggerTimeout( WL, waiterRecord )
3. If waiterRecord is in WL.[[Waiters]], then
a. Set waiterRecord.[[Result]] to "timed-out".
b. Perform RemoveWaiter(WL, waiterRecord).
c. Perform NotifyWaiter(WL, waiterRecord).
4. Perform LeaveCriticalSection(WL).
flags: [async]
includes: [atomicsHelper.js]
features: [Atomics.waitAsync, SharedArrayBuffer, TypedArray, Atomics, arrow-function, async-functions]
--- |
2354 |
no-spurious-wakeup-on-store.js |
---
esid: sec-atomics.waitasync
description: >
Waiter does not spuriously notify on index which is subject to Store operation
info: |
AddWaiter ( WL, waiterRecord )
5. Append waiterRecord as the last element of WL.[[Waiters]]
6. If waiterRecord.[[Timeout]] is finite, then in parallel,
a. Wait waiterRecord.[[Timeout]] milliseconds.
b. Perform TriggerTimeout(WL, waiterRecord).
TriggerTimeout( WL, waiterRecord )
3. If waiterRecord is in WL.[[Waiters]], then
a. Set waiterRecord.[[Result]] to "timed-out".
b. Perform RemoveWaiter(WL, waiterRecord).
c. Perform NotifyWaiter(WL, waiterRecord).
4. Perform LeaveCriticalSection(WL).
flags: [async]
includes: [atomicsHelper.js]
features: [Atomics.waitAsync, SharedArrayBuffer, TypedArray, Atomics, arrow-function, async-functions]
--- |
2365 |
no-spurious-wakeup-on-sub.js |
---
esid: sec-atomics.waitasync
description: >
Waiter does not spuriously notify on index which is subject to Sub operation
info: |
AddWaiter ( WL, waiterRecord )
5. Append waiterRecord as the last element of WL.[[Waiters]]
6. If waiterRecord.[[Timeout]] is finite, then in parallel,
a. Wait waiterRecord.[[Timeout]] milliseconds.
b. Perform TriggerTimeout(WL, waiterRecord).
TriggerTimeout( WL, waiterRecord )
3. If waiterRecord is in WL.[[Waiters]], then
a. Set waiterRecord.[[Result]] to "timed-out".
b. Perform RemoveWaiter(WL, waiterRecord).
c. Perform NotifyWaiter(WL, waiterRecord).
4. Perform LeaveCriticalSection(WL).
flags: [async]
includes: [atomicsHelper.js]
features: [Atomics.waitAsync, SharedArrayBuffer, TypedArray, Atomics, arrow-function, async-functions]
--- |
2356 |
no-spurious-wakeup-on-xor.js |
---
esid: sec-atomics.waitasync
description: >
Waiter does not spuriously notify on index which is subject to xor operation
info: |
AddWaiter ( WL, waiterRecord )
5. Append waiterRecord as the last element of WL.[[Waiters]]
6. If waiterRecord.[[Timeout]] is finite, then in parallel,
a. Wait waiterRecord.[[Timeout]] milliseconds.
b. Perform TriggerTimeout(WL, waiterRecord).
TriggerTimeout( WL, waiterRecord )
3. If waiterRecord is in WL.[[Waiters]], then
a. Set waiterRecord.[[Result]] to "timed-out".
b. Perform RemoveWaiter(WL, waiterRecord).
c. Perform NotifyWaiter(WL, waiterRecord).
4. Perform LeaveCriticalSection(WL).
flags: [async]
includes: [atomicsHelper.js]
features: [Atomics.waitAsync, SharedArrayBuffer, TypedArray, Atomics, arrow-function, async-functions]
--- |
2356 |
non-int32-typedarray-throws.js |
---
esid: sec-atomics.waitasync
description: >
Throws a TypeError if typedArray arg is not an Int32Array
info: |
Atomics.waitAsync( typedArray, index, value, timeout )
1. Return DoWait(async, typedArray, index, value, timeout).
DoWait ( mode, 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 "Int32Array" or "BigInt64Array", throw a TypeError exception.
features: [Atomics.waitAsync, Float32Array, Float64Array, Int8Array, TypedArray, Uint16Array, Uint8Array, Uint8ClampedArray, arrow-function, SharedArrayBuffer, Atomics]
--- |
4543 |
non-shared-bufferdata-throws.js |
---
esid: sec-atomics.waitasync
description: >
Throws a TypeError if typedArray.buffer is not a SharedArrayBuffer
info: |
Atomics.waitAsync( typedArray, index, value, timeout )
1. Return DoWait(async, typedArray, index, value, timeout).
DoWait ( mode, 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 "Int32Array" or "BigInt64Array", throw a TypeError exception.
features: [Atomics.waitAsync, ArrayBuffer, Atomics, TypedArray, arrow-function]
--- |
1474 |
not-a-typedarray-throws.js |
---
esid: sec-atomics.waitasync
description: >
Throws a TypeError if the typedArray arg is not a TypedArray object
info: |
Atomics.waitAsync( typedArray, index, value, timeout )
1. Return DoWait(async, typedArray, index, value, timeout).
DoWait ( mode, typedArray, index, value, timeout )
1. Let buffer be ? ValidateSharedIntegerTypedArray(typedArray, true).
ValidateSharedIntegerTypedArray ( typedArray [ , waitable ] )
2. Perform ? RequireInternalSlot(typedArray, [[TypedArrayName]]).
RequireInternalSlot ( O, internalSlot )
1. If Type(O) is not Object, throw a TypeError exception.
2. If O does not have an internalSlot internal slot, throw a TypeError exception.
features: [Atomics.waitAsync, arrow-function, Atomics]
--- |
1494 |
not-an-object-throws.js |
---
esid: sec-atomics.waitasync
description: >
Throws a TypeError if typedArray arg is not an Object
info: |
Atomics.waitAsync( typedArray, index, value, timeout )
1. Return DoWait(async, typedArray, index, value, timeout).
DoWait ( mode, typedArray, index, value, timeout )
1. Let buffer be ? ValidateSharedIntegerTypedArray(typedArray, true).
ValidateSharedIntegerTypedArray ( typedArray [ , waitable ] )
2. Perform ? RequireInternalSlot(typedArray, [[TypedArrayName]]).
RequireInternalSlot ( O, internalSlot )
1. If Type(O) is not Object, throw a TypeError exception.
2. If O does not have an internalSlot internal slot, throw a TypeError exception.
features: [Atomics.waitAsync, Symbol, arrow-function, Atomics]
--- |
2561 |
null-bufferdata-throws.js |
---
esid: sec-atomics.waitasync
description: >
A null value for bufferData throws a TypeError
info: |
Atomics.waitAsync( typedArray, index, value, timeout )
1. Return DoWait(async, typedArray, index, value, timeout).
DoWait ( mode, typedArray, index, value, timeout )
1. Let buffer be ? ValidateSharedIntegerTypedArray(typedArray, true).
ValidateSharedIntegerTypedArray ( typedArray [ , waitable ] )
2. Perform ? RequireInternalSlot(typedArray, [[TypedArrayName]]).
RequireInternalSlot ( O, internalSlot )
1. If Type(O) is not Object, throw a TypeError exception.
2. If O does not have an internalSlot internal slot, throw a TypeError exception.
includes: [detachArrayBuffer.js]
features: [Atomics.waitAsync, ArrayBuffer, Atomics, TypedArray]
--- |
1713 |
null-for-timeout-agent.js |
---
esid: sec-atomics.waitasync
description: >
null timeout arg should result in an +0 timeout
info: |
Atomics.waitAsync( typedArray, index, value, timeout )
1. Return DoWait(async, typedArray, index, value, timeout).
DoWait ( mode, typedArray, index, value, timeout )
6. Let q be ? ToNumber(timeout).
Null -> Return +0.
flags: [async]
includes: [atomicsHelper.js]
features: [Atomics.waitAsync, SharedArrayBuffer, TypedArray, Atomics, arrow-function, async-functions]
--- |
2946 |
null-for-timeout.js |
---
esid: sec-atomics.waitasync
description: >
null timeout arg should result in an +0 timeout
info: |
Atomics.waitAsync( typedArray, index, value, timeout )
1. Return DoWait(async, typedArray, index, value, timeout).
DoWait ( mode, typedArray, index, value, timeout )
6. Let q be ? ToNumber(timeout).
Null -> Return +0.
features: [Atomics.waitAsync, SharedArrayBuffer, Symbol, Symbol.toPrimitive, TypedArray, computed-property-names, Atomics, arrow-function]
--- |
1515 |
object-for-timeout-agent.js |
---
esid: sec-atomics.waitasync
description: >
Object valueOf, toString, toPrimitive Zero timeout arg should result in an +0 timeout
info: |
Atomics.waitAsync( typedArray, index, value, timeout )
1. Return DoWait(async, typedArray, index, value, timeout).
DoWait ( mode, typedArray, index, value, timeout )
6. Let q be ? ToNumber(timeout).
Object -> Apply the following steps:
Let primValue be ? ToPrimitive(argument, hint Number).
Return ? ToNumber(primValue).
flags: [async]
includes: [atomicsHelper.js]
features: [Atomics.waitAsync, SharedArrayBuffer, TypedArray, Atomics, arrow-function, async-functions]
--- |
3171 |
object-for-timeout.js |
---
esid: sec-atomics.waitasync
description: >
Object valueOf, toString, toPrimitive Zero timeout arg should result in an +0 timeout
info: |
Atomics.waitAsync( typedArray, index, value, timeout )
1. Return DoWait(async, typedArray, index, value, timeout).
DoWait ( mode, typedArray, index, value, timeout )
6. Let q be ? ToNumber(timeout).
Object -> Apply the following steps:
Let primValue be ? ToPrimitive(argument, hint Number).
Return ? ToNumber(primValue).
features: [Atomics.waitAsync, SharedArrayBuffer, Symbol, Symbol.toPrimitive, TypedArray, computed-property-names, Atomics, arrow-function]
flags: [async]
--- |
2219 |
out-of-range-index-throws.js |
---
esid: sec-atomics.waitasync
description: >
Throws a RangeError if value of index arg is out of range
info: |
Atomics.waitAsync( typedArray, index, value, timeout )
1. Return DoWait(async, typedArray, index, value, timeout).
DoWait ( mode, 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.waitAsync, SharedArrayBuffer, TypedArray, Atomics]
--- |
1789 |
poisoned-object-for-timeout-throws-agent.js |
---
esid: sec-atomics.waitasync
description: >
False timeout arg should result in an +0 timeout
info: |
Atomics.waitAsync( typedArray, index, value, timeout )
1. Return DoWait(async, typedArray, index, value, timeout).
DoWait ( mode, typedArray, index, value, timeout )
6. Let q be ? ToNumber(timeout).
Let primValue be ? ToPrimitive(argument, hint Number).
Return ? ToNumber(primValue).
flags: [async]
includes: [atomicsHelper.js]
features: [Atomics.waitAsync, SharedArrayBuffer, TypedArray, Atomics, arrow-function, async-functions]
--- |
2463 |
poisoned-object-for-timeout-throws.js |
---
esid: sec-atomics.waitasync
description: >
Throws a TypeError if index arg can not be converted to an Integer
info: |
Atomics.waitAsync( typedArray, index, value, timeout )
1. Return DoWait(async, typedArray, index, value, timeout).
DoWait ( mode, typedArray, index, value, timeout )
6. Let q be ? ToNumber(timeout).
Let primValue be ? ToPrimitive(argument, hint Number).
Return ? ToNumber(primValue).
features: [Atomics.waitAsync, SharedArrayBuffer, Symbol, Symbol.toPrimitive, TypedArray, computed-property-names, Atomics]
--- |
1586 |
returns-result-object-value-is-promise-resolves-to-ok.js |
---
esid: sec-atomics.waitasync
description: >
Atomics.waitAsync returns a result object containing a property named "value" whose value is a promise that resolves to "ok" and async is true.
info: |
Atomics.waitAsync( typedArray, index, value, timeout )
1. Return DoWait(async, typedArray, index, value, timeout).
DoWait ( mode, typedArray, index, value, timeout )
...
13. Let promiseCapability be undefined.
14. If mode is async, then
a. Set promiseCapability to ! NewPromiseCapability(%Promise%).
...
Perform ! CreateDataPropertyOrThrow(_resultObject_, *"async"*, *true*).
Perform ! CreateDataPropertyOrThrow(_resultObject_, *"value"*, _promiseCapability_.[[Promise]]).
Return _resultObject_.
flags: [async]
features: [Atomics.waitAsync, TypedArray, SharedArrayBuffer, destructuring-binding, Atomics, arrow-function]
--- |
1806 |
returns-result-object-value-is-promise-resolves-to-timed-out.js |
---
esid: sec-atomics.waitasync
description: >
Atomics.waitAsync returns a result object containing a promise that resolves to "timed-out" and async is true.
info: |
Atomics.waitAsync( typedArray, index, value, timeout )
1. Return DoWait(async, typedArray, index, value, timeout).
DoWait ( mode, typedArray, index, value, timeout )
...
13. Let promiseCapability be undefined.
14. If mode is async, then
a. Set promiseCapability to ! NewPromiseCapability(%Promise%).
...
Perform ! CreateDataPropertyOrThrow(_resultObject_, *"async"*, *true*).
Perform ! CreateDataPropertyOrThrow(_resultObject_, *"value"*, _promiseCapability_.[[Promise]]).
Return _resultObject_.
flags: [async]
includes: [atomicsHelper.js]
features: [Atomics.waitAsync, TypedArray, SharedArrayBuffer, destructuring-binding, Atomics, arrow-function]
--- |
1686 |
returns-result-object-value-is-string-not-equal.js |
---
esid: sec-atomics.waitasync
description: >
Atomics.waitAsync returns a result object containing a string "not-equal" and async is false.
info: |
Atomics.waitAsync( typedArray, index, value, timeout )
1. Return DoWait(async, typedArray, index, value, timeout).
DoWait ( mode, typedArray, index, value, timeout )
...
13. Let promiseCapability be undefined.
14. If mode is async, then
a. Set promiseCapability to ! NewPromiseCapability(%Promise%).
...
Perform ! CreateDataPropertyOrThrow(_resultObject_, *"async"*, *true*).
Perform ! CreateDataPropertyOrThrow(_resultObject_, *"value"*, _promiseCapability_.[[Promise]]).
Return _resultObject_.
features: [Atomics.waitAsync, TypedArray, SharedArrayBuffer, destructuring-binding, Atomics]
--- |
1384 |
returns-result-object-value-is-string-timed-out.js |
---
esid: sec-atomics.waitasync
description: >
Atomics.waitAsync returns a result object containing a string "not-equal" and async is false.
info: |
Atomics.waitAsync( typedArray, index, value, timeout )
1. Return DoWait(async, typedArray, index, value, timeout).
DoWait ( mode, typedArray, index, value, timeout )
...
13. Let promiseCapability be undefined.
14. If mode is async, then
a. Set promiseCapability to ! NewPromiseCapability(%Promise%).
...
Perform ! CreateDataPropertyOrThrow(_resultObject_, *"async"*, *true*).
Perform ! CreateDataPropertyOrThrow(_resultObject_, *"value"*, _promiseCapability_.[[Promise]]).
Return _resultObject_.
features: [Atomics.waitAsync, TypedArray, SharedArrayBuffer, destructuring-binding, Atomics]
--- |
1387 |
shell.js |
---
description: |
A collection of assertion and wrapper functions for testing asynchronous built-ins.
defines: [asyncTest, assert.throwsAsync]
--- |
15501 |
symbol-for-index-throws-agent.js |
---
esid: sec-atomics.waitasync
description: >
Throws a TypeError if index arg can not be converted to an Integer
info: |
Atomics.waitAsync( typedArray, index, value, timeout )
1. Return DoWait(async, typedArray, index, value, timeout).
DoWait ( mode, 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.
flags: [async]
includes: [atomicsHelper.js]
features: [Atomics.waitAsync, SharedArrayBuffer, Symbol, Symbol.toPrimitive, TypedArray, Atomics, arrow-function, async-functions]
--- |
2751 |
symbol-for-index-throws.js |
---
esid: sec-atomics.waitasync
description: >
Throws a TypeError if index arg can not be converted to an Integer
info: |
Atomics.waitAsync( typedArray, index, value, timeout )
1. Return DoWait(async, typedArray, index, value, timeout).
DoWait ( mode, 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.waitAsync, SharedArrayBuffer, Symbol, Symbol.toPrimitive, TypedArray, computed-property-names, Atomics]
--- |
2381 |
symbol-for-timeout-throws-agent.js |
---
esid: sec-atomics.waitasync
description: >
Throws a TypeError if index arg can not be converted to an Integer
info: |
Atomics.waitAsync( typedArray, index, value, timeout )
1. Return DoWait(async, typedArray, index, value, timeout).
DoWait ( mode, typedArray, index, value, timeout )
6. Let q be ? ToNumber(timeout).
Symbol --> Throw a TypeError exception.
flags: [async]
includes: [atomicsHelper.js]
features: [Atomics.waitAsync, SharedArrayBuffer, Symbol, Symbol.toPrimitive, TypedArray, Atomics, arrow-function, async-functions]
--- |
2168 |
symbol-for-timeout-throws.js |
---
esid: sec-atomics.waitasync
description: >
Throws a TypeError if index arg can not be converted to an Integer
info: |
Atomics.waitAsync( typedArray, index, value, timeout )
1. Return DoWait(async, typedArray, index, value, timeout).
DoWait ( mode, typedArray, index, value, timeout )
6. Let q be ? ToNumber(timeout).
Symbol --> Throw a TypeError exception.
features: [Atomics.waitAsync, SharedArrayBuffer, Symbol, Symbol.toPrimitive, TypedArray, computed-property-names, Atomics]
--- |
1880 |
symbol-for-value-throws-agent.js |
---
esid: sec-atomics.waitasync
description: >
Throws a TypeError if value arg is a Symbol
info: |
Atomics.waitAsync( typedArray, index, value, timeout )
1. Return DoWait(async, typedArray, index, value, timeout).
DoWait ( mode, typedArray, index, value, timeout )
5. Otherwise, let v be ? ToInt32(value).
ToInt32(value)
1.Let number be ? ToNumber(argument).
Symbol --> Throw a TypeError exception.
flags: [async]
includes: [atomicsHelper.js]
features: [Atomics.waitAsync, SharedArrayBuffer, Symbol, Symbol.toPrimitive, TypedArray, Atomics, arrow-function, async-functions]
--- |
2535 |
symbol-for-value-throws.js |
---
esid: sec-atomics.waitasync
description: >
Throws a TypeError if value arg is a Symbol
info: |
Atomics.waitAsync( typedArray, index, value, timeout )
1. Return DoWait(async, typedArray, index, value, timeout).
DoWait ( mode, typedArray, index, value, timeout )
5. Otherwise, let v be ? ToInt32(value).
ToInt32(value)
1.Let number be ? ToNumber(argument).
Symbol --> Throw a TypeError exception.
features: [Atomics.waitAsync, SharedArrayBuffer, Symbol, Symbol.toPrimitive, TypedArray, computed-property-names, Atomics]
--- |
2052 |
true-for-timeout-agent.js |
---
esid: sec-atomics.waitasync
description: >
True timeout arg should result in an +0 timeout
info: |
Atomics.waitAsync( typedArray, index, value, timeout )
1. Return DoWait(async, typedArray, index, value, timeout).
DoWait ( mode, typedArray, index, value, timeout )
6. Let q be ? ToNumber(timeout).
flags: [async]
includes: [atomicsHelper.js]
features: [Atomics.waitAsync, SharedArrayBuffer, TypedArray, Atomics, arrow-function, async-functions]
--- |
2244 |
true-for-timeout.js |
---
esid: sec-atomics.waitasync
description: >
Throws a TypeError if index arg can not be converted to an Integer
info: |
Atomics.waitAsync( typedArray, index, value, timeout )
1. Return DoWait(async, typedArray, index, value, timeout).
DoWait ( mode, typedArray, index, value, timeout )
6. Let q be ? ToNumber(timeout).
Boolean -> If argument is true, return 1. If argument is false, return +0.
flags: [async]
includes: [atomicsHelper.js]
features: [Atomics.waitAsync, SharedArrayBuffer, TypedArray, Atomics, computed-property-names, Symbol, Symbol.toPrimitive, arrow-function]
--- |
1940 |
undefined-for-timeout-agent.js |
---
esid: sec-atomics.waitasync
description: >
Undefined timeout arg is coerced to zero
info: |
Atomics.waitAsync( typedArray, index, value, timeout )
1. Return DoWait(async, typedArray, index, value, timeout).
DoWait ( mode, typedArray, index, value, timeout )
6. Let q be ? ToNumber(timeout).
...
Undefined Return NaN.
5.If q is NaN, let t be +∞, else let t be max(q, 0)
flags: [async]
includes: [atomicsHelper.js]
features: [Atomics.waitAsync, SharedArrayBuffer, TypedArray, Atomics, arrow-function, async-functions]
--- |
2372 |
undefined-for-timeout.js |
---
esid: sec-atomics.waitasync
description: >
Undefined timeout arg is coerced to zero
info: |
Atomics.waitAsync( typedArray, index, value, timeout )
1. Return DoWait(async, typedArray, index, value, timeout).
DoWait ( mode, typedArray, index, value, timeout )
6. Let q be ? ToNumber(timeout).
...
Undefined Return NaN.
5.If q is NaN, let t be +∞, else let t be max(q, 0)
flags: [async]
features: [Atomics.waitAsync, SharedArrayBuffer, TypedArray, Atomics, computed-property-names, Symbol, Symbol.toPrimitive, arrow-function]
--- |
1694 |
undefined-index-defaults-to-zero-agent.js |
---
esid: sec-atomics.waitasync
description: >
Undefined index arg is coerced to zero
info: |
Atomics.waitAsync( typedArray, index, value, timeout )
1. Return DoWait(async, typedArray, index, value, timeout).
DoWait ( mode, 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.
flags: [async]
includes: [atomicsHelper.js]
features: [Atomics.waitAsync, SharedArrayBuffer, TypedArray, Atomics, arrow-function, async-functions]
--- |
2490 |
validate-arraytype-before-index-coercion.js |
---
esid: sec-atomics.waitasync
description: >
TypedArray type is validated before `index` argument is coerced.
info: |
1. Return DoWait(async, typedArray, index, value, timeout).
DoWait ( mode, typedArray, index, value, timeout )
1. Let buffer be ? ValidateSharedIntegerTypedArray(typedArray, true).
ValidateSharedIntegerTypedArray ( typedArray [ , waitable ] )
1. If waitable is not present, set waitable to false.
2. Perform ? RequireInternalSlot(typedArray, [[TypedArrayName]]).
3. Let typeName be typedArray.[[TypedArrayName]].
4. Let type be the Element Type value in Table 61 for typeName.
5. If waitable is true, then
a. If typeName is not "Int32Array" or "BigInt64Array", throw a TypeError exception.
6. Else,
a. If ! IsUnclampedIntegerElementType(type) is false and ! IsBigIntElementType(type) is false, throw a TypeError exception.
7. Assert: typedArray has a [[ViewedArrayBuffer]] internal slot.
8. Let buffer be typedArray.[[ViewedArrayBuffer]].
9. If IsSharedArrayBuffer(buffer) is false, throw a TypeError exception.
10. Return buffer.
includes: [testTypedArray.js]
features: [Atomics.waitAsync, Atomics, TypedArray, SharedArrayBuffer]
--- |
2029 |
validate-arraytype-before-timeout-coercion.js |
---
esid: sec-atomics.waitasync
description: >
TypedArray type is validated before `timeout` argument is coerced.
info: |
1. Return DoWait(async, typedArray, index, value, timeout).
DoWait ( mode, typedArray, index, value, timeout )
1. Let buffer be ? ValidateSharedIntegerTypedArray(typedArray, true).
ValidateSharedIntegerTypedArray ( typedArray [ , waitable ] )
1. If waitable is not present, set waitable to false.
2. Perform ? RequireInternalSlot(typedArray, [[TypedArrayName]]).
3. Let typeName be typedArray.[[TypedArrayName]].
4. Let type be the Element Type value in Table 61 for typeName.
5. If waitable is true, then
a. If typeName is not "Int32Array" or "BigInt64Array", throw a TypeError exception.
6. Else,
a. If ! IsUnclampedIntegerElementType(type) is false and ! IsBigIntElementType(type) is false, throw a TypeError exception.
7. Assert: typedArray has a [[ViewedArrayBuffer]] internal slot.
8. Let buffer be typedArray.[[ViewedArrayBuffer]].
9. If IsSharedArrayBuffer(buffer) is false, throw a TypeError exception.
10. Return buffer.
features: [Atomics.waitAsync, Atomics, TypedArray, SharedArrayBuffer]
--- |
2014 |
validate-arraytype-before-value-coercion.js |
---
esid: sec-atomics.notify
description: >
TypedArray type is validated before `value` argument is coerced.
info: |
1. Return DoWait(async, typedArray, index, value, timeout).
DoWait ( mode, typedArray, index, value, timeout )
1. Let buffer be ? ValidateSharedIntegerTypedArray(typedArray, true).
ValidateSharedIntegerTypedArray ( typedArray [ , waitable ] )
1. If waitable is not present, set waitable to false.
2. Perform ? RequireInternalSlot(typedArray, [[TypedArrayName]]).
3. Let typeName be typedArray.[[TypedArrayName]].
4. Let type be the Element Type value in Table 61 for typeName.
5. If waitable is true, then
a. If typeName is not "Int32Array" or "BigInt64Array", throw a TypeError exception.
6. Else,
a. If ! IsUnclampedIntegerElementType(type) is false and ! IsBigIntElementType(type) is false, throw a TypeError exception.
7. Assert: typedArray has a [[ViewedArrayBuffer]] internal slot.
8. Let buffer be typedArray.[[ViewedArrayBuffer]].
9. If IsSharedArrayBuffer(buffer) is false, throw a TypeError exception.
10. Return buffer.
includes: [testTypedArray.js]
features: [Atomics.waitAsync, Atomics, TypedArray, SharedArrayBuffer]
--- |
2026 |
value-not-equal-agent.js |
---
esid: sec-atomics.waitasync
description: >
Returns "not-equal" when value arg does not match an index in the typedArray
info: |
Atomics.waitAsync( typedArray, index, value, timeout )
1. Return DoWait(async, typedArray, index, value, timeout).
DoWait ( mode, typedArray, index, value, timeout )
16. Let w be ! AtomicLoad(typedArray, i).
17. If v is not equal to w, then
a. Perform LeaveCriticalSection(WL).
b. If mode is sync, then
i. Return the String "not-equal".
c. Perform ! Call(capability.[[Resolve]], undefined, « "not-equal" »).
d. Return promiseCapability.[[Promise]].
flags: [async]
includes: [atomicsHelper.js]
features: [Atomics.waitAsync, SharedArrayBuffer, TypedArray, Atomics, arrow-function, async-functions]
--- |
2155 |
value-not-equal.js |
---
esid: sec-atomics.waitasync
description: >
Returns "not-equal" when value arg does not match an index in the typedArray
info: |
Atomics.waitAsync( typedArray, index, value, timeout )
1. Return DoWait(async, typedArray, index, value, timeout).
DoWait ( mode, typedArray, index, value, timeout )
16. Let w be ! AtomicLoad(typedArray, i).
17. If v is not equal to w, then
a. Perform LeaveCriticalSection(WL).
b. If mode is sync, then
i. Return the String "not-equal".
c. Perform ! Call(capability.[[Resolve]], undefined, « "not-equal" »).
d. Return promiseCapability.[[Promise]].
flags: [async]
features: [Atomics.waitAsync, SharedArrayBuffer, TypedArray, computed-property-names, Symbol, Symbol.toPrimitive, Atomics, arrow-function]
--- |
1619 |
waiterlist-block-indexedposition-wake.js |
---
esid: sec-atomics.waitasync
description: >
Get the correct WaiterList
info: |
Atomics.waitAsync( typedArray, index, value, timeout )
1. Return DoWait(async, typedArray, index, value, timeout).
DoWait ( mode, typedArray, index, value, timeout )
11. Let indexedPosition be (i × 4) + offset.
12. Let WL be GetWaiterList(block, indexedPosition).
GetWaiterList( block, i )
...
4. Return the WaiterList that is referenced by the pair (block, i).
flags: [async]
includes: [atomicsHelper.js]
features: [Atomics.waitAsync, SharedArrayBuffer, TypedArray, Atomics, arrow-function, async-functions]
--- |
2895 |
was-woken-before-timeout.js |
---
esid: sec-atomics.waitasync
description: >
Test that Atomics.waitAsync returns the right result when it was awoken before
a timeout
flags: [async]
includes: [atomicsHelper.js]
features: [Atomics.waitAsync, SharedArrayBuffer, TypedArray, Atomics, arrow-function, async-functions]
--- |
1946 |