[Python-checkins] r45413 - in python/trunk: Include/objimpl.h Objects/frameobject.c
tim.peters
python-checkins at python.org
Sat Apr 15 05:22:47 CEST 2006
Author: tim.peters
Date: Sat Apr 15 05:22:46 2006
New Revision: 45413
Modified:
python/trunk/Include/objimpl.h
python/trunk/Objects/frameobject.c
Log:
frame_traverse(): Use the standard Py_VISIT macro.
Py_VISIT: cast the `op` argument to PyObject* when calling
`visit()`. Else the caller has to pay too much attention to
this silly detail (e.g., frame_traverse needs to traverse
`struct _frame *` and `PyCodeObject *` pointers too).
Modified: python/trunk/Include/objimpl.h
==============================================================================
--- python/trunk/Include/objimpl.h (original)
+++ python/trunk/Include/objimpl.h Sat Apr 15 05:22:46 2006
@@ -303,13 +303,13 @@
* "visit" and "arg". This is intended to keep tp_traverse functions
* looking as much alike as possible.
*/
-#define Py_VISIT(op) \
- do { \
- if (op) { \
- int vret = visit((op), arg); \
- if (vret) \
- return vret; \
- } \
+#define Py_VISIT(op) \
+ do { \
+ if (op) { \
+ int vret = visit((PyObject *)(op), arg); \
+ if (vret) \
+ return vret; \
+ } \
} while (0)
/* This is here for the sake of backwards compatibility. Extensions that
Modified: python/trunk/Objects/frameobject.c
==============================================================================
--- python/trunk/Objects/frameobject.c (original)
+++ python/trunk/Objects/frameobject.c Sat Apr 15 05:22:46 2006
@@ -422,30 +422,28 @@
frame_traverse(PyFrameObject *f, visitproc visit, void *arg)
{
PyObject **fastlocals, **p;
- int i, err, slots;
-#define VISIT(o) if (o) {if ((err = visit((PyObject *)(o), arg))) return err;}
+ int i, slots;
- VISIT(f->f_back);
- VISIT(f->f_code);
- VISIT(f->f_builtins);
- VISIT(f->f_globals);
- VISIT(f->f_locals);
- VISIT(f->f_trace);
- VISIT(f->f_exc_type);
- VISIT(f->f_exc_value);
- VISIT(f->f_exc_traceback);
+ Py_VISIT(f->f_back);
+ Py_VISIT(f->f_code);
+ Py_VISIT(f->f_builtins);
+ Py_VISIT(f->f_globals);
+ Py_VISIT(f->f_locals);
+ Py_VISIT(f->f_trace);
+ Py_VISIT(f->f_exc_type);
+ Py_VISIT(f->f_exc_value);
+ Py_VISIT(f->f_exc_traceback);
/* locals */
slots = f->f_nlocals + f->f_ncells + f->f_nfreevars;
fastlocals = f->f_localsplus;
- for (i = slots; --i >= 0; ++fastlocals) {
- VISIT(*fastlocals);
- }
+ for (i = slots; --i >= 0; ++fastlocals)
+ Py_VISIT(*fastlocals);
/* stack */
if (f->f_stacktop != NULL) {
for (p = f->f_valuestack; p < f->f_stacktop; p++)
- VISIT(*p);
+ Py_VISIT(*p);
}
return 0;
}
More information about the Python-checkins
mailing list