mirror of
https://github.com/sockspls/badfish
synced 2025-04-30 16:53:09 +00:00
Slightly change split() API
This function "returns" two values: bestValue and bestMove Instead of returning one and passing as pointer the other be consistent and pass as pointers both. No functional change.
This commit is contained in:
parent
1a414cd9cb
commit
bf706c4a4f
3 changed files with 14 additions and 16 deletions
|
@ -1030,8 +1030,8 @@ split_point_start: // At split points actual search starts from here
|
|||
{
|
||||
assert(bestValue < beta);
|
||||
|
||||
bestValue = thisThread->split<FakeSplit>(pos, ss, alpha, beta, bestValue, &bestMove,
|
||||
depth, threatMove, moveCount, mp, NT);
|
||||
thisThread->split<FakeSplit>(pos, ss, alpha, beta, &bestValue, &bestMove,
|
||||
depth, threatMove, moveCount, &mp, NT);
|
||||
if (bestValue >= beta)
|
||||
break;
|
||||
}
|
||||
|
|
|
@ -249,15 +249,14 @@ bool ThreadPool::slave_available(Thread* master) const {
|
|||
// search() then split() returns.
|
||||
|
||||
template <bool Fake>
|
||||
Value Thread::split(Position& pos, Stack* ss, Value alpha, Value beta,
|
||||
Value bestValue, Move* bestMove, Depth depth, Move threatMove,
|
||||
int moveCount, MovePicker& mp, int nodeType) {
|
||||
void Thread::split(Position& pos, Stack* ss, Value alpha, Value beta, Value* bestValue,
|
||||
Move* bestMove, Depth depth, Move threatMove, int moveCount,
|
||||
MovePicker* movePicker, int nodeType) {
|
||||
|
||||
assert(pos.pos_is_ok());
|
||||
assert(bestValue <= alpha && alpha < beta && beta <= VALUE_INFINITE);
|
||||
assert(bestValue > -VALUE_INFINITE);
|
||||
assert(*bestValue <= alpha && alpha < beta && beta <= VALUE_INFINITE);
|
||||
assert(*bestValue > -VALUE_INFINITE);
|
||||
assert(depth >= Threads.minimumSplitDepth);
|
||||
|
||||
assert(searching);
|
||||
assert(splitPointsSize < MAX_SPLITPOINTS_PER_THREAD);
|
||||
|
||||
|
@ -268,13 +267,13 @@ Value Thread::split(Position& pos, Stack* ss, Value alpha, Value beta,
|
|||
sp.parentSplitPoint = activeSplitPoint;
|
||||
sp.slavesMask = 1ULL << idx;
|
||||
sp.depth = depth;
|
||||
sp.bestValue = *bestValue;
|
||||
sp.bestMove = *bestMove;
|
||||
sp.threatMove = threatMove;
|
||||
sp.alpha = alpha;
|
||||
sp.beta = beta;
|
||||
sp.nodeType = nodeType;
|
||||
sp.bestValue = bestValue;
|
||||
sp.movePicker = ∓
|
||||
sp.movePicker = movePicker;
|
||||
sp.moveCount = moveCount;
|
||||
sp.pos = &pos;
|
||||
sp.nodes = 0;
|
||||
|
@ -332,16 +331,15 @@ Value Thread::split(Position& pos, Stack* ss, Value alpha, Value beta,
|
|||
activeSplitPoint = sp.parentSplitPoint;
|
||||
pos.set_nodes_searched(pos.nodes_searched() + sp.nodes);
|
||||
*bestMove = sp.bestMove;
|
||||
*bestValue = sp.bestValue;
|
||||
|
||||
sp.mutex.unlock();
|
||||
Threads.mutex.unlock();
|
||||
|
||||
return sp.bestValue;
|
||||
}
|
||||
|
||||
// Explicit template instantiations
|
||||
template Value Thread::split<false>(Position&, Stack*, Value, Value, Value, Move*, Depth, Move, int, MovePicker&, int);
|
||||
template Value Thread::split<true>(Position&, Stack*, Value, Value, Value, Move*, Depth, Move, int, MovePicker&, int);
|
||||
template void Thread::split<false>(Position&, Stack*, Value, Value, Value*, Move*, Depth, Move, int, MovePicker*, int);
|
||||
template void Thread::split< true>(Position&, Stack*, Value, Value, Value*, Move*, Depth, Move, int, MovePicker*, int);
|
||||
|
||||
|
||||
// wait_for_think_finished() waits for main thread to go to sleep then returns
|
||||
|
|
|
@ -103,8 +103,8 @@ struct Thread {
|
|||
void wait_for(volatile const bool& b);
|
||||
|
||||
template <bool Fake>
|
||||
Value split(Position& pos, Search::Stack* ss, Value alpha, Value beta, Value bestValue, Move* bestMove,
|
||||
Depth depth, Move threatMove, int moveCount, MovePicker& mp, int nodeType);
|
||||
void split(Position& pos, Search::Stack* ss, Value alpha, Value beta, Value* bestValue, Move* bestMove,
|
||||
Depth depth, Move threatMove, int moveCount, MovePicker* movePicker, int nodeType);
|
||||
|
||||
SplitPoint splitPoints[MAX_SPLITPOINTS_PER_THREAD];
|
||||
Material::Table materialTable;
|
||||
|
|
Loading…
Add table
Reference in a new issue