mirror of
https://github.com/python/cpython.git
synced 2025-08-04 08:59:19 +00:00
gh-124218: Refactor per-thread reference counting (#124844)
Currently, we only use per-thread reference counting for heap type objects and the naming reflects that. We will extend it to a few additional types in an upcoming change to avoid scaling bottlenecks when creating nested functions. Rename some of the files and functions in preparation for this change.
This commit is contained in:
parent
5aa91c56bf
commit
b482538523
15 changed files with 168 additions and 167 deletions
|
@ -20,7 +20,7 @@
|
|||
#include "pycore_runtime_init.h" // _PyRuntimeState_INIT
|
||||
#include "pycore_sysmodule.h" // _PySys_Audit()
|
||||
#include "pycore_obmalloc.h" // _PyMem_obmalloc_state_on_heap()
|
||||
#include "pycore_typeid.h" // _PyType_FinalizeThreadLocalRefcounts()
|
||||
#include "pycore_uniqueid.h" // _PyType_FinalizeThreadLocalRefcounts()
|
||||
|
||||
/* --------------------------------------------------------------------------
|
||||
CAUTION
|
||||
|
@ -1745,7 +1745,7 @@ PyThreadState_Clear(PyThreadState *tstate)
|
|||
|
||||
// Merge our thread-local refcounts into the type's own refcount and
|
||||
// free our local refcount array.
|
||||
_PyType_FinalizeThreadLocalRefcounts((_PyThreadStateImpl *)tstate);
|
||||
_PyObject_FinalizePerThreadRefcounts((_PyThreadStateImpl *)tstate);
|
||||
|
||||
// Remove ourself from the biased reference counting table of threads.
|
||||
_Py_brc_remove_thread(tstate);
|
||||
|
@ -1805,7 +1805,7 @@ tstate_delete_common(PyThreadState *tstate, int release_gil)
|
|||
_PyThreadStateImpl *tstate_impl = (_PyThreadStateImpl *)tstate;
|
||||
tstate->interp->object_state.reftotal += tstate_impl->reftotal;
|
||||
tstate_impl->reftotal = 0;
|
||||
assert(tstate_impl->types.refcounts == NULL);
|
||||
assert(tstate_impl->refcounts.values == NULL);
|
||||
#endif
|
||||
|
||||
HEAD_UNLOCK(runtime);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue