From: Marco Costalba Date: Mon, 22 Nov 2010 17:40:36 +0000 (+0100) Subject: Fix 'generation' type to uint8_t X-Git-Url: https://git.sesse.net/?p=stockfish;a=commitdiff_plain;h=200fc56e9ce2ce5b879b0cae8268703f041c40b2 Fix 'generation' type to uint8_t When we store this value in TT we cut this to 9 bits, so we need a smaller variable otherwise comparisons like: replace->generation() == generation Are always false if generation is bigger then the maximum TT storable value. This fixes a very nasty and difficult to spot bug (2 weeks for regression hunting). Signed-off-by: Marco Costalba --- diff --git a/src/movepick.cpp b/src/movepick.cpp index 264d941f..2e8eb665 100644 --- a/src/movepick.cpp +++ b/src/movepick.cpp @@ -51,10 +51,10 @@ namespace { }; CACHE_LINE_ALIGNMENT - const int MainSearchPhaseTable[] = { PH_TT_MOVES, PH_GOOD_CAPTURES, PH_KILLERS, PH_NONCAPTURES, PH_BAD_CAPTURES, PH_STOP}; - const int EvasionsPhaseTable[] = { PH_TT_MOVES, PH_EVASIONS, PH_STOP}; - const int QsearchWithChecksPhaseTable[] = { PH_TT_MOVES, PH_QCAPTURES, PH_QCHECKS, PH_STOP}; - const int QsearchWithoutChecksPhaseTable[] = { PH_TT_MOVES, PH_QCAPTURES, PH_STOP}; + const uint8_t MainSearchPhaseTable[] = { PH_TT_MOVES, PH_GOOD_CAPTURES, PH_KILLERS, PH_NONCAPTURES, PH_BAD_CAPTURES, PH_STOP}; + const uint8_t EvasionsPhaseTable[] = { PH_TT_MOVES, PH_EVASIONS, PH_STOP}; + const uint8_t QsearchWithChecksPhaseTable[] = { PH_TT_MOVES, PH_QCAPTURES, PH_QCHECKS, PH_STOP}; + const uint8_t QsearchWithoutChecksPhaseTable[] = { PH_TT_MOVES, PH_QCAPTURES, PH_STOP}; } diff --git a/src/movepick.h b/src/movepick.h index c656deaf..c71ff1a9 100644 --- a/src/movepick.h +++ b/src/movepick.h @@ -64,7 +64,7 @@ private: Bitboard pinned; MoveStack ttMoves[2], killers[2]; int badCaptureThreshold, phase; - const int* phasePtr; + const uint8_t* phasePtr; MoveStack *curMove, *lastMove, *lastGoodNonCapture, *badCaptures; MoveStack moves[MOVES_MAX]; }; diff --git a/src/tt.h b/src/tt.h index ff1cb910..ee10b3f0 100644 --- a/src/tt.h +++ b/src/tt.h @@ -120,7 +120,7 @@ public: private: size_t size; TTCluster* entries; - int generation; + uint8_t generation; // To properly compare, size must be smaller then TT stored value }; extern TranspositionTable TT;