[Python-checkins] CVS: python/dist/src/Objects typeobject.c,2.83,2.84
Guido van Rossum
gvanrossum@users.sourceforge.net
Tue, 02 Oct 2001 17:50:20 -0700
Update of /cvsroot/python/python/dist/src/Objects
In directory usw-pr-cvs1:/tmp/cvs-serv14623
Modified Files:
typeobject.c
Log Message:
call_method(), call_maybe(): fix a performance bug: the argument
pointing to a static variable to hold the object form of the string
was never used, causing endless calls to PyString_InternFromString().
One particular test (with lots of __getitem__ calls) became a third
faster with this!
Index: typeobject.c
===================================================================
RCS file: /cvsroot/python/python/dist/src/Objects/typeobject.c,v
retrieving revision 2.83
retrieving revision 2.84
diff -C2 -d -r2.83 -r2.84
*** typeobject.c 2001/10/02 21:24:57 2.83
--- typeobject.c 2001/10/03 00:50:18 2.84
***************
*** 379,394 ****
va_list va;
PyObject *args, *func = 0, *retval;
- PyObject *dummy_str = NULL;
va_start(va, format);
! func = lookup_maybe(o, name, &dummy_str);
if (func == NULL) {
va_end(va);
if (!PyErr_Occurred())
! PyErr_SetObject(PyExc_AttributeError, dummy_str);
! Py_XDECREF(dummy_str);
return NULL;
}
- Py_DECREF(dummy_str);
if (format && *format)
--- 379,391 ----
va_list va;
PyObject *args, *func = 0, *retval;
va_start(va, format);
! func = lookup_maybe(o, name, nameobj);
if (func == NULL) {
va_end(va);
if (!PyErr_Occurred())
! PyErr_SetObject(PyExc_AttributeError, *nameobj);
return NULL;
}
if (format && *format)
***************
*** 418,426 ****
va_list va;
PyObject *args, *func = 0, *retval;
- PyObject *dummy_str = NULL;
va_start(va, format);
! func = lookup_maybe(o, name, &dummy_str);
! Py_XDECREF(dummy_str);
if (func == NULL) {
va_end(va);
--- 415,421 ----
va_list va;
PyObject *args, *func = 0, *retval;
va_start(va, format);
! func = lookup_maybe(o, name, nameobj);
if (func == NULL) {
va_end(va);