/// TranspositionTable::set_size sets the size of the transposition table,
/// measured in megabytes.
-void TranspositionTable::set_size(unsigned mbSize) {
+void TranspositionTable::set_size(size_t mbSize) {
- assert(mbSize >= 4 && mbSize <= 4096);
-
- unsigned newSize = 1024;
+ size_t newSize = 1024;
// We store a cluster of ClusterSize number of TTEntry for each position
// and newSize is the maximum number of storable positions.
for (int i = 0; pv[i] != MOVE_NONE; i++)
{
- store(p.get_key(), VALUE_NONE, VALUE_TYPE_NONE, Depth(-127*OnePly), pv[i]);
+ TTEntry *tte = retrieve(p.get_key());
+ if (!tte || tte->move() != pv[i])
+ store(p.get_key(), VALUE_NONE, VALUE_TYPE_NONE, Depth(-127*OnePly), pv[i]);
p.do_move(pv[i], st);
}
}