Blob Blame History Raw
From aaf3296c9470a094f740d004444b45065d00a730 Mon Sep 17 00:00:00 2001
From: Josh Stone <cuviper@gmail.com>
Date: Wed, 12 Jun 2019 20:45:51 -0700
Subject: [PATCH] Update to crossbeam-deque 0.7

---
 src/registry.rs | 28 ++++++++++------------------
 1 file changed, 10 insertions(+), 18 deletions(-)

diff --git a/src/registry.rs b/src/registry.rs
index 76567c3703e6..3171d0041d34 100644
--- a/src/registry.rs
+++ b/src/registry.rs
@@ -1,4 +1,4 @@
-use crossbeam_deque::{self as deque, Pop, Steal, Stealer, Worker};
+use crossbeam_deque::{Steal, Stealer, Worker};
 use crossbeam_queue::SegQueue;
 #[cfg(rayon_unstable)]
 use internal::task::Task;
@@ -222,15 +222,13 @@ impl Registry {
         let n_threads = builder.get_num_threads();
         let breadth_first = builder.get_breadth_first();
 
-        let (workers, stealers): (Vec<_>, Vec<_>) = (0..n_threads)
-            .map(|_| {
-                if breadth_first {
-                    deque::fifo()
-                } else {
-                    deque::lifo()
-                }
-            })
-            .unzip();
+        let new = if breadth_first {
+            Worker::new_fifo
+        } else {
+            Worker::new_lifo
+        };
+        let workers: Vec<_> = (0..n_threads).map(|_| new()).collect();
+        let stealers: Vec<_> = workers.iter().map(Worker::stealer).collect();
 
         let registry = Arc::new(Registry {
             thread_infos: stealers.into_iter().map(ThreadInfo::new).collect(),
@@ -674,13 +672,7 @@ impl WorkerThread {
     /// bottom.
     #[inline]
     pub(super) unsafe fn take_local_job(&self) -> Option<JobRef> {
-        loop {
-            match self.worker.pop() {
-                Pop::Empty => return None,
-                Pop::Data(d) => return Some(d),
-                Pop::Retry => {}
-            }
-        }
+        self.worker.pop()
     }
 
     /// Wait until the latch is set. Try to keep busy by popping and
@@ -763,7 +755,7 @@ impl WorkerThread {
                 loop {
                     match victim.stealer.steal() {
                         Steal::Empty => return None,
-                        Steal::Data(d) => {
+                        Steal::Success(d) => {
                             log!(StoleWork {
                                 worker: self.index,
                                 victim: victim_index
-- 
2.21.0