----- Original Message ----- From: "Martin v. Loewis" <martin@v.loewis.de> > "Jason Orendorff" <jason@jorendorff.com> writes: > > > I think David is asking about line 1404 of Objects/typeobject.c, > > where it says that PyType_Type is Py_TPFLAGS_HAVE_GC. > > How can it have GC when many instances are static objects, not > > allocated with PyObject_GC_VarNew()? > > Because the type type implements tp_is_gc (typeobject.c:1378), > declaring static type objects as not being gc. In turn, garbage > collection will not attempt to look at the GC header of these type > objects. Aha! And the implementation is... static int type_is_gc(PyTypeObject *type) { return type->tp_flags & Py_TPFLAGS_HEAPTYPE; } so, wouldn't it make more sense that the Python source always checks Py_TPFLAGS_HEAPTYPE before tp_is_gc? Also, is there any guideline for which type slots get automatically copied from the base type? Since my slots are nearly all zero I expected to inherit most of the slots from type_type. -Dave
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4