Re-enable TT.insert_pv()
authorJoona Kiiski <joona.kiiski@gmail.com>
Tue, 8 Dec 2009 17:19:13 +0000 (19:19 +0200)
committerMarco Costalba <mcostalba@gmail.com>
Wed, 9 Dec 2009 18:43:12 +0000 (19:43 +0100)
This time make sure that valuable TTentries are not overwritten.

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

index 7bacb89c87fe988e53dd504869b945921d148904..96a945e666ed66b8d54acca97791cd37f1d665c5 100644 (file)
@@ -743,7 +743,7 @@ namespace {
 
         // Write PV to transposition table, in case the relevant entries have
         // been overwritten during the search.
-        //TT.insert_pv(p, ss[0].pv);
+        TT.insert_pv(p, ss[0].pv);
 
         if (AbortSearch)
             break; // Value cannot be trusted. Break out immediately!
index 55aad112af3c252d6006265132e8cb657d70d5f6..a8aa1b6574604d48fb91a513a066e6dedbaec0ae 100644 (file)
@@ -208,7 +208,9 @@ void TranspositionTable::insert_pv(const Position& pos, Move pv[]) {
 
   for (int i = 0; pv[i] != MOVE_NONE; i++)
   {
-      store(p.get_key(), VALUE_NONE, VALUE_TYPE_NONE, Depth(-127*OnePly), pv[i]);
+      TTEntry *tte = retrieve(p.get_key());
+      if (!tte || tte->move() != pv[i])
+          store(p.get_key(), VALUE_NONE, VALUE_TYPE_NONE, Depth(-127*OnePly), pv[i]);
       p.do_move(pv[i], st);
   }
 }