/// current search and t2 is from a previous search, or if the depth of t1
/// is bigger than the depth of t2.
-void TranspositionTable::store(const Position &pos, Value v, Depth d,
+TTEntry* TranspositionTable::store(const Position &pos, Value v, Depth d,
Move m, ValueType type) {
TTEntry *tte, *replace;
m = tte->move();
*tte = TTEntry(pos.get_key(), v, type, d, m, generation);
- return;
+ return tte;
}
else if (i == 0) // replace would be a no-op in this common case
continue;
}
*replace = TTEntry(pos.get_key(), v, type, d, m, generation);
writes++;
+ return replace;
}
TTEntry::TTEntry(Key k, Value v, ValueType t, Depth d, Move m,
int generation) :
- key_ (k), data((m & 0x7FFFF) | (t << 20) | (generation << 23)),
+ key_ (k), data((m & 0x1FFFF) | (t << 20) | (generation << 23)),
value_(int16_t(v)), depth_(int16_t(d)) {}