X-Git-Url: https://git.sesse.net/?p=stockfish;a=blobdiff_plain;f=src%2Fmovepick.h;h=37027ace23153d1dff36b88446df58d5b4be495d;hp=fe9e5a7c08ab31f1b58882354054515e49688dd9;hb=4ede49cd850392f28bc9da9537c111d2c3f0b297;hpb=148490f04cbd21afd9b01431ee7c947ac0bf78a8 diff --git a/src/movepick.h b/src/movepick.h index fe9e5a7c..37027ace 100644 --- a/src/movepick.h +++ b/src/movepick.h @@ -21,7 +21,7 @@ #define MOVEPICK_H_INCLUDED #include // For std::max -#include // For memset +#include // For std::memset #include "movegen.h" #include "position.h" @@ -42,10 +42,18 @@ struct Stats { static const Value Max = Value(2000); - const T* operator[](Piece p) const { return &table[p][0]; } - void clear() { memset(table, 0, sizeof(table)); } + const T* operator[](Piece p) const { return table[p]; } + void clear() { std::memset(table, 0, sizeof(table)); } + + 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, Move m) { table[p][to] = 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;