mirror of
https://github.com/HChaZZY/Stockfish.git
synced 2025-12-21 01:27:16 +08:00
Use a union to fast and simply backup info in do_move()
This nice union trick let us optimize the speed and remove the now unuseful backup() and restore() functions. Signed-off-by: Marco Costalba <mcostalba@gmail.com>
This commit is contained in:
@@ -240,8 +240,6 @@ public:
|
||||
bool square_is_weak(Square s, Color c) const;
|
||||
|
||||
// Doing and undoing moves
|
||||
void backup(UndoInfo &u) const;
|
||||
void restore(const UndoInfo &u);
|
||||
void do_move(Move m, UndoInfo &u);
|
||||
void undo_move(Move m, const UndoInfo &u);
|
||||
void do_null_move(UndoInfo &u);
|
||||
@@ -345,13 +343,19 @@ private:
|
||||
File initialKFile, initialKRFile, initialQRFile;
|
||||
|
||||
// Info backed up in do_move()
|
||||
mutable Bitboard pinners[2], pinned[2], dcCandidates[2];
|
||||
Bitboard checkersBB;
|
||||
Key key, pawnKey, materialKey;
|
||||
int castleRights, rule50;
|
||||
Square epSquare;
|
||||
Move lastMove;
|
||||
Value mgValue, egValue;
|
||||
union {
|
||||
UndoInfo undoInfoUnion;
|
||||
struct { // Must have the same layout of UndoInfo
|
||||
mutable Bitboard pinners[2], pinned[2], dcCandidates[2];
|
||||
Bitboard checkersBB;
|
||||
Key key, pawnKey, materialKey;
|
||||
int castleRights, rule50;
|
||||
Square epSquare;
|
||||
Move lastMove;
|
||||
Value mgValue, egValue;
|
||||
PieceType capture;
|
||||
};
|
||||
};
|
||||
|
||||
// Static variables
|
||||
static int castleRightsMask[64];
|
||||
|
||||
Reference in New Issue
Block a user