From c5527b6d1616e342b21dc2250f3aa3535dc0a32b Mon Sep 17 00:00:00 2001 From: Rick Waldron <waldron.rick@gmail.com> Date: Mon, 21 May 2018 14:55:47 -0400 Subject: [PATCH] Atomics: Atomics.wake cleanup pass --- test/built-ins/Atomics/wait/bad-range.js | 2 +- .../wait/non-shared-bufferdata-throws.js | 2 +- test/built-ins/Atomics/wake/bad-range.js | 18 +++--- .../Atomics/wake/bigint/bad-range.js | 9 +-- .../bigint/non-bigint64-typedarray-throws.js | 14 ++++- .../bigint/non-shared-bufferdata-throws.js | 10 ++-- .../wake/bigint/null-bufferdata-throws.js | 15 +++-- .../Atomics/wake/bigint/wake-all-on-loc.js | 18 +++--- .../Atomics/wake/count-boundary-cases.js | 35 ++++++++---- .../count-defaults-to-infinity-missing.js | 24 +++----- .../count-defaults-to-infinity-undefined.js | 12 ++-- .../built-ins/Atomics/wake/count-from-nans.js | 9 +-- .../Atomics/wake/count-symbol-throws.js | 9 +-- ...count-tointeger-throws-then-wake-throws.js | 12 ++-- test/built-ins/Atomics/wake/negative-count.js | 2 +- .../Atomics/wake/negative-index-throws.js | 8 ++- .../wake/non-int32-typedarray-throws.js | 56 +++++++++++++------ .../wake/non-shared-bufferdata-throws.js | 7 ++- ...hared-bufferdatate-non-shared-int-views.js | 42 ++++++++++++++ .../Atomics/wake/non-shared-int-views.js | 42 ++++++++++++++ test/built-ins/Atomics/wake/non-views.js | 6 +- .../Atomics/wake/nonshared-int-views.js | 20 ------- .../Atomics/wake/not-a-typedarray-throws.js | 2 +- .../Atomics/wake/not-an-object-throws.js | 2 +- .../Atomics/wake/null-bufferdata-throws.js | 15 +++-- .../Atomics/wake/out-of-range-index-throws.js | 5 +- .../Atomics/wake/symbol-for-index-throws.js | 9 +-- .../wake/undefined-index-defaults-to-zero.js | 6 +- .../built-ins/Atomics/wake/wake-all-on-loc.js | 4 +- test/built-ins/Atomics/wake/wake-all.js | 15 +++-- test/built-ins/Atomics/wake/wake-in-order.js | 5 +- test/built-ins/Atomics/wake/wake-nan.js | 2 +- test/built-ins/Atomics/wake/wake-one.js | 3 +- .../Atomics/wake/wake-rewake-noop.js | 6 +- test/built-ins/Atomics/wake/wake-two.js | 9 +-- .../wake/wake-with-no-agents-waiting.js | 5 +- .../wake-with-no-matching-agents-waiting.js | 17 ++---- test/built-ins/Atomics/wake/wake-zero.js | 3 +- 38 files changed, 302 insertions(+), 178 deletions(-) create mode 100644 test/built-ins/Atomics/wake/non-shared-bufferdatate-non-shared-int-views.js create mode 100644 test/built-ins/Atomics/wake/non-shared-int-views.js delete mode 100644 test/built-ins/Atomics/wake/nonshared-int-views.js diff --git a/test/built-ins/Atomics/wait/bad-range.js b/test/built-ins/Atomics/wait/bad-range.js index 07373b8055..13df39122e 100644 --- a/test/built-ins/Atomics/wait/bad-range.js +++ b/test/built-ins/Atomics/wait/bad-range.js @@ -15,7 +15,7 @@ includes: [testAtomics.js] features: [ArrayBuffer, arrow-function, Atomics, DataView, for-of, let, SharedArrayBuffer, TypedArray] ---*/ -var i32a = new Int32Array( +const i32a = new Int32Array( new SharedArrayBuffer(Int32Array.BYTES_PER_ELEMENT) ); diff --git a/test/built-ins/Atomics/wait/non-shared-bufferdata-throws.js b/test/built-ins/Atomics/wait/non-shared-bufferdata-throws.js index 4e11f07287..5056a28edb 100644 --- a/test/built-ins/Atomics/wait/non-shared-bufferdata-throws.js +++ b/test/built-ins/Atomics/wait/non-shared-bufferdata-throws.js @@ -16,7 +16,7 @@ features: [ArrayBuffer, Atomics, TypedArray] ---*/ const i32a = new Int32Array( - new SharedArrayBuffer(Int32Array.BYTES_PER_ELEMENT) + new ArrayBuffer(Int32Array.BYTES_PER_ELEMENT) ); const poisoned = { diff --git a/test/built-ins/Atomics/wake/bad-range.js b/test/built-ins/Atomics/wake/bad-range.js index 247550a7c1..cfd55750ab 100644 --- a/test/built-ins/Atomics/wake/bad-range.js +++ b/test/built-ins/Atomics/wake/bad-range.js @@ -15,14 +15,12 @@ includes: [testAtomics.js, testTypedArray.js] features: [ArrayBuffer, arrow-function, Atomics, DataView, for-of, let, SharedArrayBuffer, TypedArray] ---*/ -var sab = new SharedArrayBuffer(8); -var views = [Int32Array]; +const i32a = new Int32Array( + new SharedArrayBuffer(Int32Array.BYTES_PER_ELEMENT) +); -testWithTypedArrayConstructors(function(TA) { - let view = new TA(sab); - testWithAtomicsOutOfBoundsIndices(function(IdxGen) { - assert.throws(RangeError, function() { - Atomics.wake(view, IdxGen(view), 0); - }, '`Atomics.wake(view, IdxGen(view), 0)` throws RangeError'); // Even with waking zero - }); -}, views); +testWithAtomicsOutOfBoundsIndices(function(IdxGen) { + assert.throws(RangeError, function() { + Atomics.wake(i32a, IdxGen(i32a), 0); + }, 'Atomics.wake(i32a, IdxGen(i32a), 0) throws RangeError'); +}); diff --git a/test/built-ins/Atomics/wake/bigint/bad-range.js b/test/built-ins/Atomics/wake/bigint/bad-range.js index e35b19ba84..26d12c6278 100644 --- a/test/built-ins/Atomics/wake/bigint/bad-range.js +++ b/test/built-ins/Atomics/wake/bigint/bad-range.js @@ -15,11 +15,12 @@ includes: [testAtomics.js] features: [ArrayBuffer, arrow-function, Atomics, BigInt, DataView, for-of, let, SharedArrayBuffer, TypedArray] ---*/ -var sab = new SharedArrayBuffer(8); -let i64a = new BigInt64Array(sab); +const i64a = new BigInt64Array( + new SharedArrayBuffer(BigInt64Array.BYTES_PER_ELEMENT) +); testWithAtomicsOutOfBoundsIndices(function(IdxGen) { assert.throws(RangeError, function() { - Atomics.wake(view, IdxGen(i64a), 0); - }, '`Atomics.wake(view, IdxGen(i64a), 0)` throws RangeError'); + Atomics.wake(i64a, IdxGen(i64a), 0); + }, '`Atomics.wake(i64a, IdxGen(i64a), 0)` throws RangeError'); }); diff --git a/test/built-ins/Atomics/wake/bigint/non-bigint64-typedarray-throws.js b/test/built-ins/Atomics/wake/bigint/non-bigint64-typedarray-throws.js index b056597318..719bfa730e 100644 --- a/test/built-ins/Atomics/wake/bigint/non-bigint64-typedarray-throws.js +++ b/test/built-ins/Atomics/wake/bigint/non-bigint64-typedarray-throws.js @@ -15,12 +15,20 @@ info: | features: [Atomics, BigInt, TypedArray] ---*/ -var poisoned = { +const i64a = new BigUint64Array( + new SharedArrayBuffer(BigUint64Array.BYTES_PER_ELEMENT) +); + +const poisoned = { valueOf: function() { throw new Test262Error('should not evaluate this code'); } }; assert.throws(TypeError, function() { - Atomics.wake(new BigUint64Array(), poisoned, poisoned); -}, '`Atomics.wake(new BigUint64Array(), poisoned, poisoned)` throws TypeError'); + Atomics.wait(i64a, 0, 0); +}, 'BigUint64Array'); + +assert.throws(TypeError, function() { + Atomics.wait(i64a, poisoned, poisoned); +}, 'BigUint64Array'); diff --git a/test/built-ins/Atomics/wake/bigint/non-shared-bufferdata-throws.js b/test/built-ins/Atomics/wake/bigint/non-shared-bufferdata-throws.js index 30cfc76bcc..e1c1b391f9 100644 --- a/test/built-ins/Atomics/wake/bigint/non-shared-bufferdata-throws.js +++ b/test/built-ins/Atomics/wake/bigint/non-shared-bufferdata-throws.js @@ -14,9 +14,11 @@ info: | 4.If bufferData is a Data Block, return false. features: [ArrayBuffer, Atomics, BigInt, TypedArray] ---*/ +const i64a = new BigInt64Array( + new ArrayBuffer(BigInt64Array.BYTES_PER_ELEMENT) +); -var i64a = new BigInt64Array(new ArrayBuffer(4)); -var poisoned = { +const poisoned = { valueOf: function() { throw new Test262Error('should not evaluate this code'); } @@ -24,8 +26,8 @@ var poisoned = { assert.throws(TypeError, function() { Atomics.wake(i64a, 0, 0); -}, '`Atomics.wake(i64a, 0, 0)` throws TypeError'); +}, 'Atomics.wake(i64a, 0, 0) on ArrayBuffer throws TypeError'); assert.throws(TypeError, function() { Atomics.wake(i64a, poisoned, poisoned); -}, '`Atomics.wake(i64a, poisoned, poisoned)` throws TypeError'); +}, 'Atomics.wake(i64a, poisoned, poisoned) on ArrayBuffer throws TypeError'); diff --git a/test/built-ins/Atomics/wake/bigint/null-bufferdata-throws.js b/test/built-ins/Atomics/wake/bigint/null-bufferdata-throws.js index d237accfa6..e596a901aa 100644 --- a/test/built-ins/Atomics/wake/bigint/null-bufferdata-throws.js +++ b/test/built-ins/Atomics/wake/bigint/null-bufferdata-throws.js @@ -16,16 +16,21 @@ includes: [detachArrayBuffer.js] features: [ArrayBuffer, Atomics, BigInt, TypedArray] ---*/ -var i64a = new BigInt64Array(new ArrayBuffer(1024)); -var poisoned = { +const i64a = new BigInt64Array( + new SharedArrayBuffer(BigInt64Array.BYTES_PER_ELEMENT) +); +const poisoned = { valueOf: function() { throw new Test262Error('should not evaluate this code'); } }; -// Detaching a non-shared ArrayBuffer sets the [[ArrayBufferData]] value to null -$DETACHBUFFER(i64a.buffer); +try { + $DETACHBUFFER(i64a.buffer); // Detaching a non-shared ArrayBuffer sets the [[ArrayBufferData]] value to null +} catch (error) { + $ERROR(`An unexpected error occurred when detaching ArrayBuffer: ${error.message}`); +} assert.throws(TypeError, function() { Atomics.wake(i64a, poisoned, poisoned); -}, '`Atomics.wake(i64a, poisoned, poisoned)` throws TypeError'); +}, 'Atomics.wake(i64a, poisoned, poisoned) on detached buffer throwes TypeError'); diff --git a/test/built-ins/Atomics/wake/bigint/wake-all-on-loc.js b/test/built-ins/Atomics/wake/bigint/wake-all-on-loc.js index 9fa4964961..679be97e7f 100644 --- a/test/built-ins/Atomics/wake/bigint/wake-all-on-loc.js +++ b/test/built-ins/Atomics/wake/bigint/wake-all-on-loc.js @@ -28,13 +28,13 @@ for (var i = 0; i < NUMAGENT; i++) { } $262.agent.start(` -$262.agent.receiveBroadcast(function(sab) { - const i64a = new BigInt64Array(sab); - Atomics.add(i64a, ${RUNNING}, 1); - // This will always time out. - $262.agent.report("B " + Atomics.wait(i64a, ${DUMMY}, 0, 10)); - $262.agent.leaving(); -}); + $262.agent.receiveBroadcast(function(sab) { + const i64a = new BigInt64Array(sab); + Atomics.add(i64a, ${RUNNING}, 1); + // This will always time out. + $262.agent.report("B " + Atomics.wait(i64a, ${DUMMY}, 0, 10)); + $262.agent.leaving(); + }); `); const i64a = new BigInt64Array( @@ -63,7 +63,7 @@ for (var i = 0; i < NUMAGENT + 1; i++) { rs.sort(); for (var i = 0; i < NUMAGENT; i++) { - assert.sameValue(rs[i], "A ok", 'The value of rs[i] is "A ok"'); + assert.sameValue(rs[i], 'A ok', 'The value of rs[i] is "A ok"'); } -assert.sameValue(rs[NUMAGENT], "B timed-out", 'The value of rs[NUMAGENT] is "B timed-out"'); +assert.sameValue(rs[NUMAGENT], 'B timed-out', 'The value of rs[NUMAGENT] is "B timed-out"'); diff --git a/test/built-ins/Atomics/wake/count-boundary-cases.js b/test/built-ins/Atomics/wake/count-boundary-cases.js index 1ffb865ef3..3faffa2f44 100644 --- a/test/built-ins/Atomics/wake/count-boundary-cases.js +++ b/test/built-ins/Atomics/wake/count-boundary-cases.js @@ -25,24 +25,37 @@ info: | features: [Atomics, SharedArrayBuffer, TypedArray] ---*/ -var sab = new SharedArrayBuffer(4); -var view = new Int32Array(sab); +const i32a = new Int32Array( + new SharedArrayBuffer(Int32Array.BYTES_PER_ELEMENT) +); -assert.sameValue(Atomics.wake(view, 0, -3), 0, 'Atomics.wake(view, 0, -3) returns 0'); assert.sameValue( - Atomics.wake(view, 0, Number.POSITIVE_INFINITY), + Atomics.wake(i32a, 0, -3), + 0, + 'Atomics.wake(i32a, 0, -3) returns 0' +); +assert.sameValue( + Atomics.wake(i32a, 0, Number.POSITIVE_INFINITY), + 0, + 'Atomics.wake(i32a, 0, Number.POSITIVE_INFINITY) returns 0' +); +assert.sameValue( + Atomics.wake(i32a, 0, undefined), + 0, + 'Atomics.wake(i32a, 0, undefined) returns 0' +); +assert.sameValue( + Atomics.wake(i32a, 0, '33'), 0, - 'Atomics.wake(view, 0, Number.POSITIVE_INFINITY) returns 0' + 'Atomics.wake(i32a, 0, "33") returns 0' ); assert.sameValue( - Atomics.wake(view, 0, undefined), + Atomics.wake(i32a, 0, { valueOf: 8 }), 0, - 'Atomics.wake(view, 0, undefined) returns 0' + 'Atomics.wake(i32a, 0, {valueOf: 8}) returns 0' ); -assert.sameValue(Atomics.wake(view, 0, "33"), 0, 'Atomics.wake(view, 0, "33") returns 0'); assert.sameValue( - Atomics.wake(view, 0, { valueOf: 8 }), + Atomics.wake(i32a, 0), 0, - 'Atomics.wake(view, 0, {valueOf: 8}) returns 0' + 'Atomics.wake(i32a, 0) returns 0' ); -assert.sameValue(Atomics.wake(view, 0), 0, 'Atomics.wake(view, 0) returns 0'); diff --git a/test/built-ins/Atomics/wake/count-defaults-to-infinity-missing.js b/test/built-ins/Atomics/wake/count-defaults-to-infinity-missing.js index 9a3ed079fd..7038e41e4b 100644 --- a/test/built-ins/Atomics/wake/count-defaults-to-infinity-missing.js +++ b/test/built-ins/Atomics/wake/count-defaults-to-infinity-missing.js @@ -16,16 +16,8 @@ includes: [atomicsHelper.js] features: [Atomics, SharedArrayBuffer, TypedArray] ---*/ -var NUMAGENT = 4; // Total number of agents started -var WAKEUP = 0; // Index all agents are waiting on - -function getReport() { - var r; - while ((r = $262.agent.getReport()) == null) { - $262.agent.sleep(10); - } - return r; -} +const NUMAGENT = 4; // Total number of agents started +const WAKEUP = 0; // Index all agents are waiting on $262.agent.start(` $262.agent.receiveBroadcast(function(sab) { @@ -64,7 +56,7 @@ const i32a = new Int32Array( ); $262.agent.broadcast(i32a.buffer); -$262.agent.sleep(20); +$262.agent.sleep(100); assert.sameValue( Atomics.wake(i32a, WAKEUP /*, count missing */), @@ -72,13 +64,13 @@ assert.sameValue( 'Atomics.wake(i32a, WAKEUP /*, count missing */) equals the value of `NUMAGENT` (4)' ); -var sortedReports = []; +const sortedReports = []; for (var i = 0; i < NUMAGENT; i++) { sortedReports.push(getReport()); } sortedReports.sort(); -assert.sameValue(sortedReports[0], "A ok", 'The value of sortedReports[0] is "A ok"'); -assert.sameValue(sortedReports[1], "B ok", 'The value of sortedReports[1] is "B ok"'); -assert.sameValue(sortedReports[2], "C ok", 'The value of sortedReports[2] is "C ok"'); -assert.sameValue(sortedReports[3], "D ok", 'The value of sortedReports[3] is "D ok"'); +assert.sameValue(sortedReports[0], 'A ok', 'The value of sortedReports[0] is "A ok"'); +assert.sameValue(sortedReports[1], 'B ok', 'The value of sortedReports[1] is "B ok"'); +assert.sameValue(sortedReports[2], 'C ok', 'The value of sortedReports[2] is "C ok"'); +assert.sameValue(sortedReports[3], 'D ok', 'The value of sortedReports[3] is "D ok"'); diff --git a/test/built-ins/Atomics/wake/count-defaults-to-infinity-undefined.js b/test/built-ins/Atomics/wake/count-defaults-to-infinity-undefined.js index 0d8b569b50..837bcfa84f 100644 --- a/test/built-ins/Atomics/wake/count-defaults-to-infinity-undefined.js +++ b/test/built-ins/Atomics/wake/count-defaults-to-infinity-undefined.js @@ -33,7 +33,6 @@ $262.agent.start(` }); `); - $262.agent.start(` $262.agent.receiveBroadcast(function(sab) { const i32a = new Int32Array(sab); @@ -42,7 +41,6 @@ $262.agent.start(` }); `); - $262.agent.start(` $262.agent.receiveBroadcast(function(sab) { const i32a = new Int32Array(sab); @@ -65,13 +63,13 @@ assert.sameValue( 'Atomics.wake(i32a, WAKEUP, undefined) equals the value of `NUMAGENT` (4)' ); -var sortedReports = []; +const sortedReports = []; for (var i = 0; i < NUMAGENT; i++) { sortedReports.push(getReport()); } sortedReports.sort(); -assert.sameValue(sortedReports[0], "A ok", 'The value of sortedReports[0] is "A ok"'); -assert.sameValue(sortedReports[1], "B ok", 'The value of sortedReports[1] is "B ok"'); -assert.sameValue(sortedReports[2], "C ok", 'The value of sortedReports[2] is "C ok"'); -assert.sameValue(sortedReports[3], "D ok", 'The value of sortedReports[3] is "D ok"'); +assert.sameValue(sortedReports[0], 'A ok', 'The value of sortedReports[0] is "A ok"'); +assert.sameValue(sortedReports[1], 'B ok', 'The value of sortedReports[1] is "B ok"'); +assert.sameValue(sortedReports[2], 'C ok', 'The value of sortedReports[2] is "C ok"'); +assert.sameValue(sortedReports[3], 'D ok', 'The value of sortedReports[3] is "D ok"'); diff --git a/test/built-ins/Atomics/wake/count-from-nans.js b/test/built-ins/Atomics/wake/count-from-nans.js index fc425cee64..c71f739f7b 100644 --- a/test/built-ins/Atomics/wake/count-from-nans.js +++ b/test/built-ins/Atomics/wake/count-from-nans.js @@ -20,13 +20,14 @@ info: | 2. If number is NaN, return +0. ... +includes: [nans.js, atomicsHelper.js] features: [Atomics, SharedArrayBuffer, TypedArray] -includes: [nans.js] ---*/ -var sab = new SharedArrayBuffer(4); -var view = new Int32Array(sab); +const i32a = new Int32Array( + new SharedArrayBuffer(Int32Array.BYTES_PER_ELEMENT) +); NaNs.forEach(nan => { - assert.sameValue(Atomics.wake(view, 0, nan), 0, 'Atomics.wake(view, 0, nan) returns 0'); + assert.sameValue(Atomics.wake(i32a, 0, nan), 0, 'Atomics.wake(i32a, 0, nan) returns 0'); }); diff --git a/test/built-ins/Atomics/wake/count-symbol-throws.js b/test/built-ins/Atomics/wake/count-symbol-throws.js index 585434c58f..c2c93c3310 100644 --- a/test/built-ins/Atomics/wake/count-symbol-throws.js +++ b/test/built-ins/Atomics/wake/count-symbol-throws.js @@ -17,9 +17,10 @@ info: | features: [Atomics, SharedArrayBuffer, TypedArray] ---*/ -var sab = new SharedArrayBuffer(4); -var view = new Int32Array(sab); +const i32a = new Int32Array( + new SharedArrayBuffer(Int32Array.BYTES_PER_ELEMENT) +); assert.throws(TypeError, function() { - Atomics.wake(view, 0, Symbol()); -}, '`Atomics.wake(view, 0, Symbol())` throws TypeError'); + Atomics.wake(i32a, 0, Symbol()); +}, '`Atomics.wake(i32a, 0, Symbol())` throws TypeError'); diff --git a/test/built-ins/Atomics/wake/count-tointeger-throws-then-wake-throws.js b/test/built-ins/Atomics/wake/count-tointeger-throws-then-wake-throws.js index 7796716500..dff76e0709 100644 --- a/test/built-ins/Atomics/wake/count-tointeger-throws-then-wake-throws.js +++ b/test/built-ins/Atomics/wake/count-tointeger-throws-then-wake-throws.js @@ -17,14 +17,16 @@ info: | features: [Atomics, SharedArrayBuffer, TypedArray] ---*/ -var sab = new SharedArrayBuffer(4); -var view = new Int32Array(sab); -var poisoned = { +const i32a = new Int32Array( + new SharedArrayBuffer(Int32Array.BYTES_PER_ELEMENT) +); + +const poisoned = { valueOf: function() { throw new Test262Error('should not evaluate this code'); } }; assert.throws(Test262Error, function() { - Atomics.wake(view, 0, poisoned); -}, '`Atomics.wake(view, 0, poisoned)` throws Test262Error'); + Atomics.wake(i32a, 0, poisoned); +}, '`Atomics.wake(i32a, 0, poisoned)` throws Test262Error'); diff --git a/test/built-ins/Atomics/wake/negative-count.js b/test/built-ins/Atomics/wake/negative-count.js index df172ff2e1..2c3c1abbb2 100644 --- a/test/built-ins/Atomics/wake/negative-count.js +++ b/test/built-ins/Atomics/wake/negative-count.js @@ -11,7 +11,7 @@ features: [Atomics, SharedArrayBuffer, TypedArray] $262.agent.start(` $262.agent.receiveBroadcast(function(sab) { - var i32a = new Int32Array(sab); + const i32a = new Int32Array(sab); $262.agent.report(Atomics.wait(i32a, 0, 0, 1000)); // Timeout after 1 second $262.agent.leaving(); }); diff --git a/test/built-ins/Atomics/wake/negative-index-throws.js b/test/built-ins/Atomics/wake/negative-index-throws.js index 68637f6634..50d7a345c1 100644 --- a/test/built-ins/Atomics/wake/negative-index-throws.js +++ b/test/built-ins/Atomics/wake/negative-index-throws.js @@ -16,9 +16,11 @@ info: | features: [Atomics, SharedArrayBuffer, TypedArray] ---*/ -var sab = new SharedArrayBuffer(1024); -var i32a = new Int32Array(sab); -var poisoned = { +const i32a = new Int32Array( + new SharedArrayBuffer(Int32Array.BYTES_PER_ELEMENT) +); + +const poisoned = { valueOf: function() { throw new Test262Error('should not evaluate this code'); } diff --git a/test/built-ins/Atomics/wake/non-int32-typedarray-throws.js b/test/built-ins/Atomics/wake/non-int32-typedarray-throws.js index 60f6103068..2ca5c7d46f 100644 --- a/test/built-ins/Atomics/wake/non-int32-typedarray-throws.js +++ b/test/built-ins/Atomics/wake/non-int32-typedarray-throws.js @@ -15,40 +15,64 @@ info: | features: [Atomics, Float32Array, Float64Array, Int8Array, TypedArray, Uint16Array, Uint8Array, Uint8ClampedArray] ---*/ -var poisoned = { +const poisoned = { valueOf: function() { throw new Test262Error('should not evaluate this code'); } }; assert.throws(TypeError, function() { - Atomics.wake(new Float64Array(), poisoned, poisoned); -}, '`Atomics.wake(new Float64Array(), poisoned, poisoned)` throws TypeError'); + const view = new Float64Array( + new SharedArrayBuffer(Float64Array.BYTES_PER_ELEMENT) + ); + Atomics.wake(view, poisoned, poisoned); +}, '`Atomics.wake(view), poisoned, poisoned)` throws TypeError'); assert.throws(TypeError, function() { - Atomics.wake(new Float32Array(), poisoned, poisoned); -}, '`Atomics.wake(new Float32Array(), poisoned, poisoned)` throws TypeError'); + const view = new Float32Array( + new SharedArrayBuffer(Float32Array.BYTES_PER_ELEMENT) + ); + Atomics.wake(view, poisoned, poisoned); +}, '`Atomics.wake(view), poisoned, poisoned)` throws TypeError'); assert.throws(TypeError, function() { - Atomics.wake(new Int16Array(), poisoned, poisoned); -}, '`Atomics.wake(new Int16Array(), poisoned, poisoned)` throws TypeError'); + const view = new Int16Array( + new SharedArrayBuffer(Int16Array.BYTES_PER_ELEMENT) + ); + Atomics.wake(view, poisoned, poisoned); +}, '`Atomics.wake(view), poisoned, poisoned)` throws TypeError'); assert.throws(TypeError, function() { - Atomics.wake(new Int8Array(), poisoned, poisoned); -}, '`Atomics.wake(new Int8Array(), poisoned, poisoned)` throws TypeError'); + const view = new Int8Array( + new SharedArrayBuffer(Int8Array.BYTES_PER_ELEMENT) + ); + Atomics.wake(view, poisoned, poisoned); +}, '`Atomics.wake(view), poisoned, poisoned)` throws TypeError'); assert.throws(TypeError, function() { + const view = new Uint32Array( + new SharedArrayBuffer(Uint32Array.BYTES_PER_ELEMENT) + ); Atomics.wake(new Uint32Array(), poisoned, poisoned); -}, '`Atomics.wake(new Uint32Array(), poisoned, poisoned)` throws TypeError'); +}, '`Atomics.wake(view), poisoned, poisoned)` throws TypeError'); assert.throws(TypeError, function() { - Atomics.wake(new Uint16Array(), poisoned, poisoned); -}, '`Atomics.wake(new Uint16Array(), poisoned, poisoned)` throws TypeError'); + const view = new Uint16Array( + new SharedArrayBuffer(Uint16Array.BYTES_PER_ELEMENT) + ); + Atomics.wake(view, poisoned, poisoned); +}, '`Atomics.wake(view), poisoned, poisoned)` throws TypeError'); assert.throws(TypeError, function() { - Atomics.wait(new Uint8Array(), poisoned, poisoned); -}, '`Atomics.wait(new Uint8Array(), poisoned, poisoned)` throws TypeError'); + const view = new Uint8Array( + new SharedArrayBuffer(Uint8Array.BYTES_PER_ELEMENT) + ); + Atomics.wake(view, poisoned, poisoned); +}, '`Atomics.wait(view), poisoned, poisoned)` throws TypeError'); assert.throws(TypeError, function() { - Atomics.wake(new Uint8ClampedArray(), poisoned, poisoned); -}, '`Atomics.wake(new Uint8ClampedArray(), poisoned, poisoned)` throws TypeError'); + const view = new Uint8ClampedArray( + new SharedArrayBuffer(Uint8ClampedArray.BYTES_PER_ELEMENT) + ); + Atomics.wake(view, poisoned, poisoned); +}, '`Atomics.wake(view), poisoned, poisoned)` throws TypeError'); diff --git a/test/built-ins/Atomics/wake/non-shared-bufferdata-throws.js b/test/built-ins/Atomics/wake/non-shared-bufferdata-throws.js index b31d39aa4d..ddfd3ce87b 100644 --- a/test/built-ins/Atomics/wake/non-shared-bufferdata-throws.js +++ b/test/built-ins/Atomics/wake/non-shared-bufferdata-throws.js @@ -15,8 +15,11 @@ info: | features: [ArrayBuffer, Atomics, TypedArray] ---*/ -var i32a = new Int32Array(new ArrayBuffer(4)); -var poisoned = { +const i32a = new Int32Array( + new ArrayBuffer(Int32Array.BYTES_PER_ELEMENT) +); + +const poisoned = { valueOf: function() { throw new Test262Error('should not evaluate this code'); } diff --git a/test/built-ins/Atomics/wake/non-shared-bufferdatate-non-shared-int-views.js b/test/built-ins/Atomics/wake/non-shared-bufferdatate-non-shared-int-views.js new file mode 100644 index 0000000000..289530bb21 --- /dev/null +++ b/test/built-ins/Atomics/wake/non-shared-bufferdatate-non-shared-int-views.js @@ -0,0 +1,42 @@ +// Copyright (C) 2017 Mozilla Corporation. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-atomics.wake +description: > + Test Atomics.wake on non-shared integer TypedArrays +includes: [testTypedArray.js] +features: [ArrayBuffer, Atomics, TypedArray] +---*/ + +const nonsab = new ArrayBuffer(16); + +const poisoned = { + valueOf: function() { + throw new Test262Error('should not evaluate this code'); + } +}; + +assert.throws(TypeError, function() { + Atomics.wake(new Int16Array(nonsab), poisoned, poisoned); +}, 'Atomics.wake(new Int16Array(nonsab)) throws TypeError'); + +assert.throws(TypeError, function() { + Atomics.wake(new Int8Array(nonsab), poisoned, poisoned); +}, 'Atomics.wake(new Int8Array(nonsab)) throws TypeError'); + +assert.throws(TypeError, function() { + Atomics.wake(new Uint32Array(nonsab), poisoned, poisoned); +}, 'Atomics.wake(new Uint32Array(nonsab)) throws TypeError'); + +assert.throws(TypeError, function() { + Atomics.wake(new Uint16Array(nonsab), poisoned, poisoned); +}, 'Atomics.wake(new Uint16Array(nonsab)) throws TypeError'); + +assert.throws(TypeError, function() { + Atomics.wake(new Uint8Array(nonsab), poisoned, poisoned); +}, 'Atomics.wake(new Uint8Array(nonsab)) throws TypeError'); + +assert.throws(TypeError, function() { + Atomics.wake(new Uint8ClampedArray(nonsab), poisoned, poisoned); +}, 'Atomics.wake(new Uint8ClampedArray(nonsab)) throws TypeError'); diff --git a/test/built-ins/Atomics/wake/non-shared-int-views.js b/test/built-ins/Atomics/wake/non-shared-int-views.js new file mode 100644 index 0000000000..64e69bd3b9 --- /dev/null +++ b/test/built-ins/Atomics/wake/non-shared-int-views.js @@ -0,0 +1,42 @@ +// Copyright (C) 2017 Mozilla Corporation. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-atomics.wake +description: > + Test Atomics.wake on non-shared integer TypedArrays +includes: [testTypedArray.js] +features: [Atomics, SharedArrayBuffer, TypedArray] +---*/ + +const sab = new SharedArrayBuffer(16); + +const poisoned = { + valueOf: function() { + throw new Test262Error('should not evaluate this code'); + } +}; + +assert.throws(TypeError, function() { + Atomics.wake(new Int16Array(sab), poisoned, poisoned); +}, 'Atomics.wake(new Int16Array(sab)) throws TypeError'); + +assert.throws(TypeError, function() { + Atomics.wake(new Int8Array(sab), poisoned, poisoned); +}, 'Atomics.wake(new Int8Array(sab)) throws TypeError'); + +assert.throws(TypeError, function() { + Atomics.wake(new Uint32Array(sab), poisoned, poisoned); +}, 'Atomics.wake(new Uint32Array(sab)) throws TypeError'); + +assert.throws(TypeError, function() { + Atomics.wake(new Uint16Array(sab), poisoned, poisoned); +}, 'Atomics.wake(new Uint16Array(sab)) throws TypeError'); + +assert.throws(TypeError, function() { + Atomics.wake(new Uint8Array(sab), poisoned, poisoned); +}, 'Atomics.wake(new Uint8Array(sab)) throws TypeError'); + +assert.throws(TypeError, function() { + Atomics.wake(new Uint8ClampedArray(sab), poisoned, poisoned); +}, 'Atomics.wake(new Uint8ClampedArray(sab)) throws TypeError'); diff --git a/test/built-ins/Atomics/wake/non-views.js b/test/built-ins/Atomics/wake/non-views.js index 032a489162..5ee2b79e67 100644 --- a/test/built-ins/Atomics/wake/non-views.js +++ b/test/built-ins/Atomics/wake/non-views.js @@ -9,8 +9,8 @@ includes: [testAtomics.js] features: [ArrayBuffer, arrow-function, Atomics, DataView, for-of, let, SharedArrayBuffer] ---*/ -testWithAtomicsNonViewValues(function(view) { +testWithAtomicsNonViewValues(function(nonView) { assert.throws(TypeError, function() { - Atomics.wake(view, 0, 0); - }, '`Atomics.wake(view, 0, 0)` throws TypeError'); // Even with count == 0 + Atomics.wake(nonView, 0, 0); + }, '`Atomics.wake(nonView, 0, 0)` throws TypeError'); // Even with count == 0 }); diff --git a/test/built-ins/Atomics/wake/nonshared-int-views.js b/test/built-ins/Atomics/wake/nonshared-int-views.js deleted file mode 100644 index ca3f198c6a..0000000000 --- a/test/built-ins/Atomics/wake/nonshared-int-views.js +++ /dev/null @@ -1,20 +0,0 @@ -// Copyright (C) 2017 Mozilla Corporation. All rights reserved. -// This code is governed by the BSD license found in the LICENSE file. - -/*--- -esid: sec-atomics.wake -description: > - Test Atomics.wake on non-shared integer TypedArrays -includes: [testTypedArray.js] -features: [ArrayBuffer, Atomics, TypedArray] ----*/ - -var buffer = new ArrayBuffer(16); -var views = intArrayConstructors.slice(); - -testWithTypedArrayConstructors(function(TA) { - // Should fail even if waking zero waiters - assert.throws(TypeError, function() { - Atomics.wake(new TA(buffer), 0, 0); - }, '`Atomics.wake(new TA(buffer), 0, 0)` throws TypeError'); -}, views); diff --git a/test/built-ins/Atomics/wake/not-a-typedarray-throws.js b/test/built-ins/Atomics/wake/not-a-typedarray-throws.js index 2e0203e290..2f2fe55dda 100644 --- a/test/built-ins/Atomics/wake/not-a-typedarray-throws.js +++ b/test/built-ins/Atomics/wake/not-a-typedarray-throws.js @@ -14,7 +14,7 @@ info: | features: [Atomics] ---*/ -var poisoned = { +const poisoned = { valueOf: function() { throw new Test262Error('should not evaluate this code'); } diff --git a/test/built-ins/Atomics/wake/not-an-object-throws.js b/test/built-ins/Atomics/wake/not-an-object-throws.js index cf8cc3e5d6..ce868dc2cd 100644 --- a/test/built-ins/Atomics/wake/not-an-object-throws.js +++ b/test/built-ins/Atomics/wake/not-an-object-throws.js @@ -13,7 +13,7 @@ info: | features: [Atomics, Symbol] ---*/ -var poisoned = { +const poisoned = { valueOf: function() { throw new Test262Error('should not evaluate this code'); } diff --git a/test/built-ins/Atomics/wake/null-bufferdata-throws.js b/test/built-ins/Atomics/wake/null-bufferdata-throws.js index 4d2300fd98..ac4413488b 100644 --- a/test/built-ins/Atomics/wake/null-bufferdata-throws.js +++ b/test/built-ins/Atomics/wake/null-bufferdata-throws.js @@ -16,15 +16,22 @@ includes: [detachArrayBuffer.js] features: [ArrayBuffer, Atomics, TypedArray] ---*/ -var i32a = new Int32Array(new ArrayBuffer(1024)); -var poisoned = { +const i32a = new Int32Array( + new SharedArrayBuffer(Int32Array.BYTES_PER_ELEMENT) +); + +const poisoned = { valueOf: function() { throw new Test262Error('should not evaluate this code'); } }; -$DETACHBUFFER(i32a.buffer); // Detaching a non-shared ArrayBuffer sets the [[ArrayBufferData]] value to null +try { + $DETACHBUFFER(i32a.buffer); // Detaching a non-shared ArrayBuffer sets the [[ArrayBufferData]] value to null +} catch (error) { + $ERROR(`An unexpected error occurred when detaching ArrayBuffer: ${error.message}`); +} assert.throws(TypeError, function() { Atomics.wake(i32a, poisoned, poisoned); -}, '`Atomics.wake(i32a, poisoned, poisoned)` throws TypeError'); +}, 'Atomics.wake(i32a, poisoned, poisoned) on detached buffer throwes TypeError'); diff --git a/test/built-ins/Atomics/wake/out-of-range-index-throws.js b/test/built-ins/Atomics/wake/out-of-range-index-throws.js index bbc9f08387..6100ad14c8 100644 --- a/test/built-ins/Atomics/wake/out-of-range-index-throws.js +++ b/test/built-ins/Atomics/wake/out-of-range-index-throws.js @@ -16,7 +16,10 @@ description: > features: [Atomics, SharedArrayBuffer, TypedArray] ---*/ -var i32a = new Int32Array(new SharedArrayBuffer(4)); +const i32a = new Int32Array( + new SharedArrayBuffer(Int32Array.BYTES_PER_ELEMENT) +); + var poisoned = { valueOf: function() { throw new Test262Error('should not evaluate this code'); diff --git a/test/built-ins/Atomics/wake/symbol-for-index-throws.js b/test/built-ins/Atomics/wake/symbol-for-index-throws.js index 723753f685..2d446e8eef 100644 --- a/test/built-ins/Atomics/wake/symbol-for-index-throws.js +++ b/test/built-ins/Atomics/wake/symbol-for-index-throws.js @@ -28,16 +28,17 @@ info: | features: [Atomics, SharedArrayBuffer, Symbol, Symbol.toPrimitive, TypedArray] ---*/ -var buffer = new SharedArrayBuffer(1024); -var i32a = new Int32Array(buffer); +const i32a = new Int32Array( + new SharedArrayBuffer(Int32Array.BYTES_PER_ELEMENT) +); -var poisonedValueOf = { +const poisonedValueOf = { valueOf: function() { throw new Test262Error('should not evaluate this code'); } }; -var poisonedToPrimitive = { +const poisonedToPrimitive = { [Symbol.toPrimitive]: function() { throw new Test262Error("passing a poisoned object using @@ToPrimitive"); } diff --git a/test/built-ins/Atomics/wake/undefined-index-defaults-to-zero.js b/test/built-ins/Atomics/wake/undefined-index-defaults-to-zero.js index 3faf97b4dd..93cc8e3441 100644 --- a/test/built-ins/Atomics/wake/undefined-index-defaults-to-zero.js +++ b/test/built-ins/Atomics/wake/undefined-index-defaults-to-zero.js @@ -39,7 +39,7 @@ $262.agent.start(` `); const i32a = new Int32Array( - new SharedArrayBuffer(Int32Array.BYTES_PER_ELEMENT); + new SharedArrayBuffer(Int32Array.BYTES_PER_ELEMENT) ); $262.agent.broadcast(i32a.buffer); @@ -51,7 +51,7 @@ assert.sameValue( 1, 'Atomics.wake(i32a, undefined, 1) returns 1' ); -assert.sameValue(getReport(), "ok", 'getReport() returns "ok"'); +assert.sameValue(getReport(), 'ok', 'getReport() returns "ok"'); // wake again at index 0 @@ -60,4 +60,4 @@ assert.sameValue( 1, 'Atomics.wake(i32a) returns 1' ); -assert.sameValue(getReport(), "ok", 'getReport() returns "ok"'); +assert.sameValue(getReport(), 'ok', 'getReport() returns "ok"'); diff --git a/test/built-ins/Atomics/wake/wake-all-on-loc.js b/test/built-ins/Atomics/wake/wake-all-on-loc.js index f319ef5f8f..e094e8526f 100644 --- a/test/built-ins/Atomics/wake/wake-all-on-loc.js +++ b/test/built-ins/Atomics/wake/wake-all-on-loc.js @@ -20,7 +20,7 @@ const NUMAGENT = 3; for (var i=0; i < NUMAGENT; i++) { $262.agent.start(` $262.agent.receiveBroadcast(function(sab) { - var i32a = new Int32Array(sab); + const i32a = new Int32Array(sab); Atomics.add(i32a, ${RUNNING}, 1); $262.agent.report("A " + Atomics.wait(i32a, ${WAKEUP}, 0)); $262.agent.leaving(); @@ -30,7 +30,7 @@ for (var i=0; i < NUMAGENT; i++) { $262.agent.start(` $262.agent.receiveBroadcast(function(sab) { - var i32a = new Int32Array(sab); + const i32a = new Int32Array(sab); Atomics.add(i32a, ${RUNNING}, 1); // This will always time out. $262.agent.report("B " + Atomics.wait(i32a, ${DUMMY}, 0, 10)); diff --git a/test/built-ins/Atomics/wake/wake-all.js b/test/built-ins/Atomics/wake/wake-all.js index ca6ebbacfd..1d6a3de1dd 100644 --- a/test/built-ins/Atomics/wake/wake-all.js +++ b/test/built-ins/Atomics/wake/wake-all.js @@ -15,10 +15,10 @@ const RUNNING = 2; // Accounting of live agents const NUMELEM = 3; const NUMAGENT = 3; -for (var i=0; i < NUMAGENT; i++) { +for (var i = 0; i < NUMAGENT; i++) { $262.agent.start(` $262.agent.receiveBroadcast(function(sab) { - var i32a = new Int32Array(sab); + const i32a = new Int32Array(sab); Atomics.add(i32a, ${RUNNING}, 1); $262.agent.report("A " + Atomics.wait(i32a, ${WAKEUP}, 0)); $262.agent.leaving(); @@ -28,7 +28,7 @@ for (var i=0; i < NUMAGENT; i++) { $262.agent.start(` $262.agent.receiveBroadcast(function(sab) { - var i32a = new Int32Array(sab); + const i32a = new Int32Array(sab); Atomics.add(i32a, ${RUNNING}, 1); // This will always time out. $262.agent.report("B " + Atomics.wait(i32a, ${DUMMY}, 0, 10)); @@ -36,7 +36,10 @@ $262.agent.start(` }); `); -var i32a = new Int32Array(new SharedArrayBuffer(NUMELEM * Int32Array.BYTES_PER_ELEMENT)); +const i32a = new Int32Array( + new SharedArrayBuffer(NUMELEM * Int32Array.BYTES_PER_ELEMENT) +); + $262.agent.broadcast(i32a.buffer); // Wait for agents to be running. @@ -60,6 +63,6 @@ for (var i = 0; i < NUMAGENT + 1; i++) { rs.sort(); for (var i = 0; i < NUMAGENT; i++) { - assert.sameValue(rs[i], "A ok", 'The value of rs[i] is "A ok"'); + assert.sameValue(rs[i], 'A ok', 'The value of rs[i] is "A ok"'); } -assert.sameValue(rs[NUMAGENT], "B timed-out", 'The value of rs[NUMAGENT] is "B timed-out"'); +assert.sameValue(rs[NUMAGENT], 'B timed-out', 'The value of rs[NUMAGENT] is "B timed-out"'); diff --git a/test/built-ins/Atomics/wake/wake-in-order.js b/test/built-ins/Atomics/wake/wake-in-order.js index 36174a310e..07675d49f4 100644 --- a/test/built-ins/Atomics/wake/wake-in-order.js +++ b/test/built-ins/Atomics/wake/wake-in-order.js @@ -22,7 +22,7 @@ const NUMELEM = RUNNING + 1; for (var i = 0; i < NUMAGENT; i++) { $262.agent.start(` $262.agent.receiveBroadcast(function(sab) { - var i32a = new Int32Array(sab); + const i32a = new Int32Array(sab); Atomics.add(i32a, ${RUNNING}, 1); while (Atomics.load(i32a, ${SPIN + i}) === 0) /* nothing */ ; @@ -35,6 +35,7 @@ for (var i = 0; i < NUMAGENT; i++) { const i32a = new Int32Array( new SharedArrayBuffer(NUMELEM * Int32Array.BYTES_PER_ELEMENT) ); + $262.agent.broadcast(i32a.buffer); // Wait for agents to be running. @@ -53,5 +54,5 @@ for (var i = 0; i < NUMAGENT; i++) { // Wake them up one at a time and check the order is 0 1 2 for (var i = 0; i < NUMAGENT; i++) { assert.sameValue(Atomics.wake(i32a, WAKEUP, 1), 1, 'Atomics.wake(i32a, WAKEUP, 1) returns 1'); - assert.sameValue(getReport(), i + "ok", 'getReport() returns i + "ok"'); + assert.sameValue(getReport(), i + 'ok', 'getReport() returns i + "ok"'); } diff --git a/test/built-ins/Atomics/wake/wake-nan.js b/test/built-ins/Atomics/wake/wake-nan.js index 3625ef5c8f..ddb4166384 100644 --- a/test/built-ins/Atomics/wake/wake-nan.js +++ b/test/built-ins/Atomics/wake/wake-nan.js @@ -24,4 +24,4 @@ const i32a = new Int32Array( $262.agent.broadcast(i32a.buffer); $262.agent.sleep(500); // Give the agent a chance to wait assert.sameValue(Atomics.wake(i32a, 0, NaN), 0, 'Atomics.wake(i32a, 0, NaN) returns 0'); // Don't actually wake it -assert.sameValue(getReport(), "timed-out", 'getReport() returns "timed-out"'); +assert.sameValue(getReport(), 'timed-out', 'getReport() returns "timed-out"'); diff --git a/test/built-ins/Atomics/wake/wake-one.js b/test/built-ins/Atomics/wake/wake-one.js index 49fea9399e..11b74ce861 100644 --- a/test/built-ins/Atomics/wake/wake-one.js +++ b/test/built-ins/Atomics/wake/wake-one.js @@ -18,7 +18,7 @@ const WAKECOUNT = 1; for (var i = 0; i < NUMAGENT; i++ ) { $262.agent.start(` $262.agent.receiveBroadcast(function(sab) { - var i32a = new Int32Array(sab); + const i32a = new Int32Array(sab); Atomics.add(i32a, ${RUNNING}, 1); // Waiters that are not woken will time out eventually. $262.agent.report(Atomics.wait(i32a, ${WAKEUP}, 0, 2000)); @@ -30,6 +30,7 @@ for (var i = 0; i < NUMAGENT; i++ ) { const i32a = new Int32Array( new SharedArrayBuffer(NUMELEM * Int32Array.BYTES_PER_ELEMENT) ); + $262.agent.broadcast(i32a.buffer); // Wait for agents to be running. diff --git a/test/built-ins/Atomics/wake/wake-rewake-noop.js b/test/built-ins/Atomics/wake/wake-rewake-noop.js index 3f5e6cbc0f..7d4c8e3f1a 100644 --- a/test/built-ins/Atomics/wake/wake-rewake-noop.js +++ b/test/built-ins/Atomics/wake/wake-rewake-noop.js @@ -11,15 +11,15 @@ features: [Atomics, SharedArrayBuffer, TypedArray] $262.agent.start(` $262.agent.receiveBroadcast(function(sab) { - var i32a = new Int32Array(sab); + const i32a = new Int32Array(sab); Atomics.add(i32a, 1, 1); $262.agent.report(Atomics.wait(i32a, 0, 0, 2000)); $262.agent.leaving(); }); `); -var i32a = new Int32Array( - new SharedArrayBuffer(2 * Int32Array.BYTES_PER_ELEMENT) +const i32a = new Int32Array( + new SharedArrayBuffer(Int32Array.BYTES_PER_ELEMENT) ); $262.agent.broadcast(i32a.buffer); diff --git a/test/built-ins/Atomics/wake/wake-two.js b/test/built-ins/Atomics/wake/wake-two.js index a8544684d3..6a9b790165 100644 --- a/test/built-ins/Atomics/wake/wake-two.js +++ b/test/built-ins/Atomics/wake/wake-two.js @@ -16,10 +16,10 @@ var RUNNING = 1; // Accounting of live agents here var NUMELEM = 2; var WAKECOUNT = 2; -for ( var i=0 ; i < NUMAGENT ; i++ ) { +for (var i = 0; i < NUMAGENT; i++ ) { $262.agent.start(` $262.agent.receiveBroadcast(function(sab) { - var i32a = new Int32Array(sab); + const i32a = new Int32Array(sab); Atomics.add(i32a, ${RUNNING}, 1); // Waiters that are not woken will time out eventually. $262.agent.report(Atomics.wait(i32a, ${WAKEUP}, 0, 2000)); @@ -28,9 +28,10 @@ for ( var i=0 ; i < NUMAGENT ; i++ ) { `); } -var i32a = new Int32Array( - new SharedArrayBuffer(NUMELEM * Int32Array.BYTES_PER_ELEMENT) +const i32a = new Int32Array( + new SharedArrayBuffer(Int32Array.BYTES_PER_ELEMENT) ); + $262.agent.broadcast(i32a.buffer); // Wait for agents to be running. diff --git a/test/built-ins/Atomics/wake/wake-with-no-agents-waiting.js b/test/built-ins/Atomics/wake/wake-with-no-agents-waiting.js index 55357c6887..83ebc27f34 100644 --- a/test/built-ins/Atomics/wake/wake-with-no-agents-waiting.js +++ b/test/built-ins/Atomics/wake/wake-with-no-agents-waiting.js @@ -18,9 +18,10 @@ $262.agent.start(` }); `); -var i32a = new Int32Array( - new SharedArrayBuffer(2 * Int32Array.BYTES_PER_ELEMENT) +const i32a = new Int32Array( + new SharedArrayBuffer(Int32Array.BYTES_PER_ELEMENT) ); + $262.agent.broadcast(i32a.buffer); waitUntil(i32a, 1, 1); diff --git a/test/built-ins/Atomics/wake/wake-with-no-matching-agents-waiting.js b/test/built-ins/Atomics/wake/wake-with-no-matching-agents-waiting.js index b9e68f6225..e967a85eea 100644 --- a/test/built-ins/Atomics/wake/wake-with-no-matching-agents-waiting.js +++ b/test/built-ins/Atomics/wake/wake-with-no-matching-agents-waiting.js @@ -6,7 +6,7 @@ esid: sec-atomics.wake description: > Test that Atomics.wake wakes zero waiters if there are no agents that match its arguments waiting. -includes: [testAtomics.js] +includes: [atomicsHelper.js] features: [Atomics, SharedArrayBuffer, TypedArray] ---*/ @@ -19,20 +19,13 @@ $262.agent.start(` }); `); -var i32a = new Int32Array(new SharedArrayBuffer(2 * Int32Array.BYTES_PER_ELEMENT)); +const i32a = new Int32Array( + new SharedArrayBuffer(Int32Array.BYTES_PER_ELEMENT) +); + $262.agent.broadcast(i32a.buffer); waitUntil(i32a, 1, 1); // There are ZERO matching agents... assert.sameValue(Atomics.wake(i32a, 1, 1), 0, 'Atomics.wake(i32a, 1, 1) returns 0'); - -function waitUntil(i32a, index, numberOfAgentsExpected) { - var i = 0; - while (Atomics.load(i32a, index) !== numberOfAgentsExpected && i < 15) { - $262.agent.sleep(10); - i++; - } - const numberOfAgentsReady = Atomics.load(i32a, index); - assert.sameValue(numberOfAgentsReady, numberOfAgentsExpected, `'numberOfAgentsReady' equals the value of numberOfAgentsExpected (${numberOfAgentsExpected})`); -} diff --git a/test/built-ins/Atomics/wake/wake-zero.js b/test/built-ins/Atomics/wake/wake-zero.js index 7e6d85bf04..f4c6066496 100644 --- a/test/built-ins/Atomics/wake/wake-zero.js +++ b/test/built-ins/Atomics/wake/wake-zero.js @@ -18,7 +18,7 @@ var WAKECOUNT = 0; for (var i = 0; i < NUMAGENT; i++) { $262.agent.start(` $262.agent.receiveBroadcast(function(sab) { - var i32a = new Int32Array(sab); + const i32a = new Int32Array(sab); Atomics.add(i32a, ${RUNNING}, 1); // Waiters that are not woken will time out eventually. $262.agent.report(Atomics.wait(i32a, ${WAKEUP}, 0, 200)); @@ -33,7 +33,6 @@ const i32a = new Int32Array( $262.agent.broadcast(i32a.buffer); - // Wait for agents to be running. waitUntil(i32a, RUNNING, NUMAGENT); -- GitLab