summaryrefslogtreecommitdiffstats
path: root/Python
diff options
context:
space:
mode:
authorEric Snow <ericsnowcurrently@gmail.com>2022-11-16 16:37:14 (GMT)
committerGitHub <noreply@github.com>2022-11-16 16:37:14 (GMT)
commit5f55067e238c21de25f09ece9bb24ae8c42d02b4 (patch)
treef3fbce5e16aaa3a8871518c4ccb18bc8a1d86e9e /Python
parent5cfb7d19f5242c9b8ffd2fe30a24569e85a99e1d (diff)
downloadcpython-5f55067e238c21de25f09ece9bb24ae8c42d02b4.zip
cpython-5f55067e238c21de25f09ece9bb24ae8c42d02b4.tar.gz
cpython-5f55067e238c21de25f09ece9bb24ae8c42d02b4.tar.bz2
gh-81057: Move More Globals in Core Code to _PyRuntimeState (gh-99516)
https://github.com/python/cpython/issues/81057
Diffstat (limited to 'Python')
-rw-r--r--Python/bootstrap_hash.c10
-rw-r--r--Python/ceval_gil.c9
-rw-r--r--Python/fileutils.c2
-rw-r--r--Python/importdl.c2
-rw-r--r--Python/modsupport.c3
-rw-r--r--Python/pylifecycle.c2
-rw-r--r--Python/pystate.c10
-rw-r--r--Python/pythonrun.c5
8 files changed, 20 insertions, 23 deletions
diff --git a/Python/bootstrap_hash.c b/Python/bootstrap_hash.c
index 3a2a731..587063e 100644
--- a/Python/bootstrap_hash.c
+++ b/Python/bootstrap_hash.c
@@ -1,6 +1,7 @@
#include "Python.h"
#include "pycore_initconfig.h"
#include "pycore_fileutils.h" // _Py_fstat_noraise()
+#include "pycore_runtime.h" // _PyRuntime
#ifdef MS_WINDOWS
# include <windows.h>
@@ -263,11 +264,7 @@ py_getentropy(char *buffer, Py_ssize_t size, int raise)
#endif /* defined(HAVE_GETENTROPY) && !(defined(__sun) && defined(__SVR4)) */
-static struct {
- int fd;
- dev_t st_dev;
- ino_t st_ino;
-} urandom_cache = { -1 };
+#define urandom_cache (_PyRuntime.pyhash_state.urandom_cache)
/* Read random bytes from the /dev/urandom device:
@@ -402,6 +399,9 @@ dev_urandom_close(void)
urandom_cache.fd = -1;
}
}
+
+#undef urandom_cache
+
#endif /* !MS_WINDOWS */
diff --git a/Python/ceval_gil.c b/Python/ceval_gil.c
index 9b9d7dc..83f4e91 100644
--- a/Python/ceval_gil.c
+++ b/Python/ceval_gil.c
@@ -819,11 +819,10 @@ make_pending_calls(PyInterpreterState *interp)
}
/* don't perform recursive pending calls */
- static int busy = 0;
- if (busy) {
+ if (interp->ceval.pending.busy) {
return 0;
}
- busy = 1;
+ interp->ceval.pending.busy = 1;
/* unsignal before starting to call callbacks, so that any callback
added in-between re-signals */
@@ -851,11 +850,11 @@ make_pending_calls(PyInterpreterState *interp)
}
}
- busy = 0;
+ interp->ceval.pending.busy = 0;
return res;
error:
- busy = 0;
+ interp->ceval.pending.busy = 0;
SIGNAL_PENDING_CALLS(interp);
return res;
}
diff --git a/Python/fileutils.c b/Python/fileutils.c
index fb1e5ef..244bd89 100644
--- a/Python/fileutils.c
+++ b/Python/fileutils.c
@@ -191,7 +191,7 @@ extern int _Py_normalize_encoding(const char *, char *, size_t);
Py_DecodeLocale() uses mbstowcs()
-1: unknown, need to call check_force_ascii() to get the value
*/
-static int force_ascii = -1;
+#define force_ascii (_PyRuntime.fileutils.force_ascii)
static int
check_force_ascii(void)
diff --git a/Python/importdl.c b/Python/importdl.c
index 870ae27..4022767 100644
--- a/Python/importdl.c
+++ b/Python/importdl.c
@@ -160,6 +160,7 @@ _PyImport_LoadDynamicModuleWithSpec(PyObject *spec, FILE *fp)
p0 = (PyModInitFunction)exportfunc;
/* Package context is needed for single-phase init */
+#define _Py_PackageContext (_PyRuntime.imports.pkgcontext)
oldcontext = _Py_PackageContext;
_Py_PackageContext = PyUnicode_AsUTF8(name_unicode);
if (_Py_PackageContext == NULL) {
@@ -168,6 +169,7 @@ _PyImport_LoadDynamicModuleWithSpec(PyObject *spec, FILE *fp)
}
m = _PyImport_InitFunc_TrampolineCall(p0);
_Py_PackageContext = oldcontext;
+#undef _Py_PackageContext
if (m == NULL) {
if (!PyErr_Occurred()) {
diff --git a/Python/modsupport.c b/Python/modsupport.c
index ee4bf14..b9a10dc 100644
--- a/Python/modsupport.c
+++ b/Python/modsupport.c
@@ -10,9 +10,6 @@ typedef double va_double;
static PyObject *va_build_value(const char *, va_list, int);
static PyObject **va_build_stack(PyObject **small_stack, Py_ssize_t small_stack_len, const char *, va_list, int, Py_ssize_t*);
-/* Package context -- the full module name for package imports */
-const char *_Py_PackageContext = NULL;
-
int
_Py_convert_optional_to_ssize_t(PyObject *obj, void *result)
diff --git a/Python/pylifecycle.c b/Python/pylifecycle.c
index 7ca284e..10636b4 100644
--- a/Python/pylifecycle.c
+++ b/Python/pylifecycle.c
@@ -77,8 +77,6 @@ static PyStatus init_sys_streams(PyThreadState *tstate);
static void wait_for_thread_shutdown(PyThreadState *tstate);
static void call_ll_exitfuncs(_PyRuntimeState *runtime);
-int _Py_UnhandledKeyboardInterrupt = 0;
-
/* The following places the `_PyRuntime` structure in a location that can be
* found without any external information. This is meant to ease access to the
* interpreter state for various runtime debugging tools, but is *not* an
diff --git a/Python/pystate.c b/Python/pystate.c
index 5c9e4ff..b94fbf6 100644
--- a/Python/pystate.c
+++ b/Python/pystate.c
@@ -137,8 +137,8 @@ init_runtime(_PyRuntimeState *runtime,
// Set it to the ID of the main thread of the main interpreter.
runtime->main_thread = PyThread_get_thread_ident();
- runtime->unicode_ids.next_index = unicode_next_index;
- runtime->unicode_ids.lock = unicode_ids_mutex;
+ runtime->unicode_state.ids.next_index = unicode_next_index;
+ runtime->unicode_state.ids.lock = unicode_ids_mutex;
runtime->_initialized = 1;
}
@@ -154,7 +154,7 @@ _PyRuntimeState_Init(_PyRuntimeState *runtime)
_Py_AuditHookEntry *audit_hook_head = runtime->audit_hook_head;
// bpo-42882: Preserve next_index value if Py_Initialize()/Py_Finalize()
// is called multiple times.
- Py_ssize_t unicode_next_index = runtime->unicode_ids.next_index;
+ Py_ssize_t unicode_next_index = runtime->unicode_state.ids.next_index;
PyThread_type_lock lock1, lock2, lock3, lock4;
if (alloc_for_runtime(&lock1, &lock2, &lock3, &lock4) != 0) {
@@ -186,7 +186,7 @@ _PyRuntimeState_Fini(_PyRuntimeState *runtime)
FREE_LOCK(runtime->interpreters.mutex);
FREE_LOCK(runtime->xidregistry.mutex);
- FREE_LOCK(runtime->unicode_ids.lock);
+ FREE_LOCK(runtime->unicode_state.ids.lock);
FREE_LOCK(runtime->getargs.mutex);
#undef FREE_LOCK
@@ -209,7 +209,7 @@ _PyRuntimeState_ReInitThreads(_PyRuntimeState *runtime)
int reinit_interp = _PyThread_at_fork_reinit(&runtime->interpreters.mutex);
int reinit_xidregistry = _PyThread_at_fork_reinit(&runtime->xidregistry.mutex);
- int reinit_unicode_ids = _PyThread_at_fork_reinit(&runtime->unicode_ids.lock);
+ int reinit_unicode_ids = _PyThread_at_fork_reinit(&runtime->unicode_state.ids.lock);
int reinit_getargs = _PyThread_at_fork_reinit(&runtime->getargs.mutex);
PyMem_SetAllocator(PYMEM_DOMAIN_RAW, &old_alloc);
diff --git a/Python/pythonrun.c b/Python/pythonrun.c
index 1c7ac4a..eead707 100644
--- a/Python/pythonrun.c
+++ b/Python/pythonrun.c
@@ -1688,7 +1688,8 @@ run_eval_code_obj(PyThreadState *tstate, PyCodeObject *co, PyObject *globals, Py
* uncaught exception to trigger an unexplained signal exit from a future
* Py_Main() based one.
*/
- _Py_UnhandledKeyboardInterrupt = 0;
+ // XXX Isn't this dealt with by the move to _PyRuntimeState?
+ _PyRuntime.signals.unhandled_keyboard_interrupt = 0;
/* Set globals['__builtins__'] if it doesn't exist */
if (globals != NULL && _PyDict_GetItemStringWithError(globals, "__builtins__") == NULL) {
@@ -1702,7 +1703,7 @@ run_eval_code_obj(PyThreadState *tstate, PyCodeObject *co, PyObject *globals, Py
v = PyEval_EvalCode((PyObject*)co, globals, locals);
if (!v && _PyErr_Occurred(tstate) == PyExc_KeyboardInterrupt) {
- _Py_UnhandledKeyboardInterrupt = 1;
+ _PyRuntime.signals.unhandled_keyboard_interrupt = 1;
}
return v;
}