From c29ae8effbf8edca10161948854e8379ff0de5b7 Mon Sep 17 00:00:00 2001
From: Rick Waldron <waldron.rick@gmail.com>
Date: Wed, 27 Jun 2018 11:13:23 -0400
Subject: [PATCH] Atomics: refactor atomicsHelper.js to extend $262.agent.*

---
 harness/atomicsHelper.js                      | 40 +++++++++++--------
 .../isLockFree/expected-return-value.js       | 12 +++---
 .../wait/bigint/false-for-timeout-agent.js    | 12 +++---
 .../Atomics/wait/bigint/good-views.js         | 10 ++---
 .../Atomics/wait/bigint/nan-for-timeout.js    |  2 +-
 .../wait/bigint/negative-timeout-agent.js     |  2 +-
 .../bigint/no-spurious-wakeup-no-operation.js |  4 +-
 .../wait/bigint/no-spurious-wakeup-on-add.js  |  4 +-
 .../wait/bigint/no-spurious-wakeup-on-and.js  |  4 +-
 .../no-spurious-wakeup-on-compareExchange.js  |  4 +-
 .../bigint/no-spurious-wakeup-on-exchange.js  |  4 +-
 .../wait/bigint/no-spurious-wakeup-on-or.js   |  4 +-
 .../bigint/no-spurious-wakeup-on-store.js     |  4 +-
 .../wait/bigint/no-spurious-wakeup-on-sub.js  |  4 +-
 .../wait/bigint/no-spurious-wakeup-on-xor.js  |  4 +-
 .../Atomics/wait/bigint/value-not-equal.js    |  4 +-
 .../waiterlist-block-indexedposition-wake.js  |  4 +-
 .../waiterlist-order-of-operations-is-fifo.js | 14 +++----
 .../wait/bigint/was-woken-before-timeout.js   |  4 +-
 .../Atomics/wait/false-for-timeout-agent.js   | 10 ++---
 test/built-ins/Atomics/wait/good-views.js     | 10 ++---
 .../built-ins/Atomics/wait/nan-for-timeout.js |  2 +-
 .../Atomics/wait/negative-timeout-agent.js    |  2 +-
 .../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 +-
 .../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    | 10 ++---
 .../Atomics/wait/object-for-timeout-agent.js  | 10 ++---
 ...oisoned-object-for-timeout-throws-agent.js |  8 ++--
 .../wait/symbol-for-index-throws-agent.js     |  8 ++--
 .../wait/symbol-for-timeout-throws-agent.js   |  8 ++--
 .../wait/symbol-for-value-throws-agent.js     |  8 ++--
 .../Atomics/wait/true-for-timeout-agent.js    | 10 ++---
 .../Atomics/wait/undefined-for-timeout.js     | 32 ++++++++-------
 .../wait/undefined-index-defaults-to-zero.js  |  2 +-
 .../built-ins/Atomics/wait/value-not-equal.js |  4 +-
 .../wait/wait-index-value-not-equal.js        |  4 +-
 .../waiterlist-block-indexedposition-wake.js  |  4 +-
 .../waiterlist-order-of-operations-is-fifo.js | 14 +++----
 .../Atomics/wait/was-woken-before-timeout.js  |  4 +-
 .../Atomics/wake/bigint/wake-all-on-loc.js    | 12 +++---
 .../count-defaults-to-infinity-missing.js     | 16 ++++----
 .../count-defaults-to-infinity-undefined.js   | 16 ++++----
 test/built-ins/Atomics/wake/negative-count.js |  2 +-
 .../wake/undefined-index-defaults-to-zero.js  |  4 +-
 .../built-ins/Atomics/wake/wake-all-on-loc.js | 12 +++---
 test/built-ins/Atomics/wake/wake-all.js       | 12 +++---
 .../Atomics/wake/wake-in-order-one-time.js    | 14 +++----
 test/built-ins/Atomics/wake/wake-in-order.js  | 14 +++----
 test/built-ins/Atomics/wake/wake-nan.js       |  2 +-
 test/built-ins/Atomics/wake/wake-one.js       | 12 +++---
 .../Atomics/wake/wake-rewake-noop.js          |  4 +-
 test/built-ins/Atomics/wake/wake-two.js       | 12 +++---
 .../wake/wake-with-no-agents-waiting.js       |  7 ++--
 .../wake-with-no-matching-agents-waiting.js   | 12 +++---
 test/built-ins/Atomics/wake/wake-zero.js      |  4 +-
 61 files changed, 239 insertions(+), 238 deletions(-)

diff --git a/harness/atomicsHelper.js b/harness/atomicsHelper.js
index df5141743c..e6e7d9ca10 100644
--- a/harness/atomicsHelper.js
+++ b/harness/atomicsHelper.js
@@ -5,25 +5,35 @@ description: >
     Collection of functions used to interact with Atomics.* operations across agent boundaries.
 ---*/
 
-var helper = helper || {};
-
 /**
  * The amount of slack allowed for testing time-related Atomics methods (i.e. wait and wake).
  * The absolute value of the difference of the observed time and the expected time must
  * be epsilon-close.
  */
-var $ATOMICS_MAX_TIME_EPSILON = 100;
+$262.agent.MAX_TIME_EPSILON = 100;
 
 /**
- *
  * @return {String} A report sent from an agent.
  */
-function getReport() {
-  var r;
-  while ((r = $262.agent.getReport()) == null) {
-    $262.agent.sleep(10);
-  }
-  return r;
+{
+  // This is only necessary because the original
+  // $262.agent.getReport API was insufficient.
+  //
+  // All runtimes currently have their own
+  // $262.agent.getReport which is wrong, so we
+  // will pave over it with a corrected version.
+  //
+  // Binding $262.agent is necessary to prevent
+  // breaking SpiderMonkey's $262.agent.getReport
+  let getReport = $262.agent.getReport.bind($262.agent);
+
+  $262.agent.getReport = function() {
+    var r;
+    while ((r = getReport()) == null) {
+      $262.agent.sleep(1);
+    }
+    return r;
+  };
 }
 /**
  * With a given Int32Array, wait until the expected number of agents have reported themselves by
@@ -35,14 +45,10 @@ function getReport() {
  * @param {Number} index    The index of which all agents will report.
  * @param {Number} expected The number of agents that are expected to report as active.
  */
-function waitUntil(i32a, index, expected) {
+$262.agent.waitUntil = function(i32a, index, expected) {
   let agents = 0;
   while ((agents = Atomics.load(i32a, index)) !== expected) {
     /* nothing */
   }
-  assert.sameValue(agents, expected, `'agents' equals the value of 'expected' (${expected})`);
-}
-
-
-helper.getReport = getReport;
-helper.waitUntil = waitUntil;
+  assert.sameValue(agents, expected, `Reporting number of 'agents' equals the value of 'expected' (${expected})`);
+};
diff --git a/test/built-ins/Atomics/isLockFree/expected-return-value.js b/test/built-ins/Atomics/isLockFree/expected-return-value.js
index a057543a8a..cd5795c784 100644
--- a/test/built-ins/Atomics/isLockFree/expected-return-value.js
+++ b/test/built-ins/Atomics/isLockFree/expected-return-value.js
@@ -32,7 +32,7 @@ var isLockFree8;
   assert.sameValue(
     Atomics.isLockFree(1),
     isLockFree1,
-    'Atomics.isLockFree(1) equals the value of `isLockFree1` (Atomics.isLockFree(1))'
+    'Atomics.isLockFree(1) equals the value of `isLockFree1` (1)'
   );
 };
 {
@@ -47,7 +47,7 @@ var isLockFree8;
   assert.sameValue(
     Atomics.isLockFree(2),
     isLockFree2,
-    'Atomics.isLockFree(2) equals the value of `isLockFree2` (Atomics.isLockFree(2))'
+    'Atomics.isLockFree(2) equals the value of `isLockFree2` (2)'
   );
 };
 {
@@ -71,7 +71,7 @@ var isLockFree8;
   assert.sameValue(
     Atomics.isLockFree(8),
     isLockFree8,
-    'Atomics.isLockFree(8) equals the value of `isLockFree8` (Atomics.isLockFree(8))'
+    'Atomics.isLockFree(8) equals the value of `isLockFree8` (8)'
   );
 };
 
@@ -86,17 +86,17 @@ var isLockFree8;
 assert.sameValue(
   Atomics.isLockFree(1),
   isLockFree1,
-  'Later call to Atomics.isLockFree(1) equals the value of `isLockFree1` (Atomics.isLockFree(1))'
+  'Later call to Atomics.isLockFree(1) equals the value of `isLockFree1` (1)'
 );
 assert.sameValue(
   Atomics.isLockFree(2),
   isLockFree2,
-  'Later call to Atomics.isLockFree(2) equals the value of `isLockFree2` (Atomics.isLockFree(2))'
+  'Later call to Atomics.isLockFree(2) equals the value of `isLockFree2` (2)'
 );
 assert.sameValue(
   Atomics.isLockFree(8),
   isLockFree8,
-  'Later call to Atomics.isLockFree(8) equals the value of `isLockFree8` (Atomics.isLockFree(8))'
+  'Later call to Atomics.isLockFree(8) equals the value of `isLockFree8` (8)'
 );
 
 // Duplicates behavior created by loop from above
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 3b21c4c540..9ed38e8987 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
@@ -47,18 +47,18 @@ const i64a = new BigInt64Array(
 $262.agent.broadcast(i64a.buffer);
 $262.agent.sleep(100);
 
-assert.sameValue(getReport(), 'timed-out');
-assert.sameValue(getReport(), 'timed-out');
-assert.sameValue(getReport(), 'timed-out');
+assert.sameValue($262.agent.getReport(), 'timed-out');
+assert.sameValue($262.agent.getReport(), 'timed-out');
+assert.sameValue($262.agent.getReport(), 'timed-out');
 
-const lapse = getReport();
+const lapse = $262.agent.getReport();
 assert(
   lapse >= 0,
   `${lapse} should be greater than, or equal to 0`
 );
 assert(
-  lapse <= $ATOMICS_MAX_TIME_EPSILON,
-  `${lapse} should be less than ${$ATOMICS_MAX_TIME_EPSILON}`
+  lapse <= $262.agent.MAX_TIME_EPSILON,
+  `${lapse} should be less than ${$262.agent.MAX_TIME_EPSILON}`
 );
 assert.sameValue(Atomics.wake(i64a, 0), 0);
 
diff --git a/test/built-ins/Atomics/wait/bigint/good-views.js b/test/built-ins/Atomics/wait/bigint/good-views.js
index f478ab396a..0c1bbc0ca8 100644
--- a/test/built-ins/Atomics/wait/bigint/good-views.js
+++ b/test/built-ins/Atomics/wait/bigint/good-views.js
@@ -44,10 +44,6 @@ $262.agent.start(`
   $262.agent.leaving();
 `);
 
-assert.sameValue(getReport(), "A timed-out");
-assert.sameValue(getReport(), "B not-equal"); // Even with zero timeout
-
-var r;
-while ((r = getReport()) != "done") {
-  assert.sameValue(r, "C not-equal");
-}
+assert.sameValue($262.agent.getReport(), 'A timed-out');
+assert.sameValue($262.agent.getReport(), 'B not-equal');
+assert.sameValue($262.agent.getReport(), 'C not-equal');
diff --git a/test/built-ins/Atomics/wait/bigint/nan-for-timeout.js b/test/built-ins/Atomics/wait/bigint/nan-for-timeout.js
index 9963ad7c5e..21723c9bec 100644
--- a/test/built-ins/Atomics/wait/bigint/nan-for-timeout.js
+++ b/test/built-ins/Atomics/wait/bigint/nan-for-timeout.js
@@ -32,4 +32,4 @@ const i64a = new BigInt64Array(
 $262.agent.broadcast(i64a.buffer);
 $262.agent.sleep(100);
 assert.sameValue(Atomics.wake(i64a, 0), 1);
-assert.sameValue(getReport(), 'ok');
+assert.sameValue($262.agent.getReport(), 'ok');
diff --git a/test/built-ins/Atomics/wait/bigint/negative-timeout-agent.js b/test/built-ins/Atomics/wait/bigint/negative-timeout-agent.js
index 2e8ef99b29..d828c990c9 100644
--- a/test/built-ins/Atomics/wait/bigint/negative-timeout-agent.js
+++ b/test/built-ins/Atomics/wait/bigint/negative-timeout-agent.js
@@ -23,5 +23,5 @@ const i64a = new BigInt64Array(
 
 $262.agent.broadcast(i64a.buffer);
 $262.agent.sleep(10);
-assert.sameValue(getReport(), 'timed-out');
+assert.sameValue($262.agent.getReport(), 'timed-out');
 assert.sameValue(Atomics.wake(i64a, 0), 0);
diff --git a/test/built-ins/Atomics/wait/bigint/no-spurious-wakeup-no-operation.js b/test/built-ins/Atomics/wait/bigint/no-spurious-wakeup-no-operation.js
index 5c6cd8407c..cb91b6da4e 100644
--- a/test/built-ins/Atomics/wait/bigint/no-spurious-wakeup-no-operation.js
+++ b/test/built-ins/Atomics/wait/bigint/no-spurious-wakeup-no-operation.js
@@ -37,10 +37,10 @@ $262.agent.sleep(10);
 
 // NO OPERATION OCCURS HERE!
 
-const lapse = getReport();
+const lapse = $262.agent.getReport();
 assert(
   lapse >= TIMEOUT,
   `${lapse} should be at least ${TIMEOUT}`
 );
-assert.sameValue(getReport(), 'timed-out');
+assert.sameValue($262.agent.getReport(), 'timed-out');
 assert.sameValue(Atomics.wake(i64a, 0), 0);
diff --git a/test/built-ins/Atomics/wait/bigint/no-spurious-wakeup-on-add.js b/test/built-ins/Atomics/wait/bigint/no-spurious-wakeup-on-add.js
index a849a0dfbd..2cc3ddae5f 100644
--- a/test/built-ins/Atomics/wait/bigint/no-spurious-wakeup-on-add.js
+++ b/test/built-ins/Atomics/wait/bigint/no-spurious-wakeup-on-add.js
@@ -30,12 +30,12 @@ $262.agent.sleep(10);
 
 Atomics.add(i64a, 0, 1);
 
-const lapse = getReport();
+const lapse = $262.agent.getReport();
 assert(
   lapse >= TIMEOUT,
   `${lapse} should be at least ${TIMEOUT}`
 );
-assert.sameValue(getReport(), 'timed-out');
+assert.sameValue($262.agent.getReport(), 'timed-out');
 assert.sameValue(Atomics.wake(i64a, 0), 0);
 
 
diff --git a/test/built-ins/Atomics/wait/bigint/no-spurious-wakeup-on-and.js b/test/built-ins/Atomics/wait/bigint/no-spurious-wakeup-on-and.js
index 65ac7b19ad..2d92ce6f43 100644
--- a/test/built-ins/Atomics/wait/bigint/no-spurious-wakeup-on-and.js
+++ b/test/built-ins/Atomics/wait/bigint/no-spurious-wakeup-on-and.js
@@ -29,12 +29,12 @@ $262.agent.sleep(10);
 
 Atomics.and(i64a, 0, 1);
 
-const lapse = getReport();
+const lapse = $262.agent.getReport();
 assert(
   lapse >= TIMEOUT,
   `${lapse} should be at least ${TIMEOUT}`
 );
-assert.sameValue(getReport(), 'timed-out');
+assert.sameValue($262.agent.getReport(), 'timed-out');
 assert.sameValue(Atomics.wake(i64a, 0), 0);
 
 
diff --git a/test/built-ins/Atomics/wait/bigint/no-spurious-wakeup-on-compareExchange.js b/test/built-ins/Atomics/wait/bigint/no-spurious-wakeup-on-compareExchange.js
index 8a65b0805c..b6faecf477 100644
--- a/test/built-ins/Atomics/wait/bigint/no-spurious-wakeup-on-compareExchange.js
+++ b/test/built-ins/Atomics/wait/bigint/no-spurious-wakeup-on-compareExchange.js
@@ -29,10 +29,10 @@ $262.agent.sleep(10);
 
 Atomics.compareExchange(i64a, 0, 0, 1);
 
-const lapse = getReport();
+const lapse = $262.agent.getReport();
 assert(
   lapse >= TIMEOUT,
   `${lapse} should be at least ${TIMEOUT}`
 );
-assert.sameValue(getReport(), 'timed-out');
+assert.sameValue($262.agent.getReport(), 'timed-out');
 assert.sameValue(Atomics.wake(i64a, 0), 0);
diff --git a/test/built-ins/Atomics/wait/bigint/no-spurious-wakeup-on-exchange.js b/test/built-ins/Atomics/wait/bigint/no-spurious-wakeup-on-exchange.js
index 24e70acdc1..23b63d38fc 100644
--- a/test/built-ins/Atomics/wait/bigint/no-spurious-wakeup-on-exchange.js
+++ b/test/built-ins/Atomics/wait/bigint/no-spurious-wakeup-on-exchange.js
@@ -29,11 +29,11 @@ $262.agent.sleep(10);
 
 Atomics.exchange(i64a, 0, 1);
 
-const lapse = getReport();
+const lapse = $262.agent.getReport();
 assert(
   lapse >= TIMEOUT,
   `${lapse} should be at least ${TIMEOUT}`
 );
-assert.sameValue(getReport(), 'timed-out');
+assert.sameValue($262.agent.getReport(), 'timed-out');
 assert.sameValue(Atomics.wake(i64a, 0), 0);
 
diff --git a/test/built-ins/Atomics/wait/bigint/no-spurious-wakeup-on-or.js b/test/built-ins/Atomics/wait/bigint/no-spurious-wakeup-on-or.js
index ae0d560e2a..352642bfa5 100644
--- a/test/built-ins/Atomics/wait/bigint/no-spurious-wakeup-on-or.js
+++ b/test/built-ins/Atomics/wait/bigint/no-spurious-wakeup-on-or.js
@@ -29,12 +29,12 @@ $262.agent.sleep(10);
 
 Atomics.or(i64a, 0, 1);
 
-const lapse = getReport();
+const lapse = $262.agent.getReport();
 assert(
   lapse >= TIMEOUT,
   `${lapse} should be at least ${TIMEOUT}`
 );
-assert.sameValue(getReport(), 'timed-out');
+assert.sameValue($262.agent.getReport(), 'timed-out');
 assert.sameValue(Atomics.wake(i64a, 0), 0);
 
 
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 6e25fe7a3d..7f955ac2c0 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
@@ -29,11 +29,11 @@ $262.agent.sleep(10);
 
 Atomics.store(i64a, 0, 0x111111);
 
-const lapse = getReport();
+const lapse = $262.agent.getReport();
 assert(
   lapse >= TIMEOUT,
   `${lapse} should be at least ${TIMEOUT}`
 );
-assert.sameValue(getReport(), 'timed-out');
+assert.sameValue($262.agent.getReport(), 'timed-out');
 assert.sameValue(Atomics.wake(i64a, 0), 0);
 
diff --git a/test/built-ins/Atomics/wait/bigint/no-spurious-wakeup-on-sub.js b/test/built-ins/Atomics/wait/bigint/no-spurious-wakeup-on-sub.js
index b291f9d2be..68bcdea9a3 100644
--- a/test/built-ins/Atomics/wait/bigint/no-spurious-wakeup-on-sub.js
+++ b/test/built-ins/Atomics/wait/bigint/no-spurious-wakeup-on-sub.js
@@ -29,10 +29,10 @@ $262.agent.sleep(10);
 
 Atomics.sub(i64a, 0, 1);
 
-const lapse = getReport();
+const lapse = $262.agent.getReport();
 assert(
   lapse >= TIMEOUT,
   `${lapse} should be at least ${TIMEOUT}`
 );
-assert.sameValue(getReport(), 'timed-out');
+assert.sameValue($262.agent.getReport(), 'timed-out');
 assert.sameValue(Atomics.wake(i64a, 0), 0);
diff --git a/test/built-ins/Atomics/wait/bigint/no-spurious-wakeup-on-xor.js b/test/built-ins/Atomics/wait/bigint/no-spurious-wakeup-on-xor.js
index 5bb9c7da94..b06ac9565c 100644
--- a/test/built-ins/Atomics/wait/bigint/no-spurious-wakeup-on-xor.js
+++ b/test/built-ins/Atomics/wait/bigint/no-spurious-wakeup-on-xor.js
@@ -29,12 +29,12 @@ $262.agent.sleep(10);
 
 Atomics.xor(i64a, 0, 1);
 
-const lapse = getReport();
+const lapse = $262.agent.getReport();
 assert(
   lapse >= TIMEOUT,
   `${lapse} should be at least ${TIMEOUT}`
 );
-assert.sameValue(getReport(), 'timed-out');
+assert.sameValue($262.agent.getReport(), 'timed-out');
 assert.sameValue(Atomics.wake(i64a, 0), 0);
 
 
diff --git a/test/built-ins/Atomics/wait/bigint/value-not-equal.js b/test/built-ins/Atomics/wait/bigint/value-not-equal.js
index 351e678287..c67f828080 100644
--- a/test/built-ins/Atomics/wait/bigint/value-not-equal.js
+++ b/test/built-ins/Atomics/wait/bigint/value-not-equal.js
@@ -37,6 +37,6 @@ const i64a = new BigInt64Array(
 $262.agent.broadcast(i64a.buffer);
 $262.agent.sleep(100);
 
-assert.sameValue(getReport(), value.toString());
-assert.sameValue(getReport(), 'not-equal');
+assert.sameValue($262.agent.getReport(), value.toString());
+assert.sameValue($262.agent.getReport(), 'not-equal');
 
diff --git a/test/built-ins/Atomics/wait/bigint/waiterlist-block-indexedposition-wake.js b/test/built-ins/Atomics/wait/bigint/waiterlist-block-indexedposition-wake.js
index ee128c52d9..b141a4ff45 100644
--- a/test/built-ins/Atomics/wait/bigint/waiterlist-block-indexedposition-wake.js
+++ b/test/built-ins/Atomics/wait/bigint/waiterlist-block-indexedposition-wake.js
@@ -60,8 +60,8 @@ assert.sameValue(Atomics.wake(i64a, 5), 0, 'Atomics.wake(i64a, 5) returns 0');
 
 // Wake index 7, wakes 1
 assert.sameValue(Atomics.wake(i64a, 7), 1, 'Atomics.wake(i64a, 7) returns 1');
-assert.sameValue(getReport(), 'ok', 'getReport() returns "ok"');
+assert.sameValue($262.agent.getReport(), 'ok', '$262.agent.getReport() returns "ok"');
 
 // Wake index 0, wakes 1
 assert.sameValue(Atomics.wake(i64a, 0), 1, 'Atomics.wake(i64a, 0) returns 1');
-assert.sameValue(getReport(), 'ok', 'getReport() returns "ok"');
+assert.sameValue($262.agent.getReport(), 'ok', '$262.agent.getReport() returns "ok"');
diff --git a/test/built-ins/Atomics/wait/bigint/waiterlist-order-of-operations-is-fifo.js b/test/built-ins/Atomics/wait/bigint/waiterlist-order-of-operations-is-fifo.js
index 3cf8050640..95a554b72d 100644
--- a/test/built-ins/Atomics/wait/bigint/waiterlist-order-of-operations-is-fifo.js
+++ b/test/built-ins/Atomics/wait/bigint/waiterlist-order-of-operations-is-fifo.js
@@ -61,17 +61,17 @@ $262.agent.broadcast(i64a.buffer);
 $262.agent.sleep(100);
 
 // Agents may be started in any order...
-const started = [getReport(), getReport(), getReport()];
+const started = [$262.agent.getReport(), $262.agent.getReport(), $262.agent.getReport()];
 
 // Agents must wake in the order they waited
 assert.sameValue(Atomics.wake(i64a, 1, 1), 1);
-assert.sameValue(getReport(), 'ok');
-assert.sameValue(getReport(), started[0]);
+assert.sameValue($262.agent.getReport(), 'ok');
+assert.sameValue($262.agent.getReport(), started[0]);
 
 assert.sameValue(Atomics.wake(i64a, 2, 1), 1);
-assert.sameValue(getReport(), 'ok');
-assert.sameValue(getReport(), started[1]);
+assert.sameValue($262.agent.getReport(), 'ok');
+assert.sameValue($262.agent.getReport(), started[1]);
 
 assert.sameValue(Atomics.wake(i64a, 3, 1), 1);
-assert.sameValue(getReport(), 'ok');
-assert.sameValue(getReport(), started[2]);
+assert.sameValue($262.agent.getReport(), 'ok');
+assert.sameValue($262.agent.getReport(), started[2]);
diff --git a/test/built-ins/Atomics/wait/bigint/was-woken-before-timeout.js b/test/built-ins/Atomics/wait/bigint/was-woken-before-timeout.js
index c21b75cd4a..d9084dcdf5 100644
--- a/test/built-ins/Atomics/wait/bigint/was-woken-before-timeout.js
+++ b/test/built-ins/Atomics/wait/bigint/was-woken-before-timeout.js
@@ -45,12 +45,12 @@ $262.agent.sleep(sleeping);
 
 assert.sameValue(Atomics.wake(i64a, 0), 1);
 
-const lapse = getReport();
+const lapse = $262.agent.getReport();
 
 assert(
   sleeping + lapse < timeout,
   `${sleeping + lapse} should be less than ${timeout}`
 );
-assert.sameValue(getReport(), 'ok');
+assert.sameValue($262.agent.getReport(), 'ok');
 
 
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 616b095b77..1bdda0a50e 100644
--- a/test/built-ins/Atomics/wait/false-for-timeout-agent.js
+++ b/test/built-ins/Atomics/wait/false-for-timeout-agent.js
@@ -47,15 +47,15 @@ const i32a = new Int32Array(
 $262.agent.broadcast(i32a.buffer);
 $262.agent.sleep(100);
 
-assert.sameValue(getReport(), 'timed-out');
-assert.sameValue(getReport(), 'timed-out');
-assert.sameValue(getReport(), 'timed-out');
+assert.sameValue($262.agent.getReport(), 'timed-out');
+assert.sameValue($262.agent.getReport(), 'timed-out');
+assert.sameValue($262.agent.getReport(), 'timed-out');
 
-var lapse = getReport();
+var lapse = $262.agent.getReport();
 
 assert(lapse >= 0, 'timeout should be a min of 0ms');
 
-assert(lapse <= $ATOMICS_MAX_TIME_EPSILON, `timeout should be a max of ${$ATOMICS_MAX_TIME_EPSILON}`);
+assert(lapse <= $262.agent.MAX_TIME_EPSILON, `timeout should be a max of ${$262.agent.MAX_TIME_EPSILON}`);
 
 assert.sameValue(Atomics.wake(i32a, 0), 0);
 
diff --git a/test/built-ins/Atomics/wait/good-views.js b/test/built-ins/Atomics/wait/good-views.js
index 9b6b253de8..536293c23e 100644
--- a/test/built-ins/Atomics/wait/good-views.js
+++ b/test/built-ins/Atomics/wait/good-views.js
@@ -44,10 +44,6 @@ $262.agent.start(`
   $262.agent.leaving();
 `);
 
-assert.sameValue(getReport(), 'A timed-out');
-assert.sameValue(getReport(), 'B not-equal'); // Even with zero timeout
-
-var r;
-while ((r = getReport()) != "done") {
-  assert.sameValue(r, "C not-equal");
-}
+assert.sameValue($262.agent.getReport(), 'A timed-out');
+assert.sameValue($262.agent.getReport(), 'B not-equal');
+assert.sameValue($262.agent.getReport(), 'C not-equal');
diff --git a/test/built-ins/Atomics/wait/nan-for-timeout.js b/test/built-ins/Atomics/wait/nan-for-timeout.js
index d5075813b8..7ae886c772 100644
--- a/test/built-ins/Atomics/wait/nan-for-timeout.js
+++ b/test/built-ins/Atomics/wait/nan-for-timeout.js
@@ -33,4 +33,4 @@ $262.agent.broadcast(i32a.buffer);
 $262.agent.sleep(500); // Ample time
 
 assert.sameValue(Atomics.wake(i32a, 0), 1);
-assert.sameValue(getReport(), "ok");
+assert.sameValue($262.agent.getReport(), "ok");
diff --git a/test/built-ins/Atomics/wait/negative-timeout-agent.js b/test/built-ins/Atomics/wait/negative-timeout-agent.js
index a4557714c8..4b93eeb05f 100644
--- a/test/built-ins/Atomics/wait/negative-timeout-agent.js
+++ b/test/built-ins/Atomics/wait/negative-timeout-agent.js
@@ -24,5 +24,5 @@ const i32a = new Int32Array(
 $262.agent.broadcast(i32a.buffer);
 $262.agent.sleep(100);
 
-assert.sameValue(getReport(), 'timed-out');
+assert.sameValue($262.agent.getReport(), 'timed-out');
 assert.sameValue(Atomics.wake(i32a, 0), 0);
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 d98e92ec76..4ed4cc2b37 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
@@ -30,12 +30,12 @@ $262.agent.sleep(10);
 
 Atomics.add(i32a, 0, 1);
 
-const lapse = getReport();
+const lapse = $262.agent.getReport();
 assert(
   lapse >= TIMEOUT,
   `${lapse} should be at least ${TIMEOUT}`
 );
-assert.sameValue(getReport(), 'timed-out');
+assert.sameValue($262.agent.getReport(), 'timed-out');
 assert.sameValue(Atomics.wake(i32a, 0), 0);
 
 
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 29c2bf2a2b..66f6bc7c03 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
@@ -30,12 +30,12 @@ $262.agent.sleep(10);
 
 Atomics.and(i32a, 0, 1);
 
-const lapse = getReport();
+const lapse = $262.agent.getReport();
 assert(
   lapse >= TIMEOUT,
   `${lapse} should be at least ${TIMEOUT}`
 );
-assert.sameValue(getReport(), 'timed-out');
+assert.sameValue($262.agent.getReport(), 'timed-out');
 assert.sameValue(Atomics.wake(i32a, 0), 0);
 
 
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 31d9cd74c0..fdb8bd04fe 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
@@ -30,10 +30,10 @@ $262.agent.sleep(10);
 
 Atomics.compareExchange(i32a, 0, 0, 1);
 
-const lapse = getReport();
+const lapse = $262.agent.getReport();
 assert(
   lapse >= TIMEOUT,
   `${lapse} should be at least ${TIMEOUT}`
 );
-assert.sameValue(getReport(), 'timed-out');
+assert.sameValue($262.agent.getReport(), 'timed-out');
 assert.sameValue(Atomics.wake(i32a, 0), 0);
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 aeb16b37bc..6976bcdfcc 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
@@ -30,11 +30,11 @@ $262.agent.sleep(10);
 
 Atomics.exchange(i32a, 0, 1);
 
-const lapse = getReport();
+const lapse = $262.agent.getReport();
 assert(
   lapse >= TIMEOUT,
   `${lapse} should be at least ${TIMEOUT}`
 );
-assert.sameValue(getReport(), 'timed-out');
+assert.sameValue($262.agent.getReport(), 'timed-out');
 assert.sameValue(Atomics.wake(i32a, 0), 0);
 
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 a365f2effd..847706e762 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
@@ -30,12 +30,12 @@ $262.agent.sleep(10);
 
 Atomics.or(i32a, 0, 1);
 
-const lapse = getReport();
+const lapse = $262.agent.getReport();
 assert(
   lapse >= TIMEOUT,
   `${lapse} should be at least ${TIMEOUT}`
 );
-assert.sameValue(getReport(), 'timed-out');
+assert.sameValue($262.agent.getReport(), 'timed-out');
 assert.sameValue(Atomics.wake(i32a, 0), 0);
 
 
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 0ce28339a8..e2e918fab4 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
@@ -30,11 +30,11 @@ $262.agent.sleep(10);
 
 Atomics.store(i32a, 0, 0x111111);
 
-const lapse = getReport();
+const lapse = $262.agent.getReport();
 assert(
   lapse >= TIMEOUT,
   `${lapse} should be at least ${TIMEOUT}`
 );
-assert.sameValue(getReport(), 'timed-out');
+assert.sameValue($262.agent.getReport(), 'timed-out');
 assert.sameValue(Atomics.wake(i32a, 0), 0);
 
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 081f9a428e..196d3d2604 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
@@ -30,10 +30,10 @@ $262.agent.sleep(10);
 
 Atomics.sub(i32a, 0, 1);
 
-const lapse = getReport();
+const lapse = $262.agent.getReport();
 assert(
   lapse >= TIMEOUT,
   `${lapse} should be at least ${TIMEOUT}`
 );
-assert.sameValue(getReport(), 'timed-out');
+assert.sameValue($262.agent.getReport(), 'timed-out');
 assert.sameValue(Atomics.wake(i32a, 0), 0);
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 a96e433467..83c7c97af9 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
@@ -30,12 +30,12 @@ $262.agent.sleep(10);
 
 Atomics.xor(i32a, 0, 1);
 
-const lapse = getReport();
+const lapse = $262.agent.getReport();
 assert(
   lapse >= TIMEOUT,
   `${lapse} should be at least ${TIMEOUT}`
 );
-assert.sameValue(getReport(), 'timed-out');
+assert.sameValue($262.agent.getReport(), 'timed-out');
 assert.sameValue(Atomics.wake(i32a, 0), 0);
 
 
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 599d95091e..6ba9a4f5b7 100644
--- a/test/built-ins/Atomics/wait/null-for-timeout-agent.js
+++ b/test/built-ins/Atomics/wait/null-for-timeout-agent.js
@@ -47,15 +47,15 @@ const i32a = new Int32Array(
 $262.agent.broadcast(i32a.buffer);
 $262.agent.sleep(150);
 
-assert.sameValue(getReport(), 'timed-out');
-assert.sameValue(getReport(), 'timed-out');
-assert.sameValue(getReport(), 'timed-out');
+assert.sameValue($262.agent.getReport(), 'timed-out');
+assert.sameValue($262.agent.getReport(), 'timed-out');
+assert.sameValue($262.agent.getReport(), 'timed-out');
 
-const lapse = getReport();
+const lapse = $262.agent.getReport();
 
 assert(lapse >= 0, 'timeout should be a min of 0ms');
 
-assert(lapse <= $ATOMICS_MAX_TIME_EPSILON, 'timeout should be a max of $ATOMICS_MAX_TIME_EPSILON');
+assert(lapse <= $262.agent.MAX_TIME_EPSILON, 'timeout should be a max of $262.agent.MAX_TIME_EPSILON');
 
 assert.sameValue(Atomics.wake(i32a, 0), 0);
 
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 4f5f2e9913..6446096693 100644
--- a/test/built-ins/Atomics/wait/object-for-timeout-agent.js
+++ b/test/built-ins/Atomics/wait/object-for-timeout-agent.js
@@ -52,15 +52,15 @@ const i32a = new Int32Array(
 $262.agent.broadcast(i32a.buffer);
 $262.agent.sleep(150);
 
-assert.sameValue(getReport(), 'timed-out');
-assert.sameValue(getReport(), 'timed-out');
-assert.sameValue(getReport(), 'timed-out');
+assert.sameValue($262.agent.getReport(), 'timed-out');
+assert.sameValue($262.agent.getReport(), 'timed-out');
+assert.sameValue($262.agent.getReport(), 'timed-out');
 
-var lapse = getReport();
+const lapse = $262.agent.getReport();
 
 assert(lapse >= 0, 'timeout should be a min of 0ms');
 
-assert(lapse <= $ATOMICS_MAX_TIME_EPSILON, 'timeout should be a max of $$ATOMICS_MAX_TIME_EPSILON');
+assert(lapse <= $262.agent.MAX_TIME_EPSILON, 'timeout should be a max of $$262.agent.MAX_TIME_EPSILON');
 
 assert.sameValue(Atomics.wake(i32a, 0), 0);
 
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 5ec9f80945..6642ccfe3a 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
@@ -54,14 +54,14 @@ const i32a = new Int32Array(
 $262.agent.broadcast(i32a.buffer);
 $262.agent.sleep(150);
 
-assert.sameValue(getReport(), 'poisonedValueOf');
-assert.sameValue(getReport(), 'poisonedToPrimitive');
+assert.sameValue($262.agent.getReport(), 'poisonedValueOf');
+assert.sameValue($262.agent.getReport(), 'poisonedToPrimitive');
 
-const lapse = getReport();
+const lapse = $262.agent.getReport();
 
 assert(lapse >= 0, 'timeout should be a min of 0ms');
 
-assert(lapse <= $ATOMICS_MAX_TIME_EPSILON, 'timeout should be a max of $$ATOMICS_MAX_TIME_EPSILON');
+assert(lapse <= $262.agent.MAX_TIME_EPSILON, 'timeout should be a max of $$262.agent.MAX_TIME_EPSILON');
 
 assert.sameValue(Atomics.wake(i32a, 0), 0);
 
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 c4bc9e7cf5..7065e97a85 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
@@ -67,13 +67,13 @@ const i32a = new Int32Array(
 $262.agent.broadcast(i32a.buffer);
 $262.agent.sleep(150);
 
-assert.sameValue(getReport(), 'Symbol("1")');
-assert.sameValue(getReport(), 'Symbol("2")');
+assert.sameValue($262.agent.getReport(), 'Symbol("1")');
+assert.sameValue($262.agent.getReport(), 'Symbol("2")');
 
-const lapse = getReport();
+const lapse = $262.agent.getReport();
 
 assert(lapse >= 0, 'timeout should be a min of 0ms');
-assert(lapse <= $ATOMICS_MAX_TIME_EPSILON, 'timeout should be a max of $$ATOMICS_MAX_TIME_EPSILON');
+assert(lapse <= $262.agent.MAX_TIME_EPSILON, 'timeout should be a max of $$262.agent.MAX_TIME_EPSILON');
 
 assert.sameValue(Atomics.wake(i32a, 0), 0);
 
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 b730a5baba..a0b3316558 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
@@ -41,12 +41,12 @@ const i32a = new Int32Array(
 $262.agent.broadcast(i32a.buffer);
 $262.agent.sleep(150);
 
-assert.sameValue(getReport(), 'Symbol("1")');
-assert.sameValue(getReport(), 'Symbol("2")');
+assert.sameValue($262.agent.getReport(), 'Symbol("1")');
+assert.sameValue($262.agent.getReport(), 'Symbol("2")');
 
-const lapse = getReport();
+const lapse = $262.agent.getReport();
 
 assert(lapse >= 0, 'timeout should be a min of 0ms');
-assert(lapse <= $ATOMICS_MAX_TIME_EPSILON, 'timeout should be a max of $$ATOMICS_MAX_TIME_EPSILON');
+assert(lapse <= $262.agent.MAX_TIME_EPSILON, 'timeout should be a max of $$262.agent.MAX_TIME_EPSILON');
 
 assert.sameValue(Atomics.wake(i32a, 0), 0);
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 2457900778..6a2faa17db 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
@@ -58,12 +58,12 @@ const i32a = new Int32Array(
 $262.agent.broadcast(i32a.buffer);
 $262.agent.sleep(150);
 
-assert.sameValue(getReport(), 'Symbol("1")');
-assert.sameValue(getReport(), 'Symbol("2")');
+assert.sameValue($262.agent.getReport(), 'Symbol("1")');
+assert.sameValue($262.agent.getReport(), 'Symbol("2")');
 
-const lapse = getReport();
+const lapse = $262.agent.getReport();
 
 assert(lapse >= 0, 'timeout should be a min of 0ms');
-assert(lapse <= $ATOMICS_MAX_TIME_EPSILON, 'timeout should be a max of $$ATOMICS_MAX_TIME_EPSILON');
+assert(lapse <= $262.agent.MAX_TIME_EPSILON, 'timeout should be a max of $$262.agent.MAX_TIME_EPSILON');
 
 assert.sameValue(Atomics.wake(i32a, 0), 0);
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 0b8df771bd..be3adbb639 100644
--- a/test/built-ins/Atomics/wait/true-for-timeout-agent.js
+++ b/test/built-ins/Atomics/wait/true-for-timeout-agent.js
@@ -47,15 +47,15 @@ const i32a = new Int32Array(
 $262.agent.broadcast(i32a.buffer);
 $262.agent.sleep(150);
 
-assert.sameValue(getReport(), 'timed-out');
-assert.sameValue(getReport(), 'timed-out');
-assert.sameValue(getReport(), 'timed-out');
+assert.sameValue($262.agent.getReport(), 'timed-out');
+assert.sameValue($262.agent.getReport(), 'timed-out');
+assert.sameValue($262.agent.getReport(), 'timed-out');
 
-const lapse = getReport();
+const lapse = $262.agent.getReport();
 
 assert(lapse >= 0, 'timeout should be a min of 0ms');
 
-assert(lapse <= $ATOMICS_MAX_TIME_EPSILON, 'timeout should be a max of $$ATOMICS_MAX_TIME_EPSILON');
+assert(lapse <= $262.agent.MAX_TIME_EPSILON, 'timeout should be a max of $$262.agent.MAX_TIME_EPSILON');
 
 assert.sameValue(Atomics.wake(i32a, 0), 0);
 
diff --git a/test/built-ins/Atomics/wait/undefined-for-timeout.js b/test/built-ins/Atomics/wait/undefined-for-timeout.js
index 2ab2784572..fd38c69ab3 100644
--- a/test/built-ins/Atomics/wait/undefined-for-timeout.js
+++ b/test/built-ins/Atomics/wait/undefined-for-timeout.js
@@ -17,14 +17,17 @@ includes: [atomicsHelper.js]
 features: [Atomics, SharedArrayBuffer, TypedArray]
 ---*/
 
-const NUMAGENT = 2; // Total number of agents started
-const WAKEUP = 0; // Index all agents are waiting on
-const WAKECOUNT = 2; // Total number of agents to wake up
+const WAIT_INDEX = 0; // Index all agents are waiting on
+const RUNNING = 1;
+const NUMAGENT = 2;   // Total number of agents started
+const WAKECOUNT = 2;  // Total number of agents to wake up
 
 $262.agent.start(`
   $262.agent.receiveBroadcast(function(sab) {
     var i32a = new Int32Array(sab);
-    $262.agent.report("A " + Atomics.wait(i32a, 0, 0, undefined));  // undefined => NaN => +Infinity
+    // undefined => NaN => +Infinity
+    Atomics.add(i32a, ${RUNNING}, 1);
+    $262.agent.report("A " + Atomics.wait(i32a, 0, 0, undefined));
     $262.agent.leaving();
   });
 `);
@@ -32,7 +35,9 @@ $262.agent.start(`
 $262.agent.start(`
   $262.agent.receiveBroadcast(function(sab) {
     var i32a = new Int32Array(sab);
-    $262.agent.report("B " + Atomics.wait(i32a, 0, 0));  // undefined timeout arg => NaN => +Infinity
+    // undefined timeout arg => NaN => +Infinity
+    Atomics.add(i32a, ${RUNNING}, 1);
+    $262.agent.report("B " + Atomics.wait(i32a, 0, 0));
     $262.agent.leaving();
   });
 `);
@@ -42,18 +47,15 @@ const i32a = new Int32Array(
 );
 
 $262.agent.broadcast(i32a.buffer);
-$262.agent.sleep(500); // Ample time
+$262.agent.waitUntil(i32a, RUNNING, NUMAGENT);
 
-// No Reports made before wait
-assert.sameValue(getReport(), null);
+assert.sameValue(Atomics.wake(i32a, WAIT_INDEX, WAKECOUNT), WAKECOUNT);
 
-assert.sameValue(Atomics.wake(i32a, WAKEUP, WAKECOUNT), WAKECOUNT);
-
-const sortedReports = [];
+const reports = [];
 for (var i = 0; i < NUMAGENT; i++) {
-  sortedReports.push(getReport());
+  reports.push($262.agent.getReport());
 }
-sortedReports.sort();
+reports.sort();
 
-assert.sameValue(sortedReports[0], 'A ok');
-assert.sameValue(sortedReports[1], 'B ok');
+assert.sameValue(reports[0], 'A ok');
+assert.sameValue(reports[1], 'B ok');
diff --git a/test/built-ins/Atomics/wait/undefined-index-defaults-to-zero.js b/test/built-ins/Atomics/wait/undefined-index-defaults-to-zero.js
index f3f722c7fa..6a01b06d9f 100644
--- a/test/built-ins/Atomics/wait/undefined-index-defaults-to-zero.js
+++ b/test/built-ins/Atomics/wait/undefined-index-defaults-to-zero.js
@@ -39,4 +39,4 @@ $262.agent.sleep(150);
 
 assert.sameValue(Atomics.wake(i32a, 0), 1); // wake at index 0
 assert.sameValue(Atomics.wake(i32a, 0), 0); // wake again at index 0, and 0 agents should be woken
-assert.sameValue(getReport(), 'ok');
+assert.sameValue($262.agent.getReport(), 'ok');
diff --git a/test/built-ins/Atomics/wait/value-not-equal.js b/test/built-ins/Atomics/wait/value-not-equal.js
index 82dde2224e..8111ba45e5 100644
--- a/test/built-ins/Atomics/wait/value-not-equal.js
+++ b/test/built-ins/Atomics/wait/value-not-equal.js
@@ -36,6 +36,6 @@ const i32a = new Int32Array(
 
 $262.agent.broadcast(i32a.buffer);
 $262.agent.sleep(100);
-assert.sameValue(getReport(), value.toString());
-assert.sameValue(getReport(), 'not-equal');
+assert.sameValue($262.agent.getReport(), value.toString());
+assert.sameValue($262.agent.getReport(), 'not-equal');
 
diff --git a/test/built-ins/Atomics/wait/wait-index-value-not-equal.js b/test/built-ins/Atomics/wait/wait-index-value-not-equal.js
index 16f4272469..19c6c90a70 100644
--- a/test/built-ins/Atomics/wait/wait-index-value-not-equal.js
+++ b/test/built-ins/Atomics/wait/wait-index-value-not-equal.js
@@ -33,6 +33,6 @@ const i32a = new Int32Array(
 $262.agent.broadcast(i32a.buffer);
 $262.agent.sleep(100);
 
-assert.sameValue(getReport(), 'not-equal');
-assert.sameValue(getReport(), 'not-equal');
+assert.sameValue($262.agent.getReport(), 'not-equal');
+assert.sameValue($262.agent.getReport(), 'not-equal');
 assert.sameValue(Atomics.wake(i32a, 0), 0);
diff --git a/test/built-ins/Atomics/wait/waiterlist-block-indexedposition-wake.js b/test/built-ins/Atomics/wait/waiterlist-block-indexedposition-wake.js
index c25fb386cc..0d3f0acf00 100644
--- a/test/built-ins/Atomics/wait/waiterlist-block-indexedposition-wake.js
+++ b/test/built-ins/Atomics/wait/waiterlist-block-indexedposition-wake.js
@@ -56,8 +56,8 @@ assert.sameValue(Atomics.wake(i32a, 3), 0, 'Atomics.wake(i32a, 3) returns 0');
 
 // Wake index 2, wakes 1
 assert.sameValue(Atomics.wake(i32a, 2), 1, 'Atomics.wake(i32a, 2) returns 1');
-assert.sameValue(getReport(), 'ok', 'getReport() returns "ok"');
+assert.sameValue($262.agent.getReport(), 'ok', '$262.agent.getReport() returns "ok"');
 
 // Wake index 0, wakes 1
 assert.sameValue(Atomics.wake(i32a, 0), 1, 'Atomics.wake(i32a, 0) returns 1');
-assert.sameValue(getReport(), 'ok', 'getReport() returns "ok"');
+assert.sameValue($262.agent.getReport(), 'ok', '$262.agent.getReport() returns "ok"');
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 bbd670bd09..418dd921be 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
@@ -62,17 +62,17 @@ $262.agent.broadcast(i32a.buffer);
 $262.agent.sleep(100);
 
 // Agents may be started in any order...
-const started = [getReport(), getReport(), getReport()];
+const started = [$262.agent.getReport(), $262.agent.getReport(), $262.agent.getReport()];
 
 // Agents must wake in the order they waited
 assert.sameValue(Atomics.wake(i32a, 1, 1), 1);
-assert.sameValue(getReport(), 'ok');
-assert.sameValue(getReport(), started[0]);
+assert.sameValue($262.agent.getReport(), 'ok');
+assert.sameValue($262.agent.getReport(), started[0]);
 
 assert.sameValue(Atomics.wake(i32a, 2, 1), 1);
-assert.sameValue(getReport(), 'ok');
-assert.sameValue(getReport(), started[1]);
+assert.sameValue($262.agent.getReport(), 'ok');
+assert.sameValue($262.agent.getReport(), started[1]);
 
 assert.sameValue(Atomics.wake(i32a, 3, 1), 1);
-assert.sameValue(getReport(), 'ok');
-assert.sameValue(getReport(), started[2]);
+assert.sameValue($262.agent.getReport(), 'ok');
+assert.sameValue($262.agent.getReport(), started[2]);
diff --git a/test/built-ins/Atomics/wait/was-woken-before-timeout.js b/test/built-ins/Atomics/wait/was-woken-before-timeout.js
index cd9c31bdb8..ba5c9ee4dc 100644
--- a/test/built-ins/Atomics/wait/was-woken-before-timeout.js
+++ b/test/built-ins/Atomics/wait/was-woken-before-timeout.js
@@ -45,12 +45,12 @@ $262.agent.sleep(sleeping);
 
 assert.sameValue(Atomics.wake(i32a, 0), 1);
 
-const lapse = getReport();
+const lapse = $262.agent.getReport();
 
 assert(
   sleeping + lapse < timeout,
   `${sleeping + lapse} should be less than ${timeout}`
 );
-assert.sameValue(getReport(), 'ok');
+assert.sameValue($262.agent.getReport(), 'ok');
 
 
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 a6efe40575..8e6568779c 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
@@ -43,7 +43,7 @@ const i64a = new BigInt64Array(
 $262.agent.broadcast(i64a.buffer);
 
 // Wait for agents to be running.
-waitUntil(i64a, RUNNING, BUFFER_SIZE);
+$262.agent.waitUntil(i64a, RUNNING, BUFFER_SIZE);
 
 // 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.
@@ -56,14 +56,14 @@ assert.sameValue(
   'Atomics.wake(i64a, WAIT_INDEX) equals the value of `NUMAGENT` (3)'
 );
 
-var rs = [];
+var reports = [];
 for (var i = 0; i < NUMAGENT + 1; i++) {
-  rs.push(getReport());
+  reports.push($262.agent.getReport());
 }
-rs.sort();
+reports.sort();
 
 for (var i = 0; i < NUMAGENT; i++) {
-  assert.sameValue(rs[i], 'A ok', 'The value of rs[i] is "A ok"');
+  assert.sameValue(reports[i], 'A ok', 'The value of reports[i] is "A ok"');
 }
-assert.sameValue(rs[NUMAGENT], 'B timed-out', 'The value of rs[NUMAGENT] is "B timed-out"');
+assert.sameValue(reports[NUMAGENT], 'B timed-out', 'The value of reports[NUMAGENT] is "B timed-out"');
 
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 8db6dee17e..45ca182734 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
@@ -64,7 +64,7 @@ const i32a = new Int32Array(
 $262.agent.broadcast(i32a.buffer);
 
 // Wait for agents to be running.
-waitUntil(i32a, RUNNING, NUMAGENT);
+$262.agent.waitUntil(i32a, RUNNING, NUMAGENT);
 
 assert.sameValue(
   Atomics.wake(i32a, WAIT_INDEX /*, count missing */),
@@ -72,13 +72,13 @@ assert.sameValue(
   'Atomics.wake(i32a, WAIT_INDEX /*, count missing */) equals the value of `NUMAGENT` (4)'
 );
 
-const sortedReports = [];
+const reports = [];
 for (var i = 0; i < NUMAGENT; i++) {
-  sortedReports.push(getReport());
+  reports.push($262.agent.getReport());
 }
-sortedReports.sort();
+reports.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(reports[0], 'A ok', 'The value of reports[0] is "A ok"');
+assert.sameValue(reports[1], 'B ok', 'The value of reports[1] is "B ok"');
+assert.sameValue(reports[2], 'C ok', 'The value of reports[2] is "C ok"');
+assert.sameValue(reports[3], 'D ok', 'The value of reports[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 cd1e1455a2..74c91ca992 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
@@ -62,7 +62,7 @@ const i32a = new Int32Array(
 $262.agent.broadcast(i32a.buffer);
 
 // Wait for agents to be running.
-waitUntil(i32a, RUNNING, NUMAGENT);
+$262.agent.waitUntil(i32a, RUNNING, NUMAGENT);
 
 assert.sameValue(
   Atomics.wake(i32a, WAIT_INDEX, undefined),
@@ -70,13 +70,13 @@ assert.sameValue(
   'Atomics.wake(i32a, WAIT_INDEX, undefined) equals the value of `NUMAGENT` (4)'
 );
 
-const sortedReports = [];
+const reports = [];
 for (var i = 0; i < NUMAGENT; i++) {
-  sortedReports.push(getReport());
+  reports.push($262.agent.getReport());
 }
-sortedReports.sort();
+reports.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(reports[0], 'A ok', 'The value of reports[0] is "A ok"');
+assert.sameValue(reports[1], 'B ok', 'The value of reports[1] is "B ok"');
+assert.sameValue(reports[2], 'C ok', 'The value of reports[2] is "C ok"');
+assert.sameValue(reports[3], 'D ok', 'The value of reports[3] is "D ok"');
diff --git a/test/built-ins/Atomics/wake/negative-count.js b/test/built-ins/Atomics/wake/negative-count.js
index 8d8803669a..74cf6861c6 100644
--- a/test/built-ins/Atomics/wake/negative-count.js
+++ b/test/built-ins/Atomics/wake/negative-count.js
@@ -24,5 +24,5 @@ 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, -1), 0, 'Atomics.wake(i32a, 0, -1) returns 0'); // Don't actually wake it
-assert.sameValue(getReport(), 'timed-out', 'getReport() returns "timed-out"');
+assert.sameValue($262.agent.getReport(), 'timed-out', '$262.agent.getReport() returns "timed-out"');
 
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 51e9ea8d86..917c48c72b 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
@@ -51,7 +51,7 @@ assert.sameValue(
   1,
   'Atomics.wake(i32a, undefined, 1) returns 1'
 );
-assert.sameValue(getReport(), 'ok', 'getReport() returns "ok"');
+assert.sameValue($262.agent.getReport(), 'ok', '$262.agent.getReport() returns "ok"');
 
 
 // wake again at index 0, default => 0
@@ -60,4 +60,4 @@ assert.sameValue(
   1,
   'Atomics.wake(i32a /*, default values used */) returns 1'
 );
-assert.sameValue(getReport(), 'ok', 'getReport() returns "ok"');
+assert.sameValue($262.agent.getReport(), 'ok', '$262.agent.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 cda0d96a94..56136e4639 100644
--- a/test/built-ins/Atomics/wake/wake-all-on-loc.js
+++ b/test/built-ins/Atomics/wake/wake-all-on-loc.js
@@ -44,7 +44,7 @@ const i32a = new Int32Array(
 $262.agent.broadcast(i32a.buffer);
 
 // Wait for agents to be running.
-waitUntil(i32a, RUNNING, BUFFER_SIZE);
+$262.agent.waitUntil(i32a, RUNNING, BUFFER_SIZE);
 
 // 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.
@@ -57,13 +57,13 @@ assert.sameValue(
   'Atomics.wake(i32a, WAIT_INDEX) equals the value of `NUMAGENT` (3)'
 );
 
-const rs = [];
+const reports = [];
 for (var i = 0; i < NUMAGENT + 1; i++) {
-  rs.push(getReport());
+  reports.push($262.agent.getReport());
 }
-rs.sort();
+reports.sort();
 
 for (var i = 0; i < NUMAGENT; i++) {
-  assert.sameValue(rs[i], "A ok", 'The value of rs[i] is "A ok"');
+  assert.sameValue(reports[i], "A ok", 'The value of reports[i] is "A ok"');
 }
-assert.sameValue(rs[NUMAGENT], "B timed-out", 'The value of rs[NUMAGENT] is "B timed-out"');
+assert.sameValue(reports[NUMAGENT], "B timed-out", 'The value of reports[NUMAGENT] is "B timed-out"');
diff --git a/test/built-ins/Atomics/wake/wake-all.js b/test/built-ins/Atomics/wake/wake-all.js
index 0da7909479..c2f88accfa 100644
--- a/test/built-ins/Atomics/wake/wake-all.js
+++ b/test/built-ins/Atomics/wake/wake-all.js
@@ -43,7 +43,7 @@ const i32a = new Int32Array(
 $262.agent.broadcast(i32a.buffer);
 
 // Wait for agents to be running.
-waitUntil(i32a, RUNNING, NUMAGENT + 1);
+$262.agent.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.
@@ -56,13 +56,13 @@ assert.sameValue(
   'Atomics.wake(i32a, WAIT_INDEX) equals the value of `NUMAGENT` (3)'
 );
 
-const rs = [];
+const reports = [];
 for (var i = 0; i < NUMAGENT + 1; i++) {
-  rs.push(getReport());
+  reports.push($262.agent.getReport());
 }
-rs.sort();
+reports.sort();
 
 for (var i = 0; i < NUMAGENT; i++) {
-  assert.sameValue(rs[i], 'A ok', 'The value of rs[i] is "A ok"');
+  assert.sameValue(reports[i], 'A ok', 'The value of reports[i] is "A ok"');
 }
-assert.sameValue(rs[NUMAGENT], 'B timed-out', 'The value of rs[NUMAGENT] is "B timed-out"');
+assert.sameValue(reports[NUMAGENT], 'B timed-out', 'The value of reports[NUMAGENT] is "B timed-out"');
diff --git a/test/built-ins/Atomics/wake/wake-in-order-one-time.js b/test/built-ins/Atomics/wake/wake-in-order-one-time.js
index 1ab2223be2..59d11b5232 100644
--- a/test/built-ins/Atomics/wake/wake-in-order-one-time.js
+++ b/test/built-ins/Atomics/wake/wake-in-order-one-time.js
@@ -42,7 +42,7 @@ const i32a = new Int32Array(
 $262.agent.broadcast(i32a.buffer);
 
 // Wait for agents to be running.
-waitUntil(i32a, RUNNING, NUMAGENT);
+$262.agent.waitUntil(i32a, RUNNING, NUMAGENT);
 
 // Sleep to allow the agents a fair chance to wait. If we don't,
 // we risk sending the wakeup before agents are sleeping, and we hang.
@@ -50,13 +50,13 @@ $262.agent.sleep(50);
 
 var waiterlist = [];
 assert.sameValue(Atomics.store(i32a, SPIN + 0, 1), 1);
-waiterlist.push(getReport());
+waiterlist.push($262.agent.getReport());
 
 assert.sameValue(Atomics.store(i32a, SPIN + 1, 1), 1);
-waiterlist.push(getReport());
+waiterlist.push($262.agent.getReport());
 
 assert.sameValue(Atomics.store(i32a, SPIN + 2, 1), 1);
-waiterlist.push(getReport());
+waiterlist.push($262.agent.getReport());
 
 var notified = [];
 assert.sameValue(
@@ -64,21 +64,21 @@ assert.sameValue(
   1,
   `Notification #0: on WAIT_INDEX (0) of i32a must notify 1 waiter.`
 );
-notified.push(getReport());
+notified.push($262.agent.getReport());
 
 assert.sameValue(
   Atomics.wake(i32a, WAIT_INDEX, 1),
   1,
   `Notification #1: on WAIT_INDEX (0) of i32a must notify 1 waiter.`
 );
-notified.push(getReport());
+notified.push($262.agent.getReport());
 
 assert.sameValue(
   Atomics.wake(i32a, WAIT_INDEX, 1),
   1,
   `Notification #2: on WAIT_INDEX (0) of i32a must notify 1 waiter.`
 );
-notified.push(getReport());
+notified.push($262.agent.getReport());
 
 assert.sameValue(
   notified.join(''),
diff --git a/test/built-ins/Atomics/wake/wake-in-order.js b/test/built-ins/Atomics/wake/wake-in-order.js
index 25df57db54..3a2700ff35 100644
--- a/test/built-ins/Atomics/wake/wake-in-order.js
+++ b/test/built-ins/Atomics/wake/wake-in-order.js
@@ -43,7 +43,7 @@ for (var attempt = 0; attempt < 10; attempt++) {
   $262.agent.broadcast(i32a.buffer);
 
   // Wait for agents to be running.
-  waitUntil(i32a, RUNNING, NUMAGENT);
+  $262.agent.waitUntil(i32a, RUNNING, NUMAGENT);
 
   // Sleep to allow the agents a fair chance to wait. If we don't,
   // we risk sending the wakeup before agents are sleeping, and we hang.
@@ -51,13 +51,13 @@ for (var attempt = 0; attempt < 10; attempt++) {
 
   var waiterlist = [];
   assert.sameValue(Atomics.store(i32a, SPIN + 0, 1), 1);
-  waiterlist.push(getReport());
+  waiterlist.push($262.agent.getReport());
 
   assert.sameValue(Atomics.store(i32a, SPIN + 1, 1), 1);
-  waiterlist.push(getReport());
+  waiterlist.push($262.agent.getReport());
 
   assert.sameValue(Atomics.store(i32a, SPIN + 2, 1), 1);
-  waiterlist.push(getReport());
+  waiterlist.push($262.agent.getReport());
 
   var notified = [];
   assert.sameValue(
@@ -65,21 +65,21 @@ for (var attempt = 0; attempt < 10; attempt++) {
     1,
     `Attempt #${attempt}, Notification #0: on WAIT_INDEX (0) of i32a must notify 1 waiter.`
   );
-  notified.push(getReport());
+  notified.push($262.agent.getReport());
 
   assert.sameValue(
     Atomics.wake(i32a, WAIT_INDEX, 1),
     1,
     `Attempt #${attempt}, Notification #1: on WAIT_INDEX (0) of i32a must notify 1 waiter.`
   );
-  notified.push(getReport());
+  notified.push($262.agent.getReport());
 
   assert.sameValue(
     Atomics.wake(i32a, WAIT_INDEX, 1),
     1,
     `Attempt #${attempt}, Notification #2: on WAIT_INDEX (0) of i32a must notify 1 waiter.`
   );
-  notified.push(getReport());
+  notified.push($262.agent.getReport());
 
   assert.sameValue(
     notified.join(''),
diff --git a/test/built-ins/Atomics/wake/wake-nan.js b/test/built-ins/Atomics/wake/wake-nan.js
index 972853e1ef..e4a0471565 100644
--- a/test/built-ins/Atomics/wake/wake-nan.js
+++ b/test/built-ins/Atomics/wake/wake-nan.js
@@ -27,4 +27,4 @@ assert.sameValue(Atomics.wake(i32a, 0, NaN), 0, 'Atomics.wake(i32a, 0, NaN) retu
 
 // Sleep past the timeout
 $262.agent.sleep(300);
-assert.sameValue(getReport(), 'timed-out', 'getReport() returns "timed-out"');
+assert.sameValue($262.agent.getReport(), 'timed-out', '$262.agent.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 a4fba02930..bbf3507bfb 100644
--- a/test/built-ins/Atomics/wake/wake-one.js
+++ b/test/built-ins/Atomics/wake/wake-one.js
@@ -34,7 +34,7 @@ const i32a = new Int32Array(
 $262.agent.broadcast(i32a.buffer);
 
 // Wait for agents to be running.
-waitUntil(i32a, RUNNING, NUMAGENT);
+$262.agent.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.
@@ -50,15 +50,15 @@ assert.sameValue(
 );
 
 // Collect and check results
-const rs = [];
+const reports = [];
 for (var i = 0; i < NUMAGENT; i++) {
-  rs.push(getReport());
+  reports.push($262.agent.getReport());
 }
-rs.sort();
+reports.sort();
 
 for (var i = 0; i < WAKECOUNT; i++) {
-  assert.sameValue(rs[i], 'ok', 'The value of rs[i] is "ok"');
+  assert.sameValue(reports[i], 'ok', 'The value of reports[i] is "ok"');
 }
 for (var i = WAKECOUNT; i < NUMAGENT; i++) {
-  assert.sameValue(rs[i], 'timed-out', 'The value of rs[i] is "timed-out"');
+  assert.sameValue(reports[i], 'timed-out', 'The value of reports[i] is "timed-out"');
 }
diff --git a/test/built-ins/Atomics/wake/wake-rewake-noop.js b/test/built-ins/Atomics/wake/wake-rewake-noop.js
index 456ad7a64d..086b2ea736 100644
--- a/test/built-ins/Atomics/wake/wake-rewake-noop.js
+++ b/test/built-ins/Atomics/wake/wake-rewake-noop.js
@@ -24,11 +24,11 @@ const i32a = new Int32Array(
 
 $262.agent.broadcast(i32a.buffer);
 
-waitUntil(i32a, 1, 1);
+$262.agent.waitUntil(i32a, 1, 1);
 
 assert.sameValue(Atomics.wake(i32a, 0, 1), 1, 'Atomics.wake(i32a, 0, 1) returns 1');
 
-assert.sameValue(getReport(), 'ok', 'The value of `report` is "ok"');
+assert.sameValue($262.agent.getReport(), 'ok', 'The value of `report` is "ok"');
 
 // Already awake, this should be a noop
 assert.sameValue(Atomics.wake(i32a, 0, 1), 0, 'Atomics.wake(i32a, 0, 1) returns 0');
diff --git a/test/built-ins/Atomics/wake/wake-two.js b/test/built-ins/Atomics/wake/wake-two.js
index 5cc398816f..7a05ba188d 100644
--- a/test/built-ins/Atomics/wake/wake-two.js
+++ b/test/built-ins/Atomics/wake/wake-two.js
@@ -35,7 +35,7 @@ const i32a = new Int32Array(
 $262.agent.broadcast(i32a.buffer);
 
 // Wait for agents to be running.
-waitUntil(i32a, RUNNING, NUMAGENT);
+$262.agent.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.
@@ -54,16 +54,16 @@ assert.sameValue(
 $262.agent.sleep(300);
 
 // Collect and check results
-var rs = [];
+var reports = [];
 for (var i = 0; i < NUMAGENT; i++) {
-  rs.push(getReport());
+  reports.push($262.agent.getReport());
 }
-rs.sort();
+reports.sort();
 
 for (var i = 0; i < WAKECOUNT; i++) {
-  assert.sameValue(rs[i], 'ok', 'The value of rs[i] is "ok"');
+  assert.sameValue(reports[i], 'ok', 'The value of reports[i] is "ok"');
 }
 for (var i = WAKECOUNT; i < NUMAGENT; i++) {
-  assert.sameValue(rs[i], 'timed-out', 'The value of rs[i] is "timed-out"');
+  assert.sameValue(reports[i], 'timed-out', 'The value of reports[i] is "timed-out"');
 }
 
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 abd003e89f..2c7eb37580 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
@@ -9,11 +9,13 @@ includes: [atomicsHelper.js]
 features: [Atomics, SharedArrayBuffer, TypedArray]
 ---*/
 
+const RUNNING = 1;
 
 $262.agent.start(`
   $262.agent.receiveBroadcast(function(sab) {
     const i32a = new Int32Array(sab);
-    Atomics.add(i32a, 1, 1);
+    Atomics.add(i32a, ${RUNNING}, 1);
+    // THIS WILL NEVER WAIT.
     $262.agent.leaving();
   });
 `);
@@ -23,8 +25,7 @@ const i32a = new Int32Array(
 );
 
 $262.agent.broadcast(i32a.buffer);
-
-waitUntil(i32a, 1, 1);
+$262.agent.waitUntil(i32a, RUNNING, 1);
 
 // There are ZERO agents waiting to wake...
 assert.sameValue(Atomics.wake(i32a, 0, 1), 0, 'Atomics.wake(i32a, 0, 1) returns 0');
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 4ce6cfe3f7..3182f965e6 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
@@ -4,17 +4,18 @@
 /*---
 esid: sec-atomics.wake
 description: >
-  Test that Atomics.wake wakes zero waiters if there are no agents that match
-  its arguments waiting.
+  Test that Atomics.wake wakes zero waiters if there are no waiters
+  at the index specified.
 includes: [atomicsHelper.js]
 features: [Atomics, SharedArrayBuffer, TypedArray]
 ---*/
 
+const RUNNING = 1;
 
 $262.agent.start(`
   $262.agent.receiveBroadcast(function(sab) {
     const i32a = new Int32Array(sab);
-    Atomics.add(i32a, 1, 1);
+    Atomics.add(i32a, ${RUNNING}, 1);
     $262.agent.leaving();
   });
 `);
@@ -24,8 +25,7 @@ const i32a = new Int32Array(
 );
 
 $262.agent.broadcast(i32a.buffer);
+$262.agent.waitUntil(i32a, RUNNING, 1);
 
-waitUntil(i32a, 1, 1);
-
-// There are ZERO matching agents...
+// There are ZERO matching agents waiting on index 1
 assert.sameValue(Atomics.wake(i32a, 1, 1), 0, 'Atomics.wake(i32a, 1, 1) returns 0');
diff --git a/test/built-ins/Atomics/wake/wake-zero.js b/test/built-ins/Atomics/wake/wake-zero.js
index b9725e3a00..df226e98ed 100644
--- a/test/built-ins/Atomics/wake/wake-zero.js
+++ b/test/built-ins/Atomics/wake/wake-zero.js
@@ -34,7 +34,7 @@ const i32a = new Int32Array(
 $262.agent.broadcast(i32a.buffer);
 
 // Wait for agents to be running.
-waitUntil(i32a, RUNNING, NUMAGENT);
+$262.agent.waitUntil(i32a, RUNNING, NUMAGENT);
 
 // There's a slight risk we'll fail to wake the desired count, if the preceding
 // sleep() took much longer than anticipated and workers have started timing
@@ -49,5 +49,5 @@ assert.sameValue(
 $262.agent.sleep(300);
 
 for (var i = 0; i < NUMAGENT; i++) {
-  assert.sameValue(getReport(), 'timed-out', `Report #${i}: must equal "timed-out"`);
+  assert.sameValue($262.agent.getReport(), 'timed-out', `Report #${i}: must equal "timed-out"`);
 }
-- 
GitLab