[Python-checkins] python/dist/src/Objects object.c,2.189,2.190
gvanrossum@users.sourceforge.net
gvanrossum@users.sourceforge.net
Mon, 19 Aug 2002 12:22:53 -0700
Update of /cvsroot/python/python/dist/src/Objects
In directory usw-pr-cvs1:/tmp/cvs-serv19571
Modified Files:
object.c
Log Message:
Another modest speedup in PyObject_GenericGetAttr(): inline the call
to _PyType_Lookup().
Index: object.c
===================================================================
RCS file: /cvsroot/python/python/dist/src/Objects/object.c,v
retrieving revision 2.189
retrieving revision 2.190
diff -C2 -d -r2.189 -r2.190
*** object.c 19 Aug 2002 16:50:48 -0000 2.189
--- object.c 19 Aug 2002 19:22:50 -0000 2.190
***************
*** 1290,1294 ****
{
PyTypeObject *tp = obj->ob_type;
! PyObject *descr;
PyObject *res = NULL;
descrgetfunc f;
--- 1290,1294 ----
{
PyTypeObject *tp = obj->ob_type;
! PyObject *descr = NULL;
PyObject *res = NULL;
descrgetfunc f;
***************
*** 1322,1326 ****
}
! descr = _PyType_Lookup(tp, name);
f = NULL;
if (descr != NULL) {
--- 1322,1350 ----
}
! /* Inline _PyType_Lookup */
! {
! int i, n;
! PyObject *mro, *base, *dict;
!
! /* Look in tp_dict of types in MRO */
! mro = tp->tp_mro;
! assert(mro != NULL);
! assert(PyTuple_Check(mro));
! n = PyTuple_GET_SIZE(mro);
! for (i = 0; i < n; i++) {
! base = PyTuple_GET_ITEM(mro, i);
! if (PyClass_Check(base))
! dict = ((PyClassObject *)base)->cl_dict;
! else {
! assert(PyType_Check(base));
! dict = ((PyTypeObject *)base)->tp_dict;
! }
! assert(dict && PyDict_Check(dict));
! descr = PyDict_GetItem(dict, name);
! if (descr != NULL)
! break;
! }
! }
!
f = NULL;
if (descr != NULL) {