[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

AltStyle によって変換されたページ (->オリジナル) /