X-Git-Url: https://git.sesse.net/?p=stockfish;a=blobdiff_plain;f=src%2Fevaluate.cpp;h=88ab5ff67f5ef079b76bd1d68fa2c95c4009ec9d;hp=59b605eca2665f12b40f4a816d71badc9fa6c449;hb=f83b899f39a0a1b48a604dccf704b2caaeb5b068;hpb=a75aa6035b1ac27a6a2a44f523ec2ffd011485d8;ds=sidebyside diff --git a/src/evaluate.cpp b/src/evaluate.cpp index 59b605ec..88ab5ff6 100644 --- a/src/evaluate.cpp +++ b/src/evaluate.cpp @@ -709,11 +709,19 @@ namespace { // King shelter if (relative_rank(us, s) <= RANK_4) { - Bitboard pawns = p.pawns(us) & this_and_neighboring_files_bb(s); - Rank r = square_rank(s); - for (int i = 1; i < 4; i++) - shelter += count_1s_8bit(shiftRowsDown(pawns, r+i*sign)) * (128>>i); - + // Shelter cache lookup + shelter = ei.pi->kingShelter(us, s); + if (shelter == -1) + { + shelter = 0; + Bitboard pawns = p.pawns(us) & this_and_neighboring_files_bb(s); + Rank r = square_rank(s); + for (int i = 1; i < 4; i++) + shelter += count_1s_8bit(shiftRowsDown(pawns, r+i*sign)) * (128>>i); + + // Cache shelter value in pawn info + ei.pi->setKingShelter(us, s, shelter); + } ei.mgValue += sign * Value(shelter); }