[Python-checkins] r45413 - in python/trunk: Include/objimpl.h Objects/frameobject.c (original) (raw)
tim.peters python-checkins at python.org
Sat Apr 15 05:22:47 CEST 2006
- Previous message: [Python-checkins] r45412 - python/trunk/Objects/frameobject.c
- Next message: [Python-checkins] r45414 - python/trunk/Objects/frameobject.c
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
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;
- Previous message: [Python-checkins] r45412 - python/trunk/Objects/frameobject.c
- Next message: [Python-checkins] r45414 - python/trunk/Objects/frameobject.c
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]