]> git.ipfire.org Git - thirdparty/Python/cpython.git/commit
A modest speedup of object deallocation. call_finalizer() did rather
authorGuido van Rossum <guido@python.org>
Thu, 8 Aug 2002 20:55:20 +0000 (20:55 +0000)
committerGuido van Rossum <guido@python.org>
Thu, 8 Aug 2002 20:55:20 +0000 (20:55 +0000)
commitfebd61dc02f0edbe9aa746fabde8ce97fbbeabdb
tree3bba4c0481fd8fd11777e93b1b46e5579638c5aa
parent12e3c710db23ea9370c3bc54a5f0a2c262ffd0cc
A modest speedup of object deallocation.  call_finalizer() did rather
a lot of work: it had to save and restore the current exception around
a call to lookup_maybe(), because that could fail in rare cases, and
most objects don't have a __del__ method, so the whole exercise was
usually a waste of time.  Changed this to cache the __del__ method in
the type object just like all other special methods, in a new slot
tp_del.  So now subtype_dealloc() can test whether tp_del is NULL and
skip the whole exercise if it is.  The new slot doesn't need a new
flag bit: subtype_dealloc() is only called if the type was dynamically
allocated by type_new(), so it's guaranteed to have all current slots.
Types defined in C cannot fill in tp_del with a function of their own,
so there's no corresponding "wrapper".  (That functionality is already
available through tp_dealloc.)
Include/object.h
Objects/typeobject.c