mirror of
https://github.com/python/cpython.git
synced 2025-12-04 00:30:19 +00:00
Revert: bpo-33608: Factor out a private, per-interpreter _Py_AddPendingCall(). (GH-11617) (GH-12159)
* Revert "bpo-36097: Use only public C-API in the_xxsubinterpreters module (adding as necessary). (#12003)" This reverts commitbcfa450f21. * Revert "bpo-33608: Simplify ceval's DISPATCH by hoisting eval_breaker ahead of time. (gh-12062)" This reverts commitbda918bf65. * Revert "bpo-33608: Use _Py_AddPendingCall() in _PyCrossInterpreterData_Release(). (gh-12024)" This reverts commitb05b711a2c. * Revert "bpo-33608: Factor out a private, per-interpreter _Py_AddPendingCall(). (GH-11617)" This reverts commitef4ac967e2.
This commit is contained in:
parent
f4b0a1c0da
commit
4d61e6e3b8
20 changed files with 582 additions and 751 deletions
|
|
@ -11,12 +11,8 @@ extern "C" {
|
|||
#include "pycore_atomic.h"
|
||||
#include "pythread.h"
|
||||
|
||||
struct _is; // See PyInterpreterState in cpython/pystate.h.
|
||||
|
||||
PyAPI_FUNC(int) _Py_AddPendingCall(struct _is*, unsigned long, int (*)(void *), void *);
|
||||
PyAPI_FUNC(int) _Py_MakePendingCalls(struct _is*);
|
||||
|
||||
struct _pending_calls {
|
||||
unsigned long main_thread;
|
||||
PyThread_type_lock lock;
|
||||
/* Request for running pending calls. */
|
||||
_Py_atomic_int calls_to_do;
|
||||
|
|
@ -26,7 +22,6 @@ struct _pending_calls {
|
|||
int async_exc;
|
||||
#define NPENDINGCALLS 32
|
||||
struct {
|
||||
unsigned long thread_id;
|
||||
int (*func)(void *);
|
||||
void *arg;
|
||||
} calls[NPENDINGCALLS];
|
||||
|
|
@ -34,13 +29,6 @@ struct _pending_calls {
|
|||
int last;
|
||||
};
|
||||
|
||||
struct _ceval_interpreter_state {
|
||||
/* This single variable consolidates all requests to break out of
|
||||
the fast path in the eval loop. */
|
||||
_Py_atomic_int eval_breaker;
|
||||
struct _pending_calls pending;
|
||||
};
|
||||
|
||||
#include "pycore_gil.h"
|
||||
|
||||
struct _ceval_runtime_state {
|
||||
|
|
@ -51,8 +39,12 @@ struct _ceval_runtime_state {
|
|||
c_tracefunc. This speeds up the if statement in
|
||||
PyEval_EvalFrameEx() after fast_next_opcode. */
|
||||
int tracing_possible;
|
||||
/* This single variable consolidates all requests to break out of
|
||||
the fast path in the eval loop. */
|
||||
_Py_atomic_int eval_breaker;
|
||||
/* Request for dropping the GIL */
|
||||
_Py_atomic_int gil_drop_request;
|
||||
struct _pending_calls pending;
|
||||
/* Request for checking signals. */
|
||||
_Py_atomic_int signals_pending;
|
||||
struct _gil_runtime_state gil;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue