1
0
Fork 0
mirror of https://github.com/sockspls/badfish synced 2025-04-29 16:23:09 +00:00

Small tidyup of TranspositionTable::store()

Hopefully without bugs this time!

Signed-off-by: Marco Costalba <mcostalba@gmail.com>
This commit is contained in:
Marco Costalba 2008-11-10 15:26:57 +01:00
parent 34b1d0538b
commit d89a03cc35

View file

@ -108,31 +108,31 @@ void TranspositionTable::store(const Position &pos, Value v, Depth d,
TTEntry *tte, *replace;
tte = replace = first_entry(pos);
for (int i = 0; i < 4; i++)
for (int i = 0; i < 4; i++, tte++)
{
if (!(tte+i)->key()) // still empty
if (!tte->key()) // still empty
{
*(tte+i) = TTEntry(pos.get_key(), v, type, d, m, generation);
*tte = TTEntry(pos.get_key(), v, type, d, m, generation);
writes++;
return;
}
if ((tte+i)->key() == pos.get_key()) // overwrite old
else if (tte->key() == pos.get_key()) // overwrite old
{
if (m == MOVE_NONE)
m = (tte+i)->move();
m = tte->move();
*(tte+i) = TTEntry(pos.get_key(), v, type, d, m, generation);
*tte = TTEntry(pos.get_key(), v, type, d, m, generation);
return;
}
if (i == 0) // replace would be a no-op in this common case
else if (i == 0) // replace would be a no-op in this common case
continue;
int c1 = (replace->generation() == generation ? 2 : 0);
int c2 = ((tte+i)->generation() == generation ? -2 : 0);
int c3 = ((tte+i)->depth() < replace->depth() ? 1 : 0);
int c2 = (tte->generation() == generation ? -2 : 0);
int c3 = (tte->depth() < replace->depth() ? 1 : 0);
if (c1 + c2 + c3 > 0)
replace = tte+i;
replace = tte;
}
*replace = TTEntry(pos.get_key(), v, type, d, m, generation);
writes++;