Revert hidden checkers rework

It is slower the previous uglier but faster code.

So completely restore old one for now :-(

Just leave in the rework of status backup/restore in do_move().

We will cherry pick bits of previous work once we are sure
we have fixed the performance regression.

Signed-off-by: Marco Costalba <mcostalba@gmail.com>
This commit is contained in:
Marco Costalba
2009-03-02 16:20:00 +01:00
parent 9b6b9e67fe
commit c02613860a
7 changed files with 111 additions and 201 deletions

View File

@@ -79,7 +79,7 @@ enum CastleRights {
/// must be passed as a parameter.
struct StateInfo {
Bitboard pinners[2], pinned[2], dcCandidates[2], checkersBB;
Bitboard checkersBB;
Key key, pawnKey, materialKey;
int castleRights, rule50;
Square epSquare;
@@ -219,7 +219,9 @@ public:
// Properties of moves
bool pl_move_is_legal(Move m) const;
bool pl_move_is_legal(Move m, Bitboard pinned) const;
bool move_is_check(Move m) const;
bool move_is_check(Move m, Bitboard dcCandidates) const;
bool move_is_capture(Move m) const;
bool move_is_deep_pawn_push(Move m) const;
bool move_is_pawn_push_to_7th(Move m) const;
@@ -242,6 +244,7 @@ public:
// Doing and undoing moves
void setStartState(const StateInfo& st);
void do_move(Move m, StateInfo& st);
void do_move(Move m, StateInfo& st, Bitboard dcCandidates);
void undo_move(Move m);
void do_null_move(StateInfo& st);
void undo_null_move();
@@ -289,11 +292,6 @@ public:
private:
enum {
Pinned = 1,
DcCandidates = 2
};
// Initialization helper functions (used while setting up a position)
void clear();
void put_piece(Piece p, Square s);
@@ -309,9 +307,6 @@ private:
void undo_promotion_move(Move m);
void undo_ep_move(Move m);
void find_checkers();
void find_hidden_checks(Color us, unsigned int types);
void find_hidden_checks();
void update_hidden_checks(Square from, Square to);
template<PieceType Piece>
void update_checkers(Bitboard* pCheckersBB, Square ksq, Square from, Square to, Bitboard dcCandidates);
@@ -566,19 +561,6 @@ inline Bitboard Position::piece_attacks<KING>(Square s) const {
return StepAttackBB[KING][s];
}
inline Bitboard Position::pinned_pieces(Color c) const {
return st->pinned[c];
}
inline Bitboard Position::pinned_pieces(Color c, Bitboard& p) const {
p = st->pinners[c];
return st->pinned[c];
}
inline Bitboard Position::discovered_check_candidates(Color c) const {
return st->dcCandidates[c];
}
inline Bitboard Position::checkers() const {
return st->checkersBB;
}