mirror of https://github.com/python/cpython
GH-106485: Create object's dict-values instead of creating __dict__, when we can. (GH-107843)
This commit is contained in:
parent
66e4edd734
commit
666b68e8f2
|
@ -5762,10 +5762,8 @@ _PyObjectDict_SetItem(PyTypeObject *tp, PyObject **dictptr,
|
|||
assert(dictptr != NULL);
|
||||
dict = *dictptr;
|
||||
if (dict == NULL) {
|
||||
assert(!_PyType_HasFeature(tp, Py_TPFLAGS_MANAGED_DICT));
|
||||
dictkeys_incref(cached);
|
||||
if (_PyType_HasFeature(tp, Py_TPFLAGS_MANAGED_DICT)) {
|
||||
OBJECT_STAT_INC(dict_materialized_on_request);
|
||||
}
|
||||
dict = new_dict_with_shared_keys(interp, cached);
|
||||
if (dict == NULL)
|
||||
return -1;
|
||||
|
|
|
@ -1577,6 +1577,14 @@ _PyObject_GenericSetAttrWithDict(PyObject *obj, PyObject *name,
|
|||
goto error_check;
|
||||
}
|
||||
dictptr = &dorv_ptr->dict;
|
||||
if (*dictptr == NULL) {
|
||||
if (_PyObject_InitInlineValues(obj, tp) < 0) {
|
||||
goto done;
|
||||
}
|
||||
res = _PyObject_StoreInstanceAttribute(
|
||||
obj, _PyDictOrValues_GetValues(*dorv_ptr), name, value);
|
||||
goto error_check;
|
||||
}
|
||||
}
|
||||
else {
|
||||
dictptr = _PyObject_ComputedDictPointer(obj);
|
||||
|
|
Loading…
Reference in New Issue