Mailing List Archive

python/dist/src/Python ceval.c,2.301.4.5,2.301.4.6
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;