From bf6bc1b37b8391dcd266f525344653f8c5dbcdd8 Mon Sep 17 00:00:00 2001 From: mstembera Date: Thu, 20 Aug 2015 20:24:37 +0100 Subject: [PATCH] Better document entry age calculation used in TT replace. No functional change. Resolves #401 Resolves #400 --- src/tt.cpp | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/tt.cpp b/src/tt.cpp index a9f8f037..f9674601 100644 --- a/src/tt.cpp +++ b/src/tt.cpp @@ -87,6 +87,10 @@ TTEntry* TranspositionTable::probe(const Key key, bool& found) const { // Find an entry to be replaced according to the replacement strategy TTEntry* replace = tte; for (int i = 1; i < ClusterSize; ++i) + // Due to our packed storage format for generation and its cyclic + // nature we add 259 (256 is the modulus plus 3 to keep the lowest + // two bound bits from affecting the result) to calculate the entry + // age correctly even after generation8 overflows into the next cycle. if ( replace->depth8 - ((259 + generation8 - replace->genBound8) & 0xFC) * 2 * ONE_PLY > tte[i].depth8 - ((259 + generation8 - tte[i].genBound8) & 0xFC) * 2 * ONE_PLY) replace = &tte[i]; -- 2.39.2