You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Optimize _PyObject_IS_GC in free-threaded build #114733
_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 initialize ob_gc_bits with the "IS GC" set
PyType_GenericAlloc() would also need to initialize ob_gc_bits with the "IS GC" set if the type is a GC type.
_Py_NewReference() requires some care. It. currently initializes ob_gc_bits to zero and it's used after "allocating" objects from freelists.
Activity