Permalink
Browse files

Retire Position::move_is_legal()

Use the new contains() method of struct MoveList

No functional change.
  • Loading branch information...
1 parent 423c6d8 commit 3b49aeb4f22569c2b5d5ca830858c4dd584fae7f @mcostalba committed Dec 25, 2012
Showing with 10 additions and 19 deletions.
  1. +4 −0 src/movegen.h
  2. +1 −1 src/notation.cpp
  3. +1 −15 src/position.cpp
  4. +0 −1 src/position.h
  5. +4 −2 src/search.cpp
View
@@ -46,6 +46,10 @@ struct MoveList {
bool end() const { return cur == last; }
Move move() const { return cur->move; }
size_t size() const { return last - mlist; }
+ bool contains(Move m) const {
+ for (const MoveStack* it(mlist) ; it != last; ++it) if (it->move == m) return true;
+ return false;
+ }
private:
MoveStack mlist[MAX_MOVES];
View
@@ -108,7 +108,7 @@ const string move_to_san(Position& pos, Move m) {
if (m == MOVE_NULL)
return "(null)";
- assert(pos.move_is_legal(m));
+ assert(MoveList<LEGAL>(pos).contains(m));
Bitboard attackers;
bool ambiguousMove, ambiguousFile, ambiguousRank;
View
@@ -521,20 +521,6 @@ bool Position::pl_move_is_legal(Move m, Bitboard pinned) const {
}
-/// Position::move_is_legal() takes a random move and tests whether the move
-/// is legal. This version is not very fast and should be used only in non
-/// time-critical paths.
-
-bool Position::move_is_legal(const Move m) const {
-
- for (MoveList<LEGAL> ml(*this); !ml.end(); ++ml)
- if (ml.move() == m)
- return true;
-
- return false;
-}
-
-
/// Position::is_pseudo_legal() takes a random move and tests whether the move
/// is pseudo legal. It is used to validate moves from TT that can be corrupted
/// due to SMP concurrent access or hash position key aliasing.
@@ -548,7 +534,7 @@ bool Position::is_pseudo_legal(const Move m) const {
// Use a slower but simpler function for uncommon cases
if (type_of(m) != NORMAL)
- return move_is_legal(m);
+ return MoveList<LEGAL>(*this).contains(m);
// Is not a promotion, so promotion piece must be empty
if (promotion_type(m) - 2 != NO_PIECE_TYPE)
View
@@ -137,7 +137,6 @@ class Position {
// Properties of moves
bool move_gives_check(Move m, const CheckInfo& ci) const;
- bool move_is_legal(const Move m) const;
bool pl_move_is_legal(Move m, Bitboard pinned) const;
bool is_pseudo_legal(const Move m) const;
bool is_capture(Move m) const;
View
@@ -1540,7 +1540,8 @@ void RootMove::extract_pv_from_tt(Position& pos) {
do {
pv.push_back(m);
- assert(pos.move_is_legal(pv[ply]));
+ assert(MoveList<LEGAL>(pos).contains(pv[ply]));
+
pos.do_move(pv[ply++], *st++);
tte = TT.probe(pos.key());
@@ -1572,7 +1573,8 @@ void RootMove::insert_pv_in_tt(Position& pos) {
if (!tte || tte->move() != pv[ply]) // Don't overwrite correct entries
TT.store(pos.key(), VALUE_NONE, BOUND_NONE, DEPTH_NONE, pv[ply]);
- assert(pos.move_is_legal(pv[ply]));
+ assert(MoveList<LEGAL>(pos).contains(pv[ply]));
+
pos.do_move(pv[ply++], *st++);
} while (pv[ply] != MOVE_NONE);

0 comments on commit 3b49aeb

Please sign in to comment.