[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