diff options
author | Fred Drake <fdrake@acm.org> | 2001-10-26 17:56:51 (GMT) |
---|---|---|
committer | Fred Drake <fdrake@acm.org> | 2001-10-26 17:56:51 (GMT) |
commit | c916f5a390b0ca559de54a15d4014e18792674ea (patch) | |
tree | c258ba669054c2b6f28d5294b66681cc81022442 /Objects/funcobject.c | |
parent | 7408da54e2b8ca3afef70fef12bf7c9ce804c969 (diff) | |
download | cpython-c916f5a390b0ca559de54a15d4014e18792674ea.zip cpython-c916f5a390b0ca559de54a15d4014e18792674ea.tar.gz cpython-c916f5a390b0ca559de54a15d4014e18792674ea.tar.bz2 |
Be smarter about clearing the weakref lists for instances, instance methods,
and functions: we only need to call PyObject_ClearWeakRefs() if the weakref
list is non-NULL. Since these objects are common but weakrefs are still
unusual, saving the call at deallocation time makes a lot of sense.
Diffstat (limited to 'Objects/funcobject.c')
-rw-r--r-- | Objects/funcobject.c | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/Objects/funcobject.c b/Objects/funcobject.c index 89dd7f9..d978c3f 100644 --- a/Objects/funcobject.c +++ b/Objects/funcobject.c @@ -270,7 +270,8 @@ static void func_dealloc(PyFunctionObject *op) { _PyObject_GC_UNTRACK(op); - PyObject_ClearWeakRefs((PyObject *) op); + if (op->func_weakreflist != NULL) + PyObject_ClearWeakRefs((PyObject *) op); Py_DECREF(op->func_code); Py_DECREF(op->func_globals); Py_DECREF(op->func_name); |