File tree
Include/internal
Modules/_testinternalcapi
Objects
Python
Original file line numberDiff line numberDiff line change@@ -90,6 +90,8 @@ typedef struct {
9090} PyDictUnicodeEntry;
91919292externPyDictKeysObject*_PyDict_NewKeysForClass(PyHeapTypeObject*);
93+externvoid_PyDict_RemoveKeysForClass(PyHeapTypeObject*);
94+externvoid_PyDict_SplitKeysInvalidated(PyDictKeysObject*keys);
9395externPyObject*_PyDict_FromKeys(PyObject*, PyObject*, PyObject*);
94969597/* Implementations of the `|` and `|=` operators for dict, used by the
@@ -239,6 +241,17 @@ struct _dictkeysobject {
239241 see the DK_ENTRIES() / DK_UNICODE_ENTRIES() functions below */
240242};
241243244+struct_instancekeysobject {
245+PyTypeObject*dsk_owning_type;
246+struct_dictkeysobjectdsk_keys;
247+};
248+249+staticinlinestruct_instancekeysobject*_PyDictKeys_AsSharedKeys(struct_dictkeysobject*keys)
250+{
251+assert(keys->dk_kind==DICT_KEYS_SPLIT);
252+return_Py_CONTAINER_OF(keys, struct_instancekeysobject, dsk_keys);
253+}
254+242255/* This must be no more than 250, for the prefix size to fit in one byte. */
243256#defineSHARED_KEYS_MAX_SIZE 30
244257#defineNEXT_LOG2_SHARED_KEYS_MAX_SIZE 6