X-Git-Url: https://git.sesse.net/?p=stockfish;a=blobdiff_plain;f=src%2Ftt.cpp;h=328b13e66303ea2dc24361f0a247143ae9fc028b;hp=146e591f4462f5cb612b9a7e18d6dec190f8c5c6;hb=61f41a057dd84a38e5cc9c58b37a30bfa00e253a;hpb=7c93b171cba0ff58cb679846cde82e6564b5b45b diff --git a/src/tt.cpp b/src/tt.cpp index 146e591f..328b13e6 100644 --- a/src/tt.cpp +++ b/src/tt.cpp @@ -108,7 +108,13 @@ void TranspositionTable::store(const Position &pos, Value v, Depth d, tte = replace = entries + int(pos.get_key() & (size - 1)) * 4; for (int i = 0; i < 4; i++) { - if ((tte+i)->key() == pos.get_key()) + if (!(tte+i)->key()) // still empty + { + *(tte+i) = TTEntry(pos.get_key(), v, type, d, m, generation); + writes++; + return; + } + if ((tte+i)->key() == pos.get_key()) // overwrite old { if (m == MOVE_NONE) m = (tte+i)->move(); @@ -116,12 +122,12 @@ void TranspositionTable::store(const Position &pos, Value v, Depth d, *(tte+i) = TTEntry(pos.get_key(), v, type, d, m, generation); return; } - if (replace->generation() == generation) - { - if ((tte+i)->generation() != generation || (tte+i)->depth() < replace->depth()) - replace = tte+i; - } - else if ((tte+i)->generation() != generation && (tte+i)->depth() < replace->depth()) + if ( i == 0 // already is (replace == tte+i), common case + || replace->generation() < (tte+i)->generation()) + continue; + + if ( replace->generation() > (tte+i)->generation() + || (tte+i)->depth() < replace->depth()) replace = tte+i; } *replace = TTEntry(pos.get_key(), v, type, d, m, generation);