Message 157464 - Python tracker (original) (raw)
I just noticed that PyTypeObjects have a gc slot already: inquiry tp_is_gc; /* For PyObject_IS_GC */
Now, this is used in only one place in 2.7, for type objects: return type->tp_flags & Py_TPFLAGS_HEAPTYPE;
This is thus used to dynamically query if an object was allocated with a GC header or not, since static types cannot have this.
Now, it would be perfectly possible to change the semantics of this function to return a bit flag, with bit 0 being the "has head" and bit 1 meaning "is collectable"
This might simplify some stuff. Any thoughts?