[Python-checkins] r46881 - in python/trunk: Include/frameobject.h Misc/NEWS Objects/frameobject.c Python/ceval.c

neal.norwitz python-checkins at python.org
Mon Jun 12 04:11:19 CEST 2006


Author: neal.norwitz
Date: Mon Jun 12 04:11:18 2006
New Revision: 46881

Modified:
   python/trunk/Include/frameobject.h
   python/trunk/Misc/NEWS
   python/trunk/Objects/frameobject.c
   python/trunk/Python/ceval.c
Log:
Get rid of f_restricted too.  Doc the other 4 ints that were already removed
at the NeedForSpeed sprint.


Modified: python/trunk/Include/frameobject.h
==============================================================================
--- python/trunk/Include/frameobject.h	(original)
+++ python/trunk/Include/frameobject.h	Mon Jun 12 04:11:18 2006
@@ -41,8 +41,6 @@
     /* 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 @@
 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 *);

Modified: python/trunk/Misc/NEWS
==============================================================================
--- python/trunk/Misc/NEWS	(original)
+++ python/trunk/Misc/NEWS	Mon Jun 12 04:11:18 2006
@@ -12,6 +12,9 @@
 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

Modified: python/trunk/Objects/frameobject.c
==============================================================================
--- python/trunk/Objects/frameobject.c	(original)
+++ python/trunk/Objects/frameobject.c	Mon Jun 12 04:11:18 2006
@@ -20,7 +20,6 @@
 	{"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 @@
 	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 @@
 
 	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;

Modified: python/trunk/Python/ceval.c
==============================================================================
--- python/trunk/Python/ceval.c	(original)
+++ python/trunk/Python/ceval.c	Mon Jun 12 04:11:18 2006
@@ -3354,7 +3354,7 @@
 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


More information about the Python-checkins mailing list