mirror of
https://github.com/HChaZZY/Stockfish.git
synced 2025-12-19 00:26:33 +08:00
Micro-optimize color_of()
In almost all cases we already know in advance that color_of() argument is different from NO_PIECE. So avoid the check for NO_PIECE in color_of() and test at caller site in the very few places where this case could occur. As a nice side effect, this patch fixes a (bogus) warning under some versions of gcc. No functional change. Signed-off-by: Marco Costalba <mcostalba@gmail.com>
This commit is contained in:
@@ -561,7 +561,7 @@ bool Position::is_pseudo_legal(const Move m) const {
|
||||
return false;
|
||||
|
||||
// The destination square cannot be occupied by a friendly piece
|
||||
if (color_of(piece_on(to)) == us)
|
||||
if (piece_on(to) != NO_PIECE && color_of(piece_on(to)) == us)
|
||||
return false;
|
||||
|
||||
// Handle the special case of a pawn move
|
||||
@@ -587,7 +587,7 @@ bool Position::is_pseudo_legal(const Move m) const {
|
||||
case DELTA_SE:
|
||||
// Capture. The destination square must be occupied by an enemy
|
||||
// piece (en passant captures was handled earlier).
|
||||
if (color_of(piece_on(to)) != them)
|
||||
if (piece_on(to) == NO_PIECE || color_of(piece_on(to)) != them)
|
||||
return false;
|
||||
|
||||
// From and to files must be one file apart, avoids a7h5
|
||||
@@ -772,7 +772,7 @@ void Position::do_move(Move m, StateInfo& newSt, const CheckInfo& ci, bool moveI
|
||||
PieceType capture = type_of(m) == ENPASSANT ? PAWN : type_of(piece_on(to));
|
||||
|
||||
assert(color_of(piece) == us);
|
||||
assert(color_of(piece_on(to)) != us);
|
||||
assert(piece_on(to) == NO_PIECE || color_of(piece_on(to)) == them);
|
||||
assert(capture != KING);
|
||||
|
||||
if (capture)
|
||||
|
||||
Reference in New Issue
Block a user