X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=src%2Fmovepick.cpp;h=a18c46923b60742160816fddb3d9c8ff2734dc35;hb=a6017aa728c12c48faf758e6df3b3a1e2b704dad;hp=6df070bbdf167b8e835a1970eb5099f846dbcfd7;hpb=bb751d6c890f5c50c642366d601740366cfae8d0;p=stockfish diff --git a/src/movepick.cpp b/src/movepick.cpp index 6df070bb..a18c4692 100644 --- a/src/movepick.cpp +++ b/src/movepick.cpp @@ -36,26 +36,8 @@ namespace { - /// Types - - enum MovegenPhase { - PH_TT_MOVE, // Transposition table move - PH_MATE_KILLER, // Mate killer from the current ply - PH_GOOD_CAPTURES, // Queen promotions and captures with SEE values >= 0 - PH_BAD_CAPTURES, // Queen promotions and captures with SEE valuse <= 0 - PH_KILLER_1, // Killer move 1 from the current ply (not used yet). - PH_KILLER_2, // Killer move 2 from the current ply (not used yet). - PH_NONCAPTURES, // Non-captures and underpromotions - PH_EVASIONS, // Check evasions - PH_QCAPTURES, // Captures in quiescence search - PH_QCHECKS, // Checks in quiescence search - PH_STOP - }; - - /// Variables - MovegenPhase PhaseTable[32]; int MainSearchPhaseIndex; int EvasionsPhaseIndex; int QsearchWithChecksPhaseIndex; @@ -63,6 +45,9 @@ namespace { } +// Static array definition +MovePicker::MovegenPhase MovePicker::PhaseTable[32]; + //// //// Functions @@ -335,10 +320,8 @@ Move MovePicker::pick_move_from_list() { } } if(bestIndex != -1) { // Found a good capture - MoveStack tmp = moves[movesPicked]; - moves[movesPicked] = moves[bestIndex]; - moves[bestIndex] = tmp; - move = moves[movesPicked++].move; + move = moves[bestIndex].move; + moves[bestIndex] = moves[movesPicked++]; if(move != ttMove && move != mateKiller && pos->move_is_legal(move, pinned)) return move; @@ -368,10 +351,8 @@ Move MovePicker::pick_move_from_list() { bestIndex = movesPicked; if(bestIndex != -1) { - MoveStack tmp = moves[movesPicked]; - moves[movesPicked] = moves[bestIndex]; - moves[bestIndex] = tmp; - move = moves[movesPicked++].move; + move = moves[bestIndex].move; + moves[bestIndex] = moves[movesPicked++]; if(move != ttMove && move != mateKiller && pos->move_is_legal(move, pinned)) return move; @@ -392,10 +373,8 @@ Move MovePicker::pick_move_from_list() { } if(bestIndex != -1) { - MoveStack tmp = moves[movesPicked]; - moves[movesPicked] = moves[bestIndex]; - moves[bestIndex] = tmp; - move = moves[movesPicked++].move; + move = moves[bestIndex].move; + moves[bestIndex] = moves[movesPicked++]; return move; } } @@ -431,11 +410,8 @@ Move MovePicker::pick_move_from_list() { bestIndex = movesPicked; if(bestIndex != -1) { - MoveStack tmp = moves[movesPicked]; - moves[movesPicked] = moves[bestIndex]; - moves[bestIndex] = tmp; - - move = moves[movesPicked++].move; + move = moves[bestIndex].move; + moves[bestIndex] = moves[movesPicked++]; // Remember to change the line below if we decide to hash the qsearch! // Maybe also postpone the legality check until after futility pruning? if(/* move != ttMove && */ pos->move_is_legal(move, pinned))