summaryrefslogtreecommitdiffstats
path: root/Mac
diff options
context:
space:
mode:
authorGuido van Rossum <guido@python.org>2002-08-08 20:55:20 (GMT)
committerGuido van Rossum <guido@python.org>2002-08-08 20:55:20 (GMT)
commitfebd61dc02f0edbe9aa746fabde8ce97fbbeabdb (patch)
tree3bba4c0481fd8fd11777e93b1b46e5579638c5aa /Mac
parent12e3c710db23ea9370c3bc54a5f0a2c262ffd0cc (diff)
downloadcpython-febd61dc02f0edbe9aa746fabde8ce97fbbeabdb.zip
cpython-febd61dc02f0edbe9aa746fabde8ce97fbbeabdb.tar.gz
cpython-febd61dc02f0edbe9aa746fabde8ce97fbbeabdb.tar.bz2
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.)
Diffstat (limited to 'Mac')
0 files changed, 0 insertions, 0 deletions