From c588e9041aea212fe2b5fad9254824d12f804c3e Mon Sep 17 00:00:00 2001 From: Guido van Rossum Date: Mon, 19 Aug 2002 16:02:33 +0000 Subject: Simple but important optimization for descr_check(): instead of the expensive and overly general PyObject_IsInstance(), call PyObject_TypeCheck() which is a macro that often avoids a call, and if it does make a call, calls the much more efficient PyType_IsSubtype(). This saved 6% on a benchmark for slot lookups. --- Objects/descrobject.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Objects/descrobject.c b/Objects/descrobject.c index cbf9e16..6daffc6 100644 --- a/Objects/descrobject.c +++ b/Objects/descrobject.c @@ -65,7 +65,7 @@ descr_check(PyDescrObject *descr, PyObject *obj, PyTypeObject *type, *pres = (PyObject *)descr; return 1; } - if (!PyObject_IsInstance(obj, (PyObject *)(descr->d_type))) { + if (!PyObject_TypeCheck(obj, descr->d_type)) { PyErr_Format(PyExc_TypeError, "descriptor '%s' for '%s' objects " "doesn't apply to '%s' object", -- cgit v0.12