1
0
Fork 0
mirror of https://github.com/sockspls/badfish synced 2025-04-30 08:43:09 +00:00

Skip castle rights update when not needed

Micro optimization in do_move(), a quick check
avoid us to update castle rights in almost 90%
of cases.

No functional change.

Signed-off-by: Marco Costalba <mcostalba@gmail.com>
This commit is contained in:
Marco Costalba 2009-06-18 15:22:39 +02:00
parent 8acb1d7e4d
commit 190f88e532

View file

@ -796,11 +796,14 @@ void Position::do_move(Move m, StateInfo& newSt, Bitboard dcCandidates) {
pieceList[us][piece][index[from]] = to;
index[to] = index[from];
// Update castle rights
st->key ^= zobCastle[st->castleRights];
st->castleRights &= castleRightsMask[from];
st->castleRights &= castleRightsMask[to];
st->key ^= zobCastle[st->castleRights];
// Update castle rights, try to shortcut a common case
if ((castleRightsMask[from] & castleRightsMask[to]) != ALL_CASTLES)
{
st->key ^= zobCastle[st->castleRights];
st->castleRights &= castleRightsMask[from];
st->castleRights &= castleRightsMask[to];
st->key ^= zobCastle[st->castleRights];
}
// Update checkers bitboard, piece must be already moved
st->checkersBB = EmptyBoardBB;