-void TranspositionTable::store(const Position &pos, Value v, Depth d,
- Move m, ValueType type) {
- TTEntry *tte, *replace;
-
- tte = replace = entries + int(pos.get_key() & (size - 1)) * 4;
- for(int i = 0; i < 4; i++) {
- if((tte+i)->key() == pos.get_key()) {
- if(m == MOVE_NONE)
- m = (tte+i)->move();
- *(tte+i) = TTEntry(pos.get_key(), v, type, d, m, generation);
- return;
- }
- if(replace->generation() == generation) {
- if((tte+i)->generation() != generation ||
- (tte+i)->depth() < replace->depth())
- replace = tte+i;
- }
- else if((tte+i)->generation() != generation &&
- (tte+i)->depth() < replace->depth())
- replace = tte+i;
- }
- *replace = TTEntry(pos.get_key(), v, type, d, m, generation);
- writes++;