Lines Matching refs:ma_keys
511 PyDictKeysObject *keys = mp->ma_keys;
746 mp->ma_keys = keys;
787 assert(orig->ma_keys->dk_refcnt == 1);
789 Py_ssize_t keys_size = _PyDict_KeysSize(orig->ma_keys);
796 memcpy(keys, orig->ma_keys, keys_size);
803 if (DK_IS_UNICODE(orig->ma_keys)) {
892 if (dk == mp->ma_keys && ep->me_key == startkey) {
981 if (dk == mp->ma_keys && ep->me_key == startkey) {
1048 dk = mp->ma_keys;
1097 if (((PyDictObject *)dict)->ma_keys->dk_kind != DICT_KEYS_GENERAL)
1126 numentries = mp->ma_keys->dk_nentries;
1137 if (DK_IS_UNICODE(mp->ma_keys)) {
1138 PyDictUnicodeEntry *ep0 = DK_UNICODE_ENTRIES(mp->ma_keys);
1147 PyDictKeyEntry *ep0 = DK_ENTRIES(mp->ma_keys);
1230 if (DK_IS_UNICODE(mp->ma_keys) && !PyUnicode_CheckExact(key)) {
1233 assert(mp->ma_keys->dk_kind == DICT_KEYS_GENERAL);
1244 mp->ma_keys->dk_version = 0;
1246 if (mp->ma_keys->dk_usable <= 0) {
1252 Py_ssize_t hashpos = find_empty_slot(mp->ma_keys, hash);
1253 dictkeys_set_index(mp->ma_keys, hashpos, mp->ma_keys->dk_nentries);
1255 if (DK_IS_UNICODE(mp->ma_keys)) {
1257 ep = &DK_UNICODE_ENTRIES(mp->ma_keys)[mp->ma_keys->dk_nentries];
1260 Py_ssize_t index = mp->ma_keys->dk_nentries;
1271 ep = &DK_ENTRIES(mp->ma_keys)[mp->ma_keys->dk_nentries];
1278 mp->ma_keys->dk_usable--;
1279 mp->ma_keys->dk_nentries++;
1280 assert(mp->ma_keys->dk_usable >= 0);
1295 if (DK_IS_UNICODE(mp->ma_keys)) {
1296 DK_UNICODE_ENTRIES(mp->ma_keys)[ix].me_value = value;
1299 DK_ENTRIES(mp->ma_keys)[ix].me_value = value;
1315 // Same to insertdict but specialized for ma_keys = Py_EMPTY_KEYS.
1321 assert(mp->ma_keys == Py_EMPTY_KEYS);
1331 mp->ma_keys = newkeys;
1337 dictkeys_set_index(mp->ma_keys, hashpos, 0);
1339 PyDictUnicodeEntry *ep = DK_UNICODE_ENTRIES(mp->ma_keys);
1344 PyDictKeyEntry *ep = DK_ENTRIES(mp->ma_keys);
1351 mp->ma_keys->dk_usable--;
1352 mp->ma_keys->dk_nentries++;
1416 oldkeys = mp->ma_keys;
1423 /* NOTE: Current odict checks mp->ma_keys to detect resize happen.
1429 mp->ma_keys = new_keys_object(log2_newsize, unicode);
1430 if (mp->ma_keys == NULL) {
1431 mp->ma_keys = oldkeys;
1435 assert(mp->ma_keys->dk_usable >= mp->ma_used);
1444 if (mp->ma_keys->dk_kind == DICT_KEYS_GENERAL) {
1446 PyDictKeyEntry *newentries = DK_ENTRIES(mp->ma_keys);
1457 build_indices_generic(mp->ma_keys, newentries, numentries);
1460 PyDictUnicodeEntry *newentries = DK_UNICODE_ENTRIES(mp->ma_keys);
1470 build_indices_unicode(mp->ma_keys, newentries, numentries);
1479 assert(mp->ma_keys->dk_kind == DICT_KEYS_GENERAL);
1481 PyDictKeyEntry *newentries = DK_ENTRIES(mp->ma_keys);
1493 build_indices_generic(mp->ma_keys, newentries, numentries);
1498 PyDictUnicodeEntry *newentries = DK_UNICODE_ENTRIES(mp->ma_keys);
1499 if (oldkeys->dk_nentries == numentries && mp->ma_keys->dk_kind == DICT_KEYS_UNICODE) {
1510 build_indices_unicode(mp->ma_keys, newentries, numentries);
1513 PyDictKeyEntry *newentries = DK_ENTRIES(mp->ma_keys);
1523 build_indices_generic(mp->ma_keys, newentries, numentries);
1560 mp->ma_keys->dk_usable -= numentries;
1561 mp->ma_keys->dk_nentries = numentries;
1696 if (hint >= 0 && hint < mp->ma_keys->dk_nentries) {
1699 if (DK_IS_UNICODE(mp->ma_keys)) {
1700 PyDictUnicodeEntry *ep = DK_UNICODE_ENTRIES(mp->ma_keys) + (size_t)hint;
1702 if (mp->ma_keys->dk_kind == DICT_KEYS_SPLIT) {
1716 PyDictKeyEntry *ep = DK_ENTRIES(mp->ma_keys) + (size_t)hint;
1718 if (mp->ma_keys->dk_kind == DICT_KEYS_SPLIT) {
1882 if (mp->ma_keys == Py_EMPTY_KEYS) {
1926 if (mp->ma_keys == Py_EMPTY_KEYS) {
1955 Py_ssize_t hashpos = lookdict_index(mp->ma_keys, hash, ix);
1969 mp->ma_keys->dk_version = 0;
1970 dictkeys_set_index(mp->ma_keys, hashpos, DKIX_DUMMY);
1971 if (DK_IS_UNICODE(mp->ma_keys)) {
1972 PyDictUnicodeEntry *ep = &DK_UNICODE_ENTRIES(mp->ma_keys)[ix];
1978 PyDictKeyEntry *ep = &DK_ENTRIES(mp->ma_keys)[ix];
2066 hashpos = lookdict_index(mp->ma_keys, hash, ix);
2087 oldkeys = mp->ma_keys;
2094 mp->ma_keys = Py_EMPTY_KEYS;
2138 key = DK_UNICODE_ENTRIES(mp->ma_keys)[index].me_key;
2143 Py_ssize_t n = mp->ma_keys->dk_nentries;
2146 if (DK_IS_UNICODE(mp->ma_keys)) {
2147 PyDictUnicodeEntry *entry_ptr = &DK_UNICODE_ENTRIES(mp->ma_keys)[i];
2159 PyDictKeyEntry *entry_ptr = &DK_ENTRIES(mp->ma_keys)[i];
2285 int unicode = DK_IS_UNICODE(((PyDictObject*)iterable)->ma_keys);
2363 PyDictKeysObject *keys = mp->ma_keys;
2370 for (i = 0, n = mp->ma_keys->dk_nentries; i < n; i++) {
2843 PyDictKeysObject *okeys = other->ma_keys;
2855 dictkeys_decref(mp->ma_keys);
2856 mp->ma_keys = keys;
2878 if (USABLE_FRACTION(DK_SIZE(mp->ma_keys)) < other->ma_used) {
2879 int unicode = DK_IS_UNICODE(other->ma_keys);
2885 Py_ssize_t orig_size = other->ma_keys->dk_nentries;
2921 if (orig_size != other->ma_keys->dk_nentries) {
3032 Py_ssize_t size = shared_keys_usable_size(mp->ma_keys);
3045 split_copy->ma_keys = mp->ma_keys;
3048 dictkeys_incref(mp->ma_keys);
3061 (mp->ma_used >= (mp->ma_keys->dk_nentries * 2) / 3))
3160 for (i = 0; i < a->ma_keys->dk_nentries; i++) {
3163 if (DK_IS_UNICODE(a->ma_keys)) {
3164 PyDictUnicodeEntry *ep = &DK_UNICODE_ENTRIES(a->ma_keys)[i];
3176 PyDictKeyEntry *ep = &DK_ENTRIES(a->ma_keys)[i];
3315 if (mp->ma_keys == Py_EMPTY_KEYS) {
3324 if (!PyUnicode_CheckExact(key) && DK_IS_UNICODE(mp->ma_keys)) {
3335 mp->ma_keys->dk_version = 0;
3337 if (mp->ma_keys->dk_usable <= 0) {
3342 Py_ssize_t hashpos = find_empty_slot(mp->ma_keys, hash);
3343 dictkeys_set_index(mp->ma_keys, hashpos, mp->ma_keys->dk_nentries);
3344 if (DK_IS_UNICODE(mp->ma_keys)) {
3346 PyDictUnicodeEntry *ep = &DK_UNICODE_ENTRIES(mp->ma_keys)[mp->ma_keys->dk_nentries];
3349 Py_ssize_t index = (int)mp->ma_keys->dk_nentries;
3360 PyDictKeyEntry *ep = &DK_ENTRIES(mp->ma_keys)[mp->ma_keys->dk_nentries];
3370 mp->ma_keys->dk_usable--;
3371 mp->ma_keys->dk_nentries++;
3372 assert(mp->ma_keys->dk_usable >= 0);
3475 if (self->ma_keys->dk_kind == DICT_KEYS_SPLIT) {
3476 if (dictresize(self, DK_LOG_SIZE(self->ma_keys), 1)) {
3481 self->ma_keys->dk_version = 0;
3486 if (DK_IS_UNICODE(self->ma_keys)) {
3487 PyDictUnicodeEntry *ep0 = DK_UNICODE_ENTRIES(self->ma_keys);
3488 i = self->ma_keys->dk_nentries - 1;
3501 PyDictKeyEntry *ep0 = DK_ENTRIES(self->ma_keys);
3502 i = self->ma_keys->dk_nentries - 1;
3516 j = lookdict_index(self->ma_keys, hash, i);
3518 assert(dictkeys_get_index(self->ma_keys, j) == i);
3519 dictkeys_set_index(self->ma_keys, j, DKIX_DUMMY);
3524 self->ma_keys->dk_nentries = i;
3535 PyDictKeysObject *keys = mp->ma_keys;
3579 res += shared_keys_usable_size(mp->ma_keys) * sizeof(PyObject*);
3583 if (mp->ma_keys->dk_refcnt == 1) {
3584 res += _PyDict_KeysSize(mp->ma_keys);
3769 d->ma_keys = Py_EMPTY_KEYS;
3977 di->di_pos = dict->ma_keys->dk_nentries - 1;
4061 k = d->ma_keys;
4171 Py_ssize_t n = d->ma_keys->dk_nentries;
4172 if (DK_IS_UNICODE(d->ma_keys)) {
4173 PyDictUnicodeEntry *entry_ptr = &DK_UNICODE_ENTRIES(d->ma_keys)[i];
4183 PyDictKeyEntry *entry_ptr = &DK_ENTRIES(d->ma_keys)[i];
4267 key = DK_UNICODE_ENTRIES(d->ma_keys)[index].me_key;
4272 Py_ssize_t n = d->ma_keys->dk_nentries;
4273 if (DK_IS_UNICODE(d->ma_keys)) {
4274 PyDictUnicodeEntry *entry_ptr = &DK_UNICODE_ENTRIES(d->ma_keys)[i];
4285 PyDictKeyEntry *entry_ptr = &DK_ENTRIES(d->ma_keys)[i];
4390 PyDictKeysObject *k = d->ma_keys;