summaryrefslogtreecommitdiff
path: root/Python/peephole.c
diff options
context:
space:
mode:
Diffstat (limited to 'Python/peephole.c')
-rw-r--r--Python/peephole.c27
1 files changed, 3 insertions, 24 deletions
diff --git a/Python/peephole.c b/Python/peephole.c
index 5817146563..49d62a2c34 100644
--- a/Python/peephole.c
+++ b/Python/peephole.c
@@ -173,8 +173,6 @@ copy_op_arg(_Py_CODEUNIT *codestr, Py_ssize_t i, unsigned char op,
new constant (c1, c2, ... cn) can be appended.
Called with codestr pointing to the first LOAD_CONST.
Bails out with no change if one or more of the LOAD_CONSTs is missing.
- Also works for BUILD_LIST and BUILT_SET when followed by an "in" or "not in"
- test; for BUILD_SET it assembles a frozenset rather than a tuple.
*/
static Py_ssize_t
fold_tuple_on_constants(_Py_CODEUNIT *codestr, Py_ssize_t c_start,
@@ -198,15 +196,6 @@ fold_tuple_on_constants(_Py_CODEUNIT *codestr, Py_ssize_t c_start,
PyTuple_SET_ITEM(newconst, i, constant);
}
- /* If it's a BUILD_SET, use the PyTuple we just built to create a
- PyFrozenSet, and use that as the constant instead: */
- if (opcode == BUILD_SET) {
- Py_SETREF(newconst, PyFrozenSet_New(newconst));
- if (newconst == NULL) {
- return -1;
- }
- }
-
/* Append folded constant onto consts */
len_consts = PyList_GET_SIZE(consts);
if (PyList_Append(consts, newconst)) {
@@ -358,24 +347,15 @@ PyCode_Optimize(PyObject *code, PyObject* consts, PyObject *names,
CONST_STACK_POP(1);
break;
- /* Try to fold tuples of constants (includes a case for lists
- and sets which are only used for "in" and "not in" tests).
+ /* Try to fold tuples of constants.
Skip over BUILD_SEQN 1 UNPACK_SEQN 1.
Replace BUILD_SEQN 2 UNPACK_SEQN 2 with ROT2.
Replace BUILD_SEQN 3 UNPACK_SEQN 3 with ROT3 ROT2. */
case BUILD_TUPLE:
- case BUILD_LIST:
- case BUILD_SET:
j = get_arg(codestr, i);
if (j > 0 && CONST_STACK_LEN() >= j) {
h = lastn_const_start(codestr, op_start, j);
- if ((opcode == BUILD_TUPLE &&
- ISBASICBLOCK(blocks, h, op_start)) ||
- ((opcode == BUILD_LIST || opcode == BUILD_SET) &&
- ((nextop==COMPARE_OP &&
- (_Py_OPARG(codestr[nexti]) == PyCmp_IN ||
- _Py_OPARG(codestr[nexti]) == PyCmp_NOT_IN)) ||
- nextop == GET_ITER) && ISBASICBLOCK(blocks, h, i + 1))) {
+ if (ISBASICBLOCK(blocks, h, op_start)) {
h = fold_tuple_on_constants(codestr, h, i + 1, opcode,
consts, CONST_STACK_LASTN(j), j);
if (h >= 0) {
@@ -387,8 +367,7 @@ PyCode_Optimize(PyObject *code, PyObject* consts, PyObject *names,
}
if (nextop != UNPACK_SEQUENCE ||
!ISBASICBLOCK(blocks, op_start, i + 1) ||
- j != get_arg(codestr, nexti) ||
- opcode == BUILD_SET)
+ j != get_arg(codestr, nexti))
break;
if (j < 2) {
fill_nops(codestr, op_start, nexti + 1);