From e91645c812720abdc5432c5cba6d85510f4fba19 Mon Sep 17 00:00:00 2001
From: Rick Waldron <waldron.rick@gmail.com>
Date: Tue, 20 Nov 2018 15:57:39 -0500
Subject: [PATCH] Atomics: (bigint) initialize BigInt64Array before calling
 $262.agent.start(string-of-program-code)

---
 .../Atomics/notify/bigint/notify-all-on-loc.js        |  8 ++++----
 test/built-ins/Atomics/wait/bigint/nan-for-timeout.js |  8 ++++----
 .../Atomics/wait/bigint/negative-timeout-agent.js     |  8 ++++----
 test/built-ins/Atomics/wait/bigint/value-not-equal.js |  9 ++++-----
 .../bigint/waiterlist-block-indexedposition-wake.js   |  8 ++++----
 .../bigint/waiterlist-order-of-operations-is-fifo.js  | 11 +++++------
 .../Atomics/wait/bigint/was-woken-before-timeout.js   |  8 ++++----
 7 files changed, 29 insertions(+), 31 deletions(-)

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 9375849799..790d099c5f 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
@@ -22,6 +22,10 @@ const BUFFER_SIZE = 4;
 // `Atomics.notify`.
 const TIMEOUT = $262.agent.timeouts.long;
 
+const i64a = new BigInt64Array(
+  new SharedArrayBuffer(BigInt64Array.BYTES_PER_ELEMENT * BUFFER_SIZE)
+);
+
 for (var i = 0; i < NUMAGENT; i++) {
   $262.agent.start(`
     $262.agent.receiveBroadcast(function(sab) {
@@ -53,10 +57,6 @@ $262.agent.start(`
   });
 `);
 
-const i64a = new BigInt64Array(
-  new SharedArrayBuffer(BigInt64Array.BYTES_PER_ELEMENT * BUFFER_SIZE)
-);
-
 $262.agent.safeBroadcast(i64a);
 
 // Wait for agents to be running.
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 bc128b612f..f50a11ebf3 100644
--- a/test/built-ins/Atomics/wait/bigint/nan-for-timeout.js
+++ b/test/built-ins/Atomics/wait/bigint/nan-for-timeout.js
@@ -17,6 +17,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(`
@@ -29,10 +33,6 @@ $262.agent.start(`
   });
 `);
 
-const i64a = new BigInt64Array(
-  new SharedArrayBuffer(BigInt64Array.BYTES_PER_ELEMENT * 4)
-);
-
 $262.agent.safeBroadcast(i64a);
 $262.agent.waitUntil(i64a, RUNNING, 1n);
 
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 a0799b2120..8c9346bd9c 100644
--- a/test/built-ins/Atomics/wait/bigint/negative-timeout-agent.js
+++ b/test/built-ins/Atomics/wait/bigint/negative-timeout-agent.js
@@ -9,6 +9,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(`
@@ -21,10 +25,6 @@ $262.agent.start(`
   });
 `);
 
-const i64a = new BigInt64Array(
-  new SharedArrayBuffer(BigInt64Array.BYTES_PER_ELEMENT * 4)
-);
-
 $262.agent.safeBroadcast(i64a);
 $262.agent.waitUntil(i64a, RUNNING, 1n);
 
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 1c48790c7f..d23f3bead5 100644
--- a/test/built-ins/Atomics/wait/bigint/value-not-equal.js
+++ b/test/built-ins/Atomics/wait/bigint/value-not-equal.js
@@ -19,9 +19,12 @@ features: [Atomics, BigInt, SharedArrayBuffer, TypedArray]
 ---*/
 
 const RUNNING = 1;
-
 const value = "42n";
 
+const i64a = new BigInt64Array(
+  new SharedArrayBuffer(BigInt64Array.BYTES_PER_ELEMENT * 4)
+);
+
 $262.agent.start(`
   $262.agent.receiveBroadcast(function(sab) {
     const i64a = new BigInt64Array(sab);
@@ -33,10 +36,6 @@ $262.agent.start(`
   });
 `);
 
-const i64a = new BigInt64Array(
-  new SharedArrayBuffer(BigInt64Array.BYTES_PER_ELEMENT * 4)
-);
-
 // NB: We don't actually explicitly need to wait for the agent to start in this
 // test case, we only do it for consistency with other test cases which do
 // require the main agent to wait and yield control.
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 5b700cb57f..6f9c7c678c 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
@@ -25,6 +25,10 @@ features: [Atomics, BigInt, SharedArrayBuffer, TypedArray]
 var NUMAGENT = 2;
 var RUNNING = 4;
 
+const i64a = new BigInt64Array(
+  new SharedArrayBuffer(BigInt64Array.BYTES_PER_ELEMENT * 5)
+);
+
 $262.agent.start(`
   $262.agent.receiveBroadcast(function(sab) {
     const i64a = new BigInt64Array(sab);
@@ -47,10 +51,6 @@ $262.agent.start(`
   });
 `);
 
-const i64a = new BigInt64Array(
-  new SharedArrayBuffer(BigInt64Array.BYTES_PER_ELEMENT * 5)
-);
-
 $262.agent.safeBroadcast(i64a);
 
 // Wait until all agents started.
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 5eb18a5b56..bebe05a0b9 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
@@ -16,11 +16,14 @@ includes: [atomicsHelper.js]
 features: [Atomics, BigInt, SharedArrayBuffer, TypedArray]
 ---*/
 
-var NUMAGENT = 3;
-
 var WAIT_INDEX = 0;
 var RUNNING = 1;
 var LOCK_INDEX = 2;
+var NUMAGENT = 3;
+
+const i64a = new BigInt64Array(
+  new SharedArrayBuffer(BigInt64Array.BYTES_PER_ELEMENT * 4)
+);
 
 for (var i = 0; i < NUMAGENT; i++) {
   var agentNum = i;
@@ -50,10 +53,6 @@ for (var i = 0; i < NUMAGENT; i++) {
   `);
 }
 
-const i64a = new BigInt64Array(
-  new SharedArrayBuffer(BigInt64Array.BYTES_PER_ELEMENT * 4)
-);
-
 $262.agent.safeBroadcast(i64a);
 
 // Wait until all agents started.
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 98a3e2319a..9359ebe34d 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
@@ -25,6 +25,10 @@ features: [Atomics, BigInt, SharedArrayBuffer, TypedArray]
 const RUNNING = 1;
 const TIMEOUT = $262.agent.timeouts.huge;
 
+const i64a = new BigInt64Array(
+  new SharedArrayBuffer(BigInt64Array.BYTES_PER_ELEMENT * 4)
+);
+
 $262.agent.start(`
   $262.agent.receiveBroadcast(function(sab) {
     const i64a = new BigInt64Array(sab);
@@ -40,10 +44,6 @@ $262.agent.start(`
   });
 `);
 
-const i64a = new BigInt64Array(
-  new SharedArrayBuffer(BigInt64Array.BYTES_PER_ELEMENT * 4)
-);
-
 $262.agent.safeBroadcast(i64a);
 $262.agent.waitUntil(i64a, RUNNING, 1n);
 
-- 
GitLab