• Home
  • Raw
  • Download

Lines Matching refs:mp

224 static Py_ssize_t lookdict(PyDictObject *mp, PyObject *key,
227 static Py_ssize_t lookdict_unicode(PyDictObject *mp, PyObject *key,
231 lookdict_unicode_nodummy(PyDictObject *mp, PyObject *key,
234 static Py_ssize_t lookdict_split(PyDictObject *mp, PyObject *key,
238 static int dictresize(PyDictObject *mp, Py_ssize_t minused);
441 _PyDict_CheckConsistency(PyDictObject *mp) in _PyDict_CheckConsistency() argument
443 PyDictKeysObject *keys = mp->ma_keys; in _PyDict_CheckConsistency()
444 int splitted = _PyDict_HasSplitTable(mp); in _PyDict_CheckConsistency()
451 assert(0 <= mp->ma_used && mp->ma_used <= usable); in _PyDict_CheckConsistency()
496 for (i=0; i < mp->ma_used; i++) { in _PyDict_CheckConsistency()
497 assert(mp->ma_values[i] != NULL); in _PyDict_CheckConsistency()
577 PyDictObject *mp; in new_dict() local
580 mp = free_list[--numfree]; in new_dict()
581 assert (mp != NULL); in new_dict()
582 assert (Py_TYPE(mp) == &PyDict_Type); in new_dict()
583 _Py_NewReference((PyObject *)mp); in new_dict()
586 mp = PyObject_GC_New(PyDictObject, &PyDict_Type); in new_dict()
587 if (mp == NULL) { in new_dict()
593 mp->ma_keys = keys; in new_dict()
594 mp->ma_values = values; in new_dict()
595 mp->ma_used = 0; in new_dict()
596 mp->ma_version_tag = DICT_NEXT_VERSION(); in new_dict()
597 assert(_PyDict_CheckConsistency(mp)); in new_dict()
598 return (PyObject *)mp; in new_dict()
687 lookdict(PyDictObject *mp, PyObject *key, in lookdict() argument
698 dk = mp->ma_keys; in lookdict()
731 if (dk == mp->ma_keys && ep->me_key == startkey) { in lookdict()
781 if (dk == mp->ma_keys && ep->me_key == startkey) { in lookdict()
802 lookdict_unicode(PyDictObject *mp, PyObject *key, in lookdict_unicode() argument
806 size_t mask = DK_MASK(mp->ma_keys); in lookdict_unicode()
808 PyDictKeyEntry *ep, *ep0 = DK_ENTRIES(mp->ma_keys); in lookdict_unicode()
810 assert(mp->ma_values == NULL); in lookdict_unicode()
816 mp->ma_keys->dk_lookup = lookdict; in lookdict_unicode()
817 return lookdict(mp, key, hash, value_addr, hashpos); in lookdict_unicode()
820 ix = dk_get_index(mp->ma_keys, i); in lookdict_unicode()
846 ix = dk_get_index(mp->ma_keys, i); in lookdict_unicode()
877 lookdict_unicode_nodummy(PyDictObject *mp, PyObject *key, in lookdict_unicode_nodummy() argument
882 size_t mask = DK_MASK(mp->ma_keys); in lookdict_unicode_nodummy()
884 PyDictKeyEntry *ep, *ep0 = DK_ENTRIES(mp->ma_keys); in lookdict_unicode_nodummy()
886 assert(mp->ma_values == NULL); in lookdict_unicode_nodummy()
892 mp->ma_keys->dk_lookup = lookdict; in lookdict_unicode_nodummy()
893 return lookdict(mp, key, hash, value_addr, hashpos); in lookdict_unicode_nodummy()
896 ix = dk_get_index(mp->ma_keys, i); in lookdict_unicode_nodummy()
917 ix = dk_get_index(mp->ma_keys, i); in lookdict_unicode_nodummy()
945 lookdict_split(PyDictObject *mp, PyObject *key, in lookdict_split() argument
949 size_t mask = DK_MASK(mp->ma_keys); in lookdict_split()
951 PyDictKeyEntry *ep, *ep0 = DK_ENTRIES(mp->ma_keys); in lookdict_split()
954 assert(mp->ma_values != NULL); in lookdict_split()
956 ix = lookdict(mp, key, hash, value_addr, hashpos); in lookdict_split()
958 *value_addr = &mp->ma_values[ix]; in lookdict_split()
964 ix = dk_get_index(mp->ma_keys, i); in lookdict_split()
978 *value_addr = &mp->ma_values[ix]; in lookdict_split()
984 ix = dk_get_index(mp->ma_keys, i); in lookdict_split()
998 *value_addr = &mp->ma_values[ix]; in lookdict_split()
1021 #define MAINTAIN_TRACKING(mp, key, value) \ argument
1023 if (!_PyObject_GC_IS_TRACKED(mp)) { \
1026 _PyObject_GC_TRACK(mp); \
1034 PyDictObject *mp; in _PyDict_MaybeUntrack() local
1042 mp = (PyDictObject *) op; in _PyDict_MaybeUntrack()
1043 ep0 = DK_ENTRIES(mp->ma_keys); in _PyDict_MaybeUntrack()
1044 numentries = mp->ma_keys->dk_nentries; in _PyDict_MaybeUntrack()
1045 if (_PyDict_HasSplitTable(mp)) { in _PyDict_MaybeUntrack()
1047 if ((value = mp->ma_values[i]) == NULL) in _PyDict_MaybeUntrack()
1072 find_empty_slot(PyDictObject *mp, PyObject *key, Py_hash_t hash, in find_empty_slot() argument
1076 size_t mask = DK_MASK(mp->ma_keys); in find_empty_slot()
1078 PyDictKeyEntry *ep, *ep0 = DK_ENTRIES(mp->ma_keys); in find_empty_slot()
1080 assert(!_PyDict_HasSplitTable(mp)); in find_empty_slot()
1085 mp->ma_keys->dk_lookup = lookdict; in find_empty_slot()
1087 ix = dk_get_index(mp->ma_keys, i); in find_empty_slot()
1091 ix = dk_get_index(mp->ma_keys, i & mask); in find_empty_slot()
1093 ep = &ep0[mp->ma_keys->dk_nentries]; in find_empty_slot()
1100 insertion_resize(PyDictObject *mp) in insertion_resize() argument
1102 return dictresize(mp, GROWTH_RATE(mp)); in insertion_resize()
1111 insertdict(PyDictObject *mp, PyObject *key, Py_hash_t hash, PyObject *value) in insertdict() argument
1118 if (mp->ma_values != NULL && !PyUnicode_CheckExact(key)) { in insertdict()
1119 if (insertion_resize(mp) < 0) in insertdict()
1123 ix = mp->ma_keys->dk_lookup(mp, key, hash, &value_addr, &hashpos); in insertdict()
1128 assert(PyUnicode_CheckExact(key) || mp->ma_keys->dk_lookup == lookdict); in insertdict()
1130 MAINTAIN_TRACKING(mp, key, value); in insertdict()
1135 if (_PyDict_HasSplitTable(mp) && in insertdict()
1136 ((ix >= 0 && *value_addr == NULL && mp->ma_used != ix) || in insertdict()
1137 (ix == DKIX_EMPTY && mp->ma_used != mp->ma_keys->dk_nentries))) { in insertdict()
1138 if (insertion_resize(mp) < 0) { in insertdict()
1142 find_empty_slot(mp, key, hash, &value_addr, &hashpos); in insertdict()
1148 if (mp->ma_keys->dk_usable <= 0) { in insertdict()
1150 if (insertion_resize(mp) < 0) { in insertdict()
1154 find_empty_slot(mp, key, hash, &value_addr, &hashpos); in insertdict()
1156 ep0 = DK_ENTRIES(mp->ma_keys); in insertdict()
1157 ep = &ep0[mp->ma_keys->dk_nentries]; in insertdict()
1158 dk_set_index(mp->ma_keys, hashpos, mp->ma_keys->dk_nentries); in insertdict()
1162 if (mp->ma_values) { in insertdict()
1163 assert (mp->ma_values[mp->ma_keys->dk_nentries] == NULL); in insertdict()
1164 mp->ma_values[mp->ma_keys->dk_nentries] = value; in insertdict()
1169 mp->ma_used++; in insertdict()
1170 mp->ma_version_tag = DICT_NEXT_VERSION(); in insertdict()
1171 mp->ma_keys->dk_usable--; in insertdict()
1172 mp->ma_keys->dk_nentries++; in insertdict()
1173 assert(mp->ma_keys->dk_usable >= 0); in insertdict()
1174 assert(_PyDict_CheckConsistency(mp)); in insertdict()
1183 mp->ma_version_tag = DICT_NEXT_VERSION(); in insertdict()
1184 assert(_PyDict_CheckConsistency(mp)); in insertdict()
1191 assert(_PyDict_HasSplitTable(mp)); in insertdict()
1192 assert(ix == mp->ma_used); in insertdict()
1194 mp->ma_used++; in insertdict()
1195 mp->ma_version_tag = DICT_NEXT_VERSION(); in insertdict()
1196 assert(_PyDict_CheckConsistency(mp)); in insertdict()
1211 insertdict_clean(PyDictObject *mp, PyObject *key, Py_hash_t hash, in insertdict_clean() argument
1215 PyDictKeysObject *k = mp->ma_keys; in insertdict_clean()
1217 PyDictKeyEntry *ep0 = DK_ENTRIES(mp->ma_keys); in insertdict_clean()
1249 dictresize(PyDictObject *mp, Py_ssize_t minsize) in dictresize() argument
1265 oldkeys = mp->ma_keys; in dictresize()
1266 oldvalues = mp->ma_values; in dictresize()
1268 mp->ma_keys = new_keys_object(newsize); in dictresize()
1269 if (mp->ma_keys == NULL) { in dictresize()
1270 mp->ma_keys = oldkeys; in dictresize()
1274 assert(mp->ma_keys->dk_usable >= mp->ma_used); in dictresize()
1276 mp->ma_keys->dk_lookup = lookdict; in dictresize()
1277 mp->ma_values = NULL; in dictresize()
1295 insertdict_clean(mp, ep->me_key, ep->me_hash, ep->me_value); in dictresize()
1298 mp->ma_keys->dk_usable -= mp->ma_used; in dictresize()
1323 PyDictObject *mp = (PyDictObject *)op; in make_keys_shared() local
1327 if (!_PyDict_HasSplitTable(mp)) { in make_keys_shared()
1330 assert(mp->ma_keys->dk_refcnt == 1); in make_keys_shared()
1331 if (mp->ma_keys->dk_lookup == lookdict) { in make_keys_shared()
1334 else if (mp->ma_keys->dk_lookup == lookdict_unicode) { in make_keys_shared()
1336 if (dictresize(mp, DK_SIZE(mp->ma_keys))) in make_keys_shared()
1339 assert(mp->ma_keys->dk_lookup == lookdict_unicode_nodummy); in make_keys_shared()
1341 ep0 = DK_ENTRIES(mp->ma_keys); in make_keys_shared()
1342 size = USABLE_FRACTION(DK_SIZE(mp->ma_keys)); in make_keys_shared()
1353 mp->ma_keys->dk_lookup = lookdict_split; in make_keys_shared()
1354 mp->ma_values = values; in make_keys_shared()
1356 DK_INCREF(mp->ma_keys); in make_keys_shared()
1357 return mp->ma_keys; in make_keys_shared()
1404 PyDictObject *mp = (PyDictObject *)op; in PyDict_GetItem() local
1430 ix = (mp->ma_keys->dk_lookup)(mp, key, hash, &value_addr, NULL); in PyDict_GetItem()
1437 ix = (mp->ma_keys->dk_lookup)(mp, key, hash, &value_addr, NULL); in PyDict_GetItem()
1454 PyDictObject *mp = (PyDictObject *)op; in _PyDict_GetItem_KnownHash() local
1462 ix = (mp->ma_keys->dk_lookup)(mp, key, hash, &value_addr, NULL); in _PyDict_GetItem_KnownHash()
1478 PyDictObject*mp = (PyDictObject *)op; in PyDict_GetItemWithError() local
1494 ix = (mp->ma_keys->dk_lookup)(mp, key, hash, &value_addr, NULL); in PyDict_GetItemWithError()
1555 PyDictObject *mp; in PyDict_SetItem() local
1563 mp = (PyDictObject *)op; in PyDict_SetItem()
1573 return insertdict(mp, key, hash, value); in PyDict_SetItem()
1580 PyDictObject *mp; in _PyDict_SetItem_KnownHash() local
1589 mp = (PyDictObject *)op; in _PyDict_SetItem_KnownHash()
1592 return insertdict(mp, key, hash, value); in _PyDict_SetItem_KnownHash()
1596 delitem_common(PyDictObject *mp, Py_ssize_t hashpos, Py_ssize_t ix, in delitem_common() argument
1605 mp->ma_used--; in delitem_common()
1606 mp->ma_version_tag = DICT_NEXT_VERSION(); in delitem_common()
1607 ep = &DK_ENTRIES(mp->ma_keys)[ix]; in delitem_common()
1608 dk_set_index(mp->ma_keys, hashpos, DKIX_DUMMY); in delitem_common()
1609 ENSURE_ALLOWS_DELETIONS(mp); in delitem_common()
1615 assert(_PyDict_CheckConsistency(mp)); in delitem_common()
1638 PyDictObject *mp; in _PyDict_DelItem_KnownHash() local
1647 mp = (PyDictObject *)op; in _PyDict_DelItem_KnownHash()
1648 ix = (mp->ma_keys->dk_lookup)(mp, key, hash, &value_addr, &hashpos); in _PyDict_DelItem_KnownHash()
1655 assert(dk_get_index(mp->ma_keys, hashpos) == ix); in _PyDict_DelItem_KnownHash()
1658 if (_PyDict_HasSplitTable(mp)) { in _PyDict_DelItem_KnownHash()
1659 if (dictresize(mp, DK_SIZE(mp->ma_keys))) { in _PyDict_DelItem_KnownHash()
1662 ix = (mp->ma_keys->dk_lookup)(mp, key, hash, &value_addr, &hashpos); in _PyDict_DelItem_KnownHash()
1665 return delitem_common(mp, hashpos, ix, value_addr); in _PyDict_DelItem_KnownHash()
1677 PyDictObject *mp; in _PyDict_DelItemIf() local
1690 mp = (PyDictObject *)op; in _PyDict_DelItemIf()
1691 ix = (mp->ma_keys->dk_lookup)(mp, key, hash, &value_addr, &hashpos); in _PyDict_DelItemIf()
1698 assert(dk_get_index(mp->ma_keys, hashpos) == ix); in _PyDict_DelItemIf()
1701 if (_PyDict_HasSplitTable(mp)) { in _PyDict_DelItemIf()
1702 if (dictresize(mp, DK_SIZE(mp->ma_keys))) { in _PyDict_DelItemIf()
1705 ix = (mp->ma_keys->dk_lookup)(mp, key, hash, &value_addr, &hashpos); in _PyDict_DelItemIf()
1713 return delitem_common(mp, hashpos, ix, value_addr); in _PyDict_DelItemIf()
1722 PyDictObject *mp; in PyDict_Clear() local
1729 mp = ((PyDictObject *)op); in PyDict_Clear()
1730 oldkeys = mp->ma_keys; in PyDict_Clear()
1731 oldvalues = mp->ma_values; in PyDict_Clear()
1736 mp->ma_keys = Py_EMPTY_KEYS; in PyDict_Clear()
1737 mp->ma_values = empty_values; in PyDict_Clear()
1738 mp->ma_used = 0; in PyDict_Clear()
1739 mp->ma_version_tag = DICT_NEXT_VERSION(); in PyDict_Clear()
1752 assert(_PyDict_CheckConsistency(mp)); in PyDict_Clear()
1765 PyDictObject *mp; in _PyDict_Next() local
1771 mp = (PyDictObject *)op; in _PyDict_Next()
1773 n = mp->ma_keys->dk_nentries; in _PyDict_Next()
1776 if (mp->ma_values) { in _PyDict_Next()
1777 PyObject **value_ptr = &mp->ma_values[i]; in _PyDict_Next()
1784 entry_ptr = &DK_ENTRIES(mp->ma_keys)[i]; in _PyDict_Next()
1788 entry_ptr = &DK_ENTRIES(mp->ma_keys)[i]; in _PyDict_Next()
1839 PyDictObject *mp; in _PyDict_Pop_KnownHash() local
1842 mp = (PyDictObject *)dict; in _PyDict_Pop_KnownHash()
1844 if (mp->ma_used == 0) { in _PyDict_Pop_KnownHash()
1852 ix = (mp->ma_keys->dk_lookup)(mp, key, hash, &value_addr, &hashpos); in _PyDict_Pop_KnownHash()
1865 if (_PyDict_HasSplitTable(mp)) { in _PyDict_Pop_KnownHash()
1866 if (dictresize(mp, DK_SIZE(mp->ma_keys))) { in _PyDict_Pop_KnownHash()
1869 ix = (mp->ma_keys->dk_lookup)(mp, key, hash, &value_addr, &hashpos); in _PyDict_Pop_KnownHash()
1876 mp->ma_used--; in _PyDict_Pop_KnownHash()
1877 mp->ma_version_tag = DICT_NEXT_VERSION(); in _PyDict_Pop_KnownHash()
1878 dk_set_index(mp->ma_keys, hashpos, DKIX_DUMMY); in _PyDict_Pop_KnownHash()
1879 ep = &DK_ENTRIES(mp->ma_keys)[ix]; in _PyDict_Pop_KnownHash()
1880 ENSURE_ALLOWS_DELETIONS(mp); in _PyDict_Pop_KnownHash()
1885 assert(_PyDict_CheckConsistency(mp)); in _PyDict_Pop_KnownHash()
1926 PyDictObject *mp = (PyDictObject *)d; in _PyDict_FromKeys() local
1932 if (dictresize(mp, ESTIMATE_SIZE(Py_SIZE(iterable)))) { in _PyDict_FromKeys()
1938 if (insertdict(mp, key, hash, value)) { in _PyDict_FromKeys()
1946 PyDictObject *mp = (PyDictObject *)d; in _PyDict_FromKeys() local
1951 if (dictresize(mp, ESTIMATE_SIZE(PySet_GET_SIZE(iterable)))) { in _PyDict_FromKeys()
1957 if (insertdict(mp, key, hash, value)) { in _PyDict_FromKeys()
2002 dict_dealloc(PyDictObject *mp) in dict_dealloc() argument
2004 PyObject **values = mp->ma_values; in dict_dealloc()
2005 PyDictKeysObject *keys = mp->ma_keys; in dict_dealloc()
2007 PyObject_GC_UnTrack(mp); in dict_dealloc()
2008 Py_TRASHCAN_SAFE_BEGIN(mp) in dict_dealloc()
2011 for (i = 0, n = mp->ma_keys->dk_nentries; i < n; i++) { in dict_dealloc()
2022 if (numfree < PyDict_MAXFREELIST && Py_TYPE(mp) == &PyDict_Type) in dict_dealloc()
2023 free_list[numfree++] = mp; in dict_dealloc()
2025 Py_TYPE(mp)->tp_free((PyObject *)mp); in dict_dealloc()
2026 Py_TRASHCAN_SAFE_END(mp) in dict_dealloc()
2031 dict_repr(PyDictObject *mp) in dict_repr() argument
2038 i = Py_ReprEnter((PyObject *)mp); in dict_repr()
2043 if (mp->ma_used == 0) { in dict_repr()
2044 Py_ReprLeave((PyObject *)mp); in dict_repr()
2051 writer.min_length = 1 + 4 + (2 + 4) * (mp->ma_used - 1) + 1; in dict_repr()
2060 while (PyDict_Next((PyObject *)mp, &i, &key, &value)) { in dict_repr()
2101 Py_ReprLeave((PyObject *)mp); in dict_repr()
2106 Py_ReprLeave((PyObject *)mp); in dict_repr()
2114 dict_length(PyDictObject *mp) in dict_length() argument
2116 return mp->ma_used; in dict_length()
2120 dict_subscript(PyDictObject *mp, PyObject *key) in dict_subscript() argument
2133 ix = (mp->ma_keys->dk_lookup)(mp, key, hash, &value_addr, NULL); in dict_subscript()
2137 if (!PyDict_CheckExact(mp)) { in dict_subscript()
2141 missing = _PyObject_LookupSpecial((PyObject *)mp, &PyId___missing__); in dict_subscript()
2160 dict_ass_sub(PyDictObject *mp, PyObject *v, PyObject *w) in dict_ass_sub() argument
2163 return PyDict_DelItem((PyObject *)mp, v); in dict_ass_sub()
2165 return PyDict_SetItem((PyObject *)mp, v, w); in dict_ass_sub()
2175 dict_keys(PyDictObject *mp) in dict_keys() argument
2184 n = mp->ma_used; in dict_keys()
2188 if (n != mp->ma_used) { in dict_keys()
2195 ep = DK_ENTRIES(mp->ma_keys); in dict_keys()
2196 size = mp->ma_keys->dk_nentries; in dict_keys()
2197 if (mp->ma_values) { in dict_keys()
2198 value_ptr = mp->ma_values; in dict_keys()
2219 dict_values(PyDictObject *mp) in dict_values() argument
2228 n = mp->ma_used; in dict_values()
2232 if (n != mp->ma_used) { in dict_values()
2239 ep = DK_ENTRIES(mp->ma_keys); in dict_values()
2240 size = mp->ma_keys->dk_nentries; in dict_values()
2241 if (mp->ma_values) { in dict_values()
2242 value_ptr = mp->ma_values; in dict_values()
2263 dict_items(PyDictObject *mp) in dict_items() argument
2277 n = mp->ma_used; in dict_items()
2289 if (n != mp->ma_used) { in dict_items()
2297 ep = DK_ENTRIES(mp->ma_keys); in dict_items()
2298 size = mp->ma_keys->dk_nentries; in dict_items()
2299 if (mp->ma_values) { in dict_items()
2300 value_ptr = mp->ma_values; in dict_items()
2459 PyDictObject *mp, *other; in dict_merge() local
2474 mp = (PyDictObject*)a; in dict_merge()
2477 if (other == mp || other->ma_used == 0) in dict_merge()
2480 if (mp->ma_used == 0) in dict_merge()
2490 if (USABLE_FRACTION(mp->ma_keys->dk_size) < other->ma_used) { in dict_merge()
2491 if (dictresize(mp, ESTIMATE_SIZE(mp->ma_used + other->ma_used))) { in dict_merge()
2512 err = insertdict(mp, key, hash, value); in dict_merge()
2519 err = insertdict(mp, key, hash, value); in dict_merge()
2614 dict_copy(PyDictObject *mp) in dict_copy() argument
2616 return PyDict_Copy((PyObject*)mp); in dict_copy()
2623 PyDictObject *mp; in PyDict_Copy() local
2630 mp = (PyDictObject *)o; in PyDict_Copy()
2631 if (_PyDict_HasSplitTable(mp)) { in PyDict_Copy()
2633 Py_ssize_t size = USABLE_FRACTION(DK_SIZE(mp->ma_keys)); in PyDict_Copy()
2644 split_copy->ma_keys = mp->ma_keys; in PyDict_Copy()
2645 split_copy->ma_used = mp->ma_used; in PyDict_Copy()
2646 DK_INCREF(mp->ma_keys); in PyDict_Copy()
2648 PyObject *value = mp->ma_values[i]; in PyDict_Copy()
2652 if (_PyObject_GC_IS_TRACKED(mp)) in PyDict_Copy()
2666 PyDict_Size(PyObject *mp) in PyDict_Size() argument
2668 if (mp == NULL || !PyDict_Check(mp)) { in PyDict_Size()
2672 return ((PyDictObject *)mp)->ma_used; in PyDict_Size()
2676 PyDict_Keys(PyObject *mp) in PyDict_Keys() argument
2678 if (mp == NULL || !PyDict_Check(mp)) { in PyDict_Keys()
2682 return dict_keys((PyDictObject *)mp); in PyDict_Keys()
2686 PyDict_Values(PyObject *mp) in PyDict_Values() argument
2688 if (mp == NULL || !PyDict_Check(mp)) { in PyDict_Values()
2692 return dict_values((PyDictObject *)mp); in PyDict_Values()
2696 PyDict_Items(PyObject *mp) in PyDict_Items() argument
2698 if (mp == NULL || !PyDict_Check(mp)) { in PyDict_Items()
2702 return dict_items((PyDictObject *)mp); in PyDict_Items()
2792 register PyDictObject *mp = self; in dict___contains__() local
2803 ix = (mp->ma_keys->dk_lookup)(mp, key, hash, &value_addr, NULL); in dict___contains__()
2812 dict_get(PyDictObject *mp, PyObject *args) in dict_get() argument
2830 ix = (mp->ma_keys->dk_lookup)(mp, key, hash, &value_addr, NULL); in dict_get()
2844 PyDictObject *mp = (PyDictObject *)d; in PyDict_SetDefault() local
2862 if (mp->ma_values != NULL && !PyUnicode_CheckExact(key)) { in PyDict_SetDefault()
2863 if (insertion_resize(mp) < 0) in PyDict_SetDefault()
2867 ix = (mp->ma_keys->dk_lookup)(mp, key, hash, &value_addr, &hashpos); in PyDict_SetDefault()
2871 if (_PyDict_HasSplitTable(mp) && in PyDict_SetDefault()
2872 ((ix >= 0 && *value_addr == NULL && mp->ma_used != ix) || in PyDict_SetDefault()
2873 (ix == DKIX_EMPTY && mp->ma_used != mp->ma_keys->dk_nentries))) { in PyDict_SetDefault()
2874 if (insertion_resize(mp) < 0) { in PyDict_SetDefault()
2877 find_empty_slot(mp, key, hash, &value_addr, &hashpos); in PyDict_SetDefault()
2884 if (mp->ma_keys->dk_usable <= 0) { in PyDict_SetDefault()
2885 if (insertion_resize(mp) < 0) { in PyDict_SetDefault()
2888 find_empty_slot(mp, key, hash, &value_addr, &hashpos); in PyDict_SetDefault()
2890 ep0 = DK_ENTRIES(mp->ma_keys); in PyDict_SetDefault()
2891 ep = &ep0[mp->ma_keys->dk_nentries]; in PyDict_SetDefault()
2892 dk_set_index(mp->ma_keys, hashpos, mp->ma_keys->dk_nentries); in PyDict_SetDefault()
2895 MAINTAIN_TRACKING(mp, key, value); in PyDict_SetDefault()
2898 if (mp->ma_values) { in PyDict_SetDefault()
2899 assert(mp->ma_values[mp->ma_keys->dk_nentries] == NULL); in PyDict_SetDefault()
2900 mp->ma_values[mp->ma_keys->dk_nentries] = value; in PyDict_SetDefault()
2905 mp->ma_used++; in PyDict_SetDefault()
2906 mp->ma_version_tag = DICT_NEXT_VERSION(); in PyDict_SetDefault()
2907 mp->ma_keys->dk_usable--; in PyDict_SetDefault()
2908 mp->ma_keys->dk_nentries++; in PyDict_SetDefault()
2909 assert(mp->ma_keys->dk_usable >= 0); in PyDict_SetDefault()
2913 assert(_PyDict_HasSplitTable(mp)); in PyDict_SetDefault()
2914 assert(ix == mp->ma_used); in PyDict_SetDefault()
2916 MAINTAIN_TRACKING(mp, key, value); in PyDict_SetDefault()
2918 mp->ma_used++; in PyDict_SetDefault()
2919 mp->ma_version_tag = DICT_NEXT_VERSION(); in PyDict_SetDefault()
2925 assert(_PyDict_CheckConsistency(mp)); in PyDict_SetDefault()
2930 dict_setdefault(PyDictObject *mp, PyObject *args) in dict_setdefault() argument
2938 val = PyDict_SetDefault((PyObject *)mp, key, defaultobj); in dict_setdefault()
2944 dict_clear(PyDictObject *mp) in dict_clear() argument
2946 PyDict_Clear((PyObject *)mp); in dict_clear()
2951 dict_pop(PyDictObject *mp, PyObject *args) in dict_pop() argument
2958 return _PyDict_Pop((PyObject*)mp, key, deflt); in dict_pop()
2962 dict_popitem(PyDictObject *mp) in dict_popitem() argument
2980 if (mp->ma_used == 0) { in dict_popitem()
2987 if (mp->ma_keys->dk_lookup == lookdict_split) { in dict_popitem()
2988 if (dictresize(mp, DK_SIZE(mp->ma_keys))) { in dict_popitem()
2993 ENSURE_ALLOWS_DELETIONS(mp); in dict_popitem()
2996 ep0 = DK_ENTRIES(mp->ma_keys); in dict_popitem()
2997 i = mp->ma_keys->dk_nentries - 1; in dict_popitem()
3004 j = lookdict_index(mp->ma_keys, ep->me_hash, i); in dict_popitem()
3006 assert(dk_get_index(mp->ma_keys, j) == i); in dict_popitem()
3007 dk_set_index(mp->ma_keys, j, DKIX_DUMMY); in dict_popitem()
3014 mp->ma_keys->dk_nentries = i; in dict_popitem()
3015 mp->ma_used--; in dict_popitem()
3016 mp->ma_version_tag = DICT_NEXT_VERSION(); in dict_popitem()
3017 assert(_PyDict_CheckConsistency(mp)); in dict_popitem()
3024 PyDictObject *mp = (PyDictObject *)op; in dict_traverse() local
3025 PyDictKeysObject *keys = mp->ma_keys; in dict_traverse()
3038 if (mp->ma_values != NULL) { in dict_traverse()
3040 Py_VISIT(mp->ma_values[i]); in dict_traverse()
3062 _PyDict_SizeOf(PyDictObject *mp) in _PyDict_SizeOf() argument
3066 size = DK_SIZE(mp->ma_keys); in _PyDict_SizeOf()
3069 res = _PyObject_SIZE(Py_TYPE(mp)); in _PyDict_SizeOf()
3070 if (mp->ma_values) in _PyDict_SizeOf()
3074 if (mp->ma_keys->dk_refcnt == 1) in _PyDict_SizeOf()
3077 + DK_IXSIZE(mp->ma_keys) * size in _PyDict_SizeOf()
3092 dict_sizeof(PyDictObject *mp) in dict_sizeof() argument
3094 return PyLong_FromSsize_t(_PyDict_SizeOf(mp)); in dict_sizeof()
3176 PyDictObject *mp = (PyDictObject *)op; in PyDict_Contains() local
3185 ix = (mp->ma_keys->dk_lookup)(mp, key, hash, &value_addr, NULL); in PyDict_Contains()
3195 PyDictObject *mp = (PyDictObject *)op; in _PyDict_Contains() local
3199 ix = (mp->ma_keys->dk_lookup)(mp, key, hash, &value_addr, NULL); in _PyDict_Contains()