Introduce and use TranspositionTable::refresh()

No functional change.

Signed-off-by: Marco Costalba <mcostalba@gmail.com>
This commit is contained in:
Marco Costalba
2010-10-30 15:22:10 +01:00
parent ff95bbd41f
commit c416133e2f
2 changed files with 15 additions and 9 deletions

View File

@@ -64,6 +64,7 @@ public:
staticValue = int16_t(statV);
staticValueMargin = int16_t(kd);
}
void set_generation(int g) { data = move() | (type() << 21) | (g << 23); }
uint32_t key() const { return key32; }
Depth depth() const { return Depth(depth16); }
@@ -114,6 +115,7 @@ public:
TTEntry* retrieve(const Key posKey) const;
void new_search();
TTEntry* first_entry(const Key posKey) const;
void refresh(const TTEntry* tte) const;
private:
size_t size;
@@ -133,4 +135,13 @@ inline TTEntry* TranspositionTable::first_entry(const Key posKey) const {
return entries[uint32_t(posKey) & (size - 1)].data;
}
/// TranspositionTable::refresh updates the 'generation' value of the TTEntry
/// to avoid aging. Normally called after a TT hit, before to return.
inline void TranspositionTable::refresh(const TTEntry* tte) const {
const_cast<TTEntry*>(tte)->set_generation(generation);
}
#endif // !defined(TT_H_INCLUDED)