[Python-checkins] bpo-45431: Rename CFrame to _PyCFrame in the C API (GH-31584)
vstinner
webhook-mailer at python.org
Mon Feb 28 10:04:17 EST 2022
https://github.com/python/cpython/commit/7496f9587306772b56ed074092c020f3ef16bf95
commit: 7496f9587306772b56ed074092c020f3ef16bf95
branch: main
author: Victor Stinner <vstinner at python.org>
committer: vstinner <vstinner at python.org>
date: 2022-02-28T16:03:57+01:00
summary:
bpo-45431: Rename CFrame to _PyCFrame in the C API (GH-31584)
Rename also struct _cframe to struct _PyCFrame.
Add a comment suggesting using public functions rather than using
directly the private _PyCFrame structure.
files:
M Include/cpython/pystate.h
M Include/internal/pycore_frame.h
M Python/ceval.c
diff --git a/Include/cpython/pystate.h b/Include/cpython/pystate.h
index 0d38604636b2b..26d6f7576e524 100644
--- a/Include/cpython/pystate.h
+++ b/Include/cpython/pystate.h
@@ -33,7 +33,9 @@ typedef struct {
PyCodeAddressRange bounds; // Only valid if code != NULL.
} PyTraceInfo;
-typedef struct _cframe {
+// Internal structure: you should not use it directly, but use public functions
+// like PyThreadState_EnterTracing() and PyThreadState_LeaveTracing().
+typedef struct _PyCFrame {
/* This struct will be threaded through the C stack
* allowing fast access to per-thread state that needs
* to be accessed quickly by the interpreter, but can
@@ -47,8 +49,8 @@ typedef struct _cframe {
int use_tracing;
/* Pointer to the currently executing frame (it can be NULL) */
struct _PyInterpreterFrame *current_frame;
- struct _cframe *previous;
-} CFrame;
+ struct _PyCFrame *previous;
+} _PyCFrame;
typedef struct _err_stackitem {
/* This struct represents a single execution context where we might
@@ -102,9 +104,9 @@ struct _ts {
the trace/profile. */
int tracing;
- /* Pointer to current CFrame in the C stack frame of the currently,
+ /* Pointer to current _PyCFrame in the C stack frame of the currently,
* or most recently, executing _PyEval_EvalFrameDefault. */
- CFrame *cframe;
+ _PyCFrame *cframe;
Py_tracefunc c_profilefunc;
Py_tracefunc c_tracefunc;
@@ -196,7 +198,7 @@ struct _ts {
_PyErr_StackItem exc_state;
/* The bottom-most frame on the stack. */
- CFrame root_cframe;
+ _PyCFrame root_cframe;
};
diff --git a/Include/internal/pycore_frame.h b/Include/internal/pycore_frame.h
index 20e81b7849b20..207983dcc22d7 100644
--- a/Include/internal/pycore_frame.h
+++ b/Include/internal/pycore_frame.h
@@ -59,7 +59,7 @@ typedef struct _PyInterpreterFrame {
int f_lasti; /* Last instruction if called */
int stacktop; /* Offset of TOS from localsplus */
PyFrameState f_state; /* What state the frame is in */
- bool is_entry; // Whether this is the "root" frame for the current CFrame.
+ bool is_entry; // Whether this is the "root" frame for the current _PyCFrame.
bool is_generator;
PyObject *localsplus[1];
} _PyInterpreterFrame;
diff --git a/Python/ceval.c b/Python/ceval.c
index 6f1165b768041..13866ba355e97 100644
--- a/Python/ceval.c
+++ b/Python/ceval.c
@@ -1616,15 +1616,15 @@ _PyEval_EvalFrameDefault(PyThreadState *tstate, _PyInterpreterFrame *frame, int
int oparg; /* Current opcode argument, if any */
_Py_atomic_int * const eval_breaker = &tstate->interp->ceval.eval_breaker;
- CFrame cframe;
+ _PyCFrame cframe;
CallShape call_shape;
call_shape.kwnames = NULL; // Borrowed reference. Reset by CALL instructions.
- /* WARNING: Because the CFrame lives on the C stack,
+ /* WARNING: Because the _PyCFrame lives on the C stack,
* but can be accessed from a heap allocated object (tstate)
* strict stack discipline must be maintained.
*/
- CFrame *prev_cframe = tstate->cframe;
+ _PyCFrame *prev_cframe = tstate->cframe;
cframe.use_tracing = prev_cframe->use_tracing;
cframe.previous = prev_cframe;
tstate->cframe = &cframe;
More information about the Python-checkins
mailing list