• Tim Peters's avatar
    Trashcan cleanup: Now that cyclic gc is always there, the trashcan · 803526b9
    Tim Peters yazdı
    mechanism is no longer evil:  it no longer plays dangerous games with
    the type pointer or refcounts, and objects in extension modules can play
    along too without needing to edit the core first.
    
    Rewrote all the comments to explain this, and (I hope) give clear
    guidance to extension authors who do want to play along.  Documented
    all the functions.  Added more asserts (it may no longer be evil, but
    it's still dangerous <0.9 wink>).  Rearranged the generated code to
    make it clearer, and to tolerate either the presence or absence of a
    semicolon after the macros.  Rewrote _PyTrash_destroy_chain() to call
    tp_dealloc directly; it was doing a Py_DECREF again, and that has all
    sorts of obscure distorting effects in non-release builds (Py_DECREF
    was already called on the object!).  Removed Christian's little "embedded
    change log" comments -- that's what checkin messages are for, and since
    it was impossible to correlate the comments with the code that changed,
    I found them merely distracting.
    803526b9
gcmodule.c 28.5 KB