mirror of
https://github.com/python/cpython.git
synced 2026-01-06 15:32:22 +00:00
GH-133231: Changes to executor management to support proposed sys._jit module (GH-133287)
* Track the current executor, not the previous one, on the thread-state. * Batch executors for deallocation to avoid having to constantly incref executors; this is an ad-hoc form of deferred reference counting.
This commit is contained in:
parent
1d9406e426
commit
ac7d5ba96e
13 changed files with 176 additions and 54 deletions
|
|
@ -678,6 +678,8 @@ init_interpreter(PyInterpreterState *interp,
|
|||
interp->sys_trace_initialized = false;
|
||||
interp->jit = false;
|
||||
interp->executor_list_head = NULL;
|
||||
interp->executor_deletion_list_head = NULL;
|
||||
interp->executor_deletion_list_remaining_capacity = 0;
|
||||
interp->trace_run_counter = JIT_CLEANUP_THRESHOLD;
|
||||
if (interp != &runtime->_main_interpreter) {
|
||||
/* Fix the self-referential, statically initialized fields. */
|
||||
|
|
@ -902,6 +904,10 @@ interpreter_clear(PyInterpreterState *interp, PyThreadState *tstate)
|
|||
Py_CLEAR(interp->after_forkers_child);
|
||||
#endif
|
||||
|
||||
|
||||
#ifdef _Py_TIER2
|
||||
_Py_ClearExecutorDeletionList(interp);
|
||||
#endif
|
||||
_PyAST_Fini(interp);
|
||||
_PyWarnings_Fini(interp);
|
||||
_PyAtExit_Fini(interp);
|
||||
|
|
@ -1570,7 +1576,7 @@ init_threadstate(_PyThreadStateImpl *_tstate,
|
|||
tstate->datastack_top = NULL;
|
||||
tstate->datastack_limit = NULL;
|
||||
tstate->what_event = -1;
|
||||
tstate->previous_executor = NULL;
|
||||
tstate->current_executor = NULL;
|
||||
tstate->dict_global_version = 0;
|
||||
|
||||
_tstate->c_stack_soft_limit = UINTPTR_MAX;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue