mirror of
https://github.com/python/cpython.git
synced 2025-10-17 04:08:28 +00:00
bpo-39947: Use _PyInterpreterState_GET_UNSAFE() (GH-18978)
Replace _PyInterpreterState_Get() function call with _PyInterpreterState_GET_UNSAFE() macro which is more efficient but don't check if tstate or interp is NULL. _Py_GetConfigsAsDict() now uses _PyThreadState_GET().
This commit is contained in:
parent
6d674a1bf4
commit
ff4584caca
9 changed files with 27 additions and 27 deletions
|
@ -32,7 +32,7 @@ static int _PyCodecRegistry_Init(void); /* Forward */
|
|||
|
||||
int PyCodec_Register(PyObject *search_function)
|
||||
{
|
||||
PyInterpreterState *interp = _PyInterpreterState_Get();
|
||||
PyInterpreterState *interp = _PyInterpreterState_GET_UNSAFE();
|
||||
if (interp->codec_search_path == NULL && _PyCodecRegistry_Init())
|
||||
goto onError;
|
||||
if (search_function == NULL) {
|
||||
|
@ -187,7 +187,7 @@ int _PyCodec_Forget(const char *encoding)
|
|||
PyObject *v;
|
||||
int result;
|
||||
|
||||
PyInterpreterState *interp = _PyInterpreterState_Get();
|
||||
PyInterpreterState *interp = _PyInterpreterState_GET_UNSAFE();
|
||||
if (interp->codec_search_path == NULL) {
|
||||
return -1;
|
||||
}
|
||||
|
@ -620,7 +620,7 @@ PyObject *_PyCodec_DecodeText(PyObject *object,
|
|||
Return 0 on success, -1 on error */
|
||||
int PyCodec_RegisterError(const char *name, PyObject *error)
|
||||
{
|
||||
PyInterpreterState *interp = _PyInterpreterState_Get();
|
||||
PyInterpreterState *interp = _PyInterpreterState_GET_UNSAFE();
|
||||
if (interp->codec_search_path == NULL && _PyCodecRegistry_Init())
|
||||
return -1;
|
||||
if (!PyCallable_Check(error)) {
|
||||
|
@ -1492,7 +1492,7 @@ static int _PyCodecRegistry_Init(void)
|
|||
}
|
||||
};
|
||||
|
||||
PyInterpreterState *interp = _PyInterpreterState_Get();
|
||||
PyInterpreterState *interp = _PyInterpreterState_GET_UNSAFE();
|
||||
PyObject *mod;
|
||||
|
||||
if (interp->codec_search_path != NULL)
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
/* Support for dynamic loading of extension modules */
|
||||
|
||||
#include "Python.h"
|
||||
#include "pycore_pystate.h"
|
||||
#include "pycore_pystate.h" // _PyInterpreterState_GET_UNSAFE()
|
||||
#include "importdl.h"
|
||||
|
||||
#include <sys/types.h>
|
||||
|
@ -94,7 +94,7 @@ _PyImport_FindSharedFuncptr(const char *prefix,
|
|||
}
|
||||
}
|
||||
|
||||
dlopenflags = _PyInterpreterState_Get()->dlopenflags;
|
||||
dlopenflags = _PyInterpreterState_GET_UNSAFE()->dlopenflags;
|
||||
|
||||
handle = dlopen(pathname, dlopenflags);
|
||||
|
||||
|
|
|
@ -642,7 +642,7 @@ long
|
|||
PyImport_GetMagicNumber(void)
|
||||
{
|
||||
long res;
|
||||
PyInterpreterState *interp = _PyInterpreterState_Get();
|
||||
PyInterpreterState *interp = _PyInterpreterState_GET_UNSAFE();
|
||||
PyObject *external, *pyc_magic;
|
||||
|
||||
external = PyObject_GetAttrString(interp->importlib, "_bootstrap_external");
|
||||
|
@ -2412,7 +2412,7 @@ PyInit__imp(void)
|
|||
goto failure;
|
||||
}
|
||||
|
||||
const wchar_t *mode = _PyInterpreterState_Get()->config.check_hash_pycs_mode;
|
||||
const wchar_t *mode = _PyInterpreterState_GET_UNSAFE()->config.check_hash_pycs_mode;
|
||||
PyObject *pyc_mode = PyUnicode_FromWideChar(mode, -1);
|
||||
if (pyc_mode == NULL) {
|
||||
goto failure;
|
||||
|
|
|
@ -2572,8 +2572,8 @@ _Py_GetConfigsAsDict(void)
|
|||
Py_CLEAR(dict);
|
||||
|
||||
/* pre config */
|
||||
PyInterpreterState *interp = _PyInterpreterState_Get();
|
||||
const PyPreConfig *pre_config = &_PyRuntime.preconfig;
|
||||
PyThreadState *tstate = _PyThreadState_GET();
|
||||
const PyPreConfig *pre_config = &tstate->interp->runtime->preconfig;
|
||||
dict = _PyPreConfig_AsDict(pre_config);
|
||||
if (dict == NULL) {
|
||||
goto error;
|
||||
|
@ -2584,7 +2584,7 @@ _Py_GetConfigsAsDict(void)
|
|||
Py_CLEAR(dict);
|
||||
|
||||
/* core config */
|
||||
const PyConfig *config = &interp->config;
|
||||
const PyConfig *config = &tstate->interp->config;
|
||||
dict = config_as_dict(config);
|
||||
if (dict == NULL) {
|
||||
goto error;
|
||||
|
|
|
@ -95,7 +95,7 @@ PyRun_InteractiveLoopFlags(FILE *fp, const char *filename_str, PyCompilerFlags *
|
|||
PyCompilerFlags local_flags = _PyCompilerFlags_INIT;
|
||||
int nomem_count = 0;
|
||||
#ifdef Py_REF_DEBUG
|
||||
int show_ref_count = _PyInterpreterState_Get()->config.show_ref_count;
|
||||
int show_ref_count = _PyInterpreterState_GET_UNSAFE()->config.show_ref_count;
|
||||
#endif
|
||||
|
||||
filename = PyUnicode_DecodeFSDefault(filename_str);
|
||||
|
@ -346,7 +346,7 @@ set_main_loader(PyObject *d, const char *filename, const char *loader_name)
|
|||
filename_obj = PyUnicode_DecodeFSDefault(filename);
|
||||
if (filename_obj == NULL)
|
||||
return -1;
|
||||
PyInterpreterState *interp = _PyInterpreterState_Get();
|
||||
PyInterpreterState *interp = _PyInterpreterState_GET_UNSAFE();
|
||||
bootstrap = PyObject_GetAttrString(interp->importlib,
|
||||
"_bootstrap_external");
|
||||
if (bootstrap != NULL) {
|
||||
|
@ -1117,7 +1117,7 @@ run_eval_code_obj(PyCodeObject *co, PyObject *globals, PyObject *locals)
|
|||
|
||||
/* Set globals['__builtins__'] if it doesn't exist */
|
||||
if (globals != NULL && PyDict_GetItemString(globals, "__builtins__") == NULL) {
|
||||
PyInterpreterState *interp = _PyInterpreterState_Get();
|
||||
PyInterpreterState *interp = _PyInterpreterState_GET_UNSAFE();
|
||||
if (PyDict_SetItemString(globals, "__builtins__", interp->builtins) < 0) {
|
||||
return NULL;
|
||||
}
|
||||
|
|
|
@ -92,7 +92,7 @@ PyThread_init_thread(void)
|
|||
size_t
|
||||
PyThread_get_stacksize(void)
|
||||
{
|
||||
return _PyInterpreterState_Get()->pythread_stacksize;
|
||||
return _PyInterpreterState_GET_UNSAFE()->pythread_stacksize;
|
||||
}
|
||||
|
||||
/* Only platforms defining a THREAD_SET_STACKSIZE() macro
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue