X-Git-Url: https://git.sesse.net/?p=stockfish;a=blobdiff_plain;f=src%2Fmovepick.h;h=57fe1c0ec304a76fd2542e97876c811eac92b6d2;hp=fe9e5a7c08ab31f1b58882354054515e49688dd9;hb=6960f41e03b0d5fdbc74e60eae27f4adb8091058;hpb=148490f04cbd21afd9b01431ee7c947ac0bf78a8 diff --git a/src/movepick.h b/src/movepick.h index fe9e5a7c..57fe1c0e 100644 --- a/src/movepick.h +++ b/src/movepick.h @@ -42,10 +42,18 @@ struct Stats { static const Value Max = Value(2000); - const T* operator[](Piece p) const { return &table[p][0]; } + const T* operator[](Piece p) const { return table[p]; } void clear() { memset(table, 0, sizeof(table)); } - void update(Piece p, Square to, Move m) { table[p][to] = m; } + void update(Piece p, Square to, Move m) { + + if (m == table[p][to].first) + return; + + table[p][to].second = table[p][to].first; + table[p][to].first = m; + } + void update(Piece p, Square to, Value v) { if (Gain) @@ -61,7 +69,7 @@ private: typedef Stats< true, Value> GainsStats; typedef Stats HistoryStats; -typedef Stats CountermovesStats; +typedef Stats > CountermovesStats; /// MovePicker class is used to pick one pseudo legal move at a time from the @@ -78,8 +86,7 @@ class MovePicker { public: MovePicker(const Position&, Move, Depth, const HistoryStats&, Square); MovePicker(const Position&, Move, const HistoryStats&, PieceType); - MovePicker(const Position&, Move, Depth, const HistoryStats&, - const CountermovesStats&, Search::Stack*, Value); + MovePicker(const Position&, Move, Depth, const HistoryStats&, Move*, Search::Stack*, Value); template Move next_move(); @@ -90,9 +97,10 @@ private: const Position& pos; const HistoryStats& history; Search::Stack* ss; + Move* countermoves; Depth depth; Move ttMove; - MoveStack killers[3]; + MoveStack killers[4]; Square recaptureSquare; int captureThreshold, phase; MoveStack *cur, *end, *endQuiets, *endBadCaptures;