• Guido van Rossum's avatar
    Add Garbage Collection support to new-style classes (not yet to their · 048eb75c
    Guido van Rossum yazdı
    instances).
    
    Also added GC support to various auxiliary types: super, property,
    descriptors, wrappers, dictproxy.  (Only type objects have a tp_clear
    field; the other types are.)
    
    One change was necessary to the GC infrastructure.  We have statically
    allocated type objects that don't have a GC header (and can't easily
    be given one) and heap-allocated type objects that do have a GC
    header.  Giving these different metatypes would be really ugly: I
    tried, and I had to modify pickle.py, cPickle.c, copy.py, add a new
    invent a new name for the new metatype and make it a built-in, change
    affected tests...  In short, a mess.  So instead, we add a new type
    slot tp_is_gc, which is a simple Boolean function that determines
    whether a particular instance has GC headers or not.  This slot is
    only relevant for types that have the (new) GC flag bit set.  If the
    tp_is_gc slot is NULL (by far the most common case), all instances of
    the type are deemed to have GC headers.  This slot is called by the
    PyObject_IS_GC() macro (which is only used twice, both times in
    gcmodule.c).
    
    I also changed the extern declarations for a bunch of GC-related
    functions (_PyObject_GC_Del etc.): these always exist but objimpl.h
    only declared them when WITH_CYCLE_GC was defined, but I needed to be
    able to reference them without #ifdefs.  (When WITH_CYCLE_GC is not
    defined, they do the same as their non-GC counterparts anyway.)
    048eb75c
Adı
Son kayıt (commit)
Son güncelleme
Demo Loading commit data...
Doc Loading commit data...
Grammar Loading commit data...
Include Loading commit data...
Lib Loading commit data...
Mac Loading commit data...
Misc Loading commit data...
Modules Loading commit data...
Objects Loading commit data...
PC Loading commit data...
PCbuild Loading commit data...
Parser Loading commit data...
Python Loading commit data...
RISCOS Loading commit data...
Tools Loading commit data...
.cvsignore Loading commit data...
.hgtags Loading commit data...
LICENSE Loading commit data...
Makefile.pre.in Loading commit data...
PLAN.txt Loading commit data...
README Loading commit data...
acconfig.h Loading commit data...
configure Loading commit data...
configure.in Loading commit data...
install-sh Loading commit data...
pyconfig.h.in Loading commit data...
setup.py Loading commit data...