[Python-checkins] python/dist/src/Python ceval.c, 2.314.2.4,
2.314.2.5
jhylton at users.sourceforge.net
jhylton at users.sourceforge.net
Wed Apr 21 01:58:25 EDT 2004
Update of /cvsroot/python/python/dist/src/Python
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv19105
Modified Files:
Tag: ast-branch
ceval.c
Log Message:
Simplify hairy code to initialize cell variables.
The old code depended on the order in which the old compiler put names
into co_cellvars. The order is different with the new compiler, which
caused a bunch of test failures (e.g. test_userdict) when an argument
was also a cell variable.
In comment, note that it might be a good idea for the compiler to
generate names in a certain order. On the other hand, it's hard to
imagine a practical case where this would make a difference.
Index: ceval.c
===================================================================
RCS file: /cvsroot/python/python/dist/src/Python/ceval.c,v
retrieving revision 2.314.2.4
retrieving revision 2.314.2.5
diff -C2 -d -r2.314.2.4 -r2.314.2.5
*** ceval.c 26 Mar 2004 18:17:31 -0000 2.314.2.4
--- ceval.c 21 Apr 2004 05:58:08 -0000 2.314.2.5
***************
*** 2574,2583 ****
nargs++;
! /* Check for cells that shadow args */
! for (i = 0; i < f->f_ncells && j < nargs; ++i) {
cellname = PyString_AS_STRING(
PyTuple_GET_ITEM(co->co_cellvars, i));
found = 0;
! while (j < nargs) {
argname = PyString_AS_STRING(
PyTuple_GET_ITEM(co->co_varnames, j));
--- 2574,2589 ----
nargs++;
! /* Initialize each cell var, taking into account
! cell vars that are initialized from arguments.
!
! Should arrange for the compiler to put cellvars
! that are arguments at the beginning of the cellvars
! list so that we can march over it more efficiently?
! */
! for (i = 0; i < f->f_ncells; ++i) {
cellname = PyString_AS_STRING(
PyTuple_GET_ITEM(co->co_cellvars, i));
found = 0;
! for (j = 0; j < nargs; j++) {
argname = PyString_AS_STRING(
PyTuple_GET_ITEM(co->co_varnames, j));
***************
*** 2590,2594 ****
break;
}
- j++;
}
if (found == 0) {
--- 2596,2599 ----
***************
*** 2599,2610 ****
}
}
- /* Initialize any that are left */
- while (i < f->f_ncells) {
- c = PyCell_New(NULL);
- if (c == NULL)
- goto fail;
- SETLOCAL(f->f_nlocals + i, c);
- i++;
- }
}
if (f->f_nfreevars) {
--- 2604,2607 ----
More information about the Python-checkins
mailing list