diff --git a/INTERPRETING.md b/INTERPRETING.md
index f75b7ccf29681e006dc5d2c2c3e077eae8e5c28a..99bfcc1c4737e60d60ac20fb8208fe9255d5d80d 100644
--- a/INTERPRETING.md
+++ b/INTERPRETING.md
@@ -66,24 +66,24 @@ properties of the global scope prior to test execution.
   - **`global`** - a reference to the global object on which `$262` was initially defined
   - **`IsHTMLDDA`** - (present only in implementations that can provide it) an
     object that 1) has an [[IsHTMLDDA]] internal slot, and 2) when called with
-    no arguments or with the single argument `""` returns `null`.  Use this
+    no arguments or with the single argument `""` returns `null`. Use this
     property to test that ECMAScript algorithms aren't mis-implemented to treat
     `document.all` as being `undefined` or of type Undefined (instead of
-    Object).  (The peculiar second requirement permits testing algorithms when
+    Object). (The peculiar second requirement permits testing algorithms when
     they also call `document.all` with such arguments, so that testing for
-    correct behavior requires knowing how the call behaves.  This is rarely
+    correct behavior requires knowing how the call behaves. This is rarely
     necessary.)  Tests using this function must be tagged with the `IsHTMLDDA`
     feature so that only hosts supporting this property will run them.
   - **`agent`** - an ordinary object with the following properties:
     - **`start`** - a function that takes a script source string and runs
-      the script in a concurrent agent.  Will block until that agent is
-      running.  The agent has no representation.  The agent script will be
+      the script in a concurrent agent. Will block until that agent is
+      running. The agent has no representation. The agent script will be
       run in an environment that has an object `$262` with a property `agent`
       with the following properties:
       - **`receiveBroadcast`** - a function that takes a function and
         calls the function when it has received a broadcast from the parent,
         passing it the broadcast as two arguments, a SharedArrayBuffer and
-        an Int32.  This function may return before a broadcast is received
+        an Int32 or BigInt. This function may return before a broadcast is received
         (eg to return to an event loop to await a message) and no code should
         follow the call to this function.
       - **`report`** - a function that accepts a single "message" argument,
@@ -93,10 +93,11 @@ properties of the global scope prior to test execution.
       - **`leaving`** - a function that signals that the agent is done and
         may be terminated (if possible).
       - **`monotonicNow`** - a function that returns a value that conforms to [`DOMHighResTimeStamp`][] and is produced in such a way that its semantics conform to **[Monotonic Clock][]**.
-    - **`broadcast`** - a function that takes a SharedArrayBuffer and an Int32
-        and broadcasts the two values to all concurrent agents.  The function
-        blocks until all agents have retrieved the message.  Note, this assumes
-        that all agents that were started are still running.
+    - **`broadcast`** - a function that takes a SharedArrayBuffer and an 
+        Int32 or BigInt and broadcasts the two values to all concurrent 
+        agents. The function blocks until all agents have retrieved the 
+        message. Note, this assumes that all agents that were started are 
+        still running.
     - **`getReport`** - a function that reads an incoming string from any agent,
       and returns it if it exists, or returns `null` otherwise.
     - **`sleep`** - a function that takes a millisecond argument and
diff --git a/harness/atomicsHelper.js b/harness/atomicsHelper.js
index aa308a3387a2f6cf61d555dd1aac6f65cb43b92d..135c16eb671523d3c30b328eaf5bb0d6d942b0cf 100644
--- a/harness/atomicsHelper.js
+++ b/harness/atomicsHelper.js
@@ -28,6 +28,47 @@ description: >
     return r;
   };
 }
+
+/**
+ *
+ * Share a given Int32Array or BigInt64Array to all running agents. Ensure that the
+ * provided TypedArray is a "shared typed array".
+ *
+ * NOTE: Migrating all tests to this API is necessary to prevent tests from hanging
+ * indefinitely when a SAB is sent to a worker but the code in the worker attempts to
+ * create a non-sharable TypedArray (something that is not Int32Array or BigInt64Array).
+ * When that scenario occurs, an exception is thrown and the agent worker can no
+ * longer communicate with any other threads that control the SAB. If the main
+ * thread happens to be spinning in the $262.agent.waitUntil() while loop, it will never
+ * meet its termination condition and the test will hang indefinitely.
+ *
+ * Because we've defined $262.agent.broadcast(SAB) in
+ * https://github.com/tc39/test262/blob/master/INTERPRETING.md, there are host implementations
+ * that assume compatibility, which must be maintained.
+ *
+ *
+ * $262.agent.safeBroadcast(TA) should not be included in
+ * https://github.com/tc39/test262/blob/master/INTERPRETING.md
+ *
+ *
+ * @param {(Int32Array|BigInt64Array)} typedArray An Int32Array or BigInt64Array with a SharedArrayBuffer
+ */
+$262.agent.safeBroadcast = function(typedArray) {
+  let Constructor = Object.getPrototypeOf(typedArray).constructor;
+  let temp = new Constructor(
+    new SharedArrayBuffer(Constructor.BYTES_PER_ELEMENT)
+  );
+  try {
+    // This will never actually wait, but that's fine because we only
+    // want to ensure that this typedArray CAN be waited on and is shareable.
+    Atomics.wait(temp, 0, Constructor === Int32Array ? 1 : BigInt(1));
+  } catch (error) {
+    $ERROR(`${Constructor.name} cannot be used as a shared typed array. (${error})`);
+  }
+
+  $262.agent.broadcast(typedArray.buffer);
+};
+
 /**
  * With a given Int32Array or BigInt64Array, wait until the expected number of agents have
  * reported themselves by calling:
@@ -39,6 +80,7 @@ description: >
  * @param {number} expected The number of agents that are expected to report as active.
  */
 $262.agent.waitUntil = function(typedArray, index, expected) {
+
   var agents = 0;
   while ((agents = Atomics.load(typedArray, index)) !== expected) {
     /* nothing */
@@ -76,7 +118,7 @@ $262.agent.waitUntil = function(typedArray, index, expected) {
  *       $262.agent.leaving();
  *     });
  *   `);
- *   $262.agent.broadcast(i32a.buffer);
+ *   $262.agent.safeBroadcast(i32a.buffer);
  *
  *   // Wait until the agent was started and then try to yield control to increase
  *   // the likelihood the agent has called `Atomics.wait` and is now waiting.
@@ -106,7 +148,7 @@ $262.agent.waitUntil = function(typedArray, index, expected) {
  *       });
  *     `);
  *   }
- *   $262.agent.broadcast(i32a.buffer);
+ *   $262.agent.safeBroadcast(i32a.buffer);
  *
  *   // Wait until the agents were started and then try to yield control to increase
  *   // the likelihood the agents have called `Atomics.wait` and are now waiting.
@@ -151,7 +193,7 @@ $262.agent.waitUntil = function(typedArray, index, expected) {
  *       });
  *     `);
  *   }
- *   $262.agent.broadcast(i32a.buffer);
+ *   $262.agent.safeBroadcast(i32a.buffer);
  *
  *   // Wait until the agents were started and then try to yield control to increase
  *   // the likelihood the agents have called `Atomics.wait` and are now waiting.
@@ -204,7 +246,7 @@ $262.agent.timeouts = {
  *       $262.agent.leaving();
  *     });
  *   `);
- *   $262.agent.broadcast(i32a.buffer);
+ *   $262.agent.safeBroadcast(i32a.buffer);
  *
  *   // Wait until agent was started and then try to yield control.
  *   $262.agent.waitUntil(i32a, RUNNING, 1);
diff --git a/test/built-ins/Atomics/notify/bigint/notify-all-on-loc.js b/test/built-ins/Atomics/notify/bigint/notify-all-on-loc.js
index 0675b6e188319963396555dee18298ce63591771..937584979979dfb1927b192d6e633de4479cc016 100644
--- a/test/built-ins/Atomics/notify/bigint/notify-all-on-loc.js
+++ b/test/built-ins/Atomics/notify/bigint/notify-all-on-loc.js
@@ -57,7 +57,7 @@ const i64a = new BigInt64Array(
   new SharedArrayBuffer(BigInt64Array.BYTES_PER_ELEMENT * BUFFER_SIZE)
 );
 
-$262.agent.broadcast(i64a.buffer);
+$262.agent.safeBroadcast(i64a);
 
 // Wait for agents to be running.
 $262.agent.waitUntil(i64a, RUNNING, BigInt(NUMAGENT + 1));
diff --git a/test/built-ins/Atomics/notify/count-defaults-to-infinity-missing.js b/test/built-ins/Atomics/notify/count-defaults-to-infinity-missing.js
index 3439eb2dc4a11063d8aada0f7f36bb11888ff533..e1124943ea398b7bfd0484457244eb5c2be87fd5 100644
--- a/test/built-ins/Atomics/notify/count-defaults-to-infinity-missing.js
+++ b/test/built-ins/Atomics/notify/count-defaults-to-infinity-missing.js
@@ -43,7 +43,7 @@ const i32a = new Int32Array(
   new SharedArrayBuffer(Int32Array.BYTES_PER_ELEMENT * BUFFER_SIZE)
 );
 
-$262.agent.broadcast(i32a.buffer);
+$262.agent.safeBroadcast(i32a);
 $262.agent.waitUntil(i32a, RUNNING, NUMAGENT);
 
 // An agent may have been interrupted between reporting its initial report
diff --git a/test/built-ins/Atomics/notify/count-defaults-to-infinity-undefined.js b/test/built-ins/Atomics/notify/count-defaults-to-infinity-undefined.js
index 71db309b73954cd5827fed5a667c72e2b6f05dd8..ac4069dfec1ea242965f2727e87024b62751d83c 100644
--- a/test/built-ins/Atomics/notify/count-defaults-to-infinity-undefined.js
+++ b/test/built-ins/Atomics/notify/count-defaults-to-infinity-undefined.js
@@ -41,7 +41,7 @@ const i32a = new Int32Array(
   new SharedArrayBuffer(Int32Array.BYTES_PER_ELEMENT * BUFFER_SIZE)
 );
 
-$262.agent.broadcast(i32a.buffer);
+$262.agent.safeBroadcast(i32a);
 $262.agent.waitUntil(i32a, RUNNING, NUMAGENT);
 
 // An agent may have been interrupted between reporting its initial report
diff --git a/test/built-ins/Atomics/notify/negative-count.js b/test/built-ins/Atomics/notify/negative-count.js
index 8cc7f0b036c8e41565b8e9a41ec051b7b30cf3d4..bba1edb96293344daae4b65015af3b05d3ccc16f 100644
--- a/test/built-ins/Atomics/notify/negative-count.js
+++ b/test/built-ins/Atomics/notify/negative-count.js
@@ -26,7 +26,7 @@ const i32a = new Int32Array(
   new SharedArrayBuffer(Int32Array.BYTES_PER_ELEMENT * 4)
 );
 
-$262.agent.broadcast(i32a.buffer);
+$262.agent.safeBroadcast(i32a);
 $262.agent.waitUntil(i32a, RUNNING, 1);
 
 // Try to yield control to ensure the agent actually started to wait.
diff --git a/test/built-ins/Atomics/notify/notify-all-on-loc.js b/test/built-ins/Atomics/notify/notify-all-on-loc.js
index c2cb5e5c6620e2053ca9e9d18d53b3ced162e7d7..0dee710d7fe4aebe3b871fa17331b5a3f79710df 100644
--- a/test/built-ins/Atomics/notify/notify-all-on-loc.js
+++ b/test/built-ins/Atomics/notify/notify-all-on-loc.js
@@ -57,7 +57,7 @@ const i32a = new Int32Array(
   new SharedArrayBuffer(Int32Array.BYTES_PER_ELEMENT * BUFFER_SIZE)
 );
 
-$262.agent.broadcast(i32a.buffer);
+$262.agent.safeBroadcast(i32a);
 
 // Wait for agents to be running.
 $262.agent.waitUntil(i32a, RUNNING, NUMAGENT + 1);
diff --git a/test/built-ins/Atomics/notify/notify-all.js b/test/built-ins/Atomics/notify/notify-all.js
index 02fa23edf242aead5349a1c931af9ffa0ca728d4..cb7f13fa713cf38d0b03aed262d49ab03e59cef3 100644
--- a/test/built-ins/Atomics/notify/notify-all.js
+++ b/test/built-ins/Atomics/notify/notify-all.js
@@ -30,7 +30,7 @@ const i32a = new Int32Array(
   new SharedArrayBuffer(Int32Array.BYTES_PER_ELEMENT * BUFFER_SIZE)
 );
 
-$262.agent.broadcast(i32a.buffer);
+$262.agent.safeBroadcast(i32a);
 
 // Wait for agents to be running.
 $262.agent.waitUntil(i32a, RUNNING, NUMAGENT);
diff --git a/test/built-ins/Atomics/notify/notify-in-order-one-time.js b/test/built-ins/Atomics/notify/notify-in-order-one-time.js
index ed968417eece88d3b7888a0cbe73542badd67d65..99b933052396f35ca907564b3da308db3a048014 100644
--- a/test/built-ins/Atomics/notify/notify-in-order-one-time.js
+++ b/test/built-ins/Atomics/notify/notify-in-order-one-time.js
@@ -42,7 +42,7 @@ const i32a = new Int32Array(
   new SharedArrayBuffer(Int32Array.BYTES_PER_ELEMENT * BUFFER_SIZE)
 );
 
-$262.agent.broadcast(i32a.buffer);
+$262.agent.safeBroadcast(i32a);
 
 // Wait for agents to be running.
 $262.agent.waitUntil(i32a, RUNNING, NUMAGENT);
diff --git a/test/built-ins/Atomics/notify/notify-in-order.js b/test/built-ins/Atomics/notify/notify-in-order.js
index ed968417eece88d3b7888a0cbe73542badd67d65..99b933052396f35ca907564b3da308db3a048014 100644
--- a/test/built-ins/Atomics/notify/notify-in-order.js
+++ b/test/built-ins/Atomics/notify/notify-in-order.js
@@ -42,7 +42,7 @@ const i32a = new Int32Array(
   new SharedArrayBuffer(Int32Array.BYTES_PER_ELEMENT * BUFFER_SIZE)
 );
 
-$262.agent.broadcast(i32a.buffer);
+$262.agent.safeBroadcast(i32a);
 
 // Wait for agents to be running.
 $262.agent.waitUntil(i32a, RUNNING, NUMAGENT);
diff --git a/test/built-ins/Atomics/notify/notify-nan.js b/test/built-ins/Atomics/notify/notify-nan.js
index 8f804455851aa1e2b1766f291434c69f9cec37d4..242c434e33fcbeed6904a05679b3b694404441f8 100644
--- a/test/built-ins/Atomics/notify/notify-nan.js
+++ b/test/built-ins/Atomics/notify/notify-nan.js
@@ -26,7 +26,7 @@ const i32a = new Int32Array(
   new SharedArrayBuffer(Int32Array.BYTES_PER_ELEMENT * 4)
 );
 
-$262.agent.broadcast(i32a.buffer);
+$262.agent.safeBroadcast(i32a);
 $262.agent.waitUntil(i32a, RUNNING, 1);
 
 // Try to yield control to ensure the agent actually started to wait.
diff --git a/test/built-ins/Atomics/notify/notify-one.js b/test/built-ins/Atomics/notify/notify-one.js
index ffd29d02147785cad7d3109ace595b861acc893d..08fcda3bfc455ae30c56a5914740e26b3cffb9c0 100644
--- a/test/built-ins/Atomics/notify/notify-one.js
+++ b/test/built-ins/Atomics/notify/notify-one.js
@@ -34,7 +34,7 @@ const i32a = new Int32Array(
   new SharedArrayBuffer(Int32Array.BYTES_PER_ELEMENT * BUFFER_SIZE)
 );
 
-$262.agent.broadcast(i32a.buffer);
+$262.agent.safeBroadcast(i32a);
 
 // Wait for agents to be running.
 $262.agent.waitUntil(i32a, RUNNING, NUMAGENT);
diff --git a/test/built-ins/Atomics/notify/notify-renotify-noop.js b/test/built-ins/Atomics/notify/notify-renotify-noop.js
index 3812556880c2ee6aa931074827ea36494dcff7e8..c47ff8fca5aa7c9044b3ec3778bfe2bb0cb32216 100644
--- a/test/built-ins/Atomics/notify/notify-renotify-noop.js
+++ b/test/built-ins/Atomics/notify/notify-renotify-noop.js
@@ -26,7 +26,7 @@ const i32a = new Int32Array(
   new SharedArrayBuffer(Int32Array.BYTES_PER_ELEMENT * 2)
 );
 
-$262.agent.broadcast(i32a.buffer);
+$262.agent.safeBroadcast(i32a);
 
 $262.agent.waitUntil(i32a, RUNNING, 1);
 
diff --git a/test/built-ins/Atomics/notify/notify-two.js b/test/built-ins/Atomics/notify/notify-two.js
index 2a8d6fb8d1c87bc09419cf5b8d04d1186dcd53ea..c678bc6bdc2564939e4f82a5a23f1de9beb5cf8a 100644
--- a/test/built-ins/Atomics/notify/notify-two.js
+++ b/test/built-ins/Atomics/notify/notify-two.js
@@ -34,7 +34,7 @@ const i32a = new Int32Array(
   new SharedArrayBuffer(Int32Array.BYTES_PER_ELEMENT * BUFFER_SIZE)
 );
 
-$262.agent.broadcast(i32a.buffer);
+$262.agent.safeBroadcast(i32a);
 
 // Wait for agents to be running.
 $262.agent.waitUntil(i32a, RUNNING, NUMAGENT);
diff --git a/test/built-ins/Atomics/notify/notify-with-no-agents-waiting.js b/test/built-ins/Atomics/notify/notify-with-no-agents-waiting.js
index 747e01766b9dc79a60fbd3cbe01d1178ea11c725..27a9ee1e324d3c511643363c59da38786fb7c4a2 100644
--- a/test/built-ins/Atomics/notify/notify-with-no-agents-waiting.js
+++ b/test/built-ins/Atomics/notify/notify-with-no-agents-waiting.js
@@ -24,7 +24,7 @@ const i32a = new Int32Array(
   new SharedArrayBuffer(Int32Array.BYTES_PER_ELEMENT * 2)
 );
 
-$262.agent.broadcast(i32a.buffer);
+$262.agent.safeBroadcast(i32a);
 $262.agent.waitUntil(i32a, RUNNING, 1);
 
 // There are ZERO agents waiting to notify...
diff --git a/test/built-ins/Atomics/notify/notify-with-no-matching-agents-waiting.js b/test/built-ins/Atomics/notify/notify-with-no-matching-agents-waiting.js
index b4a247e493241284c18380f096fd204afe7f6071..3eade75b9058a25403d4984430ba727ad65630d5 100644
--- a/test/built-ins/Atomics/notify/notify-with-no-matching-agents-waiting.js
+++ b/test/built-ins/Atomics/notify/notify-with-no-matching-agents-waiting.js
@@ -24,7 +24,7 @@ const i32a = new Int32Array(
   new SharedArrayBuffer(Int32Array.BYTES_PER_ELEMENT * 2)
 );
 
-$262.agent.broadcast(i32a.buffer);
+$262.agent.safeBroadcast(i32a);
 $262.agent.waitUntil(i32a, RUNNING, 1);
 
 // There are ZERO matching agents waiting on index 1
diff --git a/test/built-ins/Atomics/notify/notify-zero.js b/test/built-ins/Atomics/notify/notify-zero.js
index 615cb6b91c1b8e98f5bf38e1c02f8bbb18db3018..9a7688b5514adecc678ce27c253cd609a73704eb 100644
--- a/test/built-ins/Atomics/notify/notify-zero.js
+++ b/test/built-ins/Atomics/notify/notify-zero.js
@@ -34,7 +34,7 @@ const i32a = new Int32Array(
   new SharedArrayBuffer(Int32Array.BYTES_PER_ELEMENT * BUFFER_SIZE)
 );
 
-$262.agent.broadcast(i32a.buffer);
+$262.agent.safeBroadcast(i32a);
 
 // Wait for agents to be running.
 $262.agent.waitUntil(i32a, RUNNING, NUMAGENT);
diff --git a/test/built-ins/Atomics/notify/undefined-index-defaults-to-zero.js b/test/built-ins/Atomics/notify/undefined-index-defaults-to-zero.js
index 59119a50dff52039189e7bdbd068c2ec1ad27a76..b59844e22e72e1e49731f1ccf1f5eaaa44c4d9bb 100644
--- a/test/built-ins/Atomics/notify/undefined-index-defaults-to-zero.js
+++ b/test/built-ins/Atomics/notify/undefined-index-defaults-to-zero.js
@@ -50,7 +50,7 @@ const i32a = new Int32Array(
   new SharedArrayBuffer(Int32Array.BYTES_PER_ELEMENT * 4)
 );
 
-$262.agent.broadcast(i32a.buffer);
+$262.agent.safeBroadcast(i32a);
 
 // Wait until both agents started.
 $262.agent.waitUntil(i32a, RUNNING, NUMAGENT);
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 e7987f30b99a90df9bd517b6f484c9e0d27024df..ca525a3f16c80cb3a96fabaa96abafc94ceb1013 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
@@ -16,6 +16,10 @@ includes: [atomicsHelper.js]
 features: [Atomics, BigInt, SharedArrayBuffer, TypedArray]
 ---*/
 
+const i64a = new BigInt64Array(
+  new SharedArrayBuffer(BigInt64Array.BYTES_PER_ELEMENT * 4)
+);
+
 const RUNNING = 1;
 
 $262.agent.start(`
@@ -46,11 +50,7 @@ $262.agent.start(`
   });
 `);
 
-const i64a = new BigInt64Array(
-  new SharedArrayBuffer(BigInt64Array.BYTES_PER_ELEMENT * 4)
-);
-
-$262.agent.broadcast(i64a.buffer);
+$262.agent.safeBroadcast(i64a);
 $262.agent.waitUntil(i64a, RUNNING, 1n);
 
 // Try to yield control to ensure the agent actually started to wait.
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 87ac7a679f55a4307b3dbe354eb74aac503307d3..bc128b612f86bc39327a0736ff9f0f091338de87 100644
--- a/test/built-ins/Atomics/wait/bigint/nan-for-timeout.js
+++ b/test/built-ins/Atomics/wait/bigint/nan-for-timeout.js
@@ -33,7 +33,7 @@ const i64a = new BigInt64Array(
   new SharedArrayBuffer(BigInt64Array.BYTES_PER_ELEMENT * 4)
 );
 
-$262.agent.broadcast(i64a.buffer);
+$262.agent.safeBroadcast(i64a);
 $262.agent.waitUntil(i64a, RUNNING, 1n);
 
 // Try to yield control to ensure the agent actually started to wait.
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 15085d371b93486d6613652554de05a5d1c1871a..a0799b212040b7e38ab72ca17ea28dccaf06a4e7 100644
--- a/test/built-ins/Atomics/wait/bigint/negative-timeout-agent.js
+++ b/test/built-ins/Atomics/wait/bigint/negative-timeout-agent.js
@@ -25,7 +25,7 @@ const i64a = new BigInt64Array(
   new SharedArrayBuffer(BigInt64Array.BYTES_PER_ELEMENT * 4)
 );
 
-$262.agent.broadcast(i64a.buffer);
+$262.agent.safeBroadcast(i64a);
 $262.agent.waitUntil(i64a, RUNNING, 1n);
 
 // Try to yield control to ensure the agent actually started to wait.
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 df6942dc6ef056f9c0e61f2921dac4c575adc7f9..04491cf8fb83a5eb7b7efb03f62b46b33d005bf8 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
@@ -38,7 +38,7 @@ $262.agent.start(`
   });
 `);
 
-$262.agent.broadcast(i64a.buffer);
+$262.agent.safeBroadcast(i64a);
 $262.agent.waitUntil(i64a, RUNNING, 1n);
 
 // Try to yield control to ensure the agent actually started to wait.
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 a8e16f1a01db8398ca3da74f96b3296f25e0b378..2128ae5372e2059b5e8c5b8be57b0ab128e18a52 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
@@ -31,7 +31,7 @@ $262.agent.start(`
   });
 `);
 
-$262.agent.broadcast(i64a.buffer);
+$262.agent.safeBroadcast(i64a);
 $262.agent.waitUntil(i64a, RUNNING, 1n);
 
 // Try to yield control to ensure the agent actually started to wait.
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 80358b7bbe1a4f91e7166d57fe1ca93d16444031..3e25e5db56f4afbc58458782ed282fc9ce7a2233 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
@@ -31,7 +31,7 @@ $262.agent.start(`
   });
 `);
 
-$262.agent.broadcast(i64a.buffer);
+$262.agent.safeBroadcast(i64a);
 $262.agent.waitUntil(i64a, RUNNING, 1n);
 
 // Try to yield control to ensure the agent actually started to wait.
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 91b69dc05a04e889428005f5c28daa8b520fb9cb..f44a14969f4780d37dbebd4e163317b62020c65a 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
@@ -31,7 +31,7 @@ $262.agent.start(`
   });
 `);
 
-$262.agent.broadcast(i64a.buffer);
+$262.agent.safeBroadcast(i64a);
 $262.agent.waitUntil(i64a, RUNNING, 1n);
 
 // Try to yield control to ensure the agent actually started to wait.
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 fc1404cde085aa0468eaced604995c8301d241bf..b359f25f51d4deed15c97da66d3ee3fd9f468b51 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
@@ -31,7 +31,7 @@ $262.agent.start(`
   });
 `);
 
-$262.agent.broadcast(i64a.buffer);
+$262.agent.safeBroadcast(i64a);
 $262.agent.waitUntil(i64a, RUNNING, 1n);
 
 // Try to yield control to ensure the agent actually started to wait.
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 3c705fbce10136f3c8f73632dae6d75f1459464b..f0c384b518c3e314397492000e20585470d9fdc4 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
@@ -31,7 +31,7 @@ $262.agent.start(`
   });
 `);
 
-$262.agent.broadcast(i64a.buffer);
+$262.agent.safeBroadcast(i64a);
 $262.agent.waitUntil(i64a, RUNNING, 1n);
 
 // Try to yield control to ensure the agent actually started to wait.
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 5d0b8a7d4d6c2ed349eb1b5c8f7d1b4a6038a5cb..521e5e816622da187c0a44ce6ab3594858929aaa 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
@@ -31,7 +31,7 @@ $262.agent.start(`
   });
 `);
 
-$262.agent.broadcast(i64a.buffer);
+$262.agent.safeBroadcast(i64a);
 $262.agent.waitUntil(i64a, RUNNING, 1n);
 
 // Try to yield control to ensure the agent actually started to wait.
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 b066d03bad7148326e9f148eb89520ee55bed0a5..11e097f22a6bf2d505e132c63d3a49a5499cb184 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
@@ -31,7 +31,7 @@ $262.agent.start(`
   });
 `);
 
-$262.agent.broadcast(i64a.buffer);
+$262.agent.safeBroadcast(i64a);
 $262.agent.waitUntil(i64a, RUNNING, 1n);
 
 // Try to yield control to ensure the agent actually started to wait.
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 9cc06769a6238b605f997c772b12ea4cda338cf6..a336047bb08faa3b0622fe95b986fe9f14d6d9d3 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
@@ -31,7 +31,7 @@ $262.agent.start(`
   });
 `);
 
-$262.agent.broadcast(i64a.buffer);
+$262.agent.safeBroadcast(i64a);
 $262.agent.waitUntil(i64a, RUNNING, 1n);
 
 // Try to yield control to ensure the agent actually started to wait.
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 9033f1d7237f604298f71ee1ed7531a505b94bf0..1c48790c7f3b642a235a3c94e9a541148f5960af 100644
--- a/test/built-ins/Atomics/wait/bigint/value-not-equal.js
+++ b/test/built-ins/Atomics/wait/bigint/value-not-equal.js
@@ -41,7 +41,7 @@ const i64a = new BigInt64Array(
 // test case, we only do it for consistency with other test cases which do
 // require the main agent to wait and yield control.
 
-$262.agent.broadcast(i64a.buffer);
+$262.agent.safeBroadcast(i64a);
 $262.agent.waitUntil(i64a, RUNNING, 1n);
 
 // Try to yield control to ensure the agent actually started to wait.
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 3f0e13866319f86765aedb23c76522fb497f8389..5b700cb57f7fe7b7a96a18e222e8460026c29365 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
@@ -51,7 +51,7 @@ const i64a = new BigInt64Array(
   new SharedArrayBuffer(BigInt64Array.BYTES_PER_ELEMENT * 5)
 );
 
-$262.agent.broadcast(i64a.buffer);
+$262.agent.safeBroadcast(i64a);
 
 // Wait until all agents started.
 $262.agent.waitUntil(i64a, RUNNING, BigInt(NUMAGENT));
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 769dac832a028854f9139d9d788d0a9ab309d3c7..5eb18a5b56bcde8e29d70e2486cd5997cd5a987a 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
@@ -54,7 +54,7 @@ const i64a = new BigInt64Array(
   new SharedArrayBuffer(BigInt64Array.BYTES_PER_ELEMENT * 4)
 );
 
-$262.agent.broadcast(i64a.buffer);
+$262.agent.safeBroadcast(i64a);
 
 // Wait until all agents started.
 $262.agent.waitUntil(i64a, RUNNING, BigInt(NUMAGENT));
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 2ae8b384e20680729abee8bc66537fad5919efe8..98a3e2319a4d4ffb8bfd2f7494d25b13b976d2f8 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
@@ -44,7 +44,7 @@ const i64a = new BigInt64Array(
   new SharedArrayBuffer(BigInt64Array.BYTES_PER_ELEMENT * 4)
 );
 
-$262.agent.broadcast(i64a.buffer);
+$262.agent.safeBroadcast(i64a);
 $262.agent.waitUntil(i64a, RUNNING, 1n);
 
 // Try to yield control to ensure the agent actually started to wait.
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 737963f3219901652ad94263bcfe5a338ebd3081..33081f485f5340358bf7f910f7a80661df001827 100644
--- a/test/built-ins/Atomics/wait/false-for-timeout-agent.js
+++ b/test/built-ins/Atomics/wait/false-for-timeout-agent.js
@@ -50,7 +50,7 @@ const i32a = new Int32Array(
   new SharedArrayBuffer(Int32Array.BYTES_PER_ELEMENT * 4)
 );
 
-$262.agent.broadcast(i32a.buffer);
+$262.agent.safeBroadcast(i32a);
 $262.agent.waitUntil(i32a, RUNNING, 1);
 
 // Try to yield control to ensure the agent actually started to wait.
diff --git a/test/built-ins/Atomics/wait/nan-for-timeout.js b/test/built-ins/Atomics/wait/nan-for-timeout.js
index 08dea96c3c9688eb05dd46373e668181c376a776..fc99bb651333a2c7b27aba2d34e843b3f438ee47 100644
--- a/test/built-ins/Atomics/wait/nan-for-timeout.js
+++ b/test/built-ins/Atomics/wait/nan-for-timeout.js
@@ -33,7 +33,7 @@ const i32a = new Int32Array(
   new SharedArrayBuffer(Int32Array.BYTES_PER_ELEMENT * 4)
 );
 
-$262.agent.broadcast(i32a.buffer);
+$262.agent.safeBroadcast(i32a);
 $262.agent.waitUntil(i32a, RUNNING, 1);
 
 // Try to yield control to ensure the agent actually started to wait.
diff --git a/test/built-ins/Atomics/wait/negative-timeout-agent.js b/test/built-ins/Atomics/wait/negative-timeout-agent.js
index 4b505cf5b0f867d8c3c1d50b82434c975964a334..08c51144739c75298c0c6e59bbab822ffaf981d4 100644
--- a/test/built-ins/Atomics/wait/negative-timeout-agent.js
+++ b/test/built-ins/Atomics/wait/negative-timeout-agent.js
@@ -25,7 +25,7 @@ const i32a = new Int32Array(
   new SharedArrayBuffer(Int32Array.BYTES_PER_ELEMENT * 4)
 );
 
-$262.agent.broadcast(i32a.buffer);
+$262.agent.safeBroadcast(i32a);
 $262.agent.waitUntil(i32a, RUNNING, 1);
 
 // Try to yield control to ensure the agent actually started to wait.
diff --git a/test/built-ins/Atomics/wait/no-spurious-wakeup-no-operation.js b/test/built-ins/Atomics/wait/no-spurious-wakeup-no-operation.js
index 2bd298c2c8258131ce3af4a455fec3f56b826a5c..963ee034c6bc046099b1526e3b7d012d17fd2e4a 100644
--- a/test/built-ins/Atomics/wait/no-spurious-wakeup-no-operation.js
+++ b/test/built-ins/Atomics/wait/no-spurious-wakeup-no-operation.js
@@ -38,7 +38,7 @@ $262.agent.start(`
   });
 `);
 
-$262.agent.broadcast(i32a.buffer);
+$262.agent.safeBroadcast(i32a);
 $262.agent.waitUntil(i32a, RUNNING, 1);
 
 // Try to yield control to ensure the agent actually started to wait.
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 6757300aad478933438f0c67b8448de0249500f7..dcbcecac1f2a2968e684c22db2bb7c5bf4fc0cb6 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
@@ -31,7 +31,7 @@ $262.agent.start(`
   });
 `);
 
-$262.agent.broadcast(i32a.buffer);
+$262.agent.safeBroadcast(i32a);
 $262.agent.waitUntil(i32a, RUNNING, 1);
 
 // Try to yield control to ensure the agent actually started to wait.
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 64efe55af87eff846ff4848b5b7ee5ae22df50b6..6fcdb11148941af587b6481cb0344f333990209e 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
@@ -31,7 +31,7 @@ $262.agent.start(`
   });
 `);
 
-$262.agent.broadcast(i32a.buffer);
+$262.agent.safeBroadcast(i32a);
 $262.agent.waitUntil(i32a, RUNNING, 1);
 
 // Try to yield control to ensure the agent actually started to wait.
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 adc190c001df22249956194cdb99156fac1dd483..2b1c1a22d2afc3060d132ccb4d49d7b9e96446d2 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
@@ -31,7 +31,7 @@ $262.agent.start(`
   });
 `);
 
-$262.agent.broadcast(i32a.buffer);
+$262.agent.safeBroadcast(i32a);
 $262.agent.waitUntil(i32a, RUNNING, 1);
 
 // Try to yield control to ensure the agent actually started to wait.
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 93b880b61ec0746b50a0ac5dea2f215d360ce510..d46aeb715f1c799d9827575a767d74415ae1891a 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
@@ -31,7 +31,7 @@ $262.agent.start(`
   });
 `);
 
-$262.agent.broadcast(i32a.buffer);
+$262.agent.safeBroadcast(i32a);
 $262.agent.waitUntil(i32a, RUNNING, 1);
 
 // Try to yield control to ensure the agent actually started to wait.
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 0f73bafacde4399ea133d76bbad3e9da0151f4ba..fea55f61722580cb4e83f2ffba727c7d75a826b7 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
@@ -31,7 +31,7 @@ $262.agent.start(`
   });
 `);
 
-$262.agent.broadcast(i32a.buffer);
+$262.agent.safeBroadcast(i32a);
 $262.agent.waitUntil(i32a, RUNNING, 1);
 
 // Try to yield control to ensure the agent actually started to wait.
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 95a8d8a8a7b2c55a1afd3979aa5a62427fc2b331..2098e391f962b91b340847843522ee7b505e1343 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
@@ -31,7 +31,7 @@ $262.agent.start(`
   });
 `);
 
-$262.agent.broadcast(i32a.buffer);
+$262.agent.safeBroadcast(i32a);
 $262.agent.waitUntil(i32a, RUNNING, 1);
 
 // Try to yield control to ensure the agent actually started to wait.
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 bf260d7a02c6e6bf208d2da6a819ef62c6e31385..9e85f7ca5758fc1088e9db366f7011488f2f5d0d 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
@@ -31,7 +31,7 @@ $262.agent.start(`
   });
 `);
 
-$262.agent.broadcast(i32a.buffer);
+$262.agent.safeBroadcast(i32a);
 $262.agent.waitUntil(i32a, RUNNING, 1);
 
 // Try to yield control to ensure the agent actually started to wait.
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 dbb38f8e74d83eb2ba147700130572a9c4b8c015..2d372cd1d71a933c2700c96b925d45560b1007d0 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
@@ -31,7 +31,7 @@ $262.agent.start(`
   });
 `);
 
-$262.agent.broadcast(i32a.buffer);
+$262.agent.safeBroadcast(i32a);
 $262.agent.waitUntil(i32a, RUNNING, 1);
 
 // Try to yield control to ensure the agent actually started to wait.
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 3e0818bd4d41be3f5bfa4555f671d3ca433a19a1..c44ef2f62537e2c6837e409f07386f260e47d09d 100644
--- a/test/built-ins/Atomics/wait/null-for-timeout-agent.js
+++ b/test/built-ins/Atomics/wait/null-for-timeout-agent.js
@@ -50,7 +50,7 @@ const i32a = new Int32Array(
   new SharedArrayBuffer(Int32Array.BYTES_PER_ELEMENT * 4)
 );
 
-$262.agent.broadcast(i32a.buffer);
+$262.agent.safeBroadcast(i32a);
 $262.agent.waitUntil(i32a, RUNNING, 1);
 
 // Try to yield control to ensure the agent actually started to wait.
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 3217e42261f4a5e53846693a3b047e7e34a7f1bb..884459850471d4ba9e0c7e7d536e2798c04d1e6e 100644
--- a/test/built-ins/Atomics/wait/object-for-timeout-agent.js
+++ b/test/built-ins/Atomics/wait/object-for-timeout-agent.js
@@ -56,7 +56,7 @@ const i32a = new Int32Array(
   new SharedArrayBuffer(Int32Array.BYTES_PER_ELEMENT * 4)
 );
 
-$262.agent.broadcast(i32a.buffer);
+$262.agent.safeBroadcast(i32a);
 $262.agent.waitUntil(i32a, RUNNING, 1);
 
 // Try to yield control to ensure the agent actually started to wait.
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 156f04176cc88700ae0f39db457cf01b90314f60..96411d3a087b00c8d23e48f716c4ac75c6d5e8a8 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
@@ -59,7 +59,7 @@ const i32a = new Int32Array(
   new SharedArrayBuffer(Int32Array.BYTES_PER_ELEMENT * 4)
 );
 
-$262.agent.broadcast(i32a.buffer);
+$262.agent.safeBroadcast(i32a);
 $262.agent.waitUntil(i32a, RUNNING, 1);
 
 // Try to yield control to ensure the agent actually started to wait.
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 21902487cafff8987a505309b5395220360e679c..d1c98fddd9fb31d52f77bdc8d078b38a5a905a58 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
@@ -72,7 +72,7 @@ const i32a = new Int32Array(
   new SharedArrayBuffer(Int32Array.BYTES_PER_ELEMENT * 4)
 );
 
-$262.agent.broadcast(i32a.buffer);
+$262.agent.safeBroadcast(i32a);
 $262.agent.waitUntil(i32a, RUNNING, 1);
 
 // Try to yield control to ensure the agent actually started to wait.
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 efba942cd6639897f18a55920b6aae95befa6964..9a0710ba1703df7e7570c90cbc979f37ee5724ba 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
@@ -47,7 +47,7 @@ const i32a = new Int32Array(
   new SharedArrayBuffer(Int32Array.BYTES_PER_ELEMENT * 4)
 );
 
-$262.agent.broadcast(i32a.buffer);
+$262.agent.safeBroadcast(i32a);
 $262.agent.waitUntil(i32a, RUNNING, 1);
 
 // Try to yield control to ensure the agent actually started to wait.
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 d4de5f952bba174ad523029792b7dde556ed79b7..dacb229fa7cb6f71e21c70c0acc184afa71b0847 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
@@ -63,7 +63,7 @@ const i32a = new Int32Array(
   new SharedArrayBuffer(Int32Array.BYTES_PER_ELEMENT * 4)
 );
 
-$262.agent.broadcast(i32a.buffer);
+$262.agent.safeBroadcast(i32a);
 $262.agent.waitUntil(i32a, RUNNING, 1);
 
 // Try to yield control to ensure the agent actually started to wait.
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 b6bec0f039917fd0cb748882312a5cc28b16b84d..08050925d456860696d58da63725d7f3746c3a8f 100644
--- a/test/built-ins/Atomics/wait/true-for-timeout-agent.js
+++ b/test/built-ins/Atomics/wait/true-for-timeout-agent.js
@@ -50,7 +50,7 @@ const i32a = new Int32Array(
   new SharedArrayBuffer(Int32Array.BYTES_PER_ELEMENT * 4)
 );
 
-$262.agent.broadcast(i32a.buffer);
+$262.agent.safeBroadcast(i32a);
 $262.agent.waitUntil(i32a, RUNNING, 1);
 
 // Try to yield control to ensure the agent actually started to wait.
diff --git a/test/built-ins/Atomics/wait/undefined-for-timeout.js b/test/built-ins/Atomics/wait/undefined-for-timeout.js
index 7c774fba220e1ee16715a38d336e1e22b94c94a2..b923a12b779f67d3d85665bd65afae0111c02fbe 100644
--- a/test/built-ins/Atomics/wait/undefined-for-timeout.js
+++ b/test/built-ins/Atomics/wait/undefined-for-timeout.js
@@ -48,7 +48,7 @@ const i32a = new Int32Array(
   new SharedArrayBuffer(Int32Array.BYTES_PER_ELEMENT * 4)
 );
 
-$262.agent.broadcast(i32a.buffer);
+$262.agent.safeBroadcast(i32a);
 $262.agent.waitUntil(i32a, RUNNING, NUMAGENT);
 
 // Try to yield control to ensure the agent actually started to wait.
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 3d207c1a11462846c7fe2626e4d428a33c6d1323..0f605da69e41660b11eb44c0d1a4b4918c00feea 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,7 +39,7 @@ const i32a = new Int32Array(
   new SharedArrayBuffer(Int32Array.BYTES_PER_ELEMENT * 4)
 );
 
-$262.agent.broadcast(i32a.buffer);
+$262.agent.safeBroadcast(i32a);
 $262.agent.waitUntil(i32a, RUNNING, 1);
 
 // Try to yield control to ensure the agent actually started to wait.
diff --git a/test/built-ins/Atomics/wait/value-not-equal.js b/test/built-ins/Atomics/wait/value-not-equal.js
index 4c2ca251294cbdb7a7ad8e52af23c2478f91b534..b56157033e2230233fcaf195918fe9993f392395 100644
--- a/test/built-ins/Atomics/wait/value-not-equal.js
+++ b/test/built-ins/Atomics/wait/value-not-equal.js
@@ -41,7 +41,7 @@ const i32a = new Int32Array(
 // test case, we only do it for consistency with other test cases which do
 // require the main agent to wait and yield control.
 
-$262.agent.broadcast(i32a.buffer);
+$262.agent.safeBroadcast(i32a);
 $262.agent.waitUntil(i32a, RUNNING, 1);
 
 // Try to yield control to ensure the agent actually started to wait.
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 5d9babd78eb464e8a8b2842573836c099bdbf91d..f267b582b4d9e76716c60260b673311fa3b45e14 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
@@ -38,7 +38,7 @@ const i32a = new Int32Array(
 // test case, we only do it for consistency with other test cases which do
 // require the main agent to wait and yield control.
 
-$262.agent.broadcast(i32a.buffer);
+$262.agent.safeBroadcast(i32a);
 $262.agent.waitUntil(i32a, RUNNING, 1);
 
 // Try to yield control to ensure the agent actually started to wait.
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 32290826be3c88465c1865bdd9d87dbde25b78a4..01732beb8f8104c32c366a95899b780f9d39ac7a 100644
--- a/test/built-ins/Atomics/wait/waiterlist-block-indexedposition-wake.js
+++ b/test/built-ins/Atomics/wait/waiterlist-block-indexedposition-wake.js
@@ -51,7 +51,7 @@ const i32a = new Int32Array(
   new SharedArrayBuffer(Int32Array.BYTES_PER_ELEMENT * 5)
 );
 
-$262.agent.broadcast(i32a.buffer);
+$262.agent.safeBroadcast(i32a);
 
 // Wait until all agents started.
 $262.agent.waitUntil(i32a, RUNNING, NUMAGENT);
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 c5a731f33422439e45b36c3f123f2bec98394a7b..2a2a80b0fdb0a806c83ccc7c61d8ecf28f169ed3 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
@@ -54,7 +54,7 @@ const i32a = new Int32Array(
   new SharedArrayBuffer(Int32Array.BYTES_PER_ELEMENT * 4)
 );
 
-$262.agent.broadcast(i32a.buffer);
+$262.agent.safeBroadcast(i32a);
 
 // Wait until all agents started.
 $262.agent.waitUntil(i32a, RUNNING, NUMAGENT);
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 135dd23d1addfbc96d5ff5629d6cfb82ae6cbf8d..7b524babe854b6b7c12c00a9bd8b83adcebe0521 100644
--- a/test/built-ins/Atomics/wait/was-woken-before-timeout.js
+++ b/test/built-ins/Atomics/wait/was-woken-before-timeout.js
@@ -44,7 +44,7 @@ const i32a = new Int32Array(
   new SharedArrayBuffer(Int32Array.BYTES_PER_ELEMENT * 4)
 );
 
-$262.agent.broadcast(i32a.buffer);
+$262.agent.safeBroadcast(i32a);
 $262.agent.waitUntil(i32a, RUNNING, 1);
 
 // Try to yield control to ensure the agent actually started to wait.