From 8d97e33bb76c322cdb08dbf97c26d787cd3488a7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Martin=20v=2E=20L=C3=B6wis?= Date: Sun, 27 Jun 2004 15:43:12 +0000 Subject: [PATCH] Patch #966493: Cleanup generator/eval_frame exposure. --- Include/Python.h | 1 + Include/ceval.h | 2 +- Include/genobject.h | 6 ++++-- Objects/genobject.c | 2 +- Python/ceval.c | 20 ++++++-------------- 5 files changed, 13 insertions(+), 18 deletions(-) diff --git a/Include/Python.h b/Include/Python.h index 0d9a797f0d7..a2be68f78ac 100644 --- a/Include/Python.h +++ b/Include/Python.h @@ -99,6 +99,7 @@ #include "sliceobject.h" #include "cellobject.h" #include "iterobject.h" +#include "genobject.h" #include "descrobject.h" #include "weakrefobject.h" diff --git a/Include/ceval.h b/Include/ceval.h index ae6de3a2856..3d1f6fd2b09 100644 --- a/Include/ceval.h +++ b/Include/ceval.h @@ -64,7 +64,7 @@ PyAPI_FUNC(char *) PyEval_GetFuncName(PyObject *); PyAPI_FUNC(char *) PyEval_GetFuncDesc(PyObject *); PyAPI_FUNC(PyObject *) PyEval_GetCallStats(PyObject *); -PyAPI_FUNC(PyObject *) PyEval_EvaluateFrame(PyObject *); +PyAPI_FUNC(PyObject *) PyEval_EvalFrame(struct _frame *); /* this used to be handled on a per-thread basis - now just two globals */ PyAPI_DATA(volatile int) _Py_Ticker; diff --git a/Include/genobject.h b/Include/genobject.h index c9b7c193a6f..f4226ede420 100644 --- a/Include/genobject.h +++ b/Include/genobject.h @@ -7,11 +7,13 @@ extern "C" { #endif +struct _frame; /* Avoid including frameobject.h */ + typedef struct { PyObject_HEAD /* The gi_ prefix is intended to remind of generator-iterator. */ - PyFrameObject *gi_frame; + struct _frame *gi_frame; /* True if generator is being executed. */ int gi_running; @@ -25,7 +27,7 @@ PyAPI_DATA(PyTypeObject) PyGen_Type; #define PyGen_Check(op) PyObject_TypeCheck(op, &PyGen_Type) #define PyGen_CheckExact(op) ((op)->ob_type == &PyGen_Type) -PyAPI_FUNC(PyObject *) PyGen_New(PyFrameObject *); +PyAPI_FUNC(PyObject *) PyGen_New(struct _frame *); #ifdef __cplusplus } diff --git a/Objects/genobject.c b/Objects/genobject.c index a604bcbccdd..66a5106487a 100644 --- a/Objects/genobject.c +++ b/Objects/genobject.c @@ -44,7 +44,7 @@ gen_iternext(PyGenObject *gen) f->f_back = tstate->frame; gen->gi_running = 1; - result = PyEval_EvaluateFrame((PyObject *)f); + result = PyEval_EvalFrame(f); gen->gi_running = 0; /* Don't keep the reference to f_back any longer than necessary. It diff --git a/Python/ceval.c b/Python/ceval.c index e2330996abd..ca7cea8a425 100644 --- a/Python/ceval.c +++ b/Python/ceval.c @@ -10,7 +10,6 @@ #include "compile.h" #include "frameobject.h" -#include "genobject.h" #include "eval.h" #include "opcode.h" #include "structmember.h" @@ -49,7 +48,6 @@ void dump_tsc(int opcode, int ticked, uint64 inst0, uint64 inst1, typedef PyObject *(*callproc)(PyObject *, PyObject *, PyObject *); /* Forward declarations */ -static PyObject *eval_frame(PyFrameObject *); #ifdef WITH_TSC static PyObject *call_function(PyObject ***, int, uint64*, uint64*); #else @@ -458,8 +456,8 @@ PyEval_EvalCode(PyCodeObject *co, PyObject *globals, PyObject *locals) /* Interpreter main loop */ -static PyObject * -eval_frame(PyFrameObject *f) +PyObject * +PyEval_EvalFrame(PyFrameObject *f) { #ifdef DXPAIRS int lastopcode = 0; @@ -2455,8 +2453,8 @@ fast_yield: } /* this is gonna seem *real weird*, but if you put some other code between - eval_frame() and PyEval_EvalCodeEx() you will need to adjust the test in - the if statement in Misc/gdbinit:ppystack */ + PyEval_EvalFrame() and PyEval_EvalCodeEx() you will need to adjust + the test in the if statement in Misc/gdbinit:ppystack */ PyObject * PyEval_EvalCodeEx(PyCodeObject *co, PyObject *globals, PyObject *locals, @@ -2684,7 +2682,7 @@ PyEval_EvalCodeEx(PyCodeObject *co, PyObject *globals, PyObject *locals, return PyGen_New(f); } - retval = eval_frame(f); + retval = PyEval_EvalFrame(f); fail: /* Jump here from prelude on failure */ @@ -3415,12 +3413,6 @@ PyEval_GetFuncDesc(PyObject *func) } } -PyObject * -PyEval_EvaluateFrame(PyObject *fo) -{ - return eval_frame((PyFrameObject *)fo); -} - #define EXT_POP(STACK_POINTER) (*--(STACK_POINTER)) static void @@ -3597,7 +3589,7 @@ fast_function(PyObject *func, PyObject ***pp_stack, int n, int na, int nk) Py_INCREF(*stack); fastlocals[i] = *stack++; } - retval = eval_frame(f); + retval = PyEval_EvalFrame(f); assert(tstate != NULL); ++tstate->recursion_depth; Py_DECREF(f);