]> granicus.if.org Git - python/commitdiff
Patch #966493: Cleanup generator/eval_frame exposure.
authorMartin v. Löwis <martin@v.loewis.de>
Sun, 27 Jun 2004 15:43:12 +0000 (15:43 +0000)
committerMartin v. Löwis <martin@v.loewis.de>
Sun, 27 Jun 2004 15:43:12 +0000 (15:43 +0000)
Include/Python.h
Include/ceval.h
Include/genobject.h
Objects/genobject.c
Python/ceval.c

index 0d9a797f0d7064d3fb2f8552c0b501c72a06c428..a2be68f78ac9331753e7df41d9e7451bace5caef 100644 (file)
@@ -99,6 +99,7 @@
 #include "sliceobject.h"
 #include "cellobject.h"
 #include "iterobject.h"
+#include "genobject.h"
 #include "descrobject.h"
 #include "weakrefobject.h"
 
index ae6de3a2856697d08d28668574b6944c7c128031..3d1f6fd2b0919faded23ae68617263b49301c486 100644 (file)
@@ -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;
index c9b7c193a6ff9972a130680e12978563a95909b3..f4226ede420aa221ff3e3da0f339d4f0ed4d4b09 100644 (file)
@@ -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
 }
index a604bcbccddfb326e1947a05a6e056e2aca22166..66a5106487aae2bacd6a299654572dd2e99b392f 100644 (file)
@@ -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
index e2330996abdb66c430bacd58f1b00e3a61067e2f..ca7cea8a425edbbd0d22a7f92b91fce78bf24b68 100644 (file)
@@ -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);