mirror of
https://github.com/HChaZZY/Stockfish.git
synced 2025-12-21 01:27:16 +08:00
Retire TTCluster and simplify TT
Also some renaming while there. No functional change.
This commit is contained in:
36
src/tt.cpp
36
src/tt.cpp
@@ -25,33 +25,21 @@
|
||||
|
||||
TranspositionTable TT; // Our global transposition table
|
||||
|
||||
TranspositionTable::TranspositionTable() {
|
||||
|
||||
size = generation = 0;
|
||||
entries = NULL;
|
||||
}
|
||||
|
||||
TranspositionTable::~TranspositionTable() {
|
||||
|
||||
delete [] entries;
|
||||
}
|
||||
|
||||
|
||||
/// TranspositionTable::set_size() sets the size of the transposition table,
|
||||
/// measured in megabytes. Transposition table consists of a power of 2 number of
|
||||
/// TTCluster and each cluster consists of ClusterSize number of TTEntries. Each
|
||||
/// non-empty entry contains information of exactly one position.
|
||||
/// measured in megabytes. Transposition table consists of a power of 2 number
|
||||
/// of clusters and each cluster consists of ClusterSize number of TTEntry.
|
||||
|
||||
void TranspositionTable::set_size(size_t mbSize) {
|
||||
|
||||
size_t newSize = 1ULL << msb((mbSize << 20) / sizeof(TTCluster));
|
||||
size_t newSize = 1ULL << msb((mbSize << 20) / sizeof(TTEntry[ClusterSize]));
|
||||
|
||||
if (newSize == size)
|
||||
return;
|
||||
|
||||
size = newSize;
|
||||
delete [] entries;
|
||||
entries = new (std::nothrow) TTCluster[size];
|
||||
entries = new (std::nothrow) TTEntry[size * ClusterSize];
|
||||
|
||||
if (!entries)
|
||||
{
|
||||
@@ -70,7 +58,7 @@ void TranspositionTable::set_size(size_t mbSize) {
|
||||
|
||||
void TranspositionTable::clear() {
|
||||
|
||||
memset(entries, 0, size * sizeof(TTCluster));
|
||||
memset(entries, 0, size * sizeof(TTEntry[ClusterSize]));
|
||||
}
|
||||
|
||||
|
||||
@@ -90,7 +78,7 @@ void TranspositionTable::store(const Key key, Value v, Bound t, Depth d, Move m,
|
||||
|
||||
tte = replace = first_entry(key);
|
||||
|
||||
for (int i = 0; i < ClusterSize; i++, tte++)
|
||||
for (unsigned i = 0; i < ClusterSize; i++, tte++)
|
||||
{
|
||||
if (!tte->key() || tte->key() == key32) // Empty or overwrite old
|
||||
{
|
||||
@@ -123,19 +111,9 @@ TTEntry* TranspositionTable::probe(const Key key) const {
|
||||
TTEntry* tte = first_entry(key);
|
||||
uint32_t key32 = key >> 32;
|
||||
|
||||
for (int i = 0; i < ClusterSize; i++, tte++)
|
||||
for (unsigned i = 0; i < ClusterSize; i++, tte++)
|
||||
if (tte->key() == key32)
|
||||
return tte;
|
||||
|
||||
return NULL;
|
||||
}
|
||||
|
||||
|
||||
/// TranspositionTable::new_search() is called at the beginning of every new
|
||||
/// search. It increments the "generation" variable, which is used to
|
||||
/// distinguish transposition table entries from previous searches from
|
||||
/// entries from the current search.
|
||||
|
||||
void TranspositionTable::new_search() {
|
||||
generation++;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user