diff --git a/test/built-ins/Atomics/wait/bigint/cannot-suspend-throws.js b/test/built-ins/Atomics/wait/bigint/cannot-suspend-throws.js index a78000ac826dc3c2bc0016f0a2d71f9393b84f0f..f982fd14e7308904c5a443d082d86b76d130a027 100644 --- a/test/built-ins/Atomics/wait/bigint/cannot-suspend-throws.js +++ b/test/built-ins/Atomics/wait/bigint/cannot-suspend-throws.js @@ -18,7 +18,7 @@ features: [Atomics, BigInt, SharedArrayBuffer, TypedArray] flags: [CanBlockIsFalse] ---*/ -var buffer = new SharedArrayBuffer(4); +var buffer = new SharedArrayBuffer(8); var i64a = new BigInt64Array(buffer); assert.throws(TypeError, function() { diff --git a/test/built-ins/Atomics/wait/bigint/did-timeout.js b/test/built-ins/Atomics/wait/bigint/did-timeout.js index 47d99e1b687a19763b5494dc1ea459a9210762dc..e98c78ef5169dde687ee4f99f7b30404f5a93cdc 100644 --- a/test/built-ins/Atomics/wait/bigint/did-timeout.js +++ b/test/built-ins/Atomics/wait/bigint/did-timeout.js @@ -24,18 +24,21 @@ function getReport() { } $262.agent.start(` -$262.agent.receiveBroadcast(function(sab, id) { - var ia = new BigInt64Array(sab); - var then = $262.agent.monotonicNow(); - $262.agent.report(Atomics.wait(ia, 0, 0, 500)); // Timeout 500ms - $262.agent.report($262.agent.monotonicNow() - then); // Actual time can be more than 500ms - $262.agent.leaving(); -}); + $262.agent.receiveBroadcast(function(sab, id) { + const i64a = new BigInt64Array(sab); + const then = $262.agent.monotonicNow(); + $262.agent.report(Atomics.wait(i64a, 0, 0, 500)); // Timeout 500ms + $262.agent.report($262.agent.monotonicNow() - then); // Actual time can be more than 500ms + $262.agent.leaving(); + }); `); -var ia = new BigInt64Array(new SharedArrayBuffer(BigInt64Array.BYTES_PER_ELEMENT)); +const i64a = new BigInt64Array( + new SharedArrayBuffer(BigInt64Array.BYTES_PER_ELEMENT) +); -$262.agent.broadcast(ia.buffer); +$262.agent.broadcast(i64a.buffer); +$262.agent.sleep(100); assert.sameValue(getReport(), "timed-out"); assert.sameValue((getReport() | 0) >= 500 - $ATOMICS_MAX_TIME_EPSILON, true); diff --git a/test/built-ins/Atomics/wait/bigint/false-for-timeout-agent.js b/test/built-ins/Atomics/wait/bigint/false-for-timeout-agent.js index 93f3bc8c33cbf688bdf1b67a171f11ba37e8ab19..8adec5ce05e181bf9b53edbad12265fe1165998b 100644 --- a/test/built-ins/Atomics/wait/bigint/false-for-timeout-agent.js +++ b/test/built-ins/Atomics/wait/bigint/false-for-timeout-agent.js @@ -24,43 +24,45 @@ function getReport() { } $262.agent.start(` -var valueOf = { - valueOf: function() { - return false; - } -}; - -var toPrimitive = { - [Symbol.toPrimitive]: function() { - return false; - } -}; - -$262.agent.receiveBroadcast(function(sab) { - var i64a = new BigInt64Array(sab); - var start = $262.agent.monotonicNow(); - $262.agent.report(Atomics.wait(i64a, 0, 0, false)); - $262.agent.report(Atomics.wait(i64a, 0, 0, valueOf)); - $262.agent.report(Atomics.wait(i64a, 0, 0, toPrimitive)); - $262.agent.report($262.agent.monotonicNow() - start); - $262.agent.leaving(); -}); + var valueOf = { + valueOf: function() { + return false; + } + }; + + var toPrimitive = { + [Symbol.toPrimitive]: function() { + return false; + } + }; + + $262.agent.receiveBroadcast(function(sab) { + var i64a = new BigInt64Array(sab); + var start = $262.agent.monotonicNow(); + $262.agent.report(Atomics.wait(i64a, 0, 0, false)); + $262.agent.report(Atomics.wait(i64a, 0, 0, valueOf)); + $262.agent.report(Atomics.wait(i64a, 0, 0, toPrimitive)); + $262.agent.report($262.agent.monotonicNow() - start); + $262.agent.leaving(); + }); `); -var i64a = new BigInt64Array(new SharedArrayBuffer(BigInt64Array.BYTES_PER_ELEMENT)); +const i64a = new BigInt64Array( + new SharedArrayBuffer(BigInt64Array.BYTES_PER_ELEMENT) +); $262.agent.broadcast(i64a.buffer); -$262.agent.sleep(150); +$262.agent.sleep(100); assert.sameValue(getReport(), 'timed-out'); assert.sameValue(getReport(), 'timed-out'); assert.sameValue(getReport(), 'timed-out'); -var timeDiffReport = getReport(); +var lapse = getReport(); -assert(timeDiffReport >= 0, 'timeout should be a min of 0ms'); +assert(lapse >= 0, 'timeout should be a min of 0ms'); -assert(timeDiffReport <= $ATOMICS_MAX_TIME_EPSILON, 'timeout should be a max of $$ATOMICS_MAX_TIME_EPSILON'); +assert(lapse <= $ATOMICS_MAX_TIME_EPSILON, 'timeout should be a max of $$ATOMICS_MAX_TIME_EPSILON'); assert.sameValue(Atomics.wake(i64a, 0), 0); diff --git a/test/built-ins/Atomics/wait/bigint/good-views.js b/test/built-ins/Atomics/wait/bigint/good-views.js index 063d52ea82757c0c529239e126b1723916191930..eee639f78ca26b2d25591a610bfd9b0c77c41eb3 100644 --- a/test/built-ins/Atomics/wait/bigint/good-views.js +++ b/test/built-ins/Atomics/wait/bigint/good-views.js @@ -13,34 +13,34 @@ features: [Atomics, BigInt] // even in the shell. $262.agent.start(` -var sab = new SharedArrayBuffer(1024); -var ab = new ArrayBuffer(16); - -var good_indices = [ (view) => 0/-1, // -0 - (view) => '-0', - (view) => view.length - 1, - (view) => ({ valueOf: () => 0 }), - (view) => ({ toString: () => '0', valueOf: false }) // non-callable valueOf triggers invocation of toString - ]; - -var view = new BigInt64Array(sab, 32, 20); - -view[0] = 0; -$262.agent.report("A " + Atomics.wait(view, 0, 0, 0)) -$262.agent.report("B " + Atomics.wait(view, 0, 37, 0)); - -// In-bounds boundary cases for indexing -for ( let IdxGen of good_indices ) { - let Idx = IdxGen(view); - view.fill(0); - // Atomics.store() computes an index from Idx in the same way as other - // Atomics operations, not quite like view[Idx]. - Atomics.store(view, Idx, 37); - $262.agent.report("C " + Atomics.wait(view, Idx, 0)); -} + var sab = new SharedArrayBuffer(1024); + var ab = new ArrayBuffer(16); + + var good_indices = [ (view) => 0/-1, // -0 + (view) => '-0', + (view) => view.length - 1, + (view) => ({ valueOf: () => 0 }), + (view) => ({ toString: () => '0', valueOf: false }) // non-callable valueOf triggers invocation of toString + ]; + + var view = new BigInt64Array(sab, 32, 20); + + view[0] = 0; + $262.agent.report("A " + Atomics.wait(view, 0, 0, 0)) + $262.agent.report("B " + Atomics.wait(view, 0, 37, 0)); + + // In-bounds boundary cases for indexing + for ( let IdxGen of good_indices ) { + let Idx = IdxGen(view); + view.fill(0); + // Atomics.store() computes an index from Idx in the same way as other + // Atomics operations, not quite like view[Idx]. + Atomics.store(view, Idx, 37); + $262.agent.report("C " + Atomics.wait(view, Idx, 0)); + } -$262.agent.report("done"); -$262.agent.leaving(); + $262.agent.report("done"); + $262.agent.leaving(); `); assert.sameValue(getReport(), "A timed-out"); diff --git a/test/built-ins/Atomics/wait/bigint/nan-for-timeout.js b/test/built-ins/Atomics/wait/bigint/nan-for-timeout.js index 2ff89fe540675d4011ec894d9eae50e8cb54bb45..9543c6118ec5de192da99c00035950e0f26fb055 100644 --- a/test/built-ins/Atomics/wait/bigint/nan-for-timeout.js +++ b/test/built-ins/Atomics/wait/bigint/nan-for-timeout.js @@ -24,19 +24,19 @@ function getReport() { return r; } -$262.agent.start( - ` -$262.agent.receiveBroadcast(function(sab) { - var i64a = new BigInt64Array(sab); - $262.agent.report(Atomics.wait(i64a, 0, 0, NaN)); // NaN => +Infinity - $262.agent.leaving(); -}); +$262.agent.start(` + $262.agent.receiveBroadcast(function(sab) { + var i64a = new BigInt64Array(sab); + $262.agent.report(Atomics.wait(i64a, 0, 0, NaN)); // NaN => +Infinity + $262.agent.leaving(); + }); `); -var i64a = new BigInt64Array(new SharedArrayBuffer(BigInt64Array.BYTES_PER_ELEMENT)); +const i64a = new BigInt64Array( + new SharedArrayBuffer(BigInt64Array.BYTES_PER_ELEMENT) +); $262.agent.broadcast(i64a.buffer); -$262.agent.sleep(500); // Ample time - +$262.agent.sleep(100); assert.sameValue(Atomics.wake(i64a, 0), 1); assert.sameValue(getReport(), "ok"); diff --git a/test/built-ins/Atomics/wait/bigint/negative-index-throws.js b/test/built-ins/Atomics/wait/bigint/negative-index-throws.js index d3871ce5de836934aa3e21d2c812db9de8dec132..8037e552954683cfc148770d876bf7f90b8e8f15 100644 --- a/test/built-ins/Atomics/wait/bigint/negative-index-throws.js +++ b/test/built-ins/Atomics/wait/bigint/negative-index-throws.js @@ -16,9 +16,10 @@ info: | features: [Atomics, BigInt, SharedArrayBuffer, TypedArray] ---*/ -var sab = new SharedArrayBuffer(1024); -var i64a = new BigInt64Array(sab); -var poisoned = { +const i64a = new BigInt64Array( + new SharedArrayBuffer(BigInt64Array.BYTES_PER_ELEMENT) +); +const poisoned = { valueOf: function() { throw new Test262Error("should not evaluate this code"); } diff --git a/test/built-ins/Atomics/wait/bigint/negative-timeout-agent.js b/test/built-ins/Atomics/wait/bigint/negative-timeout-agent.js index ed8d10f020bf586d0137bd1382f88f886d3ff8fd..a3de63681a2d095b61e50be73295a9c4401841ff 100644 --- a/test/built-ins/Atomics/wait/bigint/negative-timeout-agent.js +++ b/test/built-ins/Atomics/wait/bigint/negative-timeout-agent.js @@ -17,15 +17,16 @@ function getReport() { } $262.agent.start(` -$262.agent.receiveBroadcast(function(sab, id) { - var ia = new BigInt64Array(sab); - $262.agent.report(Atomics.wait(ia, 0, 0, -5)); // -5 => 0 - $262.agent.leaving(); -}); + $262.agent.receiveBroadcast(function(sab, id) { + var ia = new BigInt64Array(sab); + $262.agent.report(Atomics.wait(ia, 0, 0, -5)); // -5 => 0 + $262.agent.leaving(); + }); `); -var buffer = new SharedArrayBuffer(1024); -var i64a = new BigInt64Array(buffer); +const i64a = new BigInt64Array( + new SharedArrayBuffer(BigInt64Array.BYTES_PER_ELEMENT) +); $262.agent.broadcast(i64a.buffer); assert.sameValue(getReport(), "timed-out"); diff --git a/test/built-ins/Atomics/wait/bigint/negative-timeout.js b/test/built-ins/Atomics/wait/bigint/negative-timeout.js index f0838f673ef9c8bdf35fa67d8f5a44a43b265cdb..f37745cc9a27158ab6bb446062fdc097c8821194 100644 --- a/test/built-ins/Atomics/wait/bigint/negative-timeout.js +++ b/test/built-ins/Atomics/wait/bigint/negative-timeout.js @@ -9,7 +9,8 @@ features: [Atomics, BigInt, SharedArrayBuffer, TypedArray] flags: [CanBlockIsFalse] ---*/ -var buffer = new SharedArrayBuffer(1024); -var i64a = new BigInt64Array(buffer); +const i64a = new BigInt64Array( + new SharedArrayBuffer(BigInt64Array.BYTES_PER_ELEMENT) +); assert.sameValue(Atomics.wait(i64a, 0, 0, -1), "timed-out"); diff --git a/test/built-ins/Atomics/wait/bigint/out-of-range-index-throws.js b/test/built-ins/Atomics/wait/bigint/out-of-range-index-throws.js index e325592fa1fec6b622eb87f8c4b8c0ceef9673d0..d192847026dba57906410d99b6eaac0a17145f05 100644 --- a/test/built-ins/Atomics/wait/bigint/out-of-range-index-throws.js +++ b/test/built-ins/Atomics/wait/bigint/out-of-range-index-throws.js @@ -16,9 +16,11 @@ info: | features: [Atomics, BigInt, SharedArrayBuffer, TypedArray] ---*/ -var i64a = new BigInt64Array(new SharedArrayBuffer(4)); +const i64a = new BigInt64Array( + new SharedArrayBuffer(BigInt64Array.BYTES_PER_ELEMENT) +); -var poisoned = { +const poisoned = { valueOf: function() { throw new Test262Error("should not evaluate this code"); } diff --git a/test/built-ins/Atomics/wait/bigint/value-not-equal.js b/test/built-ins/Atomics/wait/bigint/value-not-equal.js index df97451291a17caa763625fbf8e93de6e68c3f16..b6e07e27e2f0673a10e51141e9d7dba0e13c5adf 100644 --- a/test/built-ins/Atomics/wait/bigint/value-not-equal.js +++ b/test/built-ins/Atomics/wait/bigint/value-not-equal.js @@ -28,19 +28,22 @@ function getReport() { var value = 42; $262.agent.start(` -$262.agent.receiveBroadcast(function(sab) { - var i64a = new BigInt64Array(sab); + $262.agent.receiveBroadcast(function(sab) { + var i64a = new BigInt64Array(sab); - $262.agent.report(Atomics.store(i64a, 0, ${value})); - $262.agent.report(Atomics.wait(i64a, 0, 0)); - $262.agent.leaving(); -}); + $262.agent.report(Atomics.store(i64a, 0, ${value})); + $262.agent.report(Atomics.wait(i64a, 0, 0)); + $262.agent.leaving(); + }); `); -var i64a = new BigInt64Array(new SharedArrayBuffer(BigInt64Array.BYTES_PER_ELEMENT)); +const i64a = new BigInt64Array( + new SharedArrayBuffer(BigInt64Array.BYTES_PER_ELEMENT) +); $262.agent.broadcast(i64a.buffer); +$262.agent.sleep(100); assert.sameValue(getReport(), value.toString()); -assert.sameValue(getReport(), "not-equal"); +assert.sameValue(getReport(), 'not-equal'); diff --git a/test/built-ins/Atomics/wait/bigint/waiterlist-block-indexedposition-wake.js b/test/built-ins/Atomics/wait/bigint/waiterlist-block-indexedposition-wake.js index 8f8c396e9ba8b8a4d5e554f63c47c429f1cb525f..8d4e994d78475a1e319f9f816581dd21f05cec6e 100644 --- a/test/built-ins/Atomics/wait/bigint/waiterlist-block-indexedposition-wake.js +++ b/test/built-ins/Atomics/wait/bigint/waiterlist-block-indexedposition-wake.js @@ -29,34 +29,39 @@ function getReport() { } $262.agent.start(` -$262.agent.receiveBroadcast(function(sab) { - var i64a = new BigInt64Array(sab); - - // Wait on index 0 - Atomics.wait(i64a, 0, 0, 200); - $262.agent.report("fail"); - $262.agent.leaving(); -}); + $262.agent.receiveBroadcast(function(sab) { + var i64a = new BigInt64Array(sab); + + // Wait on index 0 + Atomics.wait(i64a, 0, 0, 200); + $262.agent.report(0); + $262.agent.leaving(); + }); `); $262.agent.start(` -$262.agent.receiveBroadcast(function(sab) { - var i64a = new BigInt64Array(sab); - - // Wait on index 2 - Atomics.wait(i64a, 2, 0, 200); - $262.agent.report("pass"); - $262.agent.leaving(); -}); + $262.agent.receiveBroadcast(function(sab) { + var i64a = new BigInt64Array(sab); + + // Wait on index 2 + Atomics.wait(i64a, 2, 0, 200); + $262.agent.report(2); + $262.agent.leaving(); + }); `); -var length = 4 * BigInt64Array.BYTES_PER_ELEMENT; -var i64a = new BigInt64Array(new SharedArrayBuffer(length)); +const i64a = new BigInt64Array( + new SharedArrayBuffer(4 * BigInt64Array.BYTES_PER_ELEMENT) +); $262.agent.broadcast(i64a.buffer); $262.agent.sleep(10); // Wake index 2 Atomics.wake(i64a, 2, 1); +assert.sameValue(getReport(), "2"); + +// Wake index 0 +Atomics.wake(i64a, 2, 1); +assert.sameValue(getReport(), "0"); -assert.sameValue(getReport(), "pass"); diff --git a/test/built-ins/Atomics/wait/false-for-timeout-agent.js b/test/built-ins/Atomics/wait/false-for-timeout-agent.js index 71a396bc1048fb06959c5a483860a66e368bad58..3322d669b70e7383c47f759b36b29fbec3644ade 100644 --- a/test/built-ins/Atomics/wait/false-for-timeout-agent.js +++ b/test/built-ins/Atomics/wait/false-for-timeout-agent.js @@ -24,8 +24,7 @@ function getReport() { return r; } -$262.agent.start( - ` +$262.agent.start(` var valueOf = { valueOf: function() { return false; @@ -49,20 +48,22 @@ $262.agent.receiveBroadcast(function(sab) { }); `); -var i32a = new Int32Array(new SharedArrayBuffer(Int32Array.BYTES_PER_ELEMENT)); +const i32a = new Int32Array( + new SharedArrayBuffer(Int32Array.BYTES_PER_ELEMENT) +); $262.agent.broadcast(i32a.buffer); -$262.agent.sleep(150); +$262.agent.sleep(100); assert.sameValue(getReport(), 'timed-out'); assert.sameValue(getReport(), 'timed-out'); assert.sameValue(getReport(), 'timed-out'); -var timeDiffReport = getReport(); +var lapse = getReport(); -assert(timeDiffReport >= 0, 'timeout should be a min of 0ms'); +assert(lapse >= 0, 'timeout should be a min of 0ms'); -assert(timeDiffReport <= $ATOMICS_MAX_TIME_EPSILON, 'timeout should be a max of $$ATOMICS_MAX_TIME_EPSILON'); +assert(lapse <= $ATOMICS_MAX_TIME_EPSILON, `timeout should be a max of ${$ATOMICS_MAX_TIME_EPSILON}`); assert.sameValue(Atomics.wake(i32a, 0), 0); diff --git a/test/built-ins/Atomics/wait/false-for-timeout.js b/test/built-ins/Atomics/wait/false-for-timeout.js index c33ac86270a33597af1b4598fb4d871e9570c633..86463f3d619ce3fb76ab84fca5a723a747991b26 100644 --- a/test/built-ins/Atomics/wait/false-for-timeout.js +++ b/test/built-ins/Atomics/wait/false-for-timeout.js @@ -16,16 +16,17 @@ features: [Atomics, SharedArrayBuffer, Symbol, Symbol.toPrimitive, TypedArray] flags: [CanBlockIsFalse] ---*/ -var buffer = new SharedArrayBuffer(1024); -var i32a = new Int32Array(buffer); +const i32a = new Int32Array( + new SharedArrayBuffer(Int32Array.BYTES_PER_ELEMENT) +); -var valueOf = { +const valueOf = { valueOf: function() { return false; } }; -var toPrimitive = { +const toPrimitive = { [Symbol.toPrimitive]: function() { return false; } diff --git a/test/built-ins/Atomics/wait/waiterlist-block-indexedposition-wake.js b/test/built-ins/Atomics/wait/waiterlist-block-indexedposition-wake.js index 6c59ebabc1acebe9d5109c5cc0955921c721521f..6c800db52588155cca96cd485b629d3981d0fba1 100644 --- a/test/built-ins/Atomics/wait/waiterlist-block-indexedposition-wake.js +++ b/test/built-ins/Atomics/wait/waiterlist-block-indexedposition-wake.js @@ -29,25 +29,25 @@ function getReport() { } $262.agent.start(` -$262.agent.receiveBroadcast(function(sab) { - var i32a = new Int32Array(sab); - - // Wait on index 0 - Atomics.wait(i32a, 0, 0, 200); - $262.agent.report("fail"); - $262.agent.leaving(); -}); + $262.agent.receiveBroadcast(function(sab) { + var i32a = new Int32Array(sab); + + // Wait on index 0 + Atomics.wait(i32a, 0, 0, 200); + $262.agent.report(0); + $262.agent.leaving(); + }); `); $262.agent.start(` -$262.agent.receiveBroadcast(function(sab) { - var i32a = new Int32Array(sab); - - // Wait on index 2 - Atomics.wait(i32a, 2, 0, 200); - $262.agent.report("pass"); - $262.agent.leaving(); -}); + $262.agent.receiveBroadcast(function(sab) { + var i32a = new Int32Array(sab); + + // Wait on index 2 + Atomics.wait(i32a, 2, 0, 200); + $262.agent.report(0); + $262.agent.leaving(); + }); `); var length = 4 * Int32Array.BYTES_PER_ELEMENT; @@ -58,5 +58,8 @@ $262.agent.sleep(10); // Wake index 2 Atomics.wake(i32a, 2, 1); +assert.sameValue(getReport(), '2'); -assert.sameValue(getReport(), "pass"); +// Wake index 0 +Atomics.wake(i32a, 2, 1); +assert.sameValue(getReport(), '0'); diff --git a/test/built-ins/Atomics/wait/waiterlist-order-of-operations-is-fifo.js b/test/built-ins/Atomics/wait/waiterlist-order-of-operations-is-fifo.js index 20bfe22a5c277a288e0818b0a00549a331e0c56b..d049f9676baef30690ffae993c6971932b142078 100644 --- a/test/built-ins/Atomics/wait/waiterlist-order-of-operations-is-fifo.js +++ b/test/built-ins/Atomics/wait/waiterlist-order-of-operations-is-fifo.js @@ -23,46 +23,41 @@ function getReport() { return r; } -var agent1 = '1'; -var agent2 = '2'; -var agent3 = '3'; +const agent1 = '1'; +const agent2 = '2'; +const agent3 = '3'; $262.agent.start(` -$262.agent.receiveBroadcast(function(sab) { - var i32a = new Int32Array(sab); - - $262.agent.report(${agent1}); - Atomics.wait(i32a, 0, 0); - $262.agent.report(${agent1}); - - $262.agent.leaving(); -}); + $262.agent.receiveBroadcast(function(sab) { + const i32a = new Int32Array(sab); + + $262.agent.report(${agent1}); + Atomics.wait(i32a, 0, 0); + $262.agent.report(${agent1}); + $262.agent.leaving(); + }); `); $262.agent.start(` -$262.agent.receiveBroadcast(function(sab) { - var i32a = new Int32Array(sab); - - $262.agent.report(${agent2}); - - Atomics.wait(i32a, 0, 0); - $262.agent.report(${agent2}); - - $262.agent.leaving(); -}); + $262.agent.receiveBroadcast(function(sab) { + const i32a = new Int32Array(sab); + + $262.agent.report(${agent2}); + Atomics.wait(i32a, 0, 0); + $262.agent.report(${agent2}); + $262.agent.leaving(); + }); `); $262.agent.start(` -$262.agent.receiveBroadcast(function(sab) { - var i32a = new Int32Array(sab); - - $262.agent.report(${agent3}); - - Atomics.wait(i32a, 0, 0); - $262.agent.report(${agent3}); - - $262.agent.leaving(); -}); + $262.agent.receiveBroadcast(function(sab) { + const i32a = new Int32Array(sab); + + $262.agent.report(${agent3}); + Atomics.wait(i32a, 0, 0); + $262.agent.report(${agent3}); + $262.agent.leaving(); + }); `);