summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRaymond Hettinger <python@rcn.com>2005-02-10 01:42:32 (GMT)
committerRaymond Hettinger <python@rcn.com>2005-02-10 01:42:32 (GMT)
commitb615bf06813022dccba98309cdfb77f409c4742f (patch)
tree54dd12fa702f526f2aa73538dcf654c8b97bae1a
parent4e9907c91478d25161294e9d2cad790eed987928 (diff)
downloadcpython-b615bf06813022dccba98309cdfb77f409c4742f.zip
cpython-b615bf06813022dccba98309cdfb77f409c4742f.tar.gz
cpython-b615bf06813022dccba98309cdfb77f409c4742f.tar.bz2
Remove the set conversion which didn't work with: [] in (0,)
-rw-r--r--Python/compile.c54
1 files changed, 1 insertions, 53 deletions
diff --git a/Python/compile.c b/Python/compile.c
index f90f82c..c1c2fa9 100644
--- a/Python/compile.c
+++ b/Python/compile.c
@@ -542,53 +542,6 @@ fold_binops_on_constants(unsigned char *codestr, PyObject *consts)
return 1;
}
-/* Replace LOAD_CONST tuple with LOAD_CONST frozenset in the context
- of a single-use constant for "in" and "not in" tests.
-*/
-int
-try_set_conversion(unsigned char *codestr, PyObject *consts)
-{
- PyObject *newconst, *constant;
- int arg, len_consts;
-
- /* Pre-conditions */
- assert(PyList_CheckExact(consts));
- assert(codestr[0] == LOAD_CONST);
- assert(codestr[3] == COMPARE_OP);
- assert(GETARG(codestr, 3) == 6 || GETARG(codestr, 3) == 7);
-
- /* Attempt to convert constant to a frozenset. Bail-out with no
- changes if the tuple contains unhashable values. */
- arg = GETARG(codestr, 0);
- constant = PyList_GET_ITEM(consts, arg);
- if (constant->ob_type != &PyTuple_Type)
- return 0;
- newconst = PyObject_CallFunctionObjArgs(
- (PyObject *)&PyFrozenSet_Type, constant, NULL);
- if (newconst == NULL) {
- PyErr_Clear();
- return 0;
- }
-
- /* Append new constant onto consts list or replace existing constant
- if there are no other references to it.*/
- if (constant->ob_refcnt == 1) {
- PyList_SET_ITEM(consts, arg, newconst);
- Py_DECREF(constant);
- return 1;
- }
- len_consts = PyList_GET_SIZE(consts);
- if (PyList_Append(consts, newconst)) {
- Py_DECREF(newconst);
- return 0;
- }
- Py_DECREF(newconst);
-
- /* Write new LOAD_CONST newconst on top of LOAD_CONST oldconst */
- SETARG(codestr, 0, len_consts);
- return 1;
-}
-
static unsigned int *
markblocks(unsigned char *code, int len)
{
@@ -714,15 +667,10 @@ optimize_code(PyObject *code, PyObject* consts, PyObject *names, PyObject *linen
/* not a is b --> a is not b
not a in b --> a not in b
not a is not b --> a is b
- not a not in b --> a in b
-
- a in c --> a in frozenset(c)
- where c is a constant tuple of hashable values
+ not a not in b --> a in b
*/
case COMPARE_OP:
j = GETARG(codestr, i);
- if (lastlc >= 1 && (j == 6 || j == 7) && ISBASICBLOCK(blocks,i-3,6))
- try_set_conversion(&codestr[i-3], consts);
if (j < 6 || j > 9 ||
codestr[i+3] != UNARY_NOT ||
!ISBASICBLOCK(blocks,i,4))