Use piece_list to scan the pawns in evaluate_pawns()
authorMarco Costalba <mcostalba@gmail.com>
Sat, 10 Oct 2009 06:52:34 +0000 (08:52 +0200)
committerMarco Costalba <mcostalba@gmail.com>
Sat, 10 Oct 2009 13:56:10 +0000 (14:56 +0100)
No functional change and small speed increase.

Signed-off-by: Marco Costalba <mcostalba@gmail.com>
src/pawns.cpp

index 91f8ed752004cb7a48760f71fb0c4d0679617545..e97dd6a4a9763f894c913f23c7be08576436ccd0 100644 (file)
@@ -218,7 +218,7 @@ PawnInfoTable::Values PawnInfoTable::evaluate_pawns(const Position& pos, Bitboar
   int bonus;
   Value mgValue = Value(0);
   Value egValue = Value(0);
-  Bitboard pawns = ourPawns;
+  const Square* ptr = pos.piece_list_begin(Us, PAWN);
 
   // Initialize pawn storm scores by giving bonuses for open files
   for (File f = FILE_A; f <= FILE_H; f++)
@@ -230,9 +230,8 @@ PawnInfoTable::Values PawnInfoTable::evaluate_pawns(const Position& pos, Bitboar
       }
 
   // Loop through all pawns of the current color and score each pawn
-  while (pawns)
+  while ((s = *ptr++) != SQ_NONE)
   {
-      s = pop_1st_bit(&pawns);
       f = square_file(s);
       r = square_rank(s);
 
@@ -392,7 +391,7 @@ PawnInfoTable::Values PawnInfoTable::evaluate_pawns(const Position& pos, Bitboar
           mgValue += CandidateMidgameBonus[relative_rank(Us, s)];
           egValue += CandidateEndgameBonus[relative_rank(Us, s)];
       }
-  } // while (pawns)
+  }
 
   return Values(mgValue, egValue);
 }