X-Git-Url: https://git.sesse.net/?p=stockfish;a=blobdiff_plain;f=src%2Fmaterial.cpp;h=cc90c2f9f620dbdc35d1571d1711e7f204cd42a5;hp=0098b39c949cc30fa6ddc1ef21196e209d7983c2;hb=d4b92ae9a094e1b388e3d70789a0db9a9c69cbdf;hpb=f200f3ccd2281deadecb6279fac59b16dea622d5 diff --git a/src/material.cpp b/src/material.cpp index 0098b39c..cc90c2f9 100644 --- a/src/material.cpp +++ b/src/material.cpp @@ -132,28 +132,8 @@ template<> const SFMap& EndgameFunctions::get() const { return maps.second; //// Functions //// -/// MaterialInfoTable c'tor and d'tor, called once by each thread - -MaterialInfoTable::MaterialInfoTable() { - - entries = new MaterialInfo[MaterialTableSize]; - funcs = new EndgameFunctions(); - - if (!entries || !funcs) - { - cerr << "Failed to allocate " << MaterialTableSize * sizeof(MaterialInfo) - << " bytes for material hash table." << endl; - exit(EXIT_FAILURE); - } - memset(entries, 0, MaterialTableSize * sizeof(MaterialInfo)); -} - -MaterialInfoTable::~MaterialInfoTable() { - - delete funcs; - delete [] entries; -} - +MaterialInfoTable::MaterialInfoTable() { funcs = new EndgameFunctions(); } +MaterialInfoTable::~MaterialInfoTable() { delete funcs; } /// MaterialInfoTable::game_phase() calculates the phase given the current /// position. Because the phase is strictly a function of the material, it @@ -181,8 +161,7 @@ Phase MaterialInfoTable::game_phase(const Position& pos) { MaterialInfo* MaterialInfoTable::get_material_info(const Position& pos) { Key key = pos.get_material_key(); - unsigned index = unsigned(key & (MaterialTableSize - 1)); - MaterialInfo* mi = entries + index; + MaterialInfo* mi = find(key); // If mi->key matches the position's material hash key, it means that we // have analysed this material configuration before, and we can simply