From: Armin R. <ar...@us...> - 2002-09-11 10:21:57
|
Update of /cvsroot/psyco/psyco/c In directory usw-pr-cvs1:/tmp/cvs-serv668 Modified Files: dispatcher.c Log Message: one more bugfix in psyco_unify() Index: dispatcher.c =================================================================== RCS file: /cvsroot/psyco/psyco/c/dispatcher.c,v retrieving revision 1.20 retrieving revision 1.21 diff -C2 -d -r1.20 -r1.21 *** dispatcher.c 8 Sep 2002 15:07:05 -0000 1.20 --- dispatcher.c 11 Sep 2002 10:21:53 -0000 1.21 *************** *** 1365,1368 **** --- 1365,1369 ---- struct dmove_s dm; code_t* code = po->code; + code_t* backpointer; CodeBufferObject* target_codebuf = lastmatch->matching; int sdepth = get_stack_depth(&target_codebuf->snapshot); *************** *** 1483,1486 **** --- 1484,1488 ---- extra_assert(has_ccreg == (po->ccreg != NULL)); #endif + backpointer = code; JUMP_TO(target_codebuf->codeptr); *************** *** 1488,1492 **** but not if we had no room at all in the first place. */ if (code > dm.code_limit && po->codelimit != NULL) ! code = data_new_buffer(code, &dm); PyMem_FREE(dm.usages); --- 1490,1500 ---- but not if we had no room at all in the first place. */ if (code > dm.code_limit && po->codelimit != NULL) ! { ! /* the JMP instruction emitted by JUMP_TO() is not position- ! independent; we must emit it again at the new position */ ! code = data_new_buffer(backpointer, &dm); ! JUMP_TO(target_codebuf->codeptr); ! assert(code <= dm.code_limit); ! } PyMem_FREE(dm.usages); |