]> git.sesse.net Git - stockfish/blobdiff - src/bitbase.cpp
Contempt factor: use DrawValue also in case of stealmates
[stockfish] / src / bitbase.cpp
index 9322e537f2837cd2bf2ba6588bda42baa0e3b524..5f0438a3846c4bbd58a0136c41ff9db24d888b82 100644 (file)
@@ -62,16 +62,16 @@ namespace {
 }
 
 
-uint32_t probe_kpk_bitbase(Square wksq, Square wpsq, Square bksq, Color stm) {
+uint32_t Bitbases::probe_kpk(Square wksq, Square wpsq, Square bksq, Color stm) {
 
   int idx = index(wksq, bksq, wpsq, stm);
   return KPKBitbase[idx / 32] & (1 << (idx & 31));
 }
 
 
-void kpk_bitbase_init() {
+void Bitbases::init_kpk() {
 
-  Result db[IndexMax];
+  Result* db = new Result[IndexMax]; // Avoid to hit stack limit on some platforms
   KPKPosition pos;
   int idx, bit, repeat = 1;
 
@@ -90,6 +90,8 @@ void kpk_bitbase_init() {
       for (bit = 0; bit < 32; bit++)
           if (db[32 * idx + bit] == WIN)
               KPKBitbase[idx] |= 1 << bit;
+
+  delete [] db;
 }
 
 
@@ -196,8 +198,8 @@ namespace {
 
     while (b)
     {
-        r |= Us == WHITE ? db[index(pop_1st_bit(&b), bksq, psq, BLACK)]
-                         : db[index(wksq, pop_1st_bit(&b), psq, WHITE)];
+        r |= Us == WHITE ? db[index(pop_lsb(&b), bksq, psq, BLACK)]
+                         : db[index(wksq, pop_lsb(&b), psq, WHITE)];
 
         if (Us == WHITE && (r & WIN))
             return WIN;