X-Git-Url: https://git.sesse.net/?p=stockfish;a=blobdiff_plain;f=src%2Fmovepick.cpp;h=a54398c0844726394fe4cc4cc32e3ba8222f54a0;hp=4f2fa01eb231ba64e10feaba33d1af33977a35be;hb=800410eef1c0811d046ee2332b3afda21284b876;hpb=4064ee540649cb46ad4cc4a6080bd4ef41314cb9 diff --git a/src/movepick.cpp b/src/movepick.cpp index 4f2fa01e..a54398c0 100644 --- a/src/movepick.cpp +++ b/src/movepick.cpp @@ -75,7 +75,7 @@ MovePicker::MovePicker(const Position& p, Move ttm, Depth d, const HistoryStats& assert(d > DEPTH_ZERO); - cur = end = moves; + cur = end = moves = pos.this_thread()->get_moves_array(); endBadCaptures = moves + MAX_MOVES - 1; countermoves = cm; ss = s; @@ -91,10 +91,11 @@ MovePicker::MovePicker(const Position& p, Move ttm, Depth d, const HistoryStats& } MovePicker::MovePicker(const Position& p, Move ttm, Depth d, const HistoryStats& h, - Square sq) : pos(p), history(h), cur(moves), end(moves) { + Square sq) : pos(p), history(h) { assert(d <= DEPTH_ZERO); + cur = end = moves = pos.this_thread()->get_moves_array(); if (p.checkers()) stage = EVASION; @@ -123,10 +124,11 @@ MovePicker::MovePicker(const Position& p, Move ttm, Depth d, const HistoryStats& } MovePicker::MovePicker(const Position& p, Move ttm, const HistoryStats& h, PieceType pt) - : pos(p), history(h), cur(moves), end(moves) { + : pos(p), history(h) { assert(!pos.checkers()); + cur = end = moves = pos.this_thread()->get_moves_array(); stage = PROBCUT; // In ProbCut we generate only captures better than parent's captured piece @@ -139,6 +141,7 @@ MovePicker::MovePicker(const Position& p, Move ttm, const HistoryStats& h, Piece end += (ttMove != MOVE_NONE); } +MovePicker::~MovePicker() { pos.this_thread()->free_moves_array(); } /// score() assign a numerical move ordering score to each move in a move list. /// The moves with highest scores will be picked first. @@ -231,7 +234,7 @@ void MovePicker::generate_next() { killers[2].move = killers[3].move = MOVE_NONE; // Be sure countermoves are different from killers - for (int i = 0; i < 2; i++) + for (int i = 0; i < 2; ++i) if (countermoves[i] != cur->move && countermoves[i] != (cur+1)->move) (end++)->move = countermoves[i];