Introduce SimpleHash class

And use it for pawns and material infos.

No functional change.

Signed-off-by: Marco Costalba <mcostalba@gmail.com>
This commit is contained in:
Marco Costalba
2011-01-07 10:34:16 +01:00
parent 803c8e0be3
commit 0ddf84870a
5 changed files with 47 additions and 71 deletions

View File

@@ -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