Commit d61d0733 authored by Thomas Heller's avatar Thomas Heller

Speed up PyType_stgdict and PyObject_stgdict.

parent 07fec3aa
...@@ -134,16 +134,25 @@ PyType_stgdict(PyObject *obj) ...@@ -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
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment