X-Git-Url: https://git.sesse.net/?p=stockfish;a=blobdiff_plain;f=src%2Ftt.cpp;h=6ee63138d15497851843ce114108cddba262151e;hp=0b4a59de55915962e7ed9409ae462be2556366f3;hb=d4763424d2728fe2dfd0a6fe747666feb6a2fdbb;hpb=09bef14c76e119103cc1a9404cbde7e249205deb diff --git a/src/tt.cpp b/src/tt.cpp index 0b4a59de..6ee63138 100644 --- a/src/tt.cpp +++ b/src/tt.cpp @@ -63,11 +63,17 @@ void TranspositionTable::resize(size_t mbSize) { Threads.main()->wait_for_search_finished(); - clusterCount = mbSize * 1024 * 1024 / sizeof(Cluster); + if (mem) + aligned_ttmem_free(mem); - free(mem); - mem = malloc(clusterCount * sizeof(Cluster) + CacheLineSize - 1); + if (!mbSize) + { + mem = nullptr; + return; + } + clusterCount = mbSize * 1024 * 1024 / sizeof(Cluster); + table = static_cast(aligned_ttmem_alloc(clusterCount * sizeof(Cluster), mem)); if (!mem) { std::cerr << "Failed to allocate " << mbSize @@ -75,7 +81,6 @@ void TranspositionTable::resize(size_t mbSize) { exit(EXIT_FAILURE); } - table = (Cluster*)((uintptr_t(mem) + CacheLineSize - 1) & ~(CacheLineSize - 1)); clear(); } @@ -150,9 +155,9 @@ TTEntry* TranspositionTable::probe(const Key key, bool& found) const { int TranspositionTable::hashfull() const { int cnt = 0; - for (int i = 0; i < 1000 / ClusterSize; ++i) + for (int i = 0; i < 1000; ++i) for (int j = 0; j < ClusterSize; ++j) cnt += (table[i].entry[j].genBound8 & 0xF8) == generation8; - return cnt * 1000 / (ClusterSize * (1000 / ClusterSize)); + return cnt / ClusterSize; }