Introduce piece_moved() to simplify common code
authorMarco Costalba <mcostalba@gmail.com>
Mon, 9 Jan 2012 21:34:00 +0000 (22:34 +0100)
committerMarco Costalba <mcostalba@gmail.com>
Mon, 9 Jan 2012 21:36:45 +0000 (22:36 +0100)
No functional change.

Signed-off-by: Marco Costalba <mcostalba@gmail.com>
src/movepick.cpp
src/position.cpp
src/position.h
src/search.cpp

index 9ada404b299bacc6c5c127c66eab4ce32a303987..8a7e9ae3c9f247a70e2947c7e552254d4d239bcc 100644 (file)
@@ -255,7 +255,7 @@ void MovePicker::score_captures() {
   {
       m = cur->move;
       cur->score =  PieceValueMidgame[pos.piece_on(to_sq(m))]
-                  - type_of(pos.piece_on(from_sq(m)));
+                  - type_of(pos.piece_moved(m));
 
       if (is_promotion(m))
           cur->score += PieceValueMidgame[Piece(promotion_piece_type(m))];
@@ -294,9 +294,9 @@ void MovePicker::score_evasions() {
           cur->score = seeScore - History::MaxValue; // Be sure we are at the bottom
       else if (pos.is_capture(m))
           cur->score =  PieceValueMidgame[pos.piece_on(to_sq(m))]
-                      - type_of(pos.piece_on(from_sq(m))) + History::MaxValue;
+                      - type_of(pos.piece_moved(m)) + History::MaxValue;
       else
-          cur->score = H.value(pos.piece_on(from_sq(m)), to_sq(m));
+          cur->score = H.value(pos.piece_moved(m), to_sq(m));
   }
 }
 
index d5a2822297bea80e2c315228b718e4610e940366..085b9a3b1312771512a0b8615678d27283e4c983 100644 (file)
@@ -641,7 +641,7 @@ bool Position::move_gives_check(Move m, const CheckInfo& ci) const {
 
   assert(is_ok(m));
   assert(ci.dcCandidates == discovered_check_candidates());
-  assert(color_of(piece_on(from_sq(m))) == side_to_move());
+  assert(color_of(piece_moved(m)) == side_to_move());
 
   Square from = from_sq(m);
   Square to = to_sq(m);
index 4583212c5eaa4384aa3311fca345fd34ed58c1da..634fbc0d42ab680ada6b6569a70adf8d0aec7c5f 100644 (file)
@@ -101,6 +101,7 @@ public:
 
   // The piece on a given square
   Piece piece_on(Square s) const;
+  Piece piece_moved(Move m) const;
   bool square_is_empty(Square s) const;
 
   // Side to move
@@ -278,6 +279,10 @@ inline Piece Position::piece_on(Square s) const {
   return board[s];
 }
 
+inline Piece Position::piece_moved(Move m) const {
+  return board[from_sq(m)];
+}
+
 inline bool Position::square_is_empty(Square s) const {
   return board[s] == NO_PIECE;
 }
index 3ed8ced0326e5ab162f3f70559a1bc80c8a07358..6f018d817b6c9b54d8c8e028803739466725d90c 100644 (file)
@@ -200,7 +200,7 @@ namespace {
   FORCE_INLINE bool is_dangerous(const Position& pos, Move m, bool captureOrPromotion) {
 
     // Test for a pawn pushed to 7th or a passed pawn move
-    if (type_of(pos.piece_on(from_sq(m))) == PAWN)
+    if (type_of(pos.piece_moved(m)) == PAWN)
     {
         Color c = pos.side_to_move();
         if (   relative_rank(c, to_sq(m)) == RANK_7
@@ -970,7 +970,7 @@ split_point_start: // At split points actual search starts from here
           // but fixing this made program slightly weaker.
           Depth predictedDepth = newDepth - reduction<PvNode>(depth, moveCount);
           futilityValue =  futilityBase + futility_margin(predictedDepth, moveCount)
-                         + H.gain(pos.piece_on(from_sq(move)), to_sq(move));
+                         + H.gain(pos.piece_moved(move), to_sq(move));
 
           if (futilityValue < beta)
           {
@@ -1154,13 +1154,13 @@ split_point_start: // At split points actual search starts from here
 
             // Increase history value of the cut-off move
             Value bonus = Value(int(depth) * int(depth));
-            H.add(pos.piece_on(from_sq(move)), to_sq(move), bonus);
+            H.add(pos.piece_moved(move), to_sq(move), bonus);
 
             // Decrease history of all the other played non-capture moves
             for (int i = 0; i < playedMoveCount - 1; i++)
             {
                 Move m = movesSearched[i];
-                H.add(pos.piece_on(from_sq(m)), to_sq(m), -bonus);
+                H.add(pos.piece_moved(m), to_sq(m), -bonus);
             }
         }
     }