mirror of https://github.com/python/cpython.git
Speed up PyType_stgdict and PyObject_stgdict.
This commit is contained in:
parent
07fec3aa5a
commit
d61d0733cb
|
@ -134,16 +134,25 @@ PyType_stgdict(PyObject *obj)
|
||||||
type = (PyTypeObject *)obj;
|
type = (PyTypeObject *)obj;
|
||||||
if (!PyType_HasFeature(type, Py_TPFLAGS_HAVE_CLASS))
|
if (!PyType_HasFeature(type, Py_TPFLAGS_HAVE_CLASS))
|
||||||
return NULL;
|
return NULL;
|
||||||
if (!type->tp_dict || !StgDict_Check(type->tp_dict))
|
if (!type->tp_dict || !StgDict_CheckExact(type->tp_dict))
|
||||||
return NULL;
|
return NULL;
|
||||||
return (StgDictObject *)type->tp_dict;
|
return (StgDictObject *)type->tp_dict;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* May return NULL, but does not set an exception! */
|
/* May return NULL, but does not set an exception! */
|
||||||
|
/*
|
||||||
|
This function should be as fast as possible, so we don't call PyType_stgdict
|
||||||
|
above but inline the code, and avoid the PyType_Check().
|
||||||
|
*/
|
||||||
StgDictObject *
|
StgDictObject *
|
||||||
PyObject_stgdict(PyObject *self)
|
PyObject_stgdict(PyObject *self)
|
||||||
{
|
{
|
||||||
return PyType_stgdict((PyObject *)self->ob_type);
|
PyTypeObject *type = self->ob_type;
|
||||||
|
if (!PyType_HasFeature(type, Py_TPFLAGS_HAVE_CLASS))
|
||||||
|
return NULL;
|
||||||
|
if (!type->tp_dict || !StgDict_CheckExact(type->tp_dict))
|
||||||
|
return NULL;
|
||||||
|
return (StgDictObject *)type->tp_dict;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* descr is the descriptor for a field marked as anonymous. Get all the
|
/* descr is the descriptor for a field marked as anonymous. Get all the
|
||||||
|
|
Loading…
Reference in New Issue