• Guido van Rossum's avatar
    Enable GC for new-style instances. This touches lots of files, since · 9475a231
    Guido van Rossum yazdı
    many types were subclassable but had a xxx_dealloc function that
    called PyObject_DEL(self) directly instead of deferring to
    self->ob_type->tp_free(self).  It is permissible to set tp_free in the
    type object directly to _PyObject_Del, for non-GC types, or to
    _PyObject_GC_Del, for GC types.  Still, PyObject_DEL was a tad faster,
    so I'm fearing that our pystone rating is going down again.  I'm not
    sure if doing something like
    
    void xxx_dealloc(PyObject *self)
    {
    	if (PyXxxCheckExact(self))
    		PyObject_DEL(self);
    	else
    		self->ob_type->tp_free(self);
    }
    
    is any faster than always calling the else branch, so I haven't
    attempted that -- however those types whose own dealloc is fancier
    (int, float, unicode) do use this pattern.
    9475a231
moduleobject.c 5.45 KB