-
-
Notifications
You must be signed in to change notification settings - Fork 33.4k
Open
Labels
Description
Feature or enhancement
@nascheme writes the following suggestion (from #114564 (comment)):
_PyObject_IS_GC() could be optimized in the nogil build. That function is a bit expensive since it has to check for tp_is_gc() and possibly call it. Now that all objects have ob_gc_bits, we could store the "IS GC" status as another bit there, when the object is allocated.
I think this might require a bit of refactoring, but worth doing eventually. At a glance:
_PyObject_GC_New()(and related functions) could initializeob_gc_bitswith the "IS GC" setPyType_GenericAlloc()would also need to initializeob_gc_bitswith the "IS GC" set if the type is a GC type._Py_NewReference()requires some care. It. currently initializesob_gc_bitsto zero and it's used after "allocating" objects from freelists.