mirror of
https://github.com/sockspls/badfish
synced 2025-05-01 09:13:08 +00:00
Prefer a reference to a pointer
No functional change. Signed-off-by: Marco Costalba <mcostalba@gmail.com>
This commit is contained in:
parent
e8b7109eff
commit
ab65d3fd0e
1 changed files with 30 additions and 30 deletions
|
@ -55,7 +55,7 @@ Thread::Thread(Fn fn) {
|
|||
lock_init(sleepLock);
|
||||
cond_init(sleepCond);
|
||||
|
||||
for (size_t j = 0; j < MAX_SPLITPOINTS_PER_THREAD; j++)
|
||||
for (int j = 0; j < MAX_SPLITPOINTS_PER_THREAD; j++)
|
||||
lock_init(splitPoints[j].lock);
|
||||
|
||||
if (!thread_create(handle, start_routine, this))
|
||||
|
@ -314,41 +314,41 @@ Value ThreadPool::split(Position& pos, Stack* ss, Value alpha, Value beta,
|
|||
return bestValue;
|
||||
|
||||
// Pick the next available split point from the split point stack
|
||||
SplitPoint* sp = &master->splitPoints[master->splitPointsCnt];
|
||||
SplitPoint& sp = master->splitPoints[master->splitPointsCnt];
|
||||
|
||||
sp->parent = master->curSplitPoint;
|
||||
sp->master = master;
|
||||
sp->cutoff = false;
|
||||
sp->slavesMask = 1ULL << master->idx;
|
||||
sp->depth = depth;
|
||||
sp->bestMove = *bestMove;
|
||||
sp->threatMove = threatMove;
|
||||
sp->alpha = alpha;
|
||||
sp->beta = beta;
|
||||
sp->nodeType = nodeType;
|
||||
sp->bestValue = bestValue;
|
||||
sp->mp = mp;
|
||||
sp->moveCount = moveCount;
|
||||
sp->pos = &pos;
|
||||
sp->nodes = 0;
|
||||
sp->ss = ss;
|
||||
sp.parent = master->curSplitPoint;
|
||||
sp.master = master;
|
||||
sp.cutoff = false;
|
||||
sp.slavesMask = 1ULL << master->idx;
|
||||
sp.depth = depth;
|
||||
sp.bestMove = *bestMove;
|
||||
sp.threatMove = threatMove;
|
||||
sp.alpha = alpha;
|
||||
sp.beta = beta;
|
||||
sp.nodeType = nodeType;
|
||||
sp.bestValue = bestValue;
|
||||
sp.mp = mp;
|
||||
sp.moveCount = moveCount;
|
||||
sp.pos = &pos;
|
||||
sp.nodes = 0;
|
||||
sp.ss = ss;
|
||||
|
||||
assert(master->is_searching);
|
||||
|
||||
master->curSplitPoint = sp;
|
||||
master->curSplitPoint = &sp;
|
||||
int slavesCnt = 0;
|
||||
|
||||
// Try to allocate available threads and ask them to start searching setting
|
||||
// is_searching flag. This must be done under lock protection to avoid concurrent
|
||||
// allocation of the same slave by another master.
|
||||
lock_grab(sp->lock);
|
||||
lock_grab(sp.lock);
|
||||
lock_grab(splitLock);
|
||||
|
||||
for (size_t i = 0; i < size() && !Fake; ++i)
|
||||
if (threads[i]->is_available_to(master))
|
||||
{
|
||||
sp->slavesMask |= 1ULL << i;
|
||||
threads[i]->curSplitPoint = sp;
|
||||
sp.slavesMask |= 1ULL << i;
|
||||
threads[i]->curSplitPoint = &sp;
|
||||
threads[i]->is_searching = true; // Slave leaves idle_loop()
|
||||
|
||||
if (useSleepingThreads)
|
||||
|
@ -361,7 +361,7 @@ Value ThreadPool::split(Position& pos, Stack* ss, Value alpha, Value beta,
|
|||
master->splitPointsCnt++;
|
||||
|
||||
lock_release(splitLock);
|
||||
lock_release(sp->lock);
|
||||
lock_release(sp.lock);
|
||||
|
||||
// Everything is set up. The master thread enters the idle loop, from which
|
||||
// it will instantly launch a search, because its is_searching flag is set.
|
||||
|
@ -379,19 +379,19 @@ Value ThreadPool::split(Position& pos, Stack* ss, Value alpha, Value beta,
|
|||
// We have returned from the idle loop, which means that all threads are
|
||||
// finished. Note that setting is_searching and decreasing splitPointsCnt is
|
||||
// done under lock protection to avoid a race with Thread::is_available_to().
|
||||
lock_grab(sp->lock); // To protect sp->nodes
|
||||
lock_grab(sp.lock); // To protect sp.nodes
|
||||
lock_grab(splitLock);
|
||||
|
||||
master->is_searching = true;
|
||||
master->splitPointsCnt--;
|
||||
master->curSplitPoint = sp->parent;
|
||||
pos.set_nodes_searched(pos.nodes_searched() + sp->nodes);
|
||||
*bestMove = sp->bestMove;
|
||||
master->curSplitPoint = sp.parent;
|
||||
pos.set_nodes_searched(pos.nodes_searched() + sp.nodes);
|
||||
*bestMove = sp.bestMove;
|
||||
|
||||
lock_release(splitLock);
|
||||
lock_release(sp->lock);
|
||||
lock_release(sp.lock);
|
||||
|
||||
return sp->bestValue;
|
||||
return sp.bestValue;
|
||||
}
|
||||
|
||||
// Explicit template instantiations
|
||||
|
|
Loading…
Add table
Reference in a new issue