Use a Thread instead of an array index

No functional change.

Signed-off-by: Marco Costalba <mcostalba@gmail.com>
This commit is contained in:
Marco Costalba
2012-04-04 12:12:08 +01:00
parent 0439a79566
commit 673bc5526f
9 changed files with 76 additions and 82 deletions
+10 -12
View File
@@ -332,7 +332,7 @@ finalize:
// but if we are pondering or in infinite search, we shouldn't print the best
// move before we are told to do so.
if (!Signals.stop && (Limits.ponder || Limits.infinite))
Threads[pos.this_thread()].wait_for_stop_or_ponderhit();
pos.this_thread().wait_for_stop_or_ponderhit();
// Best move could be MOVE_NONE when searching on a stalemate position
cout << "bestmove " << move_to_uci(RootMoves[0].pv[0], Chess960)
@@ -530,7 +530,6 @@ namespace {
assert(alpha >= -VALUE_INFINITE && alpha < beta && beta <= VALUE_INFINITE);
assert((alpha == beta - 1) || PvNode);
assert(depth > DEPTH_ZERO);
assert(pos.this_thread() >= 0 && pos.this_thread() < Threads.size());
Move movesSearched[MAX_MOVES];
StateInfo st;
@@ -544,7 +543,7 @@ namespace {
bool isPvMove, inCheck, singularExtensionNode, givesCheck;
bool captureOrPromotion, dangerous, doFullDepthSearch;
int moveCount = 0, playedMoveCount = 0;
Thread& thread = Threads[pos.this_thread()];
Thread& thread = pos.this_thread();
SplitPoint* sp = NULL;
refinedValue = bestValue = value = -VALUE_INFINITE;
@@ -847,7 +846,7 @@ split_point_start: // At split points actual search starts from here
{
Signals.firstRootMove = (moveCount == 1);
if (pos.this_thread() == 0 && SearchTime.elapsed() > 2000)
if (&thread == Threads.main_thread() && SearchTime.elapsed() > 2000)
cout << "info depth " << depth / ONE_PLY
<< " currmove " << move_to_uci(move, Chess960)
<< " currmovenumber " << moveCount + PVIdx << endl;
@@ -1054,7 +1053,7 @@ split_point_start: // At split points actual search starts from here
if ( !SpNode
&& depth >= Threads.min_split_depth()
&& bestValue < beta
&& Threads.available_slave_exists(pos.this_thread())
&& Threads.available_slave_exists(thread)
&& !Signals.stop
&& !thread.cutoff_occurred())
bestValue = Threads.split<FakeSplit>(pos, ss, alpha, beta, bestValue, &bestMove,
@@ -1131,7 +1130,6 @@ split_point_start: // At split points actual search starts from here
assert(alpha >= -VALUE_INFINITE && alpha < beta && beta <= VALUE_INFINITE);
assert((alpha == beta - 1) || PvNode);
assert(depth <= DEPTH_ZERO);
assert(pos.this_thread() >= 0 && pos.this_thread() < Threads.size());
StateInfo st;
Move ttMove, move, bestMove;
@@ -1827,8 +1825,8 @@ void Thread::idle_loop(SplitPoint* sp_master) {
lock_release(Threads.splitLock);
Stack ss[MAX_PLY_PLUS_2];
Position pos(*sp->pos, threadID);
int master = sp->master;
Position pos(*sp->pos, this);
Thread* master = sp->master;
memcpy(ss, sp->ss - 1, 4 * sizeof(Stack));
(ss+1)->sp = sp;
@@ -1847,7 +1845,7 @@ void Thread::idle_loop(SplitPoint* sp_master) {
assert(is_searching);
is_searching = false;
sp->slavesMask &= ~(1ULL << threadID);
sp->slavesMask &= ~(1ULL << idx);
sp->nodes += pos.nodes_searched();
// After releasing the lock we cannot access anymore any SplitPoint
@@ -1858,9 +1856,9 @@ void Thread::idle_loop(SplitPoint* sp_master) {
// Wake up master thread so to allow it to return from the idle loop in
// case we are the last slave of the split point.
if ( Threads.use_sleeping_threads()
&& threadID != master
&& !Threads[master].is_searching)
Threads[master].wake_up();
&& this != master
&& !master->is_searching)
master->wake_up();
}
}
}