Commit 86ea5814 authored by Eric Snow's avatar Eric Snow Committed by GitHub

bpo-36737: Use the module state C-API for warnings. (gh-13159)

parent 351c6741
...@@ -81,7 +81,7 @@ extern void PyLong_Fini(void); ...@@ -81,7 +81,7 @@ extern void PyLong_Fini(void);
extern void _PyFaulthandler_Fini(void); extern void _PyFaulthandler_Fini(void);
extern void _PyHash_Fini(void); extern void _PyHash_Fini(void);
extern int _PyTraceMalloc_Fini(void); extern int _PyTraceMalloc_Fini(void);
extern void _PyWarnings_Fini(_PyRuntimeState *runtime); extern void _PyWarnings_Fini(PyInterpreterState *interp);
extern void _PyGILState_Init( extern void _PyGILState_Init(
_PyRuntimeState *runtime, _PyRuntimeState *runtime,
......
...@@ -90,6 +90,8 @@ struct _is { ...@@ -90,6 +90,8 @@ struct _is {
PyObject *pyexitmodule; PyObject *pyexitmodule;
uint64_t tstate_next_unique_id; uint64_t tstate_next_unique_id;
struct _warnings_runtime_state warnings;
}; };
PyAPI_FUNC(struct _is*) _PyInterpreterState_LookUpID(PY_INT64_T); PyAPI_FUNC(struct _is*) _PyInterpreterState_LookUpID(PY_INT64_T);
...@@ -179,7 +181,6 @@ typedef struct pyruntimestate { ...@@ -179,7 +181,6 @@ typedef struct pyruntimestate {
int nexitfuncs; int nexitfuncs;
struct _gc_runtime_state gc; struct _gc_runtime_state gc;
struct _warnings_runtime_state warnings;
struct _ceval_runtime_state ceval; struct _ceval_runtime_state ceval;
struct _gilstate_runtime_state gilstate; struct _gilstate_runtime_state gilstate;
......
Move PyRuntimeState.warnings into per-interpreter state (via "module
state").
This diff is collapsed.
...@@ -1288,7 +1288,7 @@ Py_FinalizeEx(void) ...@@ -1288,7 +1288,7 @@ Py_FinalizeEx(void)
PyDict_Fini(); PyDict_Fini();
PySlice_Fini(); PySlice_Fini();
_PyGC_Fini(runtime); _PyGC_Fini(runtime);
_PyWarnings_Fini(runtime); _PyWarnings_Fini(interp);
_Py_HashRandomization_Fini(); _Py_HashRandomization_Fini();
_PyArg_Fini(); _PyArg_Fini();
PyAsyncGen_Fini(); PyAsyncGen_Fini();
......
...@@ -5,6 +5,7 @@ ...@@ -5,6 +5,7 @@
#include "pycore_coreconfig.h" #include "pycore_coreconfig.h"
#include "pycore_pymem.h" #include "pycore_pymem.h"
#include "pycore_pystate.h" #include "pycore_pystate.h"
#include "pycore_pylifecycle.h"
/* -------------------------------------------------------------------------- /* --------------------------------------------------------------------------
CAUTION CAUTION
...@@ -257,6 +258,9 @@ _PyInterpreterState_Clear(_PyRuntimeState *runtime, PyInterpreterState *interp) ...@@ -257,6 +258,9 @@ _PyInterpreterState_Clear(_PyRuntimeState *runtime, PyInterpreterState *interp)
Py_CLEAR(interp->after_forkers_parent); Py_CLEAR(interp->after_forkers_parent);
Py_CLEAR(interp->after_forkers_child); Py_CLEAR(interp->after_forkers_child);
#endif #endif
if (runtime->finalizing == NULL) {
_PyWarnings_Fini(interp);
}
// XXX Once we have one allocator per interpreter (i.e. // XXX Once we have one allocator per interpreter (i.e.
// per-interpreter GC) we must ensure that all of the interpreter's // per-interpreter GC) we must ensure that all of the interpreter's
// objects have been cleaned up at the point. // objects have been cleaned up at the point.
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment