]> granicus.if.org Git - python/commitdiff
Get rid of f_restricted too. Doc the other 4 ints that were already removed
authorNeal Norwitz <nnorwitz@gmail.com>
Mon, 12 Jun 2006 02:11:18 +0000 (02:11 +0000)
committerNeal Norwitz <nnorwitz@gmail.com>
Mon, 12 Jun 2006 02:11:18 +0000 (02:11 +0000)
at the NeedForSpeed sprint.

Include/frameobject.h
Misc/NEWS
Objects/frameobject.c
Python/ceval.c

index cce598bee2756a31bb06a5379a6033df4d0da38f..794f6515bd5bf6139a764b20d20a7a5fac549ca5 100644 (file)
@@ -41,8 +41,6 @@ typedef struct _frame {
     /* As of 2.3 f_lineno is only valid when tracing is active (i.e. when
        f_trace is set) -- at other times use PyCode_Addr2Line instead. */
     int f_lineno;              /* Current line number */
-    int f_restricted;          /* Flag set if restricted operations
-                                  in this scope */
     int f_iblock;              /* index in f_blockstack */
     PyTryBlock f_blockstack[CO_MAXBLOCKS]; /* for try and loop blocks */
     PyObject *f_localsplus[1]; /* locals+stack, dynamically sized */
@@ -54,6 +52,8 @@ typedef struct _frame {
 PyAPI_DATA(PyTypeObject) PyFrame_Type;
 
 #define PyFrame_Check(op) ((op)->ob_type == &PyFrame_Type)
+#define PyFrame_IsRestricted(f) \
+       ((f)->f_builtins != (f)->f_tstate->interp->builtins)
 
 PyAPI_FUNC(PyFrameObject *) PyFrame_New(PyThreadState *, PyCodeObject *,
                                        PyObject *, PyObject *);
index 699caa1e0ef9434e6196fb729e4f78042ffe374b..f3c87395100ef8040b57d67c49cbb78e4d467c7a 100644 (file)
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -12,6 +12,9 @@ What's New in Python 2.5 beta 1?
 Core and builtins
 -----------------
 
+- Removed 5 integers from C frame objects (PyFrameObject).
+       f_nlocals, f_ncells, f_nfreevars, f_stack_size, f_restricted.
+
 - Bug #532646: object.__call__() will continue looking for the __call__
   attribute on objects until one without one is found.  This leads to recursion
   when you take a class and set its __call__ attribute to an instance of the
index 06c3c7a9505620f56bbbf6b64fa631e535faa657..a933c4a6912ffbf6f9cfb3b79b2b0811a467fe75 100644 (file)
@@ -20,7 +20,6 @@ static PyMemberDef frame_memberlist[] = {
        {"f_builtins",  T_OBJECT,       OFF(f_builtins),RO},
        {"f_globals",   T_OBJECT,       OFF(f_globals), RO},
        {"f_lasti",     T_INT,          OFF(f_lasti),   RO},
-       {"f_restricted",T_INT,          OFF(f_restricted),RO},
        {"f_exc_type",  T_OBJECT,       OFF(f_exc_type)},
        {"f_exc_value", T_OBJECT,       OFF(f_exc_value)},
        {"f_exc_traceback", T_OBJECT,   OFF(f_exc_traceback)},
@@ -341,11 +340,18 @@ frame_settrace(PyFrameObject *f, PyObject* v, void *closure)
        return 0;
 }
 
+static PyObject *
+frame_getrestricted(PyFrameObject *f, void *closure)
+{
+       return PyBool_FromLong(PyFrame_IsRestricted(f));
+}
+
 static PyGetSetDef frame_getsetlist[] = {
        {"f_locals",    (getter)frame_getlocals, NULL, NULL},
        {"f_lineno",    (getter)frame_getlineno,
                        (setter)frame_setlineno, NULL},
        {"f_trace",     (getter)frame_gettrace, (setter)frame_settrace, NULL},
+       {"f_restricted",(getter)frame_getrestricted,NULL, NULL},
        {0}
 };
 
@@ -664,7 +670,6 @@ PyFrame_New(PyThreadState *tstate, PyCodeObject *code, PyObject *globals,
 
        f->f_lasti = -1;
        f->f_lineno = code->co_firstlineno;
-       f->f_restricted = (builtins != tstate->interp->builtins);
        f->f_iblock = 0;
 
         f->f_stacktop = f->f_valuestack;
index e68dbb24c2c7b5536acad8d88a2030efd4358f1d..278604d86f6f708b66e67b73c8f212e814465404 100644 (file)
@@ -3354,7 +3354,7 @@ int
 PyEval_GetRestricted(void)
 {
        PyFrameObject *current_frame = PyEval_GetFrame();
-       return current_frame == NULL ? 0 : current_frame->f_restricted;
+       return current_frame == NULL ? 0 : PyFrame_IsRestricted(current_frame);
 }
 
 int