[Python-checkins] python/dist/src/Python ceval.c,2.390,2.391
rhettinger at users.sourceforge.net
rhettinger at users.sourceforge.net
Tue Apr 6 06:11:12 EDT 2004
Update of /cvsroot/python/python/dist/src/Python
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv11958
Modified Files:
ceval.c
Log Message:
Simplify previous checkin (bitfields for WHY codes).
Restores the self-documenting enum declaration.
Index: ceval.c
===================================================================
RCS file: /cvsroot/python/python/dist/src/Python/ceval.c,v
retrieving revision 2.390
retrieving revision 2.391
diff -C2 -d -r2.390 -r2.391
*** ceval.c 6 Apr 2004 09:37:35 -0000 2.390
--- ceval.c 6 Apr 2004 10:11:10 -0000 2.391
***************
*** 538,550 ****
/* Status code for main loop (reason for stack unwind) */
! #define WHY_NOT 0x0001
! #define WHY_EXCEPTION 0x0002
! #define WHY_RERAISE 0x0004
! #define WHY_RETURN 0x0008
! #define WHY_BREAK 0x0010
! #define WHY_CONTINUE 0x0020
! #define WHY_YIELD 0x0040
! static int do_raise(PyObject *, PyObject *, PyObject *);
static int unpack_iterable(PyObject *, int, PyObject **);
--- 538,552 ----
/* Status code for main loop (reason for stack unwind) */
! enum why_code {
! WHY_NOT = 0x0001, /* No error */
! WHY_EXCEPTION = 0x0002, /* Exception occurred */
! WHY_RERAISE = 0x0004, /* Exception re-raised by 'finally' */
! WHY_RETURN = 0x0008, /* 'return' statement */
! WHY_BREAK = 0x0010, /* 'break' statement */
! WHY_CONTINUE = 0x0020, /* 'continue' statement */
! WHY_YIELD = 0x0040 /* 'yield' operator */
! };
! static enum why_code do_raise(PyObject *, PyObject *, PyObject *);
static int unpack_iterable(PyObject *, int, PyObject **);
***************
*** 579,583 ****
register int opcode=0; /* Current opcode */
register int oparg=0; /* Current opcode argument, if any */
! register int why; /* Reason for block stack unwind */
register int err; /* Error status -- nonzero if error */
register PyObject *x; /* Result object -- NULL if error */
--- 581,585 ----
register int opcode=0; /* Current opcode */
register int oparg=0; /* Current opcode argument, if any */
! register enum why_code why; /* Reason for block stack unwind */
register int err; /* Error status -- nonzero if error */
register PyObject *x; /* Result object -- NULL if error */
***************
*** 1651,1655 ****
v = POP();
if (PyInt_Check(v)) {
! why = (int) PyInt_AS_LONG(v);
assert(why != WHY_YIELD);
if (why & (WHY_RETURN | WHY_CONTINUE))
--- 1653,1657 ----
v = POP();
if (PyInt_Check(v)) {
! why = (enum why_code) PyInt_AS_LONG(v);
assert(why != WHY_YIELD);
if (why & (WHY_RETURN | WHY_CONTINUE))
***************
*** 2835,2839 ****
/* Logic for the raise statement (too complicated for inlining).
This *consumes* a reference count to each of its arguments. */
! static int
do_raise(PyObject *type, PyObject *value, PyObject *tb)
{
--- 2837,2841 ----
/* Logic for the raise statement (too complicated for inlining).
This *consumes* a reference count to each of its arguments. */
! static enum why_code
do_raise(PyObject *type, PyObject *value, PyObject *tb)
{
More information about the Python-checkins
mailing list