[Python-checkins] python/dist/src/Python ceval.c,2.301.4.5,2.301.4.6

mwh@users.sourceforge.net mwh@users.sourceforge.net
Mon, 07 Oct 2002 02:37:29 -0700


Update of /cvsroot/python/python/dist/src/Python
In directory usw-pr-cvs1:/tmp/cvs-serv10762

Modified Files:
      Tag: release22-maint
	ceval.c 
Log Message:
This is Armin Rigo's patch:

[ 617312 ] debugger-controlled jumps (Psyco #3)

Forward port candidate, I guess.


Index: ceval.c
===================================================================
RCS file: /cvsroot/python/python/dist/src/Python/ceval.c,v
retrieving revision 2.301.4.5
retrieving revision 2.301.4.6
diff -C2 -d -r2.301.4.5 -r2.301.4.6
*** ceval.c	2 Oct 2002 13:13:47 -0000	2.301.4.5
--- ceval.c	7 Oct 2002 09:37:26 -0000	2.301.4.6
***************
*** 586,597 ****
  
  	tstate->frame = f;
- 	co = f->f_code;
- 	fastlocals = f->f_localsplus;
- 	freevars = f->f_localsplus + f->f_nlocals;
- 	_PyCode_GETCODEPTR(co, &first_instr);
- 	next_instr = first_instr + f->f_lasti;
- 	stack_pointer = f->f_stacktop;
- 	assert(stack_pointer != NULL);
- 	f->f_stacktop = NULL;	/* remains NULL unless yield suspends frame */
  
  	if (tstate->use_tracing) {
--- 586,589 ----
***************
*** 632,635 ****
--- 624,636 ----
  	}
  
+ 	co = f->f_code;
+ 	fastlocals = f->f_localsplus;
+ 	freevars = f->f_localsplus + f->f_nlocals;
+ 	_PyCode_GETCODEPTR(co, &first_instr);
+ 	next_instr = first_instr + f->f_lasti;
+ 	stack_pointer = f->f_stacktop;
+ 	assert(stack_pointer != NULL);
+ 	f->f_stacktop = NULL;	/* remains NULL unless yield suspends frame */
+ 
  #ifdef LLTRACE
  	lltrace = PyDict_GetItemString(f->f_globals,"__lltrace__") != NULL;
***************
*** 1973,1976 ****
--- 1974,1978 ----
  			/* Trace each line of code reached */
  			f->f_lasti = INSTR_OFFSET();
+ 			f->f_stacktop = stack_pointer;
  			/* Inline call_trace() for performance: */
  			tstate->tracing++;
***************
*** 1981,1984 ****
--- 1983,1991 ----
  					       || tstate->c_profilefunc);
  			tstate->tracing--;
+ 			/* Reload possibly changed frame fields */
+ 			JUMPTO(f->f_lasti);
+ 			stack_pointer = f->f_stacktop;
+ 			assert(stack_pointer != NULL);
+ 			f->f_stacktop = NULL;
  			break;