From a19232ca4cc3dc3a7280ad9b1c14e9e13d1d7d2a Mon Sep 17 00:00:00 2001 From: Rick Waldron <waldron.rick@gmail.com> Date: Thu, 17 May 2018 14:06:22 -0400 Subject: [PATCH] Atomics: house keeping. --- test/built-ins/Atomics/add/bad-range.js | 6 +- .../built-ins/Atomics/add/bigint/bad-range.js | 6 +- .../Atomics/add/bigint/good-views.js | 16 +-- .../Atomics/add/bigint/nonshared-int-views.js | 6 +- test/built-ins/Atomics/add/descriptor.js | 8 +- .../Atomics/add/expected-return-value.js | 6 +- test/built-ins/Atomics/add/good-views.js | 16 +-- test/built-ins/Atomics/add/length.js | 11 +- test/built-ins/Atomics/add/name.js | 11 +- test/built-ins/Atomics/add/non-views.js | 6 +- .../Atomics/add/nonshared-int-views.js | 6 +- .../Atomics/add/shared-nonint-views.js | 6 +- test/built-ins/Atomics/and/bad-range.js | 6 +- .../built-ins/Atomics/and/bigint/bad-range.js | 6 +- .../Atomics/and/bigint/good-views.js | 30 +++-- .../Atomics/and/bigint/nonshared-int-views.js | 6 +- test/built-ins/Atomics/and/descriptor.js | 8 +- .../Atomics/and/expected-return-value.js | 8 +- test/built-ins/Atomics/and/good-views.js | 30 +++-- test/built-ins/Atomics/and/length.js | 11 +- test/built-ins/Atomics/and/name.js | 11 +- test/built-ins/Atomics/and/non-views.js | 6 +- .../Atomics/and/nonshared-int-views.js | 6 +- .../Atomics/and/shared-nonint-views.js | 6 +- .../Atomics/compareExchange/bad-range.js | 6 +- .../compareExchange/bigint/bad-range.js | 6 +- .../compareExchange/bigint/good-views.js | 34 +++-- .../bigint/nonshared-int-views.js | 6 +- .../Atomics/compareExchange/descriptor.js | 8 +- .../compareExchange/expected-return-value.js | 12 +- .../Atomics/compareExchange/good-views.js | 34 +++-- .../Atomics/compareExchange/length.js | 11 +- .../built-ins/Atomics/compareExchange/name.js | 11 +- .../Atomics/compareExchange/non-views.js | 6 +- .../compareExchange/nonshared-int-views.js | 6 +- .../compareExchange/shared-nonint-views.js | 6 +- test/built-ins/Atomics/exchange/bad-range.js | 6 +- .../Atomics/exchange/bigint/bad-range.js | 6 +- .../Atomics/exchange/bigint/good-views.js | 16 +-- .../exchange/bigint/nonshared-int-views.js | 6 +- test/built-ins/Atomics/exchange/descriptor.js | 8 +- .../Atomics/exchange/expected-return-value.js | 16 ++- test/built-ins/Atomics/exchange/good-views.js | 16 +-- test/built-ins/Atomics/exchange/length.js | 11 +- test/built-ins/Atomics/exchange/name.js | 11 +- test/built-ins/Atomics/exchange/non-views.js | 6 +- .../Atomics/exchange/nonshared-int-views.js | 6 +- .../Atomics/exchange/shared-nonint-views.js | 6 +- .../Atomics/isLockFree/bigint/corner-cases.js | 66 ++++++++-- .../bigint/expected-return-value.js | 8 +- .../Atomics/isLockFree/bigint/value.js | 46 ------- .../Atomics/isLockFree/corner-cases.js | 66 ++++++++-- .../Atomics/isLockFree/descriptor.js | 8 +- .../isLockFree/expected-return-value.js | 119 +++++++++++++++--- test/built-ins/Atomics/isLockFree/length.js | 11 +- test/built-ins/Atomics/isLockFree/name.js | 11 +- test/built-ins/Atomics/isLockFree/value.js | 45 ------- test/built-ins/Atomics/load/descriptor.js | 8 +- .../Atomics/load/expected-return-value.js | 6 +- test/built-ins/Atomics/load/length.js | 11 +- test/built-ins/Atomics/load/name.js | 11 +- test/built-ins/Atomics/or/descriptor.js | 9 +- .../Atomics/or/expected-return-value.js | 6 +- test/built-ins/Atomics/or/length.js | 11 +- test/built-ins/Atomics/or/name.js | 11 +- test/built-ins/Atomics/store/descriptor.js | 9 +- .../Atomics/store/expected-return-value.js | 6 +- test/built-ins/Atomics/store/length.js | 11 +- test/built-ins/Atomics/store/name.js | 11 +- test/built-ins/Atomics/sub/descriptor.js | 8 +- .../Atomics/sub/expected-return-value.js | 6 +- test/built-ins/Atomics/sub/length.js | 11 +- test/built-ins/Atomics/sub/name.js | 10 +- .../Atomics/wait/bigint/did-timeout.js | 4 +- .../wait/bigint/false-for-timeout-agent.js | 4 +- ...no-spurious-wakeup-on-store-padded-time.js | 4 +- .../bigint/no-spurious-wakeup-on-store.js | 4 +- test/built-ins/Atomics/wait/descriptor.js | 9 +- test/built-ins/Atomics/wait/did-timeout.js | 4 +- .../Atomics/wait/false-for-timeout-agent.js | 4 +- test/built-ins/Atomics/wait/length.js | 11 +- test/built-ins/Atomics/wait/name.js | 11 +- .../Atomics/wait/no-spurious-wakeup-on-add.js | 4 +- .../Atomics/wait/no-spurious-wakeup-on-and.js | 4 +- .../no-spurious-wakeup-on-compareExchange.js | 4 +- .../wait/no-spurious-wakeup-on-exchange.js | 4 +- .../Atomics/wait/no-spurious-wakeup-on-or.js | 4 +- ...no-spurious-wakeup-on-store-padded-time.js | 4 +- .../wait/no-spurious-wakeup-on-store.js | 4 +- .../Atomics/wait/no-spurious-wakeup-on-sub.js | 4 +- .../Atomics/wait/no-spurious-wakeup-on-xor.js | 4 +- .../Atomics/wait/null-for-timeout-agent.js | 4 +- .../Atomics/wait/object-for-timeout-agent.js | 4 +- ...oisoned-object-for-timeout-throws-agent.js | 4 +- .../wait/symbol-for-index-throws-agent.js | 4 +- .../wait/symbol-for-timeout-throws-agent.js | 4 +- .../wait/symbol-for-value-throws-agent.js | 4 +- .../Atomics/wait/true-for-timeout-agent.js | 4 +- .../waiterlist-order-of-operations-is-fifo.js | 4 +- test/built-ins/Atomics/wait/was-woken.js | 10 +- test/built-ins/Atomics/wake/descriptor.js | 8 +- test/built-ins/Atomics/wake/length.js | 11 +- test/built-ins/Atomics/wake/name.js | 11 +- test/built-ins/Atomics/wake/negative-count.js | 2 +- .../built-ins/Atomics/wake/wake-all-on-loc.js | 26 ++-- test/built-ins/Atomics/wake/wake-all.js | 26 ++-- test/built-ins/Atomics/wake/wake-in-order.js | 30 ++--- test/built-ins/Atomics/wake/wake-nan.js | 10 +- test/built-ins/Atomics/xor/descriptor.js | 8 +- .../Atomics/xor/expected-return-value.js | 10 +- test/built-ins/Atomics/xor/length.js | 10 +- test/built-ins/Atomics/xor/name.js | 11 +- 112 files changed, 798 insertions(+), 521 deletions(-) delete mode 100644 test/built-ins/Atomics/isLockFree/bigint/value.js delete mode 100644 test/built-ins/Atomics/isLockFree/value.js diff --git a/test/built-ins/Atomics/add/bad-range.js b/test/built-ins/Atomics/add/bad-range.js index 971a958806..e220affe3a 100644 --- a/test/built-ins/Atomics/add/bad-range.js +++ b/test/built-ins/Atomics/add/bad-range.js @@ -15,6 +15,10 @@ var views = intArrayConstructors.slice(); testWithTypedArrayConstructors(function(TA) { let view = new TA(buffer); testWithAtomicsOutOfBoundsIndices(function(IdxGen) { - assert.throws(RangeError, () => Atomics.add(view, IdxGen(view), 10)); + assert.throws( + RangeError, + () => Atomics.add(view, IdxGen(view), 10), + 'Atomics.add(view, IdxGen(view), 10) throws RangeError' + ); }); }, views); diff --git a/test/built-ins/Atomics/add/bigint/bad-range.js b/test/built-ins/Atomics/add/bigint/bad-range.js index d8781ee6f6..2cb1260dde 100644 --- a/test/built-ins/Atomics/add/bigint/bad-range.js +++ b/test/built-ins/Atomics/add/bigint/bad-range.js @@ -14,6 +14,10 @@ var buffer = new SharedArrayBuffer(8); testWithBigIntTypedArrayConstructors(function(TA) { let view = new TA(buffer); testWithAtomicsOutOfBoundsIndices(function(IdxGen) { - assert.throws(RangeError, () => Atomics.add(view, IdxGen(view), 10)); + assert.throws( + RangeError, + () => Atomics.add(view, IdxGen(view), 10), + 'Atomics.add(view, IdxGen(view), 10) throws RangeError' + ); }); }); diff --git a/test/built-ins/Atomics/add/bigint/good-views.js b/test/built-ins/Atomics/add/bigint/good-views.js index 9752794497..a0ba6015e9 100644 --- a/test/built-ins/Atomics/add/bigint/good-views.js +++ b/test/built-ins/Atomics/add/bigint/good-views.js @@ -19,27 +19,27 @@ testWithBigIntTypedArrayConstructors(function(TA) { // Add positive number view[8] = 0; - assert.sameValue(Atomics.add(view, 8, 10), 0); - assert.sameValue(view[8], 10); + assert.sameValue(Atomics.add(view, 8, 10), 0, 'Atomics.add(view, 8, 10) returns 0'); + assert.sameValue(view[8], 10, 'The value of view[8] is 10'); // Add negative number - assert.sameValue(Atomics.add(view, 8, -5), 10); - assert.sameValue(view[8], 5); + assert.sameValue(Atomics.add(view, 8, -5), 10, 'Atomics.add(view, 8, -5) returns 10'); + assert.sameValue(view[8], 5, 'The value of view[8] is 5'); view[3] = -5; control[0] = -5; assert.sameValue(Atomics.add(view, 3, 0), control[0], - "Result is negative and subject to coercion"); + 'Atomics.add(view, 3, 0) equals the value of control[0] (-5)'); control[0] = 12345; view[3] = 12345; assert.sameValue(Atomics.add(view, 3, 0), control[0], - "Result is subject to chopping"); + 'Atomics.add(view, 3, 0) equals the value of control[0] (12345)'); control[0] = 123456789; view[3] = 123456789; assert.sameValue(Atomics.add(view, 3, 0), control[0], - "Result is subject to chopping"); + 'Atomics.add(view, 3, 0) equals the value of control[0] (123456789)'); // In-bounds boundary cases for indexing testWithAtomicsInBoundsIndices(function(IdxGen) { @@ -48,6 +48,6 @@ testWithBigIntTypedArrayConstructors(function(TA) { // 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); - assert.sameValue(Atomics.add(view, Idx, 0), 37); + assert.sameValue(Atomics.add(view, Idx, 0), 37, 'Atomics.add(view, Idx, 0) returns 37'); }); }); diff --git a/test/built-ins/Atomics/add/bigint/nonshared-int-views.js b/test/built-ins/Atomics/add/bigint/nonshared-int-views.js index 1d9c2b1fc9..033e733168 100644 --- a/test/built-ins/Atomics/add/bigint/nonshared-int-views.js +++ b/test/built-ins/Atomics/add/bigint/nonshared-int-views.js @@ -12,5 +12,9 @@ features: [ArrayBuffer, arrow-function, Atomics, BigInt, TypedArray] var ab = new ArrayBuffer(16); testWithBigIntTypedArrayConstructors(function(TA) { - assert.throws(TypeError, () => Atomics.add(new TA(ab), 0, 0)); + assert.throws( + TypeError, + () => Atomics.add(new TA(ab), 0, 0), + 'Atomics.add(new TA(ab), 0, 0) throws TypeError' + ); }); diff --git a/test/built-ins/Atomics/add/descriptor.js b/test/built-ins/Atomics/add/descriptor.js index d5e28f040d..ffb5311abe 100644 --- a/test/built-ins/Atomics/add/descriptor.js +++ b/test/built-ins/Atomics/add/descriptor.js @@ -8,6 +8,8 @@ includes: [propertyHelper.js] features: [Atomics] ---*/ -verifyWritable(Atomics, "add"); -verifyNotEnumerable(Atomics, "add"); -verifyConfigurable(Atomics, "add"); +verifyProperty(Atomics, 'add', { + enumerable: false, + writable: true, + configurable: true, +}); diff --git a/test/built-ins/Atomics/add/expected-return-value.js b/test/built-ins/Atomics/add/expected-return-value.js index b60694689d..ad6d4817e5 100644 --- a/test/built-ins/Atomics/add/expected-return-value.js +++ b/test/built-ins/Atomics/add/expected-return-value.js @@ -29,7 +29,7 @@ features: [Atomics, SharedArrayBuffer, TypedArray] var buffer = new SharedArrayBuffer(Int32Array.BYTES_PER_ELEMENT); var i32a = new Int32Array(buffer); -var value = 0b00000001000000001000000010000001; +var newValue = 0b00000001000000001000000010000001; -assert.sameValue(Atomics.add(i32a, 0, value), 0); -assert.sameValue(i32a[0], value); +assert.sameValue(Atomics.add(i32a, 0, newValue), 0, 'Atomics.add(i32a, 0, newValue) returns 0'); +assert.sameValue(i32a[0], newValue, 'The value of i32a[0] equals the value of newValue (0b00000001000000001000000010000001)'); diff --git a/test/built-ins/Atomics/add/good-views.js b/test/built-ins/Atomics/add/good-views.js index 64235a5be8..07731646be 100644 --- a/test/built-ins/Atomics/add/good-views.js +++ b/test/built-ins/Atomics/add/good-views.js @@ -20,27 +20,27 @@ testWithTypedArrayConstructors(function(TA) { // Add positive number view[8] = 0; - assert.sameValue(Atomics.add(view, 8, 10), 0); - assert.sameValue(view[8], 10); + assert.sameValue(Atomics.add(view, 8, 10), 0, 'Atomics.add(view, 8, 10) returns 0'); + assert.sameValue(view[8], 10, 'The value of view[8] is 10'); // Add negative number - assert.sameValue(Atomics.add(view, 8, -5), 10); - assert.sameValue(view[8], 5); + assert.sameValue(Atomics.add(view, 8, -5), 10, 'Atomics.add(view, 8, -5) returns 10'); + assert.sameValue(view[8], 5, 'The value of view[8] is 5'); view[3] = -5; control[0] = -5; assert.sameValue(Atomics.add(view, 3, 0), control[0], - "Result is negative and subject to coercion"); + 'Atomics.add(view, 3, 0) equals the value of control[0] (-5)'); control[0] = 12345; view[3] = 12345; assert.sameValue(Atomics.add(view, 3, 0), control[0], - "Result is subject to chopping"); + 'Atomics.add(view, 3, 0) equals the value of control[0] (12345)'); control[0] = 123456789; view[3] = 123456789; assert.sameValue(Atomics.add(view, 3, 0), control[0], - "Result is subject to chopping"); + 'Atomics.add(view, 3, 0) equals the value of control[0] (123456789)'); // In-bounds boundary cases for indexing testWithAtomicsInBoundsIndices(function(IdxGen) { @@ -49,6 +49,6 @@ testWithTypedArrayConstructors(function(TA) { // 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); - assert.sameValue(Atomics.add(view, Idx, 0), 37); + assert.sameValue(Atomics.add(view, Idx, 0), 37, 'Atomics.add(view, Idx, 0) returns 37'); }); }, views); diff --git a/test/built-ins/Atomics/add/length.js b/test/built-ins/Atomics/add/length.js index 518f30277e..207c46455c 100644 --- a/test/built-ins/Atomics/add/length.js +++ b/test/built-ins/Atomics/add/length.js @@ -24,8 +24,9 @@ includes: [propertyHelper.js] features: [Atomics] ---*/ -assert.sameValue(Atomics.add.length, 3); - -verifyNotEnumerable(Atomics.add, "length"); -verifyNotWritable(Atomics.add, "length"); -verifyConfigurable(Atomics.add, "length"); +verifyProperty(Atomics.add, 'length', { + value: 3, + enumerable: false, + writable: false, + configurable: true, +}); diff --git a/test/built-ins/Atomics/add/name.js b/test/built-ins/Atomics/add/name.js index ccb06e1fad..8299f8962b 100644 --- a/test/built-ins/Atomics/add/name.js +++ b/test/built-ins/Atomics/add/name.js @@ -10,8 +10,9 @@ includes: [propertyHelper.js] features: [Atomics] ---*/ -assert.sameValue(Atomics.add.name, "add"); - -verifyNotEnumerable(Atomics.add, "name"); -verifyNotWritable(Atomics.add, "name"); -verifyConfigurable(Atomics.add, "name"); +verifyProperty(Atomics.add, 'name', { + value: 'add', + enumerable: false, + writable: false, + configurable: true, +}); diff --git a/test/built-ins/Atomics/add/non-views.js b/test/built-ins/Atomics/add/non-views.js index f0eecdafb2..5eece9cb81 100644 --- a/test/built-ins/Atomics/add/non-views.js +++ b/test/built-ins/Atomics/add/non-views.js @@ -10,5 +10,9 @@ features: [ArrayBuffer, arrow-function, Atomics, DataView, for-of, let, SharedAr ---*/ testWithAtomicsNonViewValues(function(view) { - assert.throws(TypeError, (() => Atomics.add(view, 0, 0))); + assert.throws( + TypeError, + () => Atomics.add(view, 0, 0), + 'Atomics.add(view, 0, 0) throws TypeError' + ); }); diff --git a/test/built-ins/Atomics/add/nonshared-int-views.js b/test/built-ins/Atomics/add/nonshared-int-views.js index a7df43c696..441b422ecc 100644 --- a/test/built-ins/Atomics/add/nonshared-int-views.js +++ b/test/built-ins/Atomics/add/nonshared-int-views.js @@ -13,5 +13,9 @@ var ab = new ArrayBuffer(16); var views = intArrayConstructors.slice(); testWithTypedArrayConstructors(function(TA) { - assert.throws(TypeError, (() => Atomics.add(new TA(ab), 0, 0))); + assert.throws( + TypeError, + () => Atomics.add(new TA(ab), 0, 0), + 'Atomics.add(new TA(ab), 0, 0) throws TypeError' + ); }, views); diff --git a/test/built-ins/Atomics/add/shared-nonint-views.js b/test/built-ins/Atomics/add/shared-nonint-views.js index b8eb2ce0bf..82fdfe8449 100644 --- a/test/built-ins/Atomics/add/shared-nonint-views.js +++ b/test/built-ins/Atomics/add/shared-nonint-views.js @@ -12,5 +12,9 @@ features: [Atomics, SharedArrayBuffer, TypedArray] var buffer = new SharedArrayBuffer(1024); testWithTypedArrayConstructors(function(TA) { - assert.throws(TypeError, (() => Atomics.add(new TA(buffer), 0, 0))); + assert.throws( + TypeError, + () => Atomics.add(new TA(buffer), 0, 0), + 'Atomics.add(new TA(buffer), 0, 0) throws TypeError' + ); }, floatArrayConstructors); diff --git a/test/built-ins/Atomics/and/bad-range.js b/test/built-ins/Atomics/and/bad-range.js index 683a5a32b2..e01b6def7f 100644 --- a/test/built-ins/Atomics/and/bad-range.js +++ b/test/built-ins/Atomics/and/bad-range.js @@ -15,6 +15,10 @@ var views = intArrayConstructors.slice(); testWithTypedArrayConstructors(function(TA) { let view = new TA(buffer); testWithAtomicsOutOfBoundsIndices(function(IdxGen) { - assert.throws(RangeError, () => Atomics.and(view, IdxGen(view), 10)); + assert.throws( + RangeError, + () => Atomics.and(view, IdxGen(view), 10), + 'Atomics.and(view, IdxGen(view), 10) throws RangeError' + ); }); }, views); diff --git a/test/built-ins/Atomics/and/bigint/bad-range.js b/test/built-ins/Atomics/and/bigint/bad-range.js index 0f87ca9fe9..8e320065bc 100644 --- a/test/built-ins/Atomics/and/bigint/bad-range.js +++ b/test/built-ins/Atomics/and/bigint/bad-range.js @@ -14,6 +14,10 @@ var buffer = new SharedArrayBuffer(8); testWithBigIntTypedArrayConstructors(function(TA) { let view = new TA(buffer); testWithAtomicsOutOfBoundsIndices(function(IdxGen) { - assert.throws(RangeError, () => Atomics.and(view, IdxGen(view), 10)); + assert.throws( + RangeError, + () => Atomics.and(view, IdxGen(view), 10), + 'Atomics.and(view, IdxGen(view), 10) throws RangeError' + ); }); }); diff --git a/test/built-ins/Atomics/and/bigint/good-views.js b/test/built-ins/Atomics/and/bigint/good-views.js index 2ce7daa33c..b0cd17f087 100644 --- a/test/built-ins/Atomics/and/bigint/good-views.js +++ b/test/built-ins/Atomics/and/bigint/good-views.js @@ -20,33 +20,41 @@ testWithBigIntTypedArrayConstructors(function(TA) { view[8] = 0x33333333; control[0] = 0x33333333; assert.sameValue(Atomics.and(view, 8, 0x55555555), control[0], - "Result is subject to chopping"); + 'Atomics.and(view, 8, 0x55555555) equals the value of control[0] (0x33333333)'); control[0] = 0x11111111; - assert.sameValue(view[8], control[0]); + assert.sameValue( + view[8], + control[0], + 'The value of view[8] equals the value of control[0] (0x11111111)' + ); assert.sameValue(Atomics.and(view, 8, 0xF0F0F0F0), control[0], - "Result is subject to chopping"); + 'Atomics.and(view, 8, 0xF0F0F0F0) equals the value of control[0] (0x11111111)'); control[0] = 0x10101010; - assert.sameValue(view[8], control[0]); + assert.sameValue( + view[8], + control[0], + 'The value of view[8] equals the value of control[0] (0x10101010)' + ); view[3] = -5; control[0] = -5; assert.sameValue(Atomics.and(view, 3, 0), control[0], - "Result is negative and subject to coercion"); - assert.sameValue(view[3], 0); + 'Atomics.and(view, 3, 0) equals the value of control[0] (-5)'); + assert.sameValue(view[3], 0, 'The value of view[3] is 0'); control[0] = 12345; view[3] = 12345; assert.sameValue(Atomics.and(view, 3, 0), control[0], - "Result is subjective to chopping"); - assert.sameValue(view[3], 0); + 'Atomics.and(view, 3, 0) equals the value of control[0] (12345)'); + assert.sameValue(view[3], 0, 'The value of view[3] is 0'); control[0] = 123456789; view[3] = 123456789; assert.sameValue(Atomics.and(view, 3, 0), control[0], - "Result is subjective to chopping"); - assert.sameValue(view[3], 0); + 'Atomics.and(view, 3, 0) equals the value of control[0] (123456789)'); + assert.sameValue(view[3], 0, 'The value of view[3] is 0'); // In-bounds boundary cases for indexing testWithAtomicsInBoundsIndices(function(IdxGen) { @@ -55,6 +63,6 @@ testWithBigIntTypedArrayConstructors(function(TA) { // 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); - assert.sameValue(Atomics.and(view, Idx, 0), 37); + assert.sameValue(Atomics.and(view, Idx, 0), 37, 'Atomics.and(view, Idx, 0) returns 37'); }); }); diff --git a/test/built-ins/Atomics/and/bigint/nonshared-int-views.js b/test/built-ins/Atomics/and/bigint/nonshared-int-views.js index 8389b91852..5005574664 100644 --- a/test/built-ins/Atomics/and/bigint/nonshared-int-views.js +++ b/test/built-ins/Atomics/and/bigint/nonshared-int-views.js @@ -12,5 +12,9 @@ features: [ArrayBuffer, arrow-function, Atomics, BigInt, TypedArray] var buffer = new ArrayBuffer(16); testWithBigIntTypedArrayConstructors(function(TA) { - assert.throws(TypeError, () => Atomics.and(new TA(buffer), 0, 0)); + assert.throws( + TypeError, + () => Atomics.and(new TA(buffer), 0, 0), + 'Atomics.and(new TA(buffer), 0, 0) throws TypeError' + ); }); diff --git a/test/built-ins/Atomics/and/descriptor.js b/test/built-ins/Atomics/and/descriptor.js index 6e78a6a1ed..00cf864e85 100644 --- a/test/built-ins/Atomics/and/descriptor.js +++ b/test/built-ins/Atomics/and/descriptor.js @@ -8,6 +8,8 @@ includes: [propertyHelper.js] features: [Atomics] ---*/ -verifyWritable(Atomics, "and"); -verifyNotEnumerable(Atomics, "and"); -verifyConfigurable(Atomics, "and"); +verifyProperty(Atomics, 'and', { + enumerable: false, + writable: true, + configurable: true, +}); diff --git a/test/built-ins/Atomics/and/expected-return-value.js b/test/built-ins/Atomics/and/expected-return-value.js index 86282e1d99..f45d2a400c 100644 --- a/test/built-ins/Atomics/and/expected-return-value.js +++ b/test/built-ins/Atomics/and/expected-return-value.js @@ -34,5 +34,9 @@ var other = 0b00000001111111111000000011111111; i32a[0] = value; -assert.sameValue(Atomics.and(i32a, 0, value), value); -assert.sameValue(i32a[0], value & other); +assert.sameValue( + Atomics.and(i32a, 0, value), + value, + 'Atomics.and(i32a, 0, value) equals the value of value (0b00000001000000001000000010000001)' +); +assert.sameValue(i32a[0], value & other, 'The value of i32a[0] is value & other'); diff --git a/test/built-ins/Atomics/and/good-views.js b/test/built-ins/Atomics/and/good-views.js index e69420d530..d6ec3fafbb 100644 --- a/test/built-ins/Atomics/and/good-views.js +++ b/test/built-ins/Atomics/and/good-views.js @@ -21,33 +21,41 @@ testWithTypedArrayConstructors(function(TA) { view[8] = 0x33333333; control[0] = 0x33333333; assert.sameValue(Atomics.and(view, 8, 0x55555555), control[0], - "Result is subject to chopping"); + 'Atomics.and(view, 8, 0x55555555) equals the value of control[0] (0x33333333)'); control[0] = 0x11111111; - assert.sameValue(view[8], control[0]); + assert.sameValue( + view[8], + control[0], + 'The value of view[8] equals the value of control[0] (0x11111111)' + ); assert.sameValue(Atomics.and(view, 8, 0xF0F0F0F0), control[0], - "Result is subject to chopping"); + 'Atomics.and(view, 8, 0xF0F0F0F0) equals the value of control[0] (0x11111111)'); control[0] = 0x10101010; - assert.sameValue(view[8], control[0]); + assert.sameValue( + view[8], + control[0], + 'The value of view[8] equals the value of control[0] (0x10101010)' + ); view[3] = -5; control[0] = -5; assert.sameValue(Atomics.and(view, 3, 0), control[0], - "Result is negative and subject to coercion"); - assert.sameValue(view[3], 0); + 'Atomics.and(view, 3, 0) equals the value of control[0] (-5)'); + assert.sameValue(view[3], 0, 'The value of view[3] is 0'); control[0] = 12345; view[3] = 12345; assert.sameValue(Atomics.and(view, 3, 0), control[0], - "Result is subjective to chopping"); - assert.sameValue(view[3], 0); + 'Atomics.and(view, 3, 0) equals the value of control[0] (12345)'); + assert.sameValue(view[3], 0, 'The value of view[3] is 0'); control[0] = 123456789; view[3] = 123456789; assert.sameValue(Atomics.and(view, 3, 0), control[0], - "Result is subjective to chopping"); - assert.sameValue(view[3], 0); + 'Atomics.and(view, 3, 0) equals the value of control[0] (123456789)'); + assert.sameValue(view[3], 0, 'The value of view[3] is 0'); // In-bounds boundary cases for indexing testWithAtomicsInBoundsIndices(function(IdxGen) { @@ -56,6 +64,6 @@ testWithTypedArrayConstructors(function(TA) { // 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); - assert.sameValue(Atomics.and(view, Idx, 0), 37); + assert.sameValue(Atomics.and(view, Idx, 0), 37, 'Atomics.and(view, Idx, 0) returns 37'); }); }, views); diff --git a/test/built-ins/Atomics/and/length.js b/test/built-ins/Atomics/and/length.js index b1e9bb0fd7..9b41408010 100644 --- a/test/built-ins/Atomics/and/length.js +++ b/test/built-ins/Atomics/and/length.js @@ -24,8 +24,9 @@ includes: [propertyHelper.js] features: [Atomics] ---*/ -assert.sameValue(Atomics.and.length, 3); - -verifyNotEnumerable(Atomics.and, "length"); -verifyNotWritable(Atomics.and, "length"); -verifyConfigurable(Atomics.and, "length"); +verifyProperty(Atomics.and, 'length', { + value: 3, + enumerable: false, + writable: false, + configurable: true, +}); diff --git a/test/built-ins/Atomics/and/name.js b/test/built-ins/Atomics/and/name.js index 33010c4b52..7d85586e52 100644 --- a/test/built-ins/Atomics/and/name.js +++ b/test/built-ins/Atomics/and/name.js @@ -10,8 +10,9 @@ includes: [propertyHelper.js] features: [Atomics] ---*/ -assert.sameValue(Atomics.and.name, "and"); - -verifyNotEnumerable(Atomics.and, "name"); -verifyNotWritable(Atomics.and, "name"); -verifyConfigurable(Atomics.and, "name"); +verifyProperty(Atomics.and, 'name', { + value: 'and', + enumerable: false, + writable: false, + configurable: true, +}); diff --git a/test/built-ins/Atomics/and/non-views.js b/test/built-ins/Atomics/and/non-views.js index 5d77bb208f..83cdd79add 100644 --- a/test/built-ins/Atomics/and/non-views.js +++ b/test/built-ins/Atomics/and/non-views.js @@ -10,5 +10,9 @@ features: [ArrayBuffer, arrow-function, Atomics, DataView, for-of, let, SharedAr ---*/ testWithAtomicsNonViewValues(function(view) { - assert.throws(TypeError, (() => Atomics.and(view, 0, 0))); + assert.throws( + TypeError, + () => Atomics.and(view, 0, 0), + 'Atomics.and(view, 0, 0) throws TypeError' + ); }); diff --git a/test/built-ins/Atomics/and/nonshared-int-views.js b/test/built-ins/Atomics/and/nonshared-int-views.js index 1808f89565..f588fb7bb7 100644 --- a/test/built-ins/Atomics/and/nonshared-int-views.js +++ b/test/built-ins/Atomics/and/nonshared-int-views.js @@ -13,5 +13,9 @@ var buffer = new ArrayBuffer(16); var views = intArrayConstructors.slice(); testWithTypedArrayConstructors(function(TA) { - assert.throws(TypeError, (() => Atomics.and(new TA(buffer), 0, 0))); + assert.throws( + TypeError, + () => Atomics.and(new TA(buffer), 0, 0), + 'Atomics.and(new TA(buffer), 0, 0) throws TypeError' + ); }, views); diff --git a/test/built-ins/Atomics/and/shared-nonint-views.js b/test/built-ins/Atomics/and/shared-nonint-views.js index 42b669359e..05d57616cf 100644 --- a/test/built-ins/Atomics/and/shared-nonint-views.js +++ b/test/built-ins/Atomics/and/shared-nonint-views.js @@ -12,5 +12,9 @@ features: [Atomics, SharedArrayBuffer, TypedArray] var buffer = new SharedArrayBuffer(1024); testWithTypedArrayConstructors(function(TA) { - assert.throws(TypeError, (() => Atomics.and(new TA(buffer), 0, 0))); + assert.throws( + TypeError, + () => Atomics.and(new TA(buffer), 0, 0), + 'Atomics.and(new TA(buffer), 0, 0) throws TypeError' + ); }, floatArrayConstructors); diff --git a/test/built-ins/Atomics/compareExchange/bad-range.js b/test/built-ins/Atomics/compareExchange/bad-range.js index 34407bb0cb..d43a2d66ac 100644 --- a/test/built-ins/Atomics/compareExchange/bad-range.js +++ b/test/built-ins/Atomics/compareExchange/bad-range.js @@ -15,6 +15,10 @@ var views = intArrayConstructors.slice(); testWithTypedArrayConstructors(function(TA) { let view = new TA(buffer); testWithAtomicsOutOfBoundsIndices(function(IdxGen) { - assert.throws(RangeError, () => Atomics.compareExchange(view, IdxGen(view), 10, 0)); + assert.throws( + RangeError, + () => Atomics.compareExchange(view, IdxGen(view), 10, 0), + 'Atomics.compareExchange(view, IdxGen(view), 10, 0) throws RangeError' + ); }); }, views); diff --git a/test/built-ins/Atomics/compareExchange/bigint/bad-range.js b/test/built-ins/Atomics/compareExchange/bigint/bad-range.js index 99ff9ec70b..1b302f1676 100644 --- a/test/built-ins/Atomics/compareExchange/bigint/bad-range.js +++ b/test/built-ins/Atomics/compareExchange/bigint/bad-range.js @@ -14,6 +14,10 @@ var buffer = new SharedArrayBuffer(8); testWithBigIntTypedArrayConstructors(function(TA) { let view = new TA(buffer); testWithAtomicsOutOfBoundsIndices(function(IdxGen) { - assert.throws(RangeError, () => Atomics.compareExchange(view, IdxGen(view), 10, 0)); + assert.throws( + RangeError, + () => Atomics.compareExchange(view, IdxGen(view), 10, 0), + 'Atomics.compareExchange(view, IdxGen(view), 10, 0) throws RangeError' + ); }); }); diff --git a/test/built-ins/Atomics/compareExchange/bigint/good-views.js b/test/built-ins/Atomics/compareExchange/bigint/good-views.js index ed6c330d39..f68e8b4592 100644 --- a/test/built-ins/Atomics/compareExchange/bigint/good-views.js +++ b/test/built-ins/Atomics/compareExchange/bigint/good-views.js @@ -19,39 +19,43 @@ testWithBigIntTypedArrayConstructors(function(TA) { // Performs the exchange view[8] = 0; - assert.sameValue(Atomics.compareExchange(view, 8, 0, 10), 0); - assert.sameValue(view[8], 10); + assert.sameValue( + Atomics.compareExchange(view, 8, 0, 10), + 0, + 'Atomics.compareExchange(view, 8, 0, 10) returns 0' + ); + assert.sameValue(view[8], 10, 'The value of view[8] is 10'); view[8] = 0; assert.sameValue(Atomics.compareExchange(view, 8, 1, 10), 0, - "Does not perform the exchange"); - assert.sameValue(view[8], 0); + 'Atomics.compareExchange(view, 8, 1, 10) returns 0'); + assert.sameValue(view[8], 0, 'The value of view[8] is 0'); view[8] = 0; assert.sameValue(Atomics.compareExchange(view, 8, 0, -5), 0, - "Performs the exchange, coercing the value being stored"); + 'Atomics.compareExchange(view, 8, 0, -5) returns 0'); control[0] = -5; - assert.sameValue(view[8], control[0]); + assert.sameValue(view[8], control[0], 'The value of view[8] equals the value of control[0] (-5)'); view[3] = -5; control[0] = -5; assert.sameValue(Atomics.compareExchange(view, 3, -5, 0), control[0], - "Performs the exchange, coercing the value being tested"); - assert.sameValue(view[3], 0); + 'Atomics.compareExchange(view, 3, -5, 0) equals the value of control[0] (-5)'); + assert.sameValue(view[3], 0, 'The value of view[3] is 0'); control[0] = 12345; view[3] = 12345; assert.sameValue(Atomics.compareExchange(view, 3, 12345, 0), control[0], - "Performs the exchange, chopping the value being tested"); - assert.sameValue(view[3], 0); + 'Atomics.compareExchange(view, 3, 12345, 0) equals the value of control[0] (12345)'); + assert.sameValue(view[3], 0, 'The value of view[3] is 0'); control[0] = 123456789; view[3] = 123456789; assert.sameValue(Atomics.compareExchange(view, 3, 123456789, 0), control[0], - "Performs the exchange, chopping the value being tested"); - assert.sameValue(view[3], 0); + 'Atomics.compareExchange(view, 3, 123456789, 0) equals the value of control[0] (123456789)'); + assert.sameValue(view[3], 0, 'The value of view[3] is 0'); // In-bounds boundary cases for indexing testWithAtomicsInBoundsIndices(function(IdxGen) { @@ -60,6 +64,10 @@ testWithBigIntTypedArrayConstructors(function(TA) { // 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); - assert.sameValue(Atomics.compareExchange(view, Idx, 37, 0), 37); + assert.sameValue( + Atomics.compareExchange(view, Idx, 37, 0), + 37, + 'Atomics.compareExchange(view, Idx, 37, 0) returns 37' + ); }); }); diff --git a/test/built-ins/Atomics/compareExchange/bigint/nonshared-int-views.js b/test/built-ins/Atomics/compareExchange/bigint/nonshared-int-views.js index 2b044ca0c5..083fb0bf6b 100644 --- a/test/built-ins/Atomics/compareExchange/bigint/nonshared-int-views.js +++ b/test/built-ins/Atomics/compareExchange/bigint/nonshared-int-views.js @@ -12,5 +12,9 @@ features: [ArrayBuffer, arrow-function, Atomics, BigInt, TypedArray] var buffer = new ArrayBuffer(16); testWithBigIntTypedArrayConstructors(function(TA) { - assert.throws(TypeError, (() => Atomics.compareExchange(new TA(buffer), 0, 0, 0))); + assert.throws( + TypeError, + () => Atomics.compareExchange(new TA(buffer), 0, 0, 0), + 'Atomics.compareExchange(new TA(buffer), 0, 0, 0) throws TypeError' + ); }); diff --git a/test/built-ins/Atomics/compareExchange/descriptor.js b/test/built-ins/Atomics/compareExchange/descriptor.js index de399b2f2c..229d0d52d4 100644 --- a/test/built-ins/Atomics/compareExchange/descriptor.js +++ b/test/built-ins/Atomics/compareExchange/descriptor.js @@ -8,6 +8,8 @@ includes: [propertyHelper.js] features: [Atomics] ---*/ -verifyWritable(Atomics, "compareExchange"); -verifyNotEnumerable(Atomics, "compareExchange"); -verifyConfigurable(Atomics, "compareExchange"); +verifyProperty(Atomics, 'compareExchange', { + enumerable: false, + writable: true, + configurable: true, +}); diff --git a/test/built-ins/Atomics/compareExchange/expected-return-value.js b/test/built-ins/Atomics/compareExchange/expected-return-value.js index 5f46bb74ef..d9ef99de2f 100644 --- a/test/built-ins/Atomics/compareExchange/expected-return-value.js +++ b/test/built-ins/Atomics/compareExchange/expected-return-value.js @@ -28,9 +28,13 @@ features: [Atomics, SharedArrayBuffer, TypedArray] var buffer = new SharedArrayBuffer(Int32Array.BYTES_PER_ELEMENT); var i32a = new Int32Array(buffer); -var value = 0b00000001000000001000000010000001; +var update = 0b00000001000000001000000010000001; -i32a[0] = value; +i32a[0] = update; -assert.sameValue(Atomics.compareExchange(i32a, 0, value, 0), value); -assert.sameValue(i32a[0], 0); +assert.sameValue( + Atomics.compareExchange(i32a, 0, update, 0), + update, + 'Atomics.compareExchange(i32a, 0, update, 0) equals the value of update (0b00000001000000001000000010000001)' +); +assert.sameValue(i32a[0], 0, 'The value of i32a[0] is 0'); diff --git a/test/built-ins/Atomics/compareExchange/good-views.js b/test/built-ins/Atomics/compareExchange/good-views.js index 9d39d9a4ae..091414b496 100644 --- a/test/built-ins/Atomics/compareExchange/good-views.js +++ b/test/built-ins/Atomics/compareExchange/good-views.js @@ -20,39 +20,43 @@ testWithTypedArrayConstructors(function(TA) { // Performs the exchange view[8] = 0; - assert.sameValue(Atomics.compareExchange(view, 8, 0, 10), 0); - assert.sameValue(view[8], 10); + assert.sameValue( + Atomics.compareExchange(view, 8, 0, 10), + 0, + 'Atomics.compareExchange(view, 8, 0, 10) returns 0' + ); + assert.sameValue(view[8], 10, 'The value of view[8] is 10'); view[8] = 0; assert.sameValue(Atomics.compareExchange(view, 8, 1, 10), 0, - "Does not perform the exchange"); - assert.sameValue(view[8], 0); + 'Atomics.compareExchange(view, 8, 1, 10) returns 0'); + assert.sameValue(view[8], 0, 'The value of view[8] is 0'); view[8] = 0; assert.sameValue(Atomics.compareExchange(view, 8, 0, -5), 0, - "Performs the exchange, coercing the value being stored"); + 'Atomics.compareExchange(view, 8, 0, -5) returns 0'); control[0] = -5; - assert.sameValue(view[8], control[0]); + assert.sameValue(view[8], control[0], 'The value of view[8] equals the value of control[0] (-5)'); view[3] = -5; control[0] = -5; assert.sameValue(Atomics.compareExchange(view, 3, -5, 0), control[0], - "Performs the exchange, coercing the value being tested"); - assert.sameValue(view[3], 0); + 'Atomics.compareExchange(view, 3, -5, 0) equals the value of control[0] (-5)'); + assert.sameValue(view[3], 0, 'The value of view[3] is 0'); control[0] = 12345; view[3] = 12345; assert.sameValue(Atomics.compareExchange(view, 3, 12345, 0), control[0], - "Performs the exchange, chopping the value being tested"); - assert.sameValue(view[3], 0); + 'Atomics.compareExchange(view, 3, 12345, 0) equals the value of control[0] (12345)'); + assert.sameValue(view[3], 0, 'The value of view[3] is 0'); control[0] = 123456789; view[3] = 123456789; assert.sameValue(Atomics.compareExchange(view, 3, 123456789, 0), control[0], - "Performs the exchange, chopping the value being tested"); - assert.sameValue(view[3], 0); + 'Atomics.compareExchange(view, 3, 123456789, 0) equals the value of control[0] (123456789)'); + assert.sameValue(view[3], 0, 'The value of view[3] is 0'); // In-bounds boundary cases for indexing testWithAtomicsInBoundsIndices(function(IdxGen) { @@ -61,6 +65,10 @@ testWithTypedArrayConstructors(function(TA) { // 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); - assert.sameValue(Atomics.compareExchange(view, Idx, 37, 0), 37); + assert.sameValue( + Atomics.compareExchange(view, Idx, 37, 0), + 37, + 'Atomics.compareExchange(view, Idx, 37, 0) returns 37' + ); }); }, views); diff --git a/test/built-ins/Atomics/compareExchange/length.js b/test/built-ins/Atomics/compareExchange/length.js index db09540738..063833eb46 100644 --- a/test/built-ins/Atomics/compareExchange/length.js +++ b/test/built-ins/Atomics/compareExchange/length.js @@ -24,8 +24,9 @@ includes: [propertyHelper.js] features: [Atomics] ---*/ -assert.sameValue(Atomics.compareExchange.length, 4); - -verifyNotEnumerable(Atomics.compareExchange, "length"); -verifyNotWritable(Atomics.compareExchange, "length"); -verifyConfigurable(Atomics.compareExchange, "length"); +verifyProperty(Atomics.compareExchange, 'length', { + value: 4, + enumerable: false, + writable: false, + configurable: true, +}); diff --git a/test/built-ins/Atomics/compareExchange/name.js b/test/built-ins/Atomics/compareExchange/name.js index 80a56b04c4..687de28581 100644 --- a/test/built-ins/Atomics/compareExchange/name.js +++ b/test/built-ins/Atomics/compareExchange/name.js @@ -10,8 +10,9 @@ includes: [propertyHelper.js] features: [Atomics] ---*/ -assert.sameValue(Atomics.compareExchange.name, "compareExchange"); - -verifyNotEnumerable(Atomics.compareExchange, "name"); -verifyNotWritable(Atomics.compareExchange, "name"); -verifyConfigurable(Atomics.compareExchange, "name"); +verifyProperty(Atomics.compareExchange, 'name', { + value: 'compareExchange', + enumerable: false, + writable: false, + configurable: true, +}); diff --git a/test/built-ins/Atomics/compareExchange/non-views.js b/test/built-ins/Atomics/compareExchange/non-views.js index e297384cf7..2f073adf06 100644 --- a/test/built-ins/Atomics/compareExchange/non-views.js +++ b/test/built-ins/Atomics/compareExchange/non-views.js @@ -10,5 +10,9 @@ features: [ArrayBuffer, arrow-function, Atomics, DataView, for-of, let, SharedAr ---*/ testWithAtomicsNonViewValues(function(view) { - assert.throws(TypeError, (() => Atomics.compareExchange(view, 0, 0, 0))); + assert.throws( + TypeError, + () => Atomics.compareExchange(view, 0, 0, 0), + 'Atomics.compareExchange(view, 0, 0, 0) throws TypeError' + ); }); diff --git a/test/built-ins/Atomics/compareExchange/nonshared-int-views.js b/test/built-ins/Atomics/compareExchange/nonshared-int-views.js index 649359451b..e021e00301 100644 --- a/test/built-ins/Atomics/compareExchange/nonshared-int-views.js +++ b/test/built-ins/Atomics/compareExchange/nonshared-int-views.js @@ -13,5 +13,9 @@ var buffer = new ArrayBuffer(16); var views = intArrayConstructors.slice(); testWithTypedArrayConstructors(function(TA) { - assert.throws(TypeError, (() => Atomics.compareExchange(new TA(buffer), 0, 0, 0))); + assert.throws( + TypeError, + () => Atomics.compareExchange(new TA(buffer), 0, 0, 0), + 'Atomics.compareExchange(new TA(buffer), 0, 0, 0) throws TypeError' + ); }, views); diff --git a/test/built-ins/Atomics/compareExchange/shared-nonint-views.js b/test/built-ins/Atomics/compareExchange/shared-nonint-views.js index 58815cb1e5..6fac3bf5a6 100644 --- a/test/built-ins/Atomics/compareExchange/shared-nonint-views.js +++ b/test/built-ins/Atomics/compareExchange/shared-nonint-views.js @@ -12,5 +12,9 @@ features: [Atomics, SharedArrayBuffer, TypedArray] var buffer = new SharedArrayBuffer(1024); testWithTypedArrayConstructors(function(TA) { - assert.throws(TypeError, (() => Atomics.compareExchange(new TA(buffer), 0, 0, 0))); + assert.throws( + TypeError, + () => Atomics.compareExchange(new TA(buffer), 0, 0, 0), + 'Atomics.compareExchange(new TA(buffer), 0, 0, 0) throws TypeError' + ); }, floatArrayConstructors); diff --git a/test/built-ins/Atomics/exchange/bad-range.js b/test/built-ins/Atomics/exchange/bad-range.js index f1c929ddd0..5073f7ab73 100644 --- a/test/built-ins/Atomics/exchange/bad-range.js +++ b/test/built-ins/Atomics/exchange/bad-range.js @@ -15,6 +15,10 @@ var views = intArrayConstructors.slice(); testWithTypedArrayConstructors(function(TA) { let view = new TA(buffer); testWithAtomicsOutOfBoundsIndices(function(IdxGen) { - assert.throws(RangeError, () => Atomics.exchange(view, IdxGen(view), 10, 0)); + assert.throws( + RangeError, + () => Atomics.exchange(view, IdxGen(view), 10, 0), + 'Atomics.exchange(view, IdxGen(view), 10, 0) throws RangeError' + ); }); }, views); diff --git a/test/built-ins/Atomics/exchange/bigint/bad-range.js b/test/built-ins/Atomics/exchange/bigint/bad-range.js index 2ccd1b9460..dd0599c033 100644 --- a/test/built-ins/Atomics/exchange/bigint/bad-range.js +++ b/test/built-ins/Atomics/exchange/bigint/bad-range.js @@ -14,6 +14,10 @@ var buffer = new SharedArrayBuffer(8); testWithBigIntTypedArrayConstructors(function(TA) { let view = new TA(buffer); testWithAtomicsOutOfBoundsIndices(function(IdxGen) { - assert.throws(RangeError, () => Atomics.exchange(view, IdxGen(view), 10, 0)); + assert.throws( + RangeError, + () => Atomics.exchange(view, IdxGen(view), 10, 0), + 'Atomics.exchange(view, IdxGen(view), 10, 0) throws RangeError' + ); }); }); diff --git a/test/built-ins/Atomics/exchange/bigint/good-views.js b/test/built-ins/Atomics/exchange/bigint/good-views.js index 44cdf9e522..610305fb46 100644 --- a/test/built-ins/Atomics/exchange/bigint/good-views.js +++ b/test/built-ins/Atomics/exchange/bigint/good-views.js @@ -19,28 +19,28 @@ testWithBigIntTypedArrayConstructors(function(TA) { view[8] = 0; assert.sameValue(Atomics.exchange(view, 8, 10), 0, - "Exchange returns the value previously in the array"); - assert.sameValue(view[8], 10); + 'Atomics.exchange(view, 8, 10) returns 0'); + assert.sameValue(view[8], 10, 'The value of view[8] is 10'); assert.sameValue(Atomics.exchange(view, 8, -5), 10, - "Exchange returns the value previously in the array"); + 'Atomics.exchange(view, 8, -5) returns 10'); control[0] = -5; - assert.sameValue(view[8], control[0]); + assert.sameValue(view[8], control[0], 'The value of view[8] equals the value of control[0] (-5)'); view[3] = -5; control[0] = -5; assert.sameValue(Atomics.exchange(view, 3, 0), control[0], - "Result is subject to coercion"); + 'Atomics.exchange(view, 3, 0) equals the value of control[0] (-5)'); control[0] = 12345; view[3] = 12345; assert.sameValue(Atomics.exchange(view, 3, 0), control[0], - "Result is subject to chopping"); + 'Atomics.exchange(view, 3, 0) equals the value of control[0] (12345)'); control[0] = 123456789; view[3] = 123456789; assert.sameValue(Atomics.exchange(view, 3, 0), control[0], - "Result is subject to chopping"); + 'Atomics.exchange(view, 3, 0) equals the value of control[0] (123456789)'); // In-bounds boundary cases for indexing testWithAtomicsInBoundsIndices(function(IdxGen) { @@ -49,6 +49,6 @@ testWithBigIntTypedArrayConstructors(function(TA) { // 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); - assert.sameValue(Atomics.exchange(view, Idx, 0), 37); + assert.sameValue(Atomics.exchange(view, Idx, 0), 37, 'Atomics.exchange(view, Idx, 0) returns 37'); }); }); diff --git a/test/built-ins/Atomics/exchange/bigint/nonshared-int-views.js b/test/built-ins/Atomics/exchange/bigint/nonshared-int-views.js index 13f49c28f2..5f70fa85c8 100644 --- a/test/built-ins/Atomics/exchange/bigint/nonshared-int-views.js +++ b/test/built-ins/Atomics/exchange/bigint/nonshared-int-views.js @@ -12,5 +12,9 @@ features: [ArrayBuffer, arrow-function, Atomics, BigInt, TypedArray] var buffer = new ArrayBuffer(16); testWithBigIntTypedArrayConstructors(function(TA) { - assert.throws(TypeError, (() => Atomics.exchange(new TA(buffer), 0, 0))); + assert.throws( + TypeError, + () => Atomics.exchange(new TA(buffer), 0, 0), + 'Atomics.exchange(new TA(buffer), 0, 0) throws TypeError' + ); }); diff --git a/test/built-ins/Atomics/exchange/descriptor.js b/test/built-ins/Atomics/exchange/descriptor.js index b65ea64f17..33998156eb 100644 --- a/test/built-ins/Atomics/exchange/descriptor.js +++ b/test/built-ins/Atomics/exchange/descriptor.js @@ -8,6 +8,8 @@ includes: [propertyHelper.js] features: [Atomics] ---*/ -verifyWritable(Atomics, "exchange"); -verifyNotEnumerable(Atomics, "exchange"); -verifyConfigurable(Atomics, "exchange"); +verifyProperty(Atomics, 'exchange', { + enumerable: false, + writable: true, + configurable: true, +}); diff --git a/test/built-ins/Atomics/exchange/expected-return-value.js b/test/built-ins/Atomics/exchange/expected-return-value.js index b5a91b03f6..31af025b38 100644 --- a/test/built-ins/Atomics/exchange/expected-return-value.js +++ b/test/built-ins/Atomics/exchange/expected-return-value.js @@ -29,7 +29,15 @@ features: [Atomics, SharedArrayBuffer, TypedArray] var buffer = new SharedArrayBuffer(Int32Array.BYTES_PER_ELEMENT); var i32a = new Int32Array(buffer); -var value = 0b00000001000000001000000010000001; - -assert.sameValue(Atomics.exchange(i32a, 0, value), 0); -assert.sameValue(i32a[0], value); +var update = 0b00000001000000001000000010000001; + +assert.sameValue( + Atomics.exchange(i32a, 0, update), + 0, + 'Atomics.exchange(i32a, 0, update) returns 0' +); +assert.sameValue( + i32a[0], + update, + 'The value of i32a[0] equals the value of update (0b00000001000000001000000010000001)' +); diff --git a/test/built-ins/Atomics/exchange/good-views.js b/test/built-ins/Atomics/exchange/good-views.js index a7b5c76330..d0a21d455e 100644 --- a/test/built-ins/Atomics/exchange/good-views.js +++ b/test/built-ins/Atomics/exchange/good-views.js @@ -20,28 +20,28 @@ testWithTypedArrayConstructors(function(TA) { view[8] = 0; assert.sameValue(Atomics.exchange(view, 8, 10), 0, - "Exchange returns the value previously in the array"); - assert.sameValue(view[8], 10); + 'Atomics.exchange(view, 8, 10) returns 0'); + assert.sameValue(view[8], 10, 'The value of view[8] is 10'); assert.sameValue(Atomics.exchange(view, 8, -5), 10, - "Exchange returns the value previously in the array"); + 'Atomics.exchange(view, 8, -5) returns 10'); control[0] = -5; - assert.sameValue(view[8], control[0]); + assert.sameValue(view[8], control[0], 'The value of view[8] equals the value of control[0] (-5)'); view[3] = -5; control[0] = -5; assert.sameValue(Atomics.exchange(view, 3, 0), control[0], - "Result is subject to coercion"); + 'Atomics.exchange(view, 3, 0) equals the value of control[0] (-5)'); control[0] = 12345; view[3] = 12345; assert.sameValue(Atomics.exchange(view, 3, 0), control[0], - "Result is subject to chopping"); + 'Atomics.exchange(view, 3, 0) equals the value of control[0] (12345)'); control[0] = 123456789; view[3] = 123456789; assert.sameValue(Atomics.exchange(view, 3, 0), control[0], - "Result is subject to chopping"); + 'Atomics.exchange(view, 3, 0) equals the value of control[0] (123456789)'); // In-bounds boundary cases for indexing testWithAtomicsInBoundsIndices(function(IdxGen) { @@ -50,6 +50,6 @@ testWithTypedArrayConstructors(function(TA) { // 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); - assert.sameValue(Atomics.exchange(view, Idx, 0), 37); + assert.sameValue(Atomics.exchange(view, Idx, 0), 37, 'Atomics.exchange(view, Idx, 0) returns 37'); }); }, views); diff --git a/test/built-ins/Atomics/exchange/length.js b/test/built-ins/Atomics/exchange/length.js index 6a0cc44462..34005d0412 100644 --- a/test/built-ins/Atomics/exchange/length.js +++ b/test/built-ins/Atomics/exchange/length.js @@ -24,8 +24,9 @@ includes: [propertyHelper.js] features: [Atomics] ---*/ -assert.sameValue(Atomics.exchange.length, 3); - -verifyNotEnumerable(Atomics.exchange, "length"); -verifyNotWritable(Atomics.exchange, "length"); -verifyConfigurable(Atomics.exchange, "length"); +verifyProperty(Atomics.exchange, 'length', { + value: 3, + enumerable: false, + writable: false, + configurable: true, +}); diff --git a/test/built-ins/Atomics/exchange/name.js b/test/built-ins/Atomics/exchange/name.js index 95ca01a237..a8ee063822 100644 --- a/test/built-ins/Atomics/exchange/name.js +++ b/test/built-ins/Atomics/exchange/name.js @@ -10,8 +10,9 @@ includes: [propertyHelper.js] features: [Atomics] ---*/ -assert.sameValue(Atomics.exchange.name, "exchange"); - -verifyNotEnumerable(Atomics.exchange, "name"); -verifyNotWritable(Atomics.exchange, "name"); -verifyConfigurable(Atomics.exchange, "name"); +verifyProperty(Atomics.exchange, 'name', { + value: 'exchange', + enumerable: false, + writable: false, + configurable: true, +}); diff --git a/test/built-ins/Atomics/exchange/non-views.js b/test/built-ins/Atomics/exchange/non-views.js index 1b9348ca69..cedc446103 100644 --- a/test/built-ins/Atomics/exchange/non-views.js +++ b/test/built-ins/Atomics/exchange/non-views.js @@ -10,5 +10,9 @@ features: [ArrayBuffer, arrow-function, Atomics, DataView, for-of, let, SharedAr ---*/ testWithAtomicsNonViewValues(function(view) { - assert.throws(TypeError, (() => Atomics.exchange(view, 0, 0))); + assert.throws( + TypeError, + () => Atomics.exchange(view, 0, 0), + 'Atomics.exchange(view, 0, 0) throws TypeError' + ); }); diff --git a/test/built-ins/Atomics/exchange/nonshared-int-views.js b/test/built-ins/Atomics/exchange/nonshared-int-views.js index b5eda3754b..937d5cff5c 100644 --- a/test/built-ins/Atomics/exchange/nonshared-int-views.js +++ b/test/built-ins/Atomics/exchange/nonshared-int-views.js @@ -13,5 +13,9 @@ var buffer = new ArrayBuffer(16); var views = intArrayConstructors.slice(); testWithTypedArrayConstructors(function(TA) { - assert.throws(TypeError, (() => Atomics.exchange(new TA(buffer), 0, 0))); + assert.throws( + TypeError, + () => Atomics.exchange(new TA(buffer), 0, 0), + 'Atomics.exchange(new TA(buffer), 0, 0) throws TypeError' + ); }, views); diff --git a/test/built-ins/Atomics/exchange/shared-nonint-views.js b/test/built-ins/Atomics/exchange/shared-nonint-views.js index 16a10234a4..b5e2edb24c 100644 --- a/test/built-ins/Atomics/exchange/shared-nonint-views.js +++ b/test/built-ins/Atomics/exchange/shared-nonint-views.js @@ -12,5 +12,9 @@ features: [Atomics, SharedArrayBuffer, TypedArray] var buffer = new SharedArrayBuffer(1024); testWithTypedArrayConstructors(function(TA) { - assert.throws(TypeError, (() => Atomics.exchange(new TA(buffer), 0, 0))); + assert.throws( + TypeError, + () => Atomics.exchange(new TA(buffer), 0, 0), + 'Atomics.exchange(new TA(buffer), 0, 0) throws TypeError' + ); }, floatArrayConstructors); diff --git a/test/built-ins/Atomics/isLockFree/bigint/corner-cases.js b/test/built-ins/Atomics/isLockFree/bigint/corner-cases.js index a0127ee288..45daa591d4 100644 --- a/test/built-ins/Atomics/isLockFree/bigint/corner-cases.js +++ b/test/built-ins/Atomics/isLockFree/bigint/corner-cases.js @@ -9,20 +9,64 @@ features: [arrow-function, Atomics] includes: [testAtomics.js, testBigIntTypedArray.js] ---*/ -assert.sameValue(Atomics.isLockFree(hide(3, Number.NaN)), false); -assert.sameValue(Atomics.isLockFree(hide(3, -1)), false); -assert.sameValue(Atomics.isLockFree(hide(3, 3.14)), false); -assert.sameValue(Atomics.isLockFree(hide(3, 0)), false); +assert.sameValue( + Atomics.isLockFree(hide(3, Number.NaN)), + false, + 'Atomics.isLockFree(hide(3, Number.NaN)) returns false' +); +assert.sameValue( + Atomics.isLockFree(hide(3, -1)), + false, + 'Atomics.isLockFree(hide(3, -1)) returns false' +); +assert.sameValue( + Atomics.isLockFree(hide(3, 3.14)), + false, + 'Atomics.isLockFree(hide(3, 3.14)) returns false' +); +assert.sameValue( + Atomics.isLockFree(hide(3, 0)), + false, + 'Atomics.isLockFree(hide(3, 0)) returns false' +); -assert.sameValue(Atomics.isLockFree('1'), Atomics.isLockFree(1)); -assert.sameValue(Atomics.isLockFree('3'), Atomics.isLockFree(3)); +assert.sameValue( + Atomics.isLockFree('1'), + Atomics.isLockFree(1), + 'Atomics.isLockFree(\'1\') returns Atomics.isLockFree(1)' +); +assert.sameValue( + Atomics.isLockFree('3'), + Atomics.isLockFree(3), + 'Atomics.isLockFree(\'3\') returns Atomics.isLockFree(3)' +); -assert.sameValue(Atomics.isLockFree(true), Atomics.isLockFree(1)); +assert.sameValue( + Atomics.isLockFree(true), + Atomics.isLockFree(1), + 'Atomics.isLockFree(true) returns Atomics.isLockFree(1)' +); -assert.sameValue(Atomics.isLockFree(1), Atomics.isLockFree({valueOf: () => 1})); -assert.sameValue(Atomics.isLockFree(3), Atomics.isLockFree({valueOf: () => 3})); -assert.sameValue(Atomics.isLockFree(1), Atomics.isLockFree({toString: () => '1'})); -assert.sameValue(Atomics.isLockFree(3), Atomics.isLockFree({toString: () => '3'})); +assert.sameValue( + Atomics.isLockFree(1), + Atomics.isLockFree({valueOf: () => 1}), + 'Atomics.isLockFree(1) returns Atomics.isLockFree({valueOf: () => 1})' +); +assert.sameValue( + Atomics.isLockFree(3), + Atomics.isLockFree({valueOf: () => 3}), + 'Atomics.isLockFree(3) returns Atomics.isLockFree({valueOf: () => 3})' +); +assert.sameValue( + Atomics.isLockFree(1), + Atomics.isLockFree({toString: () => '1'}), + 'Atomics.isLockFree(1) returns Atomics.isLockFree({toString: () => \'1\'})' +); +assert.sameValue( + Atomics.isLockFree(3), + Atomics.isLockFree({toString: () => '3'}), + 'Atomics.isLockFree(3) returns Atomics.isLockFree({toString: () => \'3\'})' +); function hide(k, x) { if (k) { diff --git a/test/built-ins/Atomics/isLockFree/bigint/expected-return-value.js b/test/built-ins/Atomics/isLockFree/bigint/expected-return-value.js index 56a0186f51..69cad37db6 100644 --- a/test/built-ins/Atomics/isLockFree/bigint/expected-return-value.js +++ b/test/built-ins/Atomics/isLockFree/bigint/expected-return-value.js @@ -23,7 +23,13 @@ includes: [testBigIntTypedArray.js] ---*/ testWithBigIntTypedArrayConstructors(function(TA) { - assert.sameValue(Atomics.isLockFree(TA.BYTES_PER_ELEMENT), true); + var observed = Atomics.isLockFree(TA.BYTES_PER_ELEMENT); + + assert.sameValue( + Atomics.isLockFree(TA.BYTES_PER_ELEMENT), + observed, + 'Atomics.isLockFree(TA.BYTES_PER_ELEMENT) equals the value of `observed` (Atomics.isLockFree(TA.BYTES_PER_ELEMENT))' + ); }); diff --git a/test/built-ins/Atomics/isLockFree/bigint/value.js b/test/built-ins/Atomics/isLockFree/bigint/value.js deleted file mode 100644 index 0743f1c0fa..0000000000 --- a/test/built-ins/Atomics/isLockFree/bigint/value.js +++ /dev/null @@ -1,46 +0,0 @@ -// Copyright (C) 2018 Rick Waldron. All rights reserved. -// This code is governed by the BSD license found in the LICENSE file. - -/*--- -esid: sec-atomics.islockfree -description: > - Test isLockFree on nonnegative integer arguments -features: [Atomics, computed-property-names] -includes: [testAtomics.js, testBigIntTypedArray.js] ----*/ - -var sizes = [ 1, 2, 3, 4, 5, 6, 7, 8, - 9, 10, 11, 12]; -var answers = [ {}, {}, false, true, false, false, false, false, - false, false, false, false]; - -var saved = {}; - -// This should defeat most optimizations. - -for (var i = 0; i < sizes.length; i++) { - var v = Atomics.isLockFree(sizes[i]); - var a = answers[i]; - assert.sameValue(typeof v, 'boolean'); - if (typeof a == 'boolean') { - assert.sameValue(v, a); - } else { - saved[sizes[i]] = v; - } -} - -// This ought to be optimizable. Make sure the answers are the same -// as for the unoptimized case. - -assert.sameValue(Atomics.isLockFree(1), saved[1]); -assert.sameValue(Atomics.isLockFree(2), saved[2]); -assert.sameValue(Atomics.isLockFree(3), false); -assert.sameValue(Atomics.isLockFree(4), true); -assert.sameValue(Atomics.isLockFree(5), false); -assert.sameValue(Atomics.isLockFree(6), false); -assert.sameValue(Atomics.isLockFree(7), false); -assert.sameValue(Atomics.isLockFree(8), false); -assert.sameValue(Atomics.isLockFree(9), false); -assert.sameValue(Atomics.isLockFree(10), false); -assert.sameValue(Atomics.isLockFree(11), false); -assert.sameValue(Atomics.isLockFree(12), false); diff --git a/test/built-ins/Atomics/isLockFree/corner-cases.js b/test/built-ins/Atomics/isLockFree/corner-cases.js index 9901e553a9..8f77cda292 100644 --- a/test/built-ins/Atomics/isLockFree/corner-cases.js +++ b/test/built-ins/Atomics/isLockFree/corner-cases.js @@ -8,20 +8,64 @@ description: > features: [Atomics] ---*/ -assert.sameValue(Atomics.isLockFree(hide(3, Number.NaN)), false); -assert.sameValue(Atomics.isLockFree(hide(3, -1)), false); -assert.sameValue(Atomics.isLockFree(hide(3, 3.14)), false); -assert.sameValue(Atomics.isLockFree(hide(3, 0)), false); +assert.sameValue( + Atomics.isLockFree(hide(3, Number.NaN)), + false, + 'Atomics.isLockFree(hide(3, Number.NaN)) returns false' +); +assert.sameValue( + Atomics.isLockFree(hide(3, -1)), + false, + 'Atomics.isLockFree(hide(3, -1)) returns false' +); +assert.sameValue( + Atomics.isLockFree(hide(3, 3.14)), + false, + 'Atomics.isLockFree(hide(3, 3.14)) returns false' +); +assert.sameValue( + Atomics.isLockFree(hide(3, 0)), + false, + 'Atomics.isLockFree(hide(3, 0)) returns false' +); -assert.sameValue(Atomics.isLockFree('1'), Atomics.isLockFree(1)); -assert.sameValue(Atomics.isLockFree('3'), Atomics.isLockFree(3)); +assert.sameValue( + Atomics.isLockFree('1'), + Atomics.isLockFree(1), + 'Atomics.isLockFree("1") returns Atomics.isLockFree(1)' +); +assert.sameValue( + Atomics.isLockFree('3'), + Atomics.isLockFree(3), + 'Atomics.isLockFree("3") returns Atomics.isLockFree(3)' +); -assert.sameValue(Atomics.isLockFree(true), Atomics.isLockFree(1)); +assert.sameValue( + Atomics.isLockFree(true), + Atomics.isLockFree(1), + 'Atomics.isLockFree(true) returns Atomics.isLockFree(1)' +); -assert.sameValue(Atomics.isLockFree(1), Atomics.isLockFree({valueOf: () => 1})); -assert.sameValue(Atomics.isLockFree(3), Atomics.isLockFree({valueOf: () => 3})); -assert.sameValue(Atomics.isLockFree(1), Atomics.isLockFree({toString: () => '1'})); -assert.sameValue(Atomics.isLockFree(3), Atomics.isLockFree({toString: () => '3'})); +assert.sameValue( + Atomics.isLockFree(1), + Atomics.isLockFree({valueOf: () => 1}), + 'Atomics.isLockFree(1) returns Atomics.isLockFree({valueOf: () => 1})' +); +assert.sameValue( + Atomics.isLockFree(3), + Atomics.isLockFree({valueOf: () => 3}), + 'Atomics.isLockFree(3) returns Atomics.isLockFree({valueOf: () => 3})' +); +assert.sameValue( + Atomics.isLockFree(1), + Atomics.isLockFree({toString: () => '1'}), + 'Atomics.isLockFree(1) returns Atomics.isLockFree({toString: () => "1"})' +); +assert.sameValue( + Atomics.isLockFree(3), + Atomics.isLockFree({toString: () => '3'}), + 'Atomics.isLockFree(3) returns Atomics.isLockFree({toString: () => "3"})' +); function hide(k, x) { if (k) { diff --git a/test/built-ins/Atomics/isLockFree/descriptor.js b/test/built-ins/Atomics/isLockFree/descriptor.js index d9c786c8ce..ef47411ebb 100644 --- a/test/built-ins/Atomics/isLockFree/descriptor.js +++ b/test/built-ins/Atomics/isLockFree/descriptor.js @@ -8,6 +8,8 @@ includes: [propertyHelper.js] features: [Atomics] ---*/ -verifyWritable(Atomics, "add"); -verifyNotEnumerable(Atomics, "add"); -verifyConfigurable(Atomics, "add"); +verifyProperty(Atomics, 'add', { + enumerable: false, + writable: true, + configurable: true, +}); diff --git a/test/built-ins/Atomics/isLockFree/expected-return-value.js b/test/built-ins/Atomics/isLockFree/expected-return-value.js index 81898abe72..a057543a8a 100644 --- a/test/built-ins/Atomics/isLockFree/expected-return-value.js +++ b/test/built-ins/Atomics/isLockFree/expected-return-value.js @@ -1,30 +1,111 @@ -// Copyright (C) 2018 Rick Waldron. All rights reserved. +// Copyright (C) 2017 Mozilla Corporation. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- -esid: sec-atomics.isLockFree +esid: sec-atomics.islockfree description: > - Atomics.isLockFree returns a boolean that indicates whether - operations on datum of size will be performed without the agent - acquiring a lock outside of size bytes. -info: | Atomics.isLockFree( size ) + Let n be ? ToInteger(size). + Let AR be the Agent Record of the surrounding agent. + If n equals 1, return AR.[[IsLockFree1]]. + If n equals 2, return AR.[[IsLockFree2]]. + If n equals 4, return true. + If n equals 8, return AR.[[IsLockFree8]]. + Return false. +features: [Atomics] +---*/ - 1. Let n be ? ToInteger(size). - 2. Let AR be the Agent Record of the surrounding agent. - 3. If n equals 1, return AR.[[IsLockFree1]]. - 4. If n equals 2, return AR.[[IsLockFree2]]. - 5. If n equals 4, return true. - 6. Return false. +// These are the only counts that we care about tracking. +var isLockFree1; +var isLockFree2; +var isLockFree8; -features: [Atomics, SharedArrayBuffer, TypedArray] -includes: [testTypedArray.js] ----*/ +{ + isLockFree1 = Atomics.isLockFree(1); + // + // If n equals 1, return AR.[[IsLockFree1]]. + // + assert.sameValue(typeof isLockFree1, 'boolean', 'The value of `typeof isLockFree1` is "boolean"'); + // Once the values of [[Signifier]], [[IsLockFree1]], [[IsLockFree2]], + // and [[IsLockFree8]] have been observed by any agent in the agent + // cluster they cannot change. + assert.sameValue( + Atomics.isLockFree(1), + isLockFree1, + 'Atomics.isLockFree(1) equals the value of `isLockFree1` (Atomics.isLockFree(1))' + ); +}; +{ + isLockFree2 = Atomics.isLockFree(2); + // + // If n equals 2, return AR.[[IsLockFree2]]. + // + assert.sameValue(typeof isLockFree2, 'boolean', 'The value of `typeof isLockFree2` is "boolean"'); + // Once the values of [[Signifier]], [[IsLockFree1]], [[IsLockFree2]], + // and [[IsLockFree8]] have been observed by any agent in the agent + // cluster they cannot change. + assert.sameValue( + Atomics.isLockFree(2), + isLockFree2, + 'Atomics.isLockFree(2) equals the value of `isLockFree2` (Atomics.isLockFree(2))' + ); +}; +{ + let isLockFree4 = Atomics.isLockFree(4); + // + // If n equals 4, return true. + // + assert.sameValue(typeof isLockFree4, 'boolean', 'The value of `typeof isLockFree` is "boolean"'); + assert.sameValue(isLockFree4, true, 'The value of `isLockFree` is true'); +}; -var views = intArrayConstructors.slice(); +{ + let isLockFree8 = Atomics.isLockFree(8); + // + // If n equals 8, return AR.[[IsLockFree8]]. + // + assert.sameValue(typeof isLockFree8, 'boolean', 'The value of `typeof isLockFree8` is "boolean"'); + // Once the values of [[Signifier]], [[IsLockFree1]], [[IsLockFree2]], + // and [[IsLockFree8]] have been observed by any agent in the agent + // cluster they cannot change. + assert.sameValue( + Atomics.isLockFree(8), + isLockFree8, + 'Atomics.isLockFree(8) equals the value of `isLockFree8` (Atomics.isLockFree(8))' + ); +}; -testWithTypedArrayConstructors(function(TA) { - assert.sameValue(Atomics.isLockFree(TA.BYTES_PER_ELEMENT), true); -}, views); +{ + for (let i = 0; i < 12; i++) { + if (![1, 2, 4, 8].includes(i)) { + assert.sameValue(Atomics.isLockFree(i), false); + } + } +}; +assert.sameValue( + Atomics.isLockFree(1), + isLockFree1, + 'Later call to Atomics.isLockFree(1) equals the value of `isLockFree1` (Atomics.isLockFree(1))' +); +assert.sameValue( + Atomics.isLockFree(2), + isLockFree2, + 'Later call to Atomics.isLockFree(2) equals the value of `isLockFree2` (Atomics.isLockFree(2))' +); +assert.sameValue( + Atomics.isLockFree(8), + isLockFree8, + 'Later call to Atomics.isLockFree(8) equals the value of `isLockFree8` (Atomics.isLockFree(8))' +); +// Duplicates behavior created by loop from above +assert.sameValue(Atomics.isLockFree(3), false, 'Atomics.isLockFree(3) returns false'); +assert.sameValue(Atomics.isLockFree(4), true, 'Atomics.isLockFree(4) returns true'); +assert.sameValue(Atomics.isLockFree(5), false, 'Atomics.isLockFree(5) returns false'); +assert.sameValue(Atomics.isLockFree(6), false, 'Atomics.isLockFree(6) returns false'); +assert.sameValue(Atomics.isLockFree(7), false, 'Atomics.isLockFree(7) returns false'); +assert.sameValue(Atomics.isLockFree(9), false, 'Atomics.isLockFree(9) returns false'); +assert.sameValue(Atomics.isLockFree(10), false, 'Atomics.isLockFree(10) returns false'); +assert.sameValue(Atomics.isLockFree(11), false, 'Atomics.isLockFree(11) returns false'); +assert.sameValue(Atomics.isLockFree(12), false, 'Atomics.isLockFree(12) returns false'); diff --git a/test/built-ins/Atomics/isLockFree/length.js b/test/built-ins/Atomics/isLockFree/length.js index beaf7962c7..e529f1ecf3 100644 --- a/test/built-ins/Atomics/isLockFree/length.js +++ b/test/built-ins/Atomics/isLockFree/length.js @@ -24,8 +24,9 @@ includes: [propertyHelper.js] features: [Atomics] ---*/ -assert.sameValue(Atomics.isLockFree.length, 1); - -verifyNotEnumerable(Atomics.isLockFree, "length"); -verifyNotWritable(Atomics.isLockFree, "length"); -verifyConfigurable(Atomics.isLockFree, "length"); +verifyProperty(Atomics.isLockFree, 'length', { + value: 1, + enumerable: false, + writable: false, + configurable: true, +}); diff --git a/test/built-ins/Atomics/isLockFree/name.js b/test/built-ins/Atomics/isLockFree/name.js index bfa8478edd..eaedf2e857 100644 --- a/test/built-ins/Atomics/isLockFree/name.js +++ b/test/built-ins/Atomics/isLockFree/name.js @@ -10,8 +10,9 @@ includes: [propertyHelper.js] features: [Atomics] ---*/ -assert.sameValue(Atomics.isLockFree.name, "isLockFree"); - -verifyNotEnumerable(Atomics.isLockFree, "name"); -verifyNotWritable(Atomics.isLockFree, "name"); -verifyConfigurable(Atomics.isLockFree, "name"); +verifyProperty(Atomics.isLockFree, 'name', { + value: 'isLockFree', + enumerable: false, + writable: false, + configurable: true, +}); diff --git a/test/built-ins/Atomics/isLockFree/value.js b/test/built-ins/Atomics/isLockFree/value.js deleted file mode 100644 index 737043dad3..0000000000 --- a/test/built-ins/Atomics/isLockFree/value.js +++ /dev/null @@ -1,45 +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.islockfree -description: > - Test isLockFree on nonnegative integer arguments -features: [Atomics] ----*/ - -var sizes = [ 1, 2, 3, 4, 5, 6, 7, 8, - 9, 10, 11, 12]; -var answers = [ {}, {}, false, true, false, false, false, false, - false, false, false, false]; - -var saved = {}; - -// This should defeat most optimizations. - -for (var i = 0; i < sizes.length; i++) { - var v = Atomics.isLockFree(sizes[i]); - var a = answers[i]; - assert.sameValue(typeof v, 'boolean'); - if (typeof a == 'boolean') { - assert.sameValue(v, a); - } else { - saved[sizes[i]] = v; - } -} - -// This ought to be optimizable. Make sure the answers are the same -// as for the unoptimized case. - -assert.sameValue(Atomics.isLockFree(1), saved[1]); -assert.sameValue(Atomics.isLockFree(2), saved[2]); -assert.sameValue(Atomics.isLockFree(3), false); -assert.sameValue(Atomics.isLockFree(4), true); -assert.sameValue(Atomics.isLockFree(5), false); -assert.sameValue(Atomics.isLockFree(6), false); -assert.sameValue(Atomics.isLockFree(7), false); -assert.sameValue(Atomics.isLockFree(8), false); -assert.sameValue(Atomics.isLockFree(9), false); -assert.sameValue(Atomics.isLockFree(10), false); -assert.sameValue(Atomics.isLockFree(11), false); -assert.sameValue(Atomics.isLockFree(12), false); diff --git a/test/built-ins/Atomics/load/descriptor.js b/test/built-ins/Atomics/load/descriptor.js index 65002a23d9..1320c21865 100644 --- a/test/built-ins/Atomics/load/descriptor.js +++ b/test/built-ins/Atomics/load/descriptor.js @@ -8,6 +8,8 @@ includes: [propertyHelper.js] features: [Atomics] ---*/ -verifyWritable(Atomics, "load"); -verifyNotEnumerable(Atomics, "load"); -verifyConfigurable(Atomics, "load"); +verifyProperty(Atomics, 'load', { + enumerable: false, + writable: true, + configurable: true, +}); diff --git a/test/built-ins/Atomics/load/expected-return-value.js b/test/built-ins/Atomics/load/expected-return-value.js index b2ad4e19ae..7116765a67 100644 --- a/test/built-ins/Atomics/load/expected-return-value.js +++ b/test/built-ins/Atomics/load/expected-return-value.js @@ -30,11 +30,11 @@ features: [Atomics, SharedArrayBuffer, TypedArray] var buffer = new SharedArrayBuffer(Int32Array.BYTES_PER_ELEMENT); var i32a = new Int32Array(buffer); -var value = 0b00000001000000001000000010000001; +var update = 0b00000001000000001000000010000001; assert.sameValue(Atomics.load(i32a, 0), 0); -i32a[0] = value; +i32a[0] = update; -assert.sameValue(Atomics.load(i32a, 0), value); +assert.sameValue(Atomics.load(i32a, 0), update); diff --git a/test/built-ins/Atomics/load/length.js b/test/built-ins/Atomics/load/length.js index 072711b9c2..b917a38714 100644 --- a/test/built-ins/Atomics/load/length.js +++ b/test/built-ins/Atomics/load/length.js @@ -24,8 +24,9 @@ includes: [propertyHelper.js] features: [Atomics] ---*/ -assert.sameValue(Atomics.load.length, 2); - -verifyNotEnumerable(Atomics.load, "length"); -verifyNotWritable(Atomics.load, "length"); -verifyConfigurable(Atomics.load, "length"); +verifyProperty(Atomics.load, 'length', { + value: 2, + enumerable: false, + writable: false, + configurable: true, +}); diff --git a/test/built-ins/Atomics/load/name.js b/test/built-ins/Atomics/load/name.js index 7629a7c09f..279cf9664e 100644 --- a/test/built-ins/Atomics/load/name.js +++ b/test/built-ins/Atomics/load/name.js @@ -10,8 +10,9 @@ includes: [propertyHelper.js] features: [Atomics] ---*/ -assert.sameValue(Atomics.load.name, "load"); - -verifyNotEnumerable(Atomics.load, "name"); -verifyNotWritable(Atomics.load, "name"); -verifyConfigurable(Atomics.load, "name"); +verifyProperty(Atomics.load, 'name', { + value: 'load', + enumerable: false, + writable: false, + configurable: true, +}); diff --git a/test/built-ins/Atomics/or/descriptor.js b/test/built-ins/Atomics/or/descriptor.js index f074365a8c..f9f83981bb 100644 --- a/test/built-ins/Atomics/or/descriptor.js +++ b/test/built-ins/Atomics/or/descriptor.js @@ -7,7 +7,8 @@ description: Testing descriptor property of Atomics.or includes: [propertyHelper.js] features: [Atomics] ---*/ - -verifyWritable(Atomics, "or"); -verifyNotEnumerable(Atomics, "or"); -verifyConfigurable(Atomics, "or"); +verifyProperty(Atomics, 'or', { + enumerable: false, + writable: true, + configurable: true, +}); diff --git a/test/built-ins/Atomics/or/expected-return-value.js b/test/built-ins/Atomics/or/expected-return-value.js index 1cb876ede6..8e9a394ea0 100644 --- a/test/built-ins/Atomics/or/expected-return-value.js +++ b/test/built-ins/Atomics/or/expected-return-value.js @@ -29,7 +29,7 @@ features: [Atomics, SharedArrayBuffer, TypedArray] var buffer = new SharedArrayBuffer(Int32Array.BYTES_PER_ELEMENT); var i32a = new Int32Array(buffer); -var value = 0b00000001000000001000000010000001; +var update = 0b00000001000000001000000010000001; -assert.sameValue(Atomics.or(i32a, 0, value), 0); -assert.sameValue(i32a[0], 0 | value); +assert.sameValue(Atomics.or(i32a, 0, update), 0); +assert.sameValue(i32a[0], 0 | update); diff --git a/test/built-ins/Atomics/or/length.js b/test/built-ins/Atomics/or/length.js index 05e2c49563..e09822bb47 100644 --- a/test/built-ins/Atomics/or/length.js +++ b/test/built-ins/Atomics/or/length.js @@ -24,8 +24,9 @@ includes: [propertyHelper.js] features: [Atomics] ---*/ -assert.sameValue(Atomics.or.length, 3); - -verifyNotEnumerable(Atomics.or, "length"); -verifyNotWritable(Atomics.or, "length"); -verifyConfigurable(Atomics.or, "length"); +verifyProperty(Atomics.or, 'length', { + value: 3, + enumerable: false, + writable: false, + configurable: true, +}); diff --git a/test/built-ins/Atomics/or/name.js b/test/built-ins/Atomics/or/name.js index 4096e9697d..d1826272a5 100644 --- a/test/built-ins/Atomics/or/name.js +++ b/test/built-ins/Atomics/or/name.js @@ -10,8 +10,9 @@ includes: [propertyHelper.js] features: [Atomics] ---*/ -assert.sameValue(Atomics.or.name, "or"); - -verifyNotEnumerable(Atomics.or, "name"); -verifyNotWritable(Atomics.or, "name"); -verifyConfigurable(Atomics.or, "name"); +verifyProperty(Atomics.or, 'name', { + value: 'or', + enumerable: false, + writable: false, + configurable: true, +}); diff --git a/test/built-ins/Atomics/store/descriptor.js b/test/built-ins/Atomics/store/descriptor.js index 342f7827bc..7b127363d0 100644 --- a/test/built-ins/Atomics/store/descriptor.js +++ b/test/built-ins/Atomics/store/descriptor.js @@ -7,7 +7,8 @@ description: Testing descriptor property of Atomics.store includes: [propertyHelper.js] features: [Atomics] ---*/ - -verifyWritable(Atomics, "store"); -verifyNotEnumerable(Atomics, "store"); -verifyConfigurable(Atomics, "store"); +verifyProperty(Atomics, 'store', { + enumerable: false, + writable: true, + configurable: true, +}); diff --git a/test/built-ins/Atomics/store/expected-return-value.js b/test/built-ins/Atomics/store/expected-return-value.js index 133b39ec92..763453d165 100644 --- a/test/built-ins/Atomics/store/expected-return-value.js +++ b/test/built-ins/Atomics/store/expected-return-value.js @@ -20,7 +20,7 @@ features: [Atomics, SharedArrayBuffer, TypedArray] var buffer = new SharedArrayBuffer(Int32Array.BYTES_PER_ELEMENT); var i32a = new Int32Array(buffer); -var expect = 0b00000001000000001000000010000001; +var update = 0b00000001000000001000000010000001; -assert.sameValue(Atomics.store(i32a, 0, expect), expect); -assert.sameValue(i32a[0], expect); +assert.sameValue(Atomics.store(i32a, 0, update), update); +assert.sameValue(i32a[0], update); diff --git a/test/built-ins/Atomics/store/length.js b/test/built-ins/Atomics/store/length.js index 9143f9459f..53ffb0546c 100644 --- a/test/built-ins/Atomics/store/length.js +++ b/test/built-ins/Atomics/store/length.js @@ -24,8 +24,9 @@ includes: [propertyHelper.js] features: [Atomics] ---*/ -assert.sameValue(Atomics.store.length, 3); - -verifyNotEnumerable(Atomics.store, "length"); -verifyNotWritable(Atomics.store, "length"); -verifyConfigurable(Atomics.store, "length"); +verifyProperty(Atomics.store, 'length', { + value: 3, + enumerable: false, + writable: false, + configurable: true, +}); diff --git a/test/built-ins/Atomics/store/name.js b/test/built-ins/Atomics/store/name.js index 97d8ca3628..75aceb62ad 100644 --- a/test/built-ins/Atomics/store/name.js +++ b/test/built-ins/Atomics/store/name.js @@ -10,8 +10,9 @@ includes: [propertyHelper.js] features: [Atomics] ---*/ -assert.sameValue(Atomics.store.name, "store"); - -verifyNotEnumerable(Atomics.store, "name"); -verifyNotWritable(Atomics.store, "name"); -verifyConfigurable(Atomics.store, "name"); +verifyProperty(Atomics.store, 'name', { + value: 'store', + enumerable: false, + writable: false, + configurable: true, +}); diff --git a/test/built-ins/Atomics/sub/descriptor.js b/test/built-ins/Atomics/sub/descriptor.js index 8d81ad48a5..e1d59dde71 100644 --- a/test/built-ins/Atomics/sub/descriptor.js +++ b/test/built-ins/Atomics/sub/descriptor.js @@ -8,6 +8,8 @@ includes: [propertyHelper.js] features: [Atomics] ---*/ -verifyWritable(Atomics, "sub"); -verifyNotEnumerable(Atomics, "sub"); -verifyConfigurable(Atomics, "sub"); +verifyProperty(Atomics, 'sub', { + enumerable: false, + writable: true, + configurable: true, +}); diff --git a/test/built-ins/Atomics/sub/expected-return-value.js b/test/built-ins/Atomics/sub/expected-return-value.js index 77ce9506e7..9116a649d7 100644 --- a/test/built-ins/Atomics/sub/expected-return-value.js +++ b/test/built-ins/Atomics/sub/expected-return-value.js @@ -29,9 +29,9 @@ features: [Atomics, SharedArrayBuffer, TypedArray] var buffer = new SharedArrayBuffer(Int32Array.BYTES_PER_ELEMENT); var i32a = new Int32Array(buffer); -var value = 0b00000001000000001000000010000001; +var update = 0b00000001000000001000000010000001; -i32a[0] = value; +i32a[0] = update; -assert.sameValue(Atomics.sub(i32a, 0, value), value); +assert.sameValue(Atomics.sub(i32a, 0, update), update); assert.sameValue(i32a[0], 0); diff --git a/test/built-ins/Atomics/sub/length.js b/test/built-ins/Atomics/sub/length.js index 8130e97385..e35f698597 100644 --- a/test/built-ins/Atomics/sub/length.js +++ b/test/built-ins/Atomics/sub/length.js @@ -24,8 +24,9 @@ includes: [propertyHelper.js] features: [Atomics] ---*/ -assert.sameValue(Atomics.sub.length, 3); - -verifyNotEnumerable(Atomics.sub, "length"); -verifyNotWritable(Atomics.sub, "length"); -verifyConfigurable(Atomics.sub, "length"); +verifyProperty(Atomics.sub, 'length', { + value: 3, + enumerable: false, + writable: false, + configurable: true, +}); diff --git a/test/built-ins/Atomics/sub/name.js b/test/built-ins/Atomics/sub/name.js index 64afa5d9f0..93ae7fab42 100644 --- a/test/built-ins/Atomics/sub/name.js +++ b/test/built-ins/Atomics/sub/name.js @@ -10,8 +10,10 @@ includes: [propertyHelper.js] features: [Atomics] ---*/ -assert.sameValue(Atomics.sub.name, "sub"); +verifyProperty(Atomics.sub, 'name', { + value: 'sub', + enumerable: false, + writable: false, + configurable: true, +}); -verifyNotEnumerable(Atomics.sub, "name"); -verifyNotWritable(Atomics.sub, "name"); -verifyConfigurable(Atomics.sub, "name"); diff --git a/test/built-ins/Atomics/wait/bigint/did-timeout.js b/test/built-ins/Atomics/wait/bigint/did-timeout.js index fee3b1982c..47d99e1b68 100644 --- a/test/built-ins/Atomics/wait/bigint/did-timeout.js +++ b/test/built-ins/Atomics/wait/bigint/did-timeout.js @@ -26,9 +26,9 @@ function getReport() { $262.agent.start(` $262.agent.receiveBroadcast(function(sab, id) { var ia = new BigInt64Array(sab); - var then = Date.now(); + var then = $262.agent.monotonicNow(); $262.agent.report(Atomics.wait(ia, 0, 0, 500)); // Timeout 500ms - $262.agent.report(Date.now() - then); // Actual time can be more than 500ms + $262.agent.report($262.agent.monotonicNow() - then); // Actual time can be more than 500ms $262.agent.leaving(); }); `); 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 cc2d8a292d..93f3bc8c33 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 @@ -38,11 +38,11 @@ var toPrimitive = { $262.agent.receiveBroadcast(function(sab) { var i64a = new BigInt64Array(sab); - var start = Date.now(); + 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(Date.now() - start); + $262.agent.report($262.agent.monotonicNow() - start); $262.agent.leaving(); }); `); diff --git a/test/built-ins/Atomics/wait/bigint/no-spurious-wakeup-on-store-padded-time.js b/test/built-ins/Atomics/wait/bigint/no-spurious-wakeup-on-store-padded-time.js index 7aa69020d6..2e7b540f65 100644 --- a/test/built-ins/Atomics/wait/bigint/no-spurious-wakeup-on-store-padded-time.js +++ b/test/built-ins/Atomics/wait/bigint/no-spurious-wakeup-on-store-padded-time.js @@ -13,9 +13,9 @@ features: [Atomics, BigInt, SharedArrayBuffer, TypedArray] $262.agent.start(` $262.agent.receiveBroadcast(function(sab, id) { var ia = new BigInt64Array(sab); - var then = Date.now(); + var then = $262.agent.monotonicNow(); Atomics.wait(ia, 0, 0); - var diff = Date.now() - then; // Should be about 1000 ms but can be more + var diff = $262.agent.monotonicNow() - then; // Should be about 1000 ms but can be more $262.agent.report(diff); $262.agent.leaving(); }) diff --git a/test/built-ins/Atomics/wait/bigint/no-spurious-wakeup-on-store.js b/test/built-ins/Atomics/wait/bigint/no-spurious-wakeup-on-store.js index 0dee43eb5a..2296fb1f0d 100644 --- a/test/built-ins/Atomics/wait/bigint/no-spurious-wakeup-on-store.js +++ b/test/built-ins/Atomics/wait/bigint/no-spurious-wakeup-on-store.js @@ -23,10 +23,10 @@ const i64a = new BigInt64Array( $262.agent.start(` $262.agent.receiveBroadcast(function(sab) { var i64a = new BigInt64Array(sab); - var before = Date.now(); + var before = $262.agent.monotonicNow(); $262.agent.report("ready"); Atomics.wait(i64a, 0, 0, ${TWO_SECOND_TIMEOUT}); - $262.agent.report(Date.now() - before); + $262.agent.report($262.agent.monotonicNow() - before); $262.agent.leaving(); }); `); diff --git a/test/built-ins/Atomics/wait/descriptor.js b/test/built-ins/Atomics/wait/descriptor.js index bfa9f3ac94..550d87b599 100644 --- a/test/built-ins/Atomics/wait/descriptor.js +++ b/test/built-ins/Atomics/wait/descriptor.js @@ -8,6 +8,9 @@ includes: [propertyHelper.js] features: [Atomics] ---*/ -verifyWritable(Atomics, "wait"); -verifyNotEnumerable(Atomics, "wait"); -verifyConfigurable(Atomics, "wait"); +verifyProperty(Atomics, 'wait', { + enumerable: false, + writable: true, + configurable: true, +}); + diff --git a/test/built-ins/Atomics/wait/did-timeout.js b/test/built-ins/Atomics/wait/did-timeout.js index 82c1f1beb1..41ff82f5a6 100644 --- a/test/built-ins/Atomics/wait/did-timeout.js +++ b/test/built-ins/Atomics/wait/did-timeout.js @@ -27,9 +27,9 @@ function getReport() { $262.agent.start(` $262.agent.receiveBroadcast(function(sab, id) { var i32a = new Int32Array(sab); - var then = Date.now(); + var before = $262.agent.monotonicNow(); $262.agent.report(Atomics.wait(i32a, 0, 0, 500)); // Timeout 500ms - $262.agent.report(Date.now() - then); // Actual time can be more than 500ms + $262.agent.report($262.agent.monotonicNow() - before); // Actual time can be more than 500ms $262.agent.leaving(); }) `); 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 d54e57cf45..346ff60687 100644 --- a/test/built-ins/Atomics/wait/false-for-timeout-agent.js +++ b/test/built-ins/Atomics/wait/false-for-timeout-agent.js @@ -40,11 +40,11 @@ var toPrimitive = { $262.agent.receiveBroadcast(function(sab) { var i32a = new Int32Array(sab); - var start = Date.now(); + var before = $262.agent.monotonicNow(); $262.agent.report(Atomics.wait(i32a, 0, 0, false)); $262.agent.report(Atomics.wait(i32a, 0, 0, valueOf)); $262.agent.report(Atomics.wait(i32a, 0, 0, toPrimitive)); - $262.agent.report(Date.now() - start); + $262.agent.report($262.agent.monotonicNow() - before); $262.agent.leaving(); }) `); diff --git a/test/built-ins/Atomics/wait/length.js b/test/built-ins/Atomics/wait/length.js index 53dbc3f52c..3452475b29 100644 --- a/test/built-ins/Atomics/wait/length.js +++ b/test/built-ins/Atomics/wait/length.js @@ -24,8 +24,9 @@ includes: [propertyHelper.js] features: [Atomics] ---*/ -assert.sameValue(Atomics.wait.length, 4); - -verifyNotEnumerable(Atomics.wait, "length"); -verifyNotWritable(Atomics.wait, "length"); -verifyConfigurable(Atomics.wait, "length"); +verifyProperty(Atomics.wait, 'length', { + value: 4, + enumerable: false, + writable: false, + configurable: true, +}); diff --git a/test/built-ins/Atomics/wait/name.js b/test/built-ins/Atomics/wait/name.js index 38d22dda68..6c10aa19e6 100644 --- a/test/built-ins/Atomics/wait/name.js +++ b/test/built-ins/Atomics/wait/name.js @@ -10,8 +10,9 @@ includes: [propertyHelper.js] features: [Atomics] ---*/ -assert.sameValue(Atomics.wait.name, "wait"); - -verifyNotEnumerable(Atomics.wait, "name"); -verifyNotWritable(Atomics.wait, "name"); -verifyConfigurable(Atomics.wait, "name"); +verifyProperty(Atomics.wait, 'name', { + value: 'wait', + enumerable: false, + writable: false, + configurable: true, +}); diff --git a/test/built-ins/Atomics/wait/no-spurious-wakeup-on-add.js b/test/built-ins/Atomics/wait/no-spurious-wakeup-on-add.js index 14eafc31f7..24fde8580b 100644 --- a/test/built-ins/Atomics/wait/no-spurious-wakeup-on-add.js +++ b/test/built-ins/Atomics/wait/no-spurious-wakeup-on-add.js @@ -23,10 +23,10 @@ const i32a = new Int32Array( $262.agent.start(` $262.agent.receiveBroadcast(function(sab) { var i32a = new Int32Array(sab); - var before = Date.now(); + var before = $262.agent.monotonicNow(); $262.agent.report("ready"); Atomics.wait(i32a, 0, 0, ${TWO_SECOND_TIMEOUT}); - $262.agent.report(Date.now() - before); + $262.agent.report($262.agent.monotonicNow() - before); $262.agent.leaving(); }); `); diff --git a/test/built-ins/Atomics/wait/no-spurious-wakeup-on-and.js b/test/built-ins/Atomics/wait/no-spurious-wakeup-on-and.js index 64be29377e..4c69ef53f7 100644 --- a/test/built-ins/Atomics/wait/no-spurious-wakeup-on-and.js +++ b/test/built-ins/Atomics/wait/no-spurious-wakeup-on-and.js @@ -23,10 +23,10 @@ const i32a = new Int32Array( $262.agent.start(` $262.agent.receiveBroadcast(function(sab) { var i32a = new Int32Array(sab); - var before = Date.now(); + var before = $262.agent.monotonicNow(); $262.agent.report("ready"); Atomics.wait(i32a, 0, 0, ${TWO_SECOND_TIMEOUT}); - $262.agent.report(Date.now() - before); + $262.agent.report($262.agent.monotonicNow() - before); $262.agent.leaving(); }); `); diff --git a/test/built-ins/Atomics/wait/no-spurious-wakeup-on-compareExchange.js b/test/built-ins/Atomics/wait/no-spurious-wakeup-on-compareExchange.js index 1aec3286c2..81458cf612 100644 --- a/test/built-ins/Atomics/wait/no-spurious-wakeup-on-compareExchange.js +++ b/test/built-ins/Atomics/wait/no-spurious-wakeup-on-compareExchange.js @@ -23,10 +23,10 @@ const i32a = new Int32Array( $262.agent.start(` $262.agent.receiveBroadcast(function(sab) { var i32a = new Int32Array(sab); - var before = Date.now(); + var before = $262.agent.monotonicNow(); $262.agent.report("ready"); Atomics.wait(i32a, 0, 0, ${TWO_SECOND_TIMEOUT}); - $262.agent.report(Date.now() - before); + $262.agent.report($262.agent.monotonicNow() - before); $262.agent.leaving(); }); `); diff --git a/test/built-ins/Atomics/wait/no-spurious-wakeup-on-exchange.js b/test/built-ins/Atomics/wait/no-spurious-wakeup-on-exchange.js index cb3f1d97f3..383c548e5d 100644 --- a/test/built-ins/Atomics/wait/no-spurious-wakeup-on-exchange.js +++ b/test/built-ins/Atomics/wait/no-spurious-wakeup-on-exchange.js @@ -23,10 +23,10 @@ const i32a = new Int32Array( $262.agent.start(` $262.agent.receiveBroadcast(function(sab) { var i32a = new Int32Array(sab); - var before = Date.now(); + var before = $262.agent.monotonicNow(); $262.agent.report("ready"); Atomics.wait(i32a, 0, 0, ${TWO_SECOND_TIMEOUT}); - $262.agent.report(Date.now() - before); + $262.agent.report($262.agent.monotonicNow() - before); $262.agent.leaving(); }); `); diff --git a/test/built-ins/Atomics/wait/no-spurious-wakeup-on-or.js b/test/built-ins/Atomics/wait/no-spurious-wakeup-on-or.js index 258ecce13f..b6f48d4471 100644 --- a/test/built-ins/Atomics/wait/no-spurious-wakeup-on-or.js +++ b/test/built-ins/Atomics/wait/no-spurious-wakeup-on-or.js @@ -23,10 +23,10 @@ const i32a = new Int32Array( $262.agent.start(` $262.agent.receiveBroadcast(function(sab) { var i32a = new Int32Array(sab); - var before = Date.now(); + var before = $262.agent.monotonicNow(); $262.agent.report("ready"); Atomics.wait(i32a, 0, 0, ${TWO_SECOND_TIMEOUT}); - $262.agent.report(Date.now() - before); + $262.agent.report($262.agent.monotonicNow() - before); $262.agent.leaving(); }); `); diff --git a/test/built-ins/Atomics/wait/no-spurious-wakeup-on-store-padded-time.js b/test/built-ins/Atomics/wait/no-spurious-wakeup-on-store-padded-time.js index cc538140dd..c8c66eb86f 100644 --- a/test/built-ins/Atomics/wait/no-spurious-wakeup-on-store-padded-time.js +++ b/test/built-ins/Atomics/wait/no-spurious-wakeup-on-store-padded-time.js @@ -13,9 +13,9 @@ features: [Atomics, SharedArrayBuffer, TypedArray] $262.agent.start(` $262.agent.receiveBroadcast(function(sab, id) { var i32a = new Int32Array(sab); - var then = Date.now(); + var then = $262.agent.monotonicNow(); Atomics.wait(i32a, 0, 0); - var diff = Date.now() - then; // Should be about 1000 ms but can be more + var diff = $262.agent.monotonicNow() - then; // Should be about 1000 ms but can be more $262.agent.report(diff); $262.agent.leaving(); }) diff --git a/test/built-ins/Atomics/wait/no-spurious-wakeup-on-store.js b/test/built-ins/Atomics/wait/no-spurious-wakeup-on-store.js index 6cb8f24931..fbac920c93 100644 --- a/test/built-ins/Atomics/wait/no-spurious-wakeup-on-store.js +++ b/test/built-ins/Atomics/wait/no-spurious-wakeup-on-store.js @@ -23,10 +23,10 @@ const i32a = new Int32Array( $262.agent.start(` $262.agent.receiveBroadcast(function(sab) { var i32a = new Int32Array(sab); - var before = Date.now(); + var before = $262.agent.monotonicNow(); $262.agent.report("ready"); Atomics.wait(i32a, 0, 0, ${TWO_SECOND_TIMEOUT}); - $262.agent.report(Date.now() - before); + $262.agent.report($262.agent.monotonicNow() - before); $262.agent.leaving(); }); `); diff --git a/test/built-ins/Atomics/wait/no-spurious-wakeup-on-sub.js b/test/built-ins/Atomics/wait/no-spurious-wakeup-on-sub.js index 0bd3ee6e82..908f30e37a 100644 --- a/test/built-ins/Atomics/wait/no-spurious-wakeup-on-sub.js +++ b/test/built-ins/Atomics/wait/no-spurious-wakeup-on-sub.js @@ -23,10 +23,10 @@ const i32a = new Int32Array( $262.agent.start(` $262.agent.receiveBroadcast(function(sab) { var i32a = new Int32Array(sab); - var before = Date.now(); + var before = $262.agent.monotonicNow(); $262.agent.report("ready"); Atomics.wait(i32a, 0, 0, ${TWO_SECOND_TIMEOUT}); - $262.agent.report(Date.now() - before); + $262.agent.report($262.agent.monotonicNow() - before); $262.agent.leaving(); }); `); diff --git a/test/built-ins/Atomics/wait/no-spurious-wakeup-on-xor.js b/test/built-ins/Atomics/wait/no-spurious-wakeup-on-xor.js index ff4796715e..5356b3fd77 100644 --- a/test/built-ins/Atomics/wait/no-spurious-wakeup-on-xor.js +++ b/test/built-ins/Atomics/wait/no-spurious-wakeup-on-xor.js @@ -23,10 +23,10 @@ const i32a = new Int32Array( $262.agent.start(` $262.agent.receiveBroadcast(function(sab) { var i32a = new Int32Array(sab); - var before = Date.now(); + var before = $262.agent.monotonicNow(); $262.agent.report("ready"); Atomics.wait(i32a, 0, 0, ${TWO_SECOND_TIMEOUT}); - $262.agent.report(Date.now() - before); + $262.agent.report($262.agent.monotonicNow() - before); $262.agent.leaving(); }); `); diff --git a/test/built-ins/Atomics/wait/null-for-timeout-agent.js b/test/built-ins/Atomics/wait/null-for-timeout-agent.js index c7d376f457..1793d59ffd 100644 --- a/test/built-ins/Atomics/wait/null-for-timeout-agent.js +++ b/test/built-ins/Atomics/wait/null-for-timeout-agent.js @@ -40,11 +40,11 @@ var toPrimitive = { $262.agent.receiveBroadcast(function(sab) { var i32a = new Int32Array(sab); - var start = Date.now(); + var before = $262.agent.monotonicNow(); $262.agent.report(Atomics.wait(i32a, 0, 0, null)); $262.agent.report(Atomics.wait(i32a, 0, 0, valueOf)); $262.agent.report(Atomics.wait(i32a, 0, 0, toPrimitive)); - $262.agent.report(Date.now() - start); + $262.agent.report($262.agent.monotonicNow() - before); $262.agent.leaving(); }) `); diff --git a/test/built-ins/Atomics/wait/object-for-timeout-agent.js b/test/built-ins/Atomics/wait/object-for-timeout-agent.js index cca80c08c2..477d24df09 100644 --- a/test/built-ins/Atomics/wait/object-for-timeout-agent.js +++ b/test/built-ins/Atomics/wait/object-for-timeout-agent.js @@ -47,11 +47,11 @@ var toPrimitive = { $262.agent.receiveBroadcast(function(sab) { var i32a = new Int32Array(sab); - var start = Date.now(); + var start = $262.agent.monotonicNow(); $262.agent.report(Atomics.wait(i32a, 0, 0, valueOf)); $262.agent.report(Atomics.wait(i32a, 0, 0, toString)); $262.agent.report(Atomics.wait(i32a, 0, 0, toPrimitive)); - $262.agent.report(Date.now() - start); + $262.agent.report($262.agent.monotonicNow() - start); $262.agent.leaving(); }) `); diff --git a/test/built-ins/Atomics/wait/poisoned-object-for-timeout-throws-agent.js b/test/built-ins/Atomics/wait/poisoned-object-for-timeout-throws-agent.js index 738c78072e..f4a068881f 100644 --- a/test/built-ins/Atomics/wait/poisoned-object-for-timeout-throws-agent.js +++ b/test/built-ins/Atomics/wait/poisoned-object-for-timeout-throws-agent.js @@ -40,7 +40,7 @@ var poisonedToPrimitive = { $262.agent.receiveBroadcast(function(sab) { var i32a = new Int32Array(sab); - var start = Date.now(); + var start = $262.agent.monotonicNow(); try { Atomics.wait(i32a, 0, 0, poisonedValueOf); } catch (error) { @@ -51,7 +51,7 @@ $262.agent.receiveBroadcast(function(sab) { } catch (error) { $262.agent.report("poisonedToPrimitive"); } - $262.agent.report(Date.now() - start); + $262.agent.report($262.agent.monotonicNow() - start); $262.agent.leaving(); }); `); diff --git a/test/built-ins/Atomics/wait/symbol-for-index-throws-agent.js b/test/built-ins/Atomics/wait/symbol-for-index-throws-agent.js index e341a344c9..997ad79246 100644 --- a/test/built-ins/Atomics/wait/symbol-for-index-throws-agent.js +++ b/test/built-ins/Atomics/wait/symbol-for-index-throws-agent.js @@ -53,7 +53,7 @@ var poisonedToPrimitive = { $262.agent.receiveBroadcast(function(sab) { var i32a = new Int32Array(sab); - var start = Date.now(); + var start = $262.agent.monotonicNow(); try { Atomics.wait(i32a, Symbol("1"), poisonedValueOf, poisonedValueOf); } catch (error) { @@ -64,7 +64,7 @@ $262.agent.receiveBroadcast(function(sab) { } catch (error) { $262.agent.report('Symbol("2")'); } - $262.agent.report(Date.now() - start); + $262.agent.report($262.agent.monotonicNow() - start); $262.agent.leaving(); }); `); diff --git a/test/built-ins/Atomics/wait/symbol-for-timeout-throws-agent.js b/test/built-ins/Atomics/wait/symbol-for-timeout-throws-agent.js index 9dc6526e57..9c23685c7c 100644 --- a/test/built-ins/Atomics/wait/symbol-for-timeout-throws-agent.js +++ b/test/built-ins/Atomics/wait/symbol-for-timeout-throws-agent.js @@ -26,7 +26,7 @@ function getReport() { $262.agent.start(` $262.agent.receiveBroadcast(function(sab) { var i32a = new Int32Array(sab); - var start = Date.now(); + var start = $262.agent.monotonicNow(); try { Atomics.wait(i32a, 0, 0, Symbol("1")); } catch (error) { @@ -37,7 +37,7 @@ $262.agent.receiveBroadcast(function(sab) { } catch (error) { $262.agent.report('Symbol("2")'); } - $262.agent.report(Date.now() - start); + $262.agent.report($262.agent.monotonicNow() - start); $262.agent.leaving(); }); `); diff --git a/test/built-ins/Atomics/wait/symbol-for-value-throws-agent.js b/test/built-ins/Atomics/wait/symbol-for-value-throws-agent.js index 35f1c9aae3..b3f582db00 100644 --- a/test/built-ins/Atomics/wait/symbol-for-value-throws-agent.js +++ b/test/built-ins/Atomics/wait/symbol-for-value-throws-agent.js @@ -43,7 +43,7 @@ var poisonedToPrimitive = { $262.agent.receiveBroadcast(function(sab) { var i32a = new Int32Array(sab); - var start = Date.now(); + var start = $262.agent.monotonicNow(); try { Atomics.wait(i32a, 0, Symbol("1"), poisonedValueOf); } catch (error) { @@ -54,7 +54,7 @@ $262.agent.receiveBroadcast(function(sab) { } catch (error) { $262.agent.report('Symbol("2")'); } - $262.agent.report(Date.now() - start); + $262.agent.report($262.agent.monotonicNow() - start); $262.agent.leaving(); }); `); diff --git a/test/built-ins/Atomics/wait/true-for-timeout-agent.js b/test/built-ins/Atomics/wait/true-for-timeout-agent.js index 53b3b50e2f..7e3b1fb0c3 100644 --- a/test/built-ins/Atomics/wait/true-for-timeout-agent.js +++ b/test/built-ins/Atomics/wait/true-for-timeout-agent.js @@ -40,11 +40,11 @@ var toPrimitive = { $262.agent.receiveBroadcast(function(sab) { var i32a = new Int32Array(sab); - var start = Date.now(); + var start = $262.agent.monotonicNow(); $262.agent.report(Atomics.wait(i32a, 0, 0, true)); $262.agent.report(Atomics.wait(i32a, 0, 0, valueOf)); $262.agent.report(Atomics.wait(i32a, 0, 0, toPrimitive)); - $262.agent.report(Date.now() - start); + $262.agent.report($262.agent.monotonicNow() - start); $262.agent.leaving(); }) `); 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 6f9bb220c2..20bfe22a5c 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 @@ -70,7 +70,7 @@ var i32a = new Int32Array(new SharedArrayBuffer(4)); $262.agent.broadcast(i32a.buffer); -var orderWhichAgentsWereStarted = getReport() + getReport() + getReport(); // can be started in any order +var orderAgentsStarted = getReport() + getReport() + getReport(); // can be started in any order assert.sameValue(Atomics.wake(i32a, 0, 1), 1); @@ -84,4 +84,4 @@ assert.sameValue(Atomics.wake(i32a, 0, 1), 1); orderAgentsWereWoken += getReport(); -assert.sameValue(orderWhichAgentsWereStarted, orderAgentsWereWoken); // agents should wake in the same order as they were started FIFO +assert.sameValue(orderAgentsStarted, orderAgentsWereWoken); // agents should wake in the same order as they were started FIFO diff --git a/test/built-ins/Atomics/wait/was-woken.js b/test/built-ins/Atomics/wait/was-woken.js index 6fcaefca10..9bba4693f0 100644 --- a/test/built-ins/Atomics/wait/was-woken.js +++ b/test/built-ins/Atomics/wait/was-woken.js @@ -18,15 +18,15 @@ function getReport() { $262.agent.start(` $262.agent.receiveBroadcast(function(sab, id) { - var ia = new Int32Array(sab); - $262.agent.report(Atomics.wait(ia, 0, 0)); // No timeout => Infinity + var i32a = new Int32Array(sab); + $262.agent.report(Atomics.wait(i32a, 0, 0)); // No timeout => Infinity $262.agent.leaving(); }); `); -var ia = new Int32Array(new SharedArrayBuffer(Int32Array.BYTES_PER_ELEMENT)); +var i32a = new Int32Array(new SharedArrayBuffer(Int32Array.BYTES_PER_ELEMENT)); -$262.agent.broadcast(ia.buffer); +$262.agent.broadcast(i32a.buffer); $262.agent.sleep(500); // Give the agent a chance to wait -Atomics.wake(ia, 0); +Atomics.wake(i32a, 0); assert.sameValue(getReport(), "ok"); diff --git a/test/built-ins/Atomics/wake/descriptor.js b/test/built-ins/Atomics/wake/descriptor.js index 395b3c35f5..d22f2ebb28 100644 --- a/test/built-ins/Atomics/wake/descriptor.js +++ b/test/built-ins/Atomics/wake/descriptor.js @@ -8,6 +8,8 @@ includes: [propertyHelper.js] features: [Atomics] ---*/ -verifyWritable(Atomics, "wake"); -verifyNotEnumerable(Atomics, "wake"); -verifyConfigurable(Atomics, "wake"); +verifyProperty(Atomics, 'wake', { + enumerable: false, + writable: true, + configurable: true, +}); diff --git a/test/built-ins/Atomics/wake/length.js b/test/built-ins/Atomics/wake/length.js index f275634fec..a2efb99e92 100644 --- a/test/built-ins/Atomics/wake/length.js +++ b/test/built-ins/Atomics/wake/length.js @@ -24,8 +24,9 @@ includes: [propertyHelper.js] features: [Atomics] ---*/ -assert.sameValue(Atomics.wake.length, 3); - -verifyNotEnumerable(Atomics.wake, "length"); -verifyNotWritable(Atomics.wake, "length"); -verifyConfigurable(Atomics.wake, "length"); +verifyProperty(Atomics.wake, 'length', { + value: 3, + enumerable: false, + writable: false, + configurable: true, +}); diff --git a/test/built-ins/Atomics/wake/name.js b/test/built-ins/Atomics/wake/name.js index 434e272392..0a2b2c956e 100644 --- a/test/built-ins/Atomics/wake/name.js +++ b/test/built-ins/Atomics/wake/name.js @@ -10,8 +10,9 @@ includes: [propertyHelper.js] features: [Atomics] ---*/ -assert.sameValue(Atomics.wake.name, "wake"); - -verifyNotEnumerable(Atomics.wake, "name"); -verifyNotWritable(Atomics.wake, "name"); -verifyConfigurable(Atomics.wake, "name"); +verifyProperty(Atomics.wake, 'name', { + value: 'wake', + enumerable: false, + writable: false, + configurable: true, +}); diff --git a/test/built-ins/Atomics/wake/negative-count.js b/test/built-ins/Atomics/wake/negative-count.js index 3c8c6c83b6..917f0d76ec 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 ia = new Int32Array(sab); - $262.agent.report(Atomics.wait(ia, 0, 0, 1000)); // We will timeout eventually + $262.agent.report(Atomics.wait(ia, 0, 0, 1000)); // Timeout after 1 second $262.agent.leaving(); }) `); 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 552eb52b6c..3c94b89201 100644 --- a/test/built-ins/Atomics/wake/wake-all-on-loc.js +++ b/test/built-ins/Atomics/wake/wake-all-on-loc.js @@ -19,9 +19,9 @@ var NUMAGENT = 3; for (var i=0; i < NUMAGENT; i++) { $262.agent.start(` $262.agent.receiveBroadcast(function(sab) { - var ia = new Int32Array(sab); - Atomics.add(ia, ${RUNNING}, 1); - $262.agent.report("A " + Atomics.wait(ia, ${WAKEUP}, 0)); + var i32a = new Int32Array(sab); + Atomics.add(i32a, ${RUNNING}, 1); + $262.agent.report("A " + Atomics.wait(i32a, ${WAKEUP}, 0)); $262.agent.leaving(); }) `); @@ -29,26 +29,26 @@ $262.agent.receiveBroadcast(function(sab) { $262.agent.start(` $262.agent.receiveBroadcast(function(sab) { - var ia = new Int32Array(sab); - Atomics.add(ia, ${RUNNING}, 1); + var i32a = new Int32Array(sab); + Atomics.add(i32a, ${RUNNING}, 1); // This will always time out. - $262.agent.report("B " + Atomics.wait(ia, ${DUMMY}, 0, 10)); + $262.agent.report("B " + Atomics.wait(i32a, ${DUMMY}, 0, 10)); $262.agent.leaving(); }) `); -var ia = new Int32Array(new SharedArrayBuffer(NUMELEM * Int32Array.BYTES_PER_ELEMENT)); -$262.agent.broadcast(ia.buffer); +var i32a = new Int32Array(new SharedArrayBuffer(NUMELEM * Int32Array.BYTES_PER_ELEMENT)); +$262.agent.broadcast(i32a.buffer); // Wait for agents to be running. -waitUntil(ia, RUNNING, NUMAGENT + 1); +waitUntil(i32a, RUNNING, NUMAGENT + 1); // Then wait some more to give the agents a fair chance to wait. If we don't, // we risk sending the wakeup before agents are sleeping, and we hang. $262.agent.sleep(50); // Wake all waiting on WAKEUP, should be 3 always, they won't time out. -assert.sameValue(Atomics.wake(ia, WAKEUP), NUMAGENT); +assert.sameValue(Atomics.wake(i32a, WAKEUP), NUMAGENT); var rs = []; for (var i = 0; i < NUMAGENT + 1; i++) { @@ -69,11 +69,11 @@ function getReport() { return r; } -function waitUntil(ia, k, value) { +function waitUntil(i32a, k, value) { var i = 0; - while (Atomics.load(ia, k) !== value && i < 15) { + while (Atomics.load(i32a, k) !== value && i < 15) { $262.agent.sleep(10); i++; } - assert.sameValue(Atomics.load(ia, k), value, "All agents are running"); + assert.sameValue(Atomics.load(i32a, k), value, "All agents are running"); } diff --git a/test/built-ins/Atomics/wake/wake-all.js b/test/built-ins/Atomics/wake/wake-all.js index e211529280..25ef337015 100644 --- a/test/built-ins/Atomics/wake/wake-all.js +++ b/test/built-ins/Atomics/wake/wake-all.js @@ -18,9 +18,9 @@ var NUMAGENT = 3; for (var i=0; i < NUMAGENT; i++) { $262.agent.start(` $262.agent.receiveBroadcast(function(sab) { - var ia = new Int32Array(sab); - Atomics.add(ia, ${RUNNING}, 1); - $262.agent.report("A " + Atomics.wait(ia, ${WAKEUP}, 0)); + var i32a = new Int32Array(sab); + Atomics.add(i32a, ${RUNNING}, 1); + $262.agent.report("A " + Atomics.wait(i32a, ${WAKEUP}, 0)); $262.agent.leaving(); }) `); @@ -28,26 +28,26 @@ $262.agent.receiveBroadcast(function(sab) { $262.agent.start(` $262.agent.receiveBroadcast(function(sab) { - var ia = new Int32Array(sab); - Atomics.add(ia, ${RUNNING}, 1); + var i32a = new Int32Array(sab); + Atomics.add(i32a, ${RUNNING}, 1); // This will always time out. - $262.agent.report("B " + Atomics.wait(ia, ${DUMMY}, 0, 10)); + $262.agent.report("B " + Atomics.wait(i32a, ${DUMMY}, 0, 10)); $262.agent.leaving(); }) `); -var ia = new Int32Array(new SharedArrayBuffer(NUMELEM * Int32Array.BYTES_PER_ELEMENT)); -$262.agent.broadcast(ia.buffer); +var i32a = new Int32Array(new SharedArrayBuffer(NUMELEM * Int32Array.BYTES_PER_ELEMENT)); +$262.agent.broadcast(i32a.buffer); // Wait for agents to be running. -waitUntil(ia, RUNNING, NUMAGENT + 1); +waitUntil(i32a, RUNNING, NUMAGENT + 1); // Then wait some more to give the agents a fair chance to wait. If we don't, // we risk sending the wakeup before agents are sleeping, and we hang. $262.agent.sleep(50); // Wake all waiting on WAKEUP, should be 3 always, they won't time out. -assert.sameValue(Atomics.wake(ia, WAKEUP), NUMAGENT); +assert.sameValue(Atomics.wake(i32a, WAKEUP), NUMAGENT); var rs = []; for (var i = 0; i < NUMAGENT + 1; i++) { @@ -68,11 +68,11 @@ function getReport() { return r; } -function waitUntil(ia, k, value) { +function waitUntil(i32a, k, value) { var i = 0; - while (Atomics.load(ia, k) !== value && i < 15) { + while (Atomics.load(i32a, k) !== value && i < 15) { $262.agent.sleep(10); i++; } - assert.sameValue(Atomics.load(ia, k), value, "All agents are running"); + assert.sameValue(Atomics.load(i32a, k), value, "All agents are running"); } diff --git a/test/built-ins/Atomics/wake/wake-in-order.js b/test/built-ins/Atomics/wake/wake-in-order.js index 8598b84b0d..60d00dc9d2 100644 --- a/test/built-ins/Atomics/wake/wake-in-order.js +++ b/test/built-ins/Atomics/wake/wake-in-order.js @@ -19,38 +19,38 @@ var NUMELEM = RUNNING + 1; // them go into a wait, thus controlling the waiting order. Then we wake them // one by one and observe the wakeup order. -for ( var i=0 ; i < NUMAGENT ; i++ ) { +for (var i = 0; i < NUMAGENT; i++) { $262.agent.start(` $262.agent.receiveBroadcast(function(sab) { - var ia = new Int32Array(sab); - Atomics.add(ia, ${RUNNING}, 1); - while (Atomics.load(ia, ${SPIN + i}) === 0) + var i32a = new Int32Array(sab); + Atomics.add(i32a, ${RUNNING}, 1); + while (Atomics.load(i32a, ${SPIN + i}) === 0) /* nothing */ ; - $262.agent.report(${i} + Atomics.wait(ia, ${WAKEUP}, 0)); + $262.agent.report(${i} + Atomics.wait(i32a, ${WAKEUP}, 0)); $262.agent.leaving(); -}) +}); `); } -var ia = new Int32Array(new SharedArrayBuffer(NUMELEM * Int32Array.BYTES_PER_ELEMENT)); -$262.agent.broadcast(ia.buffer); +var i32a = new Int32Array(new SharedArrayBuffer(NUMELEM * Int32Array.BYTES_PER_ELEMENT)); +$262.agent.broadcast(i32a.buffer); // Wait for agents to be running. -waitUntil(ia, RUNNING, NUMAGENT); +waitUntil(i32a, RUNNING, NUMAGENT); // Then wait some more to give the agents a fair chance to wait. If we don't, // we risk sending the wakeup before agents are sleeping, and we hang. $262.agent.sleep(50); -// Make them sleep in order 0 1 2 on ia[0] +// Make them sleep in order 0 1 2 on i32a[0] for (var i = 0; i < NUMAGENT; i++) { - Atomics.store(ia, SPIN + i, 1); + Atomics.store(i32a, SPIN + i, 1); $262.agent.sleep(50); } // 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(ia, WAKEUP, 1), 1); + assert.sameValue(Atomics.wake(i32a, WAKEUP, 1), 1); assert.sameValue(getReport(), i + "ok"); } @@ -62,11 +62,11 @@ function getReport() { return r; } -function waitUntil(ia, k, value) { +function waitUntil(i32a, k, value) { var i = 0; - while (Atomics.load(ia, k) !== value && i < 15) { + while (Atomics.load(i32a, k) !== value && i < 15) { $262.agent.sleep(10); i++; } - assert.sameValue(Atomics.load(ia, k), value, "All agents are running"); + assert.sameValue(Atomics.load(i32a, k), value, 'All agents are running'); } diff --git a/test/built-ins/Atomics/wake/wake-nan.js b/test/built-ins/Atomics/wake/wake-nan.js index 5fa193e20e..14c47d69ce 100644 --- a/test/built-ins/Atomics/wake/wake-nan.js +++ b/test/built-ins/Atomics/wake/wake-nan.js @@ -10,17 +10,17 @@ features: [Atomics, SharedArrayBuffer, TypedArray] $262.agent.start(` $262.agent.receiveBroadcast(function(sab) { - var ia = new Int32Array(sab); - $262.agent.report(Atomics.wait(ia, 0, 0, 1000)); // We will timeout eventually + var i32a = new Int32Array(sab); + $262.agent.report(Atomics.wait(i32a, 0, 0, 1000)); // We will timeout eventually $262.agent.leaving(); }) `); -var ia = new Int32Array(new SharedArrayBuffer(Int32Array.BYTES_PER_ELEMENT)); +var i32a = new Int32Array(new SharedArrayBuffer(Int32Array.BYTES_PER_ELEMENT)); -$262.agent.broadcast(ia.buffer); +$262.agent.broadcast(i32a.buffer); $262.agent.sleep(500); // Give the agent a chance to wait -assert.sameValue(Atomics.wake(ia, 0, NaN), 0); // Don't actually wake it +assert.sameValue(Atomics.wake(i32a, 0, NaN), 0); // Don't actually wake it assert.sameValue(getReport(), "timed-out"); function getReport() { diff --git a/test/built-ins/Atomics/xor/descriptor.js b/test/built-ins/Atomics/xor/descriptor.js index f837f67f51..80ad13066e 100644 --- a/test/built-ins/Atomics/xor/descriptor.js +++ b/test/built-ins/Atomics/xor/descriptor.js @@ -8,6 +8,8 @@ includes: [propertyHelper.js] features: [Atomics] ---*/ -verifyWritable(Atomics, "xor"); -verifyNotEnumerable(Atomics, "xor"); -verifyConfigurable(Atomics, "xor"); +verifyProperty(Atomics, 'xor', { + enumerable: false, + writable: true, + configurable: true, +}); diff --git a/test/built-ins/Atomics/xor/expected-return-value.js b/test/built-ins/Atomics/xor/expected-return-value.js index a9bfbbb48c..0323e77676 100644 --- a/test/built-ins/Atomics/xor/expected-return-value.js +++ b/test/built-ins/Atomics/xor/expected-return-value.js @@ -29,10 +29,10 @@ features: [Atomics, SharedArrayBuffer, TypedArray] var buffer = new SharedArrayBuffer(Int32Array.BYTES_PER_ELEMENT); var i32a = new Int32Array(buffer); -var value = 0b00000001000000001000000010000001; -var other = 0b00000001111111111000000011111111; +var initial = 0b00000001000000001000000010000001; +var update = 0b00000001111111111000000011111111; -i32a[0] = value; +i32a[0] = initial; -assert.sameValue(Atomics.xor(i32a, 0, other), value); -assert.sameValue(i32a[0], value ^ other); +assert.sameValue(Atomics.xor(i32a, 0, update), initial); +assert.sameValue(i32a[0], initial ^ update); diff --git a/test/built-ins/Atomics/xor/length.js b/test/built-ins/Atomics/xor/length.js index 1a00282eef..fd5fa67bb2 100644 --- a/test/built-ins/Atomics/xor/length.js +++ b/test/built-ins/Atomics/xor/length.js @@ -24,8 +24,10 @@ includes: [propertyHelper.js] features: [Atomics] ---*/ -assert.sameValue(Atomics.xor.length, 3); +verifyProperty(Atomics.xor, 'length', { + value: 3, + enumerable: false, + writable: false, + configurable: true, +}); -verifyNotEnumerable(Atomics.xor, "length"); -verifyNotWritable(Atomics.xor, "length"); -verifyConfigurable(Atomics.xor, "length"); diff --git a/test/built-ins/Atomics/xor/name.js b/test/built-ins/Atomics/xor/name.js index f632daa105..68d125115a 100644 --- a/test/built-ins/Atomics/xor/name.js +++ b/test/built-ins/Atomics/xor/name.js @@ -10,8 +10,9 @@ includes: [propertyHelper.js] features: [Atomics] ---*/ -assert.sameValue(Atomics.xor.name, "xor"); - -verifyNotEnumerable(Atomics.xor, "name"); -verifyNotWritable(Atomics.xor, "name"); -verifyConfigurable(Atomics.xor, "name"); +verifyProperty(Atomics.xor, 'name', { + value: 'xor', + enumerable: false, + writable: false, + configurable: true, +}); -- GitLab