• Home
  • Raw
  • Download

Lines Matching refs:mp

150 lookdict_string(PyDictObject *mp, PyObject *key, long hash);
210 #define INIT_NONZERO_DICT_SLOTS(mp) do { \ argument
211 (mp)->ma_table = (mp)->ma_smalltable; \
212 (mp)->ma_mask = PyDict_MINSIZE - 1; \
215 #define EMPTY_TO_MINSIZE(mp) do { \ argument
216 memset((mp)->ma_smalltable, 0, sizeof((mp)->ma_smalltable)); \
217 (mp)->ma_used = (mp)->ma_fill = 0; \
218 INIT_NONZERO_DICT_SLOTS(mp); \
243 register PyDictObject *mp; in PyDict_New() local
259 mp = free_list[--numfree]; in PyDict_New()
260 assert (mp != NULL); in PyDict_New()
261 assert (Py_TYPE(mp) == &PyDict_Type); in PyDict_New()
262 _Py_NewReference((PyObject *)mp); in PyDict_New()
263 if (mp->ma_fill) { in PyDict_New()
264 EMPTY_TO_MINSIZE(mp); in PyDict_New()
268 INIT_NONZERO_DICT_SLOTS(mp); in PyDict_New()
270 assert (mp->ma_used == 0); in PyDict_New()
271 assert (mp->ma_table == mp->ma_smalltable); in PyDict_New()
272 assert (mp->ma_mask == PyDict_MINSIZE - 1); in PyDict_New()
277 mp = PyObject_GC_New(PyDictObject, &PyDict_Type); in PyDict_New()
278 if (mp == NULL) in PyDict_New()
280 EMPTY_TO_MINSIZE(mp); in PyDict_New()
285 mp->ma_lookup = lookdict_string; in PyDict_New()
292 return (PyObject *)mp; in PyDict_New()
320 lookdict(PyDictObject *mp, PyObject *key, register long hash) in lookdict() argument
325 register size_t mask = (size_t)mp->ma_mask; in lookdict()
326 PyDictEntry *ep0 = mp->ma_table; in lookdict()
346 if (ep0 == mp->ma_table && ep->me_key == startkey) { in lookdict()
356 return lookdict(mp, key, hash); in lookdict()
378 if (ep0 == mp->ma_table && ep->me_key == startkey) { in lookdict()
388 return lookdict(mp, key, hash); in lookdict()
408 lookdict_string(PyDictObject *mp, PyObject *key, register long hash) in lookdict_string() argument
413 register size_t mask = (size_t)mp->ma_mask; in lookdict_string()
414 PyDictEntry *ep0 = mp->ma_table; in lookdict_string()
425 mp->ma_lookup = lookdict; in lookdict_string()
426 return lookdict(mp, key, hash); in lookdict_string()
469 #define MAINTAIN_TRACKING(mp, key, value) \ argument
471 if (!_PyObject_GC_IS_TRACKED(mp)) { \
474 _PyObject_GC_TRACK(mp); \
483 PyDictObject *mp; in _PyDict_MaybeUntrack() local
491 mp = (PyDictObject *) op; in _PyDict_MaybeUntrack()
492 ep = mp->ma_table; in _PyDict_MaybeUntrack()
493 mask = mp->ma_mask; in _PyDict_MaybeUntrack()
510 insertdict_by_entry(register PyDictObject *mp, PyObject *key, long hash, in insertdict_by_entry() argument
515 MAINTAIN_TRACKING(mp, key, value); in insertdict_by_entry()
524 mp->ma_fill++; in insertdict_by_entry()
532 mp->ma_used++; in insertdict_by_entry()
545 insertdict(register PyDictObject *mp, PyObject *key, long hash, PyObject *value) in insertdict() argument
549 assert(mp->ma_lookup != NULL); in insertdict()
550 ep = mp->ma_lookup(mp, key, hash); in insertdict()
556 return insertdict_by_entry(mp, key, hash, ep, value); in insertdict()
568 insertdict_clean(register PyDictObject *mp, PyObject *key, long hash, in insertdict_clean() argument
573 register size_t mask = (size_t)mp->ma_mask; in insertdict_clean()
574 PyDictEntry *ep0 = mp->ma_table; in insertdict_clean()
577 MAINTAIN_TRACKING(mp, key, value); in insertdict_clean()
585 mp->ma_fill++; in insertdict_clean()
589 mp->ma_used++; in insertdict_clean()
598 dictresize(PyDictObject *mp, Py_ssize_t minused) in dictresize() argument
619 oldtable = mp->ma_table; in dictresize()
621 is_oldtable_malloced = oldtable != mp->ma_smalltable; in dictresize()
625 newtable = mp->ma_smalltable; in dictresize()
627 if (mp->ma_fill == mp->ma_used) { in dictresize()
637 assert(mp->ma_fill > mp->ma_used); in dictresize()
652 mp->ma_table = newtable; in dictresize()
653 mp->ma_mask = newsize - 1; in dictresize()
655 mp->ma_used = 0; in dictresize()
656 i = mp->ma_fill; in dictresize()
657 mp->ma_fill = 0; in dictresize()
664 insertdict_clean(mp, ep->me_key, (long)ep->me_hash, in dictresize()
711 PyDictObject *mp = (PyDictObject *)op; in PyDict_GetItem() local
736 ep = (mp->ma_lookup)(mp, key, hash); in PyDict_GetItem()
743 ep = (mp->ma_lookup)(mp, key, hash); in PyDict_GetItem()
760 PyDictObject *mp = (PyDictObject *)op; in _PyDict_GetItemWithError() local
775 ep = (mp->ma_lookup)(mp, key, hash); in _PyDict_GetItemWithError()
786 register PyDictObject *mp; in dict_set_item_by_hash_or_entry() local
789 mp = (PyDictObject *)op; in dict_set_item_by_hash_or_entry()
790 assert(mp->ma_fill <= mp->ma_mask); /* at least one empty slot */ in dict_set_item_by_hash_or_entry()
791 n_used = mp->ma_used; in dict_set_item_by_hash_or_entry()
795 if (insertdict(mp, key, hash, value) != 0) in dict_set_item_by_hash_or_entry()
799 if (insertdict_by_entry(mp, key, hash, ep, value) != 0) in dict_set_item_by_hash_or_entry()
816 if (!(mp->ma_used > n_used && mp->ma_fill*3 >= (mp->ma_mask+1)*2)) in dict_set_item_by_hash_or_entry()
818 return dictresize(mp, (mp->ma_used > 50000 ? 2 : 4) * mp->ma_used); in dict_set_item_by_hash_or_entry()
854 register PyDictObject *mp; in PyDict_DelItem() local
870 mp = (PyDictObject *)op; in PyDict_DelItem()
871 ep = (mp->ma_lookup)(mp, key, hash); in PyDict_DelItem()
883 mp->ma_used--; in PyDict_DelItem()
892 PyDictObject *mp; in PyDict_Clear() local
903 mp = (PyDictObject *)op; in PyDict_Clear()
905 n = mp->ma_mask + 1; in PyDict_Clear()
909 table = mp->ma_table; in PyDict_Clear()
911 table_is_malloced = table != mp->ma_smalltable; in PyDict_Clear()
919 fill = mp->ma_fill; in PyDict_Clear()
921 EMPTY_TO_MINSIZE(mp); in PyDict_Clear()
930 EMPTY_TO_MINSIZE(mp); in PyDict_Clear()
1030 dict_dealloc(register PyDictObject *mp) in dict_dealloc() argument
1033 Py_ssize_t fill = mp->ma_fill; in dict_dealloc()
1034 PyObject_GC_UnTrack(mp); in dict_dealloc()
1035 Py_TRASHCAN_SAFE_BEGIN(mp) in dict_dealloc()
1036 for (ep = mp->ma_table; fill > 0; ep++) { in dict_dealloc()
1043 if (mp->ma_table != mp->ma_smalltable) in dict_dealloc()
1044 PyMem_DEL(mp->ma_table); in dict_dealloc()
1045 if (numfree < PyDict_MAXFREELIST && Py_TYPE(mp) == &PyDict_Type) in dict_dealloc()
1046 free_list[numfree++] = mp; in dict_dealloc()
1048 Py_TYPE(mp)->tp_free((PyObject *)mp); in dict_dealloc()
1049 Py_TRASHCAN_SAFE_END(mp) in dict_dealloc()
1053 dict_print(register PyDictObject *mp, register FILE *fp, register int flags) in dict_print() argument
1059 status = Py_ReprEnter((PyObject*)mp); in dict_print()
1073 for (i = 0; i <= mp->ma_mask; i++) { in dict_print()
1074 PyDictEntry *ep = mp->ma_table + i; in dict_print()
1087 Py_ReprLeave((PyObject*)mp); in dict_print()
1095 Py_ReprLeave((PyObject*)mp); in dict_print()
1104 Py_ReprLeave((PyObject*)mp); in dict_print()
1109 dict_repr(PyDictObject *mp) in dict_repr() argument
1116 i = Py_ReprEnter((PyObject *)mp); in dict_repr()
1121 if (mp->ma_used == 0) { in dict_repr()
1137 while (PyDict_Next((PyObject *)mp, &i, &key, &value)) { in dict_repr()
1183 Py_ReprLeave((PyObject *)mp); in dict_repr()
1188 dict_length(PyDictObject *mp) in dict_length() argument
1190 return mp->ma_used; in dict_length()
1194 dict_subscript(PyDictObject *mp, register PyObject *key) in dict_subscript() argument
1199 assert(mp->ma_table != NULL); in dict_subscript()
1206 ep = (mp->ma_lookup)(mp, key, hash); in dict_subscript()
1211 if (!PyDict_CheckExact(mp)) { in dict_subscript()
1215 missing = _PyObject_LookupSpecial((PyObject *)mp, in dict_subscript()
1236 dict_ass_sub(PyDictObject *mp, PyObject *v, PyObject *w) in dict_ass_sub() argument
1239 return PyDict_DelItem((PyObject *)mp, v); in dict_ass_sub()
1241 return PyDict_SetItem((PyObject *)mp, v, w); in dict_ass_sub()
1251 dict_keys(register PyDictObject *mp) in dict_keys() argument
1259 n = mp->ma_used; in dict_keys()
1263 if (n != mp->ma_used) { in dict_keys()
1270 ep = mp->ma_table; in dict_keys()
1271 mask = mp->ma_mask; in dict_keys()
1285 dict_values(register PyDictObject *mp) in dict_values() argument
1293 n = mp->ma_used; in dict_values()
1297 if (n != mp->ma_used) { in dict_values()
1304 ep = mp->ma_table; in dict_values()
1305 mask = mp->ma_mask; in dict_values()
1319 dict_items(register PyDictObject *mp) in dict_items() argument
1332 n = mp->ma_used; in dict_items()
1344 if (n != mp->ma_used) { in dict_items()
1352 ep = mp->ma_table; in dict_items()
1353 mask = mp->ma_mask; in dict_items()
1388 PyDictObject *mp = (PyDictObject *)d; in dict_fromkeys() local
1394 if (dictresize(mp, Py_SIZE(seq) / 2 * 3)) { in dict_fromkeys()
1402 if (insertdict(mp, key, hash, value)) { in dict_fromkeys()
1410 PyDictObject *mp = (PyDictObject *)d; in dict_fromkeys() local
1415 if (dictresize(mp, PySet_GET_SIZE(seq) / 2 * 3)) { in dict_fromkeys()
1423 if (insertdict(mp, key, hash, value)) { in dict_fromkeys()
1582 register PyDictObject *mp, *other; in PyDict_Merge() local
1595 mp = (PyDictObject*)a; in PyDict_Merge()
1598 if (other == mp || other->ma_used == 0) in PyDict_Merge()
1601 if (mp->ma_used == 0) in PyDict_Merge()
1611 if ((mp->ma_fill + other->ma_used)*3 >= (mp->ma_mask+1)*2) { in PyDict_Merge()
1612 if (dictresize(mp, (mp->ma_used + other->ma_used)*2) != 0) in PyDict_Merge()
1622 if (insertdict(mp, entry->me_key, in PyDict_Merge()
1677 dict_copy(register PyDictObject *mp) in dict_copy() argument
1679 return PyDict_Copy((PyObject*)mp); in dict_copy()
1701 PyDict_Size(PyObject *mp) in PyDict_Size() argument
1703 if (mp == NULL || !PyDict_Check(mp)) { in PyDict_Size()
1707 return ((PyDictObject *)mp)->ma_used; in PyDict_Size()
1711 PyDict_Keys(PyObject *mp) in PyDict_Keys() argument
1713 if (mp == NULL || !PyDict_Check(mp)) { in PyDict_Keys()
1717 return dict_keys((PyDictObject *)mp); in PyDict_Keys()
1721 PyDict_Values(PyObject *mp) in PyDict_Values() argument
1723 if (mp == NULL || !PyDict_Check(mp)) { in PyDict_Values()
1727 return dict_values((PyDictObject *)mp); in PyDict_Values()
1731 PyDict_Items(PyObject *mp) in PyDict_Items() argument
1733 if (mp == NULL || !PyDict_Check(mp)) { in PyDict_Items()
1737 return dict_items((PyDictObject *)mp); in PyDict_Items()
1938 dict_contains(register PyDictObject *mp, PyObject *key) in dict_contains() argument
1949 ep = (mp->ma_lookup)(mp, key, hash); in dict_contains()
1956 dict_has_key(register PyDictObject *mp, PyObject *key) in dict_has_key() argument
1961 return dict_contains(mp, key); in dict_has_key()
1965 dict_get(register PyDictObject *mp, PyObject *args) in dict_get() argument
1982 ep = (mp->ma_lookup)(mp, key, hash); in dict_get()
1994 dict_setdefault(register PyDictObject *mp, PyObject *args) in dict_setdefault() argument
2011 ep = (mp->ma_lookup)(mp, key, hash); in dict_setdefault()
2016 if (dict_set_item_by_hash_or_entry((PyObject*)mp, key, hash, ep, in dict_setdefault()
2026 dict_clear(register PyDictObject *mp) in dict_clear() argument
2028 PyDict_Clear((PyObject *)mp); in dict_clear()
2033 dict_pop(PyDictObject *mp, PyObject *args) in dict_pop() argument
2042 if (mp->ma_used == 0) { in dict_pop()
2056 ep = (mp->ma_lookup)(mp, key, hash); in dict_pop()
2072 mp->ma_used--; in dict_pop()
2078 dict_popitem(PyDictObject *mp) in dict_popitem() argument
2096 if (mp->ma_used == 0) { in dict_popitem()
2108 ep = &mp->ma_table[0]; in dict_popitem()
2116 if (i > mp->ma_mask || i < 1) in dict_popitem()
2118 while ((ep = &mp->ma_table[i])->me_value == NULL) { in dict_popitem()
2120 if (i > mp->ma_mask) in dict_popitem()
2129 mp->ma_used--; in dict_popitem()
2130 assert(mp->ma_table[0].me_value == NULL); in dict_popitem()
2131 mp->ma_table[0].me_hash = i + 1; /* next place to start */ in dict_popitem()
2181 dict_sizeof(PyDictObject *mp) in dict_sizeof() argument
2185 res = _PyObject_SIZE(Py_TYPE(mp)); in dict_sizeof()
2186 if (mp->ma_table != mp->ma_smalltable) in dict_sizeof()
2187 res = res + (mp->ma_mask + 1) * sizeof(PyDictEntry); in dict_sizeof()
2313 PyDictObject *mp = (PyDictObject *)op; in PyDict_Contains() local
2322 ep = (mp->ma_lookup)(mp, key, hash); in PyDict_Contains()
2330 PyDictObject *mp = (PyDictObject *)op; in _PyDict_Contains() local
2333 ep = (mp->ma_lookup)(mp, key, hash); in _PyDict_Contains()