blueloveTH 3 лет назад
Родитель
Сommit
70ded1c2b9
1 измененных файлов с 4 добавлено и 4 удалено
  1. 4 4
      src/namedict.h

+ 4 - 4
src/namedict.h

@@ -39,19 +39,19 @@ namespace pkpy{
 
 
 //https://github.com/python/cpython/blob/main/Objects/dictobject.c#L175
 //https://github.com/python/cpython/blob/main/Objects/dictobject.c#L175
 #define HASH_PROBE(key, ok, i) \
 #define HASH_PROBE(key, ok, i) \
-    int i = (key).index % _capacity; \
+    int i = (key).index & (_capacity-1); \
     bool ok = false; \
     bool ok = false; \
     while(!_a[i].empty()) { \
     while(!_a[i].empty()) { \
         if(_a[i].first == (key)) { ok = true; break; } \
         if(_a[i].first == (key)) { ok = true; break; } \
-        i = (5*i + 1) % _capacity; \
+        i = (5*i + 1) & (_capacity-1); \
     }
     }
 
 
 #define HASH_PROBE_OVERRIDE(key, ok, i) \
 #define HASH_PROBE_OVERRIDE(key, ok, i) \
-    i = (key).index % _capacity; \
+    i = (key).index & (_capacity-1); \
     ok = false; \
     ok = false; \
     while(!_a[i].empty()) { \
     while(!_a[i].empty()) { \
         if(_a[i].first == (key)) { ok = true; break; } \
         if(_a[i].first == (key)) { ok = true; break; } \
-        i = (5*i + 1) % _capacity; \
+        i = (5*i + 1) & (_capacity-1); \
     }
     }
 
 
         const PyVar& operator[](StrName key) const {
         const PyVar& operator[](StrName key) const {