X-Git-Url: https://git.sesse.net/?p=stockfish;a=blobdiff_plain;f=src%2Ftt.cpp;h=26791809f8890bb6aed2e492838b9a9473b2aaf2;hp=04cd7357c336af960f6b8ae8ee26bec2db79cd79;hb=e7cfa5d020efb5a0ad2521afc7b886f3b2d3e6b3;hpb=8c4f0ffa1d1cc6952874ee30fff9f826646b1aeb diff --git a/src/tt.cpp b/src/tt.cpp index 04cd7357..26791809 100644 --- a/src/tt.cpp +++ b/src/tt.cpp @@ -29,6 +29,28 @@ TranspositionTable TT; // Our global transposition table +/// TTEntry::save saves a TTEntry +void TTEntry::save(Key k, Value v, Bound b, Depth d, Move m, Value ev) { + + assert(d / ONE_PLY * ONE_PLY == d); + + // Preserve any existing move for the same position + if (m || (k >> 48) != key16) + move16 = (uint16_t)m; + + // Overwrite less valuable entries + if ( (k >> 48) != key16 + || d / ONE_PLY > depth8 - 4 + || b == BOUND_EXACT) + { + key16 = (uint16_t)(k >> 48); + value16 = (int16_t)v; + eval16 = (int16_t)ev; + genBound8 = (uint8_t)(TT.generation8 | b); + depth8 = (int8_t)(d / ONE_PLY); + } +} + /// TranspositionTable::resize() sets the size of the transposition table, /// measured in megabytes. Transposition table consists of a power of 2 number