aboutsummaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
authorVictor Stinner <vstinner@python.org>2025-03-20 12:35:23 +0100
committerGitHub <noreply@github.com>2025-03-20 11:35:23 +0000
commitb69da006a4f493f1eec0df413f81fbfc3e366783 (patch)
tree06f936be9f5434ec4c9f10c7c43f681042e4a853
parent34c1ea3109d750896bc27b575ebaec85a371d0ba (diff)
downloadcpython-b69da006a4f493f1eec0df413f81fbfc3e366783.tar.gz
cpython-b69da006a4f493f1eec0df413f81fbfc3e366783.zip
gh-131238: Remove includes from pycore_interp.h (#131495)
Remove also now unused includes in C files.
-rw-r--r--Include/internal/pycore_code.h3
-rw-r--r--Include/internal/pycore_freelist.h3
-rw-r--r--Include/internal/pycore_interp.h4
-rw-r--r--Modules/_interpretersmodule.c6
-rw-r--r--Modules/_lsprof.c1
-rw-r--r--Modules/_testcapi/watchers.c6
-rw-r--r--Modules/_testinternalcapi.c6
-rw-r--r--Modules/signalmodule.c2
-rw-r--r--Objects/abstract.c5
-rw-r--r--Objects/codeobject.c10
-rw-r--r--Objects/iterobject.c2
-rw-r--r--Objects/object.c15
-rw-r--r--Objects/tupleobject.c8
-rw-r--r--Parser/myreadline.c1
-rw-r--r--Python/_warnings.c3
-rw-r--r--Python/ceval.c12
-rw-r--r--Python/ceval_gil.c6
-rw-r--r--Python/crossinterp.c4
-rw-r--r--Python/gc.c7
-rw-r--r--Python/gc_free_threading.c2
-rw-r--r--Python/instrumentation.c24
-rw-r--r--Python/legacy_tracing.c3
-rw-r--r--Python/perf_trampoline.c3
-rw-r--r--Python/pylifecycle.c7
-rw-r--r--Python/pystate.c15
-rw-r--r--Python/sysmodule.c3
-rw-r--r--Python/traceback.c7
27 files changed, 78 insertions, 90 deletions
diff --git a/Include/internal/pycore_code.h b/Include/internal/pycore_code.h
index e6c388080ea..2839b9b7ebe 100644
--- a/Include/internal/pycore_code.h
+++ b/Include/internal/pycore_code.h
@@ -8,9 +8,8 @@ extern "C" {
# error "this header requires Py_BUILD_CORE define"
#endif
-#include "pycore_structs.h" // _Py_CODEUNIT
-#include "pycore_stackref.h" // _PyStackRef
#include "pycore_backoff.h" // _Py_BackoffCounter
+#include "pycore_structs.h" // _Py_CODEUNIT
#include "pycore_tstate.h" // _PyThreadStateImpl
diff --git a/Include/internal/pycore_freelist.h b/Include/internal/pycore_freelist.h
index 9c5a48835fa..f3c9a669ad3 100644
--- a/Include/internal/pycore_freelist.h
+++ b/Include/internal/pycore_freelist.h
@@ -9,7 +9,8 @@ extern "C" {
#endif
#include "pycore_freelist_state.h" // struct _Py_freelists
-#include "pycore_object.h" // _PyObject_IS_GC
+#include "pycore_interp_structs.h" // PyInterpreterState
+#include "pycore_pyatomic_ft_wrappers.h" // FT_ATOMIC_STORE_PTR_RELAXED()
#include "pycore_pystate.h" // _PyThreadState_GET
#include "pycore_stats.h" // OBJECT_STAT_INC
diff --git a/Include/internal/pycore_interp.h b/Include/internal/pycore_interp.h
index 49eedd8d2a2..5b1bb202191 100644
--- a/Include/internal/pycore_interp.h
+++ b/Include/internal/pycore_interp.h
@@ -8,7 +8,7 @@ extern "C" {
# error "this header requires Py_BUILD_CORE define"
#endif
-#include "pycore_genobject.h" // _PyGen_FetchStopIterationValue
+#include "pycore_interp_structs.h" // PyInterpreterState
/* interpreter state */
@@ -27,7 +27,6 @@ extern "C" {
extern void _PyInterpreterState_Clear(PyThreadState *tstate);
-
static inline PyThreadState*
_PyInterpreterState_GetFinalizing(PyInterpreterState *interp) {
return (PyThreadState*)_Py_atomic_load_ptr_relaxed(&interp->_finalizing);
@@ -53,7 +52,6 @@ _PyInterpreterState_SetFinalizing(PyInterpreterState *interp, PyThreadState *tst
}
-
// Exports for the _testinternalcapi module.
PyAPI_FUNC(int64_t) _PyInterpreterState_ObjectToID(PyObject *);
PyAPI_FUNC(PyInterpreterState *) _PyInterpreterState_LookUpID(int64_t);
diff --git a/Modules/_interpretersmodule.c b/Modules/_interpretersmodule.c
index d4d90b5f31b..707e654005b 100644
--- a/Modules/_interpretersmodule.c
+++ b/Modules/_interpretersmodule.c
@@ -6,16 +6,14 @@
#endif
#include "Python.h"
-#include "pycore_abstract.h" // _PyIndex_Check()
+#include "pycore_code.h" // _PyCode_HAS_EXECUTORS()
#include "pycore_crossinterp.h" // _PyXIData_t
#include "pycore_interp.h" // _PyInterpreterState_IDIncref()
-#include "pycore_initconfig.h" // _PyErr_SetFromPyStatus()
#include "pycore_modsupport.h" // _PyArg_BadArgument()
#include "pycore_namespace.h" // _PyNamespace_New()
#include "pycore_pybuffer.h" // _PyBuffer_ReleaseInInterpreterAndRawFree()
-#include "pycore_pyerrors.h" // _Py_excinfo
#include "pycore_pylifecycle.h" // _PyInterpreterConfig_AsDict()
-#include "pycore_pystate.h" // _PyInterpreterState_SetRunningMain()
+#include "pycore_pystate.h" // _PyInterpreterState_IsRunningMain()
#include "marshal.h" // PyMarshal_ReadObjectFromString()
diff --git a/Modules/_lsprof.c b/Modules/_lsprof.c
index 92190b06829..379f9869f2f 100644
--- a/Modules/_lsprof.c
+++ b/Modules/_lsprof.c
@@ -7,6 +7,7 @@
#include "pycore_ceval.h" // _PyEval_SetProfile()
#include "pycore_pystate.h" // _PyThreadState_GET()
#include "pycore_time.h" // _PyTime_FromLong()
+#include "pycore_typeobject.h" // _PyType_GetModuleState()
#include "pycore_unicodeobject.h" // _PyUnicode_EqualToASCIIString()
#include "rotatingtree.h"
diff --git a/Modules/_testcapi/watchers.c b/Modules/_testcapi/watchers.c
index f7440769b95..6a5136ef8c9 100644
--- a/Modules/_testcapi/watchers.c
+++ b/Modules/_testcapi/watchers.c
@@ -6,9 +6,9 @@
#include "clinic/watchers.c.h"
#define Py_BUILD_CORE
-#include "pycore_function.h" // FUNC_MAX_WATCHERS
-#include "pycore_code.h" // CODE_MAX_WATCHERS
-#include "pycore_context.h" // CONTEXT_MAX_WATCHERS
+#include "pycore_function.h" // FUNC_MAX_WATCHERS
+#include "pycore_interp_structs.h" // CODE_MAX_WATCHERS
+#include "pycore_context.h" // CONTEXT_MAX_WATCHERS
/*[clinic input]
module _testcapi
diff --git a/Modules/_testinternalcapi.c b/Modules/_testinternalcapi.c
index f927d13fc75..5f39ed11b57 100644
--- a/Modules/_testinternalcapi.c
+++ b/Modules/_testinternalcapi.c
@@ -17,7 +17,7 @@
#include "pycore_code.h" // _PyCode_GetTLBCFast()
#include "pycore_compile.h" // _PyCompile_CodeGen()
#include "pycore_context.h" // _PyContext_NewHamtForTests()
-#include "pycore_dict.h" // _PyManagedDictPointer_GetValues()
+#include "pycore_dict.h" // PyDictValues
#include "pycore_fileutils.h" // _Py_normpath()
#include "pycore_flowgraph.h" // _PyCompile_OptimizeCfg()
#include "pycore_frame.h" // _PyInterpreterFrame
@@ -26,11 +26,11 @@
#include "pycore_import.h" // _PyImport_ClearExtension()
#include "pycore_initconfig.h" // _Py_GetConfigsAsDict()
#include "pycore_instruction_sequence.h" // _PyInstructionSequence_New()
+#include "pycore_interpframe.h" // _PyFrame_GetFunction()
#include "pycore_object.h" // _PyObject_IsFreed()
-#include "pycore_optimizer.h" // JitOptSymbol, etc.
#include "pycore_pathconfig.h" // _PyPathConfig_ClearGlobal()
#include "pycore_pyerrors.h" // _PyErr_ChainExceptions1()
-#include "pycore_pylifecycle.h" // _PyInterpreterConfig_AsDict()
+#include "pycore_pylifecycle.h" // _PyInterpreterConfig_InitFromDict()
#include "pycore_pystate.h" // _PyThreadState_GET()
#include "pycore_unicodeobject.h" // _PyUnicode_TransformDecimalAndSpaceToASCII()
diff --git a/Modules/signalmodule.c b/Modules/signalmodule.c
index b679b83bed5..dc6485878b7 100644
--- a/Modules/signalmodule.c
+++ b/Modules/signalmodule.c
@@ -8,7 +8,7 @@
#include "pycore_ceval.h" // _PyEval_SignalReceived()
#include "pycore_emscripten_signal.h" // _Py_CHECK_EMSCRIPTEN_SIGNALS
#include "pycore_fileutils.h" // _Py_BEGIN_SUPPRESS_IPH
-#include "pycore_frame.h" // _PyInterpreterFrame
+#include "pycore_interpframe.h" // _PyThreadState_GetFrame()
#include "pycore_moduleobject.h" // _PyModule_GetState()
#include "pycore_pyerrors.h" // _PyErr_SetString()
#include "pycore_pystate.h" // _PyThreadState_GET()
diff --git a/Objects/abstract.c b/Objects/abstract.c
index ce006777e5c..df96b935ecc 100644
--- a/Objects/abstract.c
+++ b/Objects/abstract.c
@@ -5,10 +5,11 @@
#include "pycore_call.h" // _PyObject_CallNoArgs()
#include "pycore_ceval.h" // _Py_EnterRecursiveCallTstate()
#include "pycore_crossinterp.h" // _Py_CallInInterpreter()
+#include "pycore_genobject.h" // _PyGen_FetchStopIterationValue()
#include "pycore_list.h" // _PyList_AppendTakeRef()
-#include "pycore_long.h" // _Py_IsNegative
+#include "pycore_long.h" // _PyLong_IsNegative()
#include "pycore_object.h" // _Py_CheckSlotResult()
-#include "pycore_pybuffer.h"
+#include "pycore_pybuffer.h" // _PyBuffer_ReleaseInInterpreterAndRawFree()
#include "pycore_pyerrors.h" // _PyErr_Occurred()
#include "pycore_pystate.h" // _PyThreadState_GET()
#include "pycore_tuple.h" // _PyTuple_FromArraySteal()
diff --git a/Objects/codeobject.c b/Objects/codeobject.c
index f06b19b2fb7..c55ab6b9b28 100644
--- a/Objects/codeobject.c
+++ b/Objects/codeobject.c
@@ -2,16 +2,14 @@
#include "opcode.h"
#include "pycore_code.h" // _PyCodeConstructor
-#include "pycore_frame.h" // FRAME_SPECIALS_SIZE
#include "pycore_hashtable.h" // _Py_hashtable_t
-#include "pycore_index_pool.h" // _PyIndexPool
+#include "pycore_index_pool.h" // _PyIndexPool_Fini()
#include "pycore_initconfig.h" // _PyStatus_OK()
#include "pycore_interp.h" // PyInterpreterState.co_extra_freefuncs
-#include "pycore_object.h" // _PyObject_SetDeferredRefcount
-#include "pycore_object_stack.h"
-#include "pycore_opcode_metadata.h" // _PyOpcode_Deopt, _PyOpcode_Caches
+#include "pycore_interpframe.h" // FRAME_SPECIALS_SIZE
+#include "pycore_opcode_metadata.h" // _PyOpcode_Caches
#include "pycore_opcode_utils.h" // RESUME_AT_FUNC_START
-#include "pycore_pymem.h" // _PyMem_FreeDelayed
+#include "pycore_pymem.h" // _PyMem_FreeDelayed()
#include "pycore_pystate.h" // _PyInterpreterState_GET()
#include "pycore_setobject.h" // _PySet_NextEntry()
#include "pycore_tuple.h" // _PyTuple_ITEMS()
diff --git a/Objects/iterobject.c b/Objects/iterobject.c
index 8693e0458d0..c023f41638f 100644
--- a/Objects/iterobject.c
+++ b/Objects/iterobject.c
@@ -4,8 +4,10 @@
#include "pycore_abstract.h" // _PyObject_HasLen()
#include "pycore_call.h" // _PyObject_CallNoArgs()
#include "pycore_ceval.h" // _PyEval_GetBuiltin()
+#include "pycore_genobject.h" // _PyCoro_GetAwaitableIter()
#include "pycore_object.h" // _PyObject_GC_TRACK()
+
typedef struct {
PyObject_HEAD
Py_ssize_t it_index;
diff --git a/Objects/object.c b/Objects/object.c
index 4eff24bc3a9..ecc5a86901a 100644
--- a/Objects/object.c
+++ b/Objects/object.c
@@ -6,29 +6,28 @@
#include "pycore_call.h" // _PyObject_CallNoArgs()
#include "pycore_ceval.h" // _Py_EnterRecursiveCallTstate()
#include "pycore_context.h" // _PyContextTokenMissing_Type
-#include "pycore_critical_section.h" // Py_BEGIN_CRITICAL_SECTION, Py_END_CRITICAL_SECTION
+#include "pycore_critical_section.h" // Py_BEGIN_CRITICAL_SECTION
#include "pycore_descrobject.h" // _PyMethodWrapper_Type
-#include "pycore_dict.h" // _PyObject_MakeDictFromInstanceAttributes()
+#include "pycore_dict.h" // _PyObject_MaterializeManagedDict()
#include "pycore_floatobject.h" // _PyFloat_DebugMallocStats()
#include "pycore_freelist.h" // _PyObject_ClearFreeLists()
+#include "pycore_genobject.h" // _PyAsyncGenAThrow_Type
#include "pycore_hamt.h" // _PyHamtItems_Type
-#include "pycore_hashtable.h" // _Py_hashtable_new()
-#include "pycore_initconfig.h" // _PyStatus_EXCEPTION()
+#include "pycore_initconfig.h" // _PyStatus_OK()
#include "pycore_instruction_sequence.h" // _PyInstructionSequence_Type
#include "pycore_list.h" // _PyList_DebugMallocStats()
#include "pycore_long.h" // _PyLong_GetZero()
#include "pycore_memoryobject.h" // _PyManagedBuffer_Type
#include "pycore_namespace.h" // _PyNamespace_Type
-#include "pycore_object.h" // PyAPI_DATA() _Py_SwappedOp definition
-#include "pycore_object_state.h" // struct _reftracer_runtime_state
-#include "pycore_optimizer.h" // _PyUOpExecutor_Type, ...
+#include "pycore_object.h" // export _Py_SwappedOp
+#include "pycore_optimizer.h" // _PyUOpExecutor_Type
#include "pycore_pyerrors.h" // _PyErr_Occurred()
#include "pycore_pymem.h" // _PyMem_IsPtrFreed()
#include "pycore_pystate.h" // _PyThreadState_GET()
#include "pycore_symtable.h" // PySTEntry_Type
#include "pycore_tuple.h" // _PyTuple_DebugMallocStats()
#include "pycore_typeobject.h" // _PyBufferWrapper_Type
-#include "pycore_typevarobject.h" // _PyTypeAlias_Type, _Py_initialize_generic
+#include "pycore_typevarobject.h" // _PyTypeAlias_Type
#include "pycore_unionobject.h" // _PyUnion_Type
diff --git a/Objects/tupleobject.c b/Objects/tupleobject.c
index ede8fd219c4..78ee3fa1fc3 100644
--- a/Objects/tupleobject.c
+++ b/Objects/tupleobject.c
@@ -1,17 +1,17 @@
-
/* Tuple object implementation */
#include "Python.h"
#include "pycore_abstract.h" // _PyIndex_Check()
#include "pycore_ceval.h" // _PyEval_GetBuiltin()
-#include "pycore_freelist.h" // _Py_FREELIST_PUSH(), _Py_FREELIST_POP()
+#include "pycore_freelist.h" // _Py_FREELIST_PUSH()
#include "pycore_gc.h" // _PyObject_GC_IS_TRACKED()
-#include "pycore_initconfig.h" // _PyStatus_OK()
#include "pycore_list.h" // _Py_memory_repeat()
#include "pycore_modsupport.h" // _PyArg_NoKwnames()
-#include "pycore_object.h" // _PyObject_GC_TRACK(), _Py_FatalRefcountError(), _PyDebugAllocatorStats()
+#include "pycore_object.h" // _PyObject_GC_TRACK()
+#include "pycore_stackref.h" // PyStackRef_AsPyObjectSteal()
#include "pycore_tuple.h" // _PyTupleIterObject
+
/*[clinic input]
class tuple "PyTupleObject *" "&PyTuple_Type"
[clinic start generated code]*/
diff --git a/Parser/myreadline.c b/Parser/myreadline.c
index 99c5760cd51..64e8f5383f0 100644
--- a/Parser/myreadline.c
+++ b/Parser/myreadline.c
@@ -13,6 +13,7 @@
#include "pycore_fileutils.h" // _Py_BEGIN_SUPPRESS_IPH
#include "pycore_interp.h" // _PyInterpreterState_GetConfig()
#include "pycore_pystate.h" // _PyThreadState_GET()
+#include "pycore_signal.h" // _PyOS_SigintEvent()
#ifdef MS_WINDOWS
# ifndef WIN32_LEAN_AND_MEAN
# define WIN32_LEAN_AND_MEAN
diff --git a/Python/_warnings.c b/Python/_warnings.c
index 3271768e6f6..1e90ef0299c 100644
--- a/Python/_warnings.c
+++ b/Python/_warnings.c
@@ -1,10 +1,9 @@
#include "Python.h"
-#include "pycore_critical_section.h" // Py_BEGIN_CRITICAL_SECTION_MUT()
#include "pycore_frame.h" // PyFrameObject members
+#include "pycore_genobject.h" // PyAsyncGenObject
#include "pycore_import.h" // _PyImport_GetModules()
#include "pycore_interp.h" // PyInterpreterState.warnings
#include "pycore_long.h" // _PyLong_GetZero()
-#include "pycore_pyerrors.h" // _PyErr_Occurred()
#include "pycore_pylifecycle.h" // _Py_IsInterpreterFinalizing()
#include "pycore_pystate.h" // _PyThreadState_GET()
#include "pycore_sysmodule.h" // _PySys_GetOptionalAttr()
diff --git a/Python/ceval.c b/Python/ceval.c
index 0090a2c79ec..363f263ad2a 100644
--- a/Python/ceval.c
+++ b/Python/ceval.c
@@ -10,11 +10,15 @@
#include "pycore_cell.h" // PyCell_GetRef()
#include "pycore_ceval.h"
#include "pycore_code.h"
+#include "pycore_dict.h"
#include "pycore_emscripten_signal.h" // _Py_CHECK_EMSCRIPTEN_SIGNALS
#include "pycore_floatobject.h" // _PyFloat_ExactDealloc()
+#include "pycore_frame.h"
#include "pycore_function.h"
+#include "pycore_genobject.h" // _PyCoro_GetAwaitableIter()
#include "pycore_import.h" // _PyImport_IsDefaultImportFunc()
#include "pycore_instruments.h"
+#include "pycore_interpframe.h" // _PyFrame_SetStackPointer()
#include "pycore_intrinsics.h"
#include "pycore_jit.h"
#include "pycore_list.h" // _PyList_GetItemRef()
@@ -22,23 +26,21 @@
#include "pycore_moduleobject.h" // PyModuleObject
#include "pycore_object.h" // _PyObject_GC_TRACK()
#include "pycore_opcode_metadata.h" // EXTRA_CASES
-#include "pycore_optimizer.h" // _PyUOpExecutor_Type
#include "pycore_opcode_utils.h" // MAKE_FUNCTION_*
+#include "pycore_optimizer.h" // _PyUOpExecutor_Type
#include "pycore_pyatomic_ft_wrappers.h" // FT_ATOMIC_*
+#include "pycore_pyerrors.h"
#include "pycore_pyerrors.h" // _PyErr_GetRaisedException()
#include "pycore_pystate.h" // _PyInterpreterState_GET()
#include "pycore_range.h" // _PyRangeIterObject
#include "pycore_setobject.h" // _PySet_Update()
#include "pycore_sliceobject.h" // _PyBuildSlice_ConsumeRefs
+#include "pycore_sysmodule.h" // _PySys_GetOptionalAttrString()
#include "pycore_traceback.h" // _PyTraceBack_FromFrame
#include "pycore_tuple.h" // _PyTuple_ITEMS()
#include "pycore_uop_ids.h" // Uops
-#include "pycore_pyerrors.h"
-#include "pycore_sysmodule.h" // _PySys_GetOptionalAttrString()
-#include "pycore_dict.h"
#include "dictobject.h"
-#include "pycore_frame.h"
#include "frameobject.h" // _PyInterpreterFrame_GetLine
#include "opcode.h"
#include "pydtrace.h"
diff --git a/Python/ceval_gil.c b/Python/ceval_gil.c
index a382aa6f1e1..77632b283b2 100644
--- a/Python/ceval_gil.c
+++ b/Python/ceval_gil.c
@@ -1,14 +1,12 @@
-
#include "Python.h"
#include "pycore_ceval.h" // _PyEval_SignalReceived()
+#include "pycore_gc.h" // _Py_RunGC()
#include "pycore_initconfig.h" // _PyStatus_OK()
-#include "pycore_interp.h" // _Py_RunGC()
#include "pycore_optimizer.h" // _Py_Executors_InvalidateCold()
#include "pycore_pyerrors.h" // _PyErr_GetRaisedException()
#include "pycore_pylifecycle.h" // _PyErr_Print()
-#include "pycore_pymem.h" // _PyMem_IsPtrFreed()
-#include "pycore_pystate.h" // PyThread_hang_thread()
#include "pycore_pystats.h" // _Py_PrintSpecializationStats()
+#include "pycore_runtime.h" // _PyRuntime
/*
diff --git a/Python/crossinterp.c b/Python/crossinterp.c
index aa2c1cb78bc..094bbbe54f2 100644
--- a/Python/crossinterp.c
+++ b/Python/crossinterp.c
@@ -5,8 +5,8 @@
#include "pycore_ceval.h" // _Py_simple_func
#include "pycore_crossinterp.h" // _PyXIData_t
#include "pycore_initconfig.h" // _PyStatus_OK()
-#include "pycore_namespace.h" //_PyNamespace_New()
-#include "pycore_pyerrors.h" // _PyErr_Clear()
+#include "pycore_namespace.h" // _PyNamespace_New()
+#include "pycore_typeobject.h" // _PyStaticType_InitBuiltin()
/**************/
diff --git a/Python/gc.c b/Python/gc.c
index ff0fa636bd6..a2ec0e567b5 100644
--- a/Python/gc.c
+++ b/Python/gc.c
@@ -4,19 +4,18 @@
#include "Python.h"
#include "pycore_ceval.h" // _Py_set_eval_breaker_bit()
-#include "pycore_context.h"
#include "pycore_dict.h" // _PyInlineValuesSize()
-#include "pycore_initconfig.h"
+#include "pycore_initconfig.h" // _PyStatus_OK()
#include "pycore_interp.h" // PyInterpreterState.gc
-#include "pycore_object.h"
+#include "pycore_interpframe.h" // _PyFrame_GetLocalsArray()
#include "pycore_object_alloc.h" // _PyObject_MallocWithType()
-#include "pycore_pyerrors.h"
#include "pycore_pystate.h" // _PyThreadState_GET()
#include "pycore_tuple.h" // _PyTuple_MaybeUntrack()
#include "pycore_weakref.h" // _PyWeakref_ClearRef()
#include "pydtrace.h"
+
#ifndef Py_GIL_DISABLED
typedef struct _gc_runtime_state GCState;
diff --git a/Python/gc_free_threading.c b/Python/gc_free_threading.c
index 713a48744df..70dace9fe9e 100644
--- a/Python/gc_free_threading.c
+++ b/Python/gc_free_threading.c
@@ -5,8 +5,10 @@
#include "pycore_dict.h" // _PyInlineValuesSize()
#include "pycore_frame.h" // FRAME_CLEARED
#include "pycore_freelist.h" // _PyObject_ClearFreeLists()
+#include "pycore_genobject.h" // _PyGen_GetGeneratorFromFrame()
#include "pycore_initconfig.h" // _PyStatus_NO_MEMORY()
#include "pycore_interp.h" // PyInterpreterState.gc
+#include "pycore_interpframe.h" // _PyFrame_GetLocalsArray()
#include "pycore_object_alloc.h" // _PyObject_MallocWithType()
#include "pycore_pystate.h" // _PyThreadState_GET()
#include "pycore_tstate.h" // _PyThreadStateImpl
diff --git a/Python/instrumentation.c b/Python/instrumentation.c
index 031c450bb60..9bf0fc43556 100644
--- a/Python/instrumentation.c
+++ b/Python/instrumentation.c
@@ -1,22 +1,20 @@
#include "Python.h"
-#include "pycore_bitutils.h" // _Py_popcount32
-#include "pycore_call.h"
+#include "pycore_bitutils.h" // _Py_popcount32()
+#include "pycore_call.h" // _PyObject_VectorcallTstate()
#include "pycore_ceval.h" // _PY_EVAL_EVENTS_BITS
#include "pycore_code.h" // _PyCode_Clear_Executors()
-#include "pycore_critical_section.h"
-#include "pycore_frame.h"
-#include "pycore_interp.h"
-#include "pycore_long.h"
+#include "pycore_critical_section.h" // _Py_CRITICAL_SECTION_ASSERT_OBJECT_LOCKED()
+#include "pycore_frame.h" // PyFrameObject
+#include "pycore_interpframe.h" // _PyFrame_GetBytecode()
+#include "pycore_long.h" // _PyLong_GetZero()
#include "pycore_modsupport.h" // _PyModule_CreateInitialized()
-#include "pycore_namespace.h"
-#include "pycore_object.h"
-#include "pycore_opcode_metadata.h" // IS_VALID_OPCODE, _PyOpcode_Caches
-#include "pycore_opcode_utils.h" // IS_CONDITIONAL_JUMP_OPCODE
+#include "pycore_namespace.h" // _PyNamespace_New()
+#include "pycore_opcode_metadata.h" // IS_VALID_OPCODE()
+#include "pycore_opcode_utils.h" // IS_CONDITIONAL_JUMP_OPCODE()
#include "pycore_optimizer.h" // _PyExecutorObject
-#include "pycore_pyatomic_ft_wrappers.h" // FT_ATOMIC_STORE_UINTPTR_RELEASE
-#include "pycore_pyerrors.h"
+#include "pycore_pyatomic_ft_wrappers.h" // FT_ATOMIC_STORE_UINTPTR_RELEASE()
#include "pycore_pystate.h" // _PyInterpreterState_GET()
-#include "pycore_runtime_structs.h" // _PyCoMonitoringData
+#include "pycore_runtime_structs.h" // _PyCoMonitoringData
#include "pycore_tuple.h" // _PyTuple_FromArraySteal()
#include "opcode_ids.h"
diff --git a/Python/legacy_tracing.c b/Python/legacy_tracing.c
index 924e7e5ca01..bafc2356280 100644
--- a/Python/legacy_tracing.c
+++ b/Python/legacy_tracing.c
@@ -6,11 +6,12 @@
#include "pycore_audit.h" // _PySys_Audit()
#include "pycore_ceval.h" // export _PyEval_SetProfile()
#include "pycore_frame.h" // PyFrameObject members
-#include "pycore_object.h"
+#include "pycore_interpframe.h" // _PyFrame_GetCode()
#include "opcode.h"
#include <stddef.h>
+
typedef struct _PyLegacyEventHandler {
PyObject_HEAD
vectorcallfunc vectorcall;
diff --git a/Python/perf_trampoline.c b/Python/perf_trampoline.c
index a6a32b98fa9..996e54b82b6 100644
--- a/Python/perf_trampoline.c
+++ b/Python/perf_trampoline.c
@@ -131,8 +131,7 @@ any DWARF information available for them).
#include "Python.h"
#include "pycore_ceval.h" // _PyPerf_Callbacks
-#include "pycore_frame.h"
-#include "pycore_interp.h"
+#include "pycore_interpframe.h" // _PyFrame_GetCode()
#include "pycore_runtime.h" // _PyRuntime
diff --git a/Python/pylifecycle.c b/Python/pylifecycle.c
index 12a48316cbc..8fe58c320a3 100644
--- a/Python/pylifecycle.c
+++ b/Python/pylifecycle.c
@@ -1,6 +1,8 @@
/* Python interpreter top-level routines, including init/exit */
#include "Python.h"
+#include "pycore_genobject.h" // included first to break dependency cycle
+
#include "pycore_audit.h" // _PySys_ClearAuditHooks()
#include "pycore_call.h" // _PyObject_CallMethod()
#include "pycore_ceval.h" // _PyEval_FiniGIL()
@@ -12,10 +14,7 @@
#include "pycore_floatobject.h" // _PyFloat_InitTypes()
#include "pycore_freelist.h" // _PyObject_ClearFreeLists()
#include "pycore_global_objects_fini_generated.h" // _PyStaticObjects_CheckRefcnt()
-#include "pycore_hamt.h" // _PyHamt_Type
-#include "pycore_import.h" // _PyImport_BootstrapImp()
#include "pycore_initconfig.h" // _PyStatus_OK()
-#include "pycore_list.h" // _PyList_Fini()
#include "pycore_long.h" // _PyLong_InitTypes()
#include "pycore_object.h" // _PyDebug_PrintTotalRefs()
#include "pycore_obmalloc.h" // _PyMem_init_obmalloc()
@@ -26,9 +25,7 @@
#include "pycore_pystate.h" // _PyThreadState_GET()
#include "pycore_runtime.h" // _Py_ID()
#include "pycore_runtime_init.h" // _PyRuntimeState_INIT
-#include "pycore_runtime_structs.h"
#include "pycore_setobject.h" // _PySet_NextEntry()
-#include "pycore_sliceobject.h" // _PySlice_Fini()
#include "pycore_sysmodule.h" // _PySys_ClearAttrString()
#include "pycore_traceback.h" // _Py_DumpTracebackThreads()
#include "pycore_typeobject.h" // _PyTypes_InitTypes()
diff --git a/Python/pystate.c b/Python/pystate.c
index c755e0d9f27..7d1ca0d33ef 100644
--- a/Python/pystate.c
+++ b/Python/pystate.c
@@ -2,33 +2,32 @@
/* Thread and interpreter state structures and their interfaces */
#include "Python.h"
-#include "pycore_runtime_structs.h"
+#include "pycore_genobject.h" // included first to break dependency cycle
#include "pycore_abstract.h" // _PyIndex_Check()
#include "pycore_audit.h" // _Py_AuditHookEntry
-#include "pycore_ceval.h"
-#include "pycore_code.h" // stats
+#include "pycore_ceval.h" // _PyEval_AcquireLock()
#include "pycore_codecs.h" // _PyCodec_Fini()
-#include "pycore_critical_section.h" // _PyCriticalSection_Resume()
+#include "pycore_critical_section.h" // _PyCriticalSection_Resume()
#include "pycore_dtoa.h" // _dtoa_state_INIT()
-#include "pycore_emscripten_trampoline.h" // _Py_EmscriptenTrampoline_Init()
-#include "pycore_frame.h"
+#include "pycore_emscripten_trampoline.h" // _Py_EmscriptenTrampoline_Init()
#include "pycore_freelist.h" // _PyObject_ClearFreeLists()
#include "pycore_initconfig.h" // _PyStatus_OK()
+#include "pycore_interpframe.h" // _PyThreadState_HasStackSpace()
#include "pycore_object.h" // _PyType_InitCache()
+#include "pycore_obmalloc.h" // _PyMem_obmalloc_state_on_heap()
#include "pycore_optimizer.h" // JIT_CLEANUP_THRESHOLD
#include "pycore_parking_lot.h" // _PyParkingLot_AfterFork()
#include "pycore_pyerrors.h" // _PyErr_Clear()
#include "pycore_pylifecycle.h" // _PyAST_Fini()
#include "pycore_pymem.h" // _PyMem_DebugEnabled()
-#include "pycore_pystate.h"
#include "pycore_runtime.h" // _PyRuntime
#include "pycore_runtime_init.h" // _PyRuntimeState_INIT
#include "pycore_stackref.h" // Py_STACKREF_DEBUG
#include "pycore_time.h" // _PyTime_Init()
-#include "pycore_obmalloc.h" // _PyMem_obmalloc_state_on_heap()
#include "pycore_uniqueid.h" // _PyObject_FinalizePerThreadRefcounts()
+
/* --------------------------------------------------------------------------
CAUTION
diff --git a/Python/sysmodule.c b/Python/sysmodule.c
index 0fe9f894f05..664bf31e9ec 100644
--- a/Python/sysmodule.c
+++ b/Python/sysmodule.c
@@ -18,10 +18,10 @@ Data members:
#include "pycore_audit.h" // _Py_AuditHookEntry
#include "pycore_call.h" // _PyObject_CallNoArgs()
#include "pycore_ceval.h" // _PyEval_SetAsyncGenFinalizer()
-#include "pycore_dict.h" // _PyDict_GetItemWithError()
#include "pycore_frame.h" // _PyInterpreterFrame
#include "pycore_import.h" // _PyImport_SetDLOpenFlags()
#include "pycore_initconfig.h" // _PyStatus_EXCEPTION()
+#include "pycore_interpframe.h" // _PyFrame_GetFirstComplete()
#include "pycore_long.h" // _PY_LONG_MAX_STR_DIGITS_THRESHOLD
#include "pycore_modsupport.h" // _PyModule_CreateInitialized()
#include "pycore_namespace.h" // _PyNamespace_New()
@@ -36,7 +36,6 @@ Data members:
#include "pycore_pystats.h" // _Py_PrintSpecializationStats()
#include "pycore_structseq.h" // _PyStructSequence_InitBuiltinWithFlags()
#include "pycore_sysmodule.h" // export _PySys_GetSizeOf()
-#include "pycore_tuple.h" // _PyTuple_FromArray()
#include "pycore_unicodeobject.h" // _PyUnicode_InternImmortal()
#include "pydtrace.h" // PyDTrace_AUDIT()
diff --git a/Python/traceback.c b/Python/traceback.c
index 07a7ca8e7d6..ff6f9b9a6ab 100644
--- a/Python/traceback.c
+++ b/Python/traceback.c
@@ -2,14 +2,11 @@
/* Traceback implementation */
#include "Python.h"
-
-#include "pycore_ast.h" // asdl_seq_GET()
#include "pycore_call.h" // _PyObject_CallMethodFormat()
#include "pycore_fileutils.h" // _Py_BEGIN_SUPPRESS_IPH
-#include "pycore_frame.h" // _PyFrame_GetCode()
+#include "pycore_frame.h" // PyFrameObject
#include "pycore_interp.h" // PyInterpreterState.gc
-#include "pycore_parser.h" // _PyParser_ASTFromString
-#include "pycore_pyarena.h" // _PyArena_Free()
+#include "pycore_interpframe.h" // _PyFrame_GetCode()
#include "pycore_pyerrors.h" // _PyErr_GetRaisedException()
#include "pycore_pystate.h" // _PyThreadState_GET()
#include "pycore_sysmodule.h" // _PySys_GetOptionalAttr()