X-Git-Url: https://git.sesse.net/?p=stockfish;a=blobdiff_plain;f=src%2Fpawns.cpp;h=6fc2f2feb9479cf631366c6d03ca5afad5971999;hp=e3201081635be80e9aaa5a3520b13ff90cf3d21e;hb=91a27663084ea9be4918ba028aa2b151bc0f4e1c;hpb=efeb37c33f15a903dbe5706529a7a26511e9ca58 diff --git a/src/pawns.cpp b/src/pawns.cpp index e3201081..6fc2f2fe 100644 --- a/src/pawns.cpp +++ b/src/pawns.cpp @@ -81,27 +81,6 @@ namespace { //// Functions //// -/// PawnInfoTable c'tor and d'tor instantiated one each thread - -PawnInfoTable::PawnInfoTable() { - - entries = new PawnInfo[PawnTableSize]; - - if (!entries) - { - std::cerr << "Failed to allocate " << (PawnTableSize * sizeof(PawnInfo)) - << " bytes for pawn hash table." << std::endl; - exit(EXIT_FAILURE); - } - memset(entries, 0, PawnTableSize * sizeof(PawnInfo)); -} - - -PawnInfoTable::~PawnInfoTable() { - - delete [] entries; -} - /// PawnInfoTable::get_pawn_info() takes a position object as input, computes /// a PawnInfo object, and returns a pointer to it. The result is also stored @@ -113,8 +92,7 @@ PawnInfo* PawnInfoTable::get_pawn_info(const Position& pos) const { assert(pos.is_ok()); Key key = pos.get_pawn_key(); - unsigned index = unsigned(key & (PawnTableSize - 1)); - PawnInfo* pi = entries + index; + PawnInfo* pi = find(key); // If pi->key matches the position's pawn hash key, it means that we // have analysed this pawn structure before, and we can simply return @@ -158,7 +136,7 @@ Score PawnInfoTable::evaluate_pawns(const Position& pos, Bitboard ourPawns, // Loop through all pawns of the current color and score each pawn while ((s = *ptr++) != SQ_NONE) { - assert(pos.piece_on(s) == piece_of_color_and_type(Us, PAWN)); + assert(pos.piece_on(s) == make_piece(Us, PAWN)); f = square_file(s); r = square_rank(s);