From: Guido van Rossum Date: Wed, 3 Oct 2001 00:50:18 +0000 (+0000) Subject: call_method(), call_maybe(): fix a performance bug: the argument X-Git-Tag: v2.2.1c1~1489 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=da21c0110b1948d4b3e0593e06436a2a5582f366;p=python 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! --- diff --git a/Objects/typeobject.c b/Objects/typeobject.c index 295be89c38..a681d337c5 100644 --- a/Objects/typeobject.c +++ b/Objects/typeobject.c @@ -378,18 +378,15 @@ call_method(PyObject *o, char *name, PyObject **nameobj, char *format, ...) { va_list va; PyObject *args, *func = 0, *retval; - PyObject *dummy_str = NULL; va_start(va, format); - func = lookup_maybe(o, name, &dummy_str); + func = lookup_maybe(o, name, nameobj); if (func == NULL) { va_end(va); if (!PyErr_Occurred()) - PyErr_SetObject(PyExc_AttributeError, dummy_str); - Py_XDECREF(dummy_str); + PyErr_SetObject(PyExc_AttributeError, *nameobj); return NULL; } - Py_DECREF(dummy_str); if (format && *format) args = Py_VaBuildValue(format, va); @@ -417,11 +414,9 @@ call_maybe(PyObject *o, char *name, PyObject **nameobj, char *format, ...) { 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); + func = lookup_maybe(o, name, nameobj); if (func == NULL) { va_end(va); if (!PyErr_Occurred()) {