[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