From c5527b6d1616e342b21dc2250f3aa3535dc0a32b Mon Sep 17 00:00:00 2001
From: Rick Waldron <waldron.rick@gmail.com>
Date: Mon, 21 May 2018 14:55:47 -0400
Subject: [PATCH] Atomics: Atomics.wake cleanup pass

---
 test/built-ins/Atomics/wait/bad-range.js      |  2 +-
 .../wait/non-shared-bufferdata-throws.js      |  2 +-
 test/built-ins/Atomics/wake/bad-range.js      | 18 +++---
 .../Atomics/wake/bigint/bad-range.js          |  9 +--
 .../bigint/non-bigint64-typedarray-throws.js  | 14 ++++-
 .../bigint/non-shared-bufferdata-throws.js    | 10 ++--
 .../wake/bigint/null-bufferdata-throws.js     | 15 +++--
 .../Atomics/wake/bigint/wake-all-on-loc.js    | 18 +++---
 .../Atomics/wake/count-boundary-cases.js      | 35 ++++++++----
 .../count-defaults-to-infinity-missing.js     | 24 +++-----
 .../count-defaults-to-infinity-undefined.js   | 12 ++--
 .../built-ins/Atomics/wake/count-from-nans.js |  9 +--
 .../Atomics/wake/count-symbol-throws.js       |  9 +--
 ...count-tointeger-throws-then-wake-throws.js | 12 ++--
 test/built-ins/Atomics/wake/negative-count.js |  2 +-
 .../Atomics/wake/negative-index-throws.js     |  8 ++-
 .../wake/non-int32-typedarray-throws.js       | 56 +++++++++++++------
 .../wake/non-shared-bufferdata-throws.js      |  7 ++-
 ...hared-bufferdatate-non-shared-int-views.js | 42 ++++++++++++++
 .../Atomics/wake/non-shared-int-views.js      | 42 ++++++++++++++
 test/built-ins/Atomics/wake/non-views.js      |  6 +-
 .../Atomics/wake/nonshared-int-views.js       | 20 -------
 .../Atomics/wake/not-a-typedarray-throws.js   |  2 +-
 .../Atomics/wake/not-an-object-throws.js      |  2 +-
 .../Atomics/wake/null-bufferdata-throws.js    | 15 +++--
 .../Atomics/wake/out-of-range-index-throws.js |  5 +-
 .../Atomics/wake/symbol-for-index-throws.js   |  9 +--
 .../wake/undefined-index-defaults-to-zero.js  |  6 +-
 .../built-ins/Atomics/wake/wake-all-on-loc.js |  4 +-
 test/built-ins/Atomics/wake/wake-all.js       | 15 +++--
 test/built-ins/Atomics/wake/wake-in-order.js  |  5 +-
 test/built-ins/Atomics/wake/wake-nan.js       |  2 +-
 test/built-ins/Atomics/wake/wake-one.js       |  3 +-
 .../Atomics/wake/wake-rewake-noop.js          |  6 +-
 test/built-ins/Atomics/wake/wake-two.js       |  9 +--
 .../wake/wake-with-no-agents-waiting.js       |  5 +-
 .../wake-with-no-matching-agents-waiting.js   | 17 ++----
 test/built-ins/Atomics/wake/wake-zero.js      |  3 +-
 38 files changed, 302 insertions(+), 178 deletions(-)
 create mode 100644 test/built-ins/Atomics/wake/non-shared-bufferdatate-non-shared-int-views.js
 create mode 100644 test/built-ins/Atomics/wake/non-shared-int-views.js
 delete mode 100644 test/built-ins/Atomics/wake/nonshared-int-views.js

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