]> git.sesse.net Git - stockfish/blobdiff - src/evaluate.cpp
Document why we use per-thread pawn and material tables
[stockfish] / src / evaluate.cpp
index 86b37e3b045a63ae92ebe1b962d132f770b55555..25451da5211aef741986626c52552a5a2d7fdff9 100644 (file)
@@ -233,7 +233,9 @@ namespace {
   };
 
   // Pawn and material hash tables, indexed by the current thread id.
-  // Note that they will be initialized at 0 being global variables.
+  // We use per-thread tables so that once we get a pointer to an entry
+  // its life time is unlimited and we don't have to care about someone
+  // changing the entry under our feet.
   MaterialInfoTable* MaterialTable[MAX_THREADS];
   PawnInfoTable* PawnTable[MAX_THREADS];
 
@@ -1156,9 +1158,7 @@ namespace {
     assert(eg_value(v) > -VALUE_INFINITE && eg_value(v) < VALUE_INFINITE);
     assert(ph >= PHASE_ENDGAME && ph <= PHASE_MIDGAME);
 
-    Value eg = eg_value(v);
-    Value ev = Value((eg * int(sf)) / SCALE_FACTOR_NORMAL);
-
+    int ev = (eg_value(v) * int(sf)) / SCALE_FACTOR_NORMAL;
     int result = (mg_value(v) * int(ph) + ev * int(128 - ph)) / 128;
     return Value((result + GrainSize / 2) & ~(GrainSize - 1));
   }