X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=src%2Ftt.cpp;h=41fc33ff9ebba868927ce1de876ab42f512b2618;hb=ffdf63ff7c1fce40774aa8cff82b17c54155c6cb;hp=24e94c8008bd691c4045719f065359dd1ff3ee5a;hpb=40c863d41af5058a02f1de3423a000d801dcb08a;p=stockfish diff --git a/src/tt.cpp b/src/tt.cpp index 24e94c80..41fc33ff 100644 --- a/src/tt.cpp +++ b/src/tt.cpp @@ -26,11 +26,11 @@ TranspositionTable TT; // Our global transposition table -/// TranspositionTable::set_size() sets the size of the transposition table, +/// TranspositionTable::resize() sets the size of the transposition table, /// measured in megabytes. Transposition table consists of a power of 2 number /// of clusters and each cluster consists of ClusterSize number of TTEntry. -void TranspositionTable::set_size(uint64_t mbSize) { +void TranspositionTable::resize(uint64_t mbSize) { assert(msb((mbSize << 20) / sizeof(TTEntry)) < 32); @@ -70,12 +70,15 @@ void TranspositionTable::clear() { const TTEntry* TranspositionTable::probe(const Key key) const { - const TTEntry* tte = first_entry(key); + TTEntry* tte = first_entry(key); uint32_t key32 = key >> 32; for (unsigned i = 0; i < ClusterSize; ++i, ++tte) - if (tte->key() == key32) + if (tte->key32 == key32) + { + tte->generation8 = generation; // Refresh return tte; + } return NULL; } @@ -99,7 +102,7 @@ void TranspositionTable::store(const Key key, Value v, Bound b, Depth d, Move m, for (unsigned i = 0; i < ClusterSize; ++i, ++tte) { - if (!tte->key() || tte->key() == key32) // Empty or overwrite old + if (!tte->key32 || tte->key32 == key32) // Empty or overwrite old { if (!m) m = tte->move(); // Preserve any existing ttMove @@ -109,9 +112,9 @@ void TranspositionTable::store(const Key key, Value v, Bound b, Depth d, Move m, } // Implement replace strategy - c1 = (replace->generation() == generation ? 2 : 0); - c2 = (tte->generation() == generation || tte->bound() == BOUND_EXACT ? -2 : 0); - c3 = (tte->depth() < replace->depth() ? 1 : 0); + c1 = (replace->generation8 == generation ? 2 : 0); + c2 = (tte->generation8 == generation || tte->bound() == BOUND_EXACT ? -2 : 0); + c3 = (tte->depth16 < replace->depth16 ? 1 : 0); if (c1 + c2 + c3 > 0) replace = tte;