Sync with master
authorMarco Costalba <mcostalba@gmail.com>
Mon, 23 Feb 2015 12:35:04 +0000 (13:35 +0100)
committerMarco Costalba <mcostalba@gmail.com>
Mon, 23 Feb 2015 12:36:15 +0000 (13:36 +0100)
bench: 8253813

1  2 
src/search.cpp

diff --cc src/search.cpp
@@@ -1583,12 -1590,12 +1583,12 @@@ void Thread::idle_loop() 
            // Try to late join to another split point if none of its slaves has
            // already finished.
            SplitPoint* bestSp = NULL;
-           int bestScore = INT_MAX;
+           int minLevel = INT_MAX;
  
 -          for (size_t i = 0; i < Threads.size(); ++i)
 +          for (Thread* th : Threads)
            {
 -              const size_t size = Threads[i]->splitPointsSize; // Local copy
 -              sp = size ? &Threads[i]->splitPoints[size - 1] : NULL;
 +              const size_t size = th->splitPointsSize; // Local copy
 +              sp = size ? &th->splitPoints[size - 1] : nullptr;
  
                if (   sp
                    && sp->allSlavesSearching
  
                    // Prefer to join to SP with few parents to reduce the probability
                    // that a cut-off occurs above us, and hence we waste our work.
-                   int level = -1;
-                   for (SplitPoint* spp = th->activeSplitPoint; spp; spp = spp->parentSplitPoint)
+                   int level = 0;
 -                  for (SplitPoint* p = Threads[i]->activeSplitPoint; p; p = p->parentSplitPoint)
++                  for (SplitPoint* p = th->activeSplitPoint; p; p = p->parentSplitPoint)
                        level++;
  
-                   int score = level * 256 * 256 + (int)sp->slavesMask.count() * 256 - sp->depth * 1;
-                   if (score < bestScore)
+                   if (level < minLevel)
                    {
                        bestSp = sp;
-                       bestScore = score;
+                       minLevel = level;
                    }
                }
            }