Skip to content

Commit eb3abc2

Browse files
committed
address review
1 parent 7b3e480 commit eb3abc2

File tree

1 file changed

+12
-12
lines changed

1 file changed

+12
-12
lines changed

Python/flowgraph.c

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1429,35 +1429,34 @@ fold_tuple_of_constants(basicblock *bb, int n, PyObject *consts, PyObject *const
14291429

14301430
#define MIN_CONST_SEQUENCE_SIZE 3
14311431
/*
1432-
Optimize literal list/set for:
1432+
Optimize lists and sets for:
14331433
1. "for" loop, comprehension or "in"/"not in" tests:
14341434
Change literal list or set of constants into constant
1435-
tuple or frozenset respectively. Change literal list of
1435+
tuple or frozenset respectively. Change list of
14361436
non-constants into tuple.
14371437
2. Constant literal lists/set with length >= MIN_CONST_SEQUENCE_SIZE:
14381438
Replace LOAD_CONST c1, LOAD_CONST c2 ... LOAD_CONST cN, BUILD_LIST N
14391439
with BUILD_LIST 0, LOAD_CONST (c1, c2, ... cN), LIST_EXTEND 1,
14401440
or BUILD_SET & SET_UPDATE respectively.
14411441
*/
14421442
static int
1443-
optimize_list_or_set_literal(basicblock *bb, int i, int nextop,
1444-
PyObject *consts, PyObject *const_cache)
1443+
optimize_lists_and_sets(basicblock *bb, int i, int nextop,
1444+
PyObject *consts, PyObject *const_cache)
14451445
{
14461446
assert(PyDict_CheckExact(const_cache));
14471447
assert(PyList_CheckExact(consts));
14481448
cfg_instr *instr = &bb->b_instr[i];
14491449
assert(instr->i_opcode == BUILD_LIST || instr->i_opcode == BUILD_SET);
1450-
bool contains_or_iter_literal = nextop == GET_ITER || nextop == CONTAINS_OP;
1450+
bool contains_or_iter = nextop == GET_ITER || nextop == CONTAINS_OP;
14511451
int seq_size = instr->i_oparg;
1452-
if (seq_size < MIN_CONST_SEQUENCE_SIZE && !contains_or_iter_literal) {
1452+
if (seq_size < MIN_CONST_SEQUENCE_SIZE && !contains_or_iter) {
14531453
return SUCCESS;
14541454
}
14551455
PyObject *newconst;
14561456
RETURN_IF_ERROR(get_constant_sequence(bb, i-1, seq_size, consts, &newconst));
1457-
if (newconst == NULL) {
1458-
/* not a const sequence */
1459-
if (contains_or_iter_literal && instr->i_opcode == BUILD_LIST) {
1460-
/* convert list iterable to tuple */
1457+
if (newconst == NULL) { /* not a const sequence */
1458+
if (contains_or_iter && instr->i_opcode == BUILD_LIST) {
1459+
/* iterate over a tuple instead of list */
14611460
INSTR_SET_OP1(instr, BUILD_TUPLE, instr->i_oparg);
14621461
}
14631462
return SUCCESS;
@@ -1474,11 +1473,12 @@ optimize_list_or_set_literal(basicblock *bb, int i, int nextop,
14741473
int index = add_const(newconst, consts, const_cache);
14751474
RETURN_IF_ERROR(index);
14761475
nop_out(bb, i-1, seq_size);
1477-
if (contains_or_iter_literal) {
1476+
if (contains_or_iter) {
14781477
INSTR_SET_OP1(instr, LOAD_CONST, index);
14791478
}
14801479
else {
14811480
assert(i >= 2);
1481+
assert(instr->i_opcode == BUILD_LIST || instr->i_opcode == BUILD_SET);
14821482
INSTR_SET_OP1(&bb->b_instr[i-2], instr->i_opcode, 0);
14831483
INSTR_SET_OP1(&bb->b_instr[i-1], LOAD_CONST, index);
14841484
INSTR_SET_OP1(&bb->b_instr[i], instr->i_opcode == BUILD_LIST ? LIST_EXTEND : SET_UPDATE, 1);
@@ -1939,7 +1939,7 @@ optimize_basic_block(PyObject *const_cache, basicblock *bb, PyObject *consts)
19391939
break;
19401940
case BUILD_LIST:
19411941
case BUILD_SET:
1942-
RETURN_IF_ERROR(optimize_list_or_set_literal(bb, i, nextop, consts, const_cache));
1942+
RETURN_IF_ERROR(optimize_lists_and_sets(bb, i, nextop, consts, const_cache));
19431943
break;
19441944
case POP_JUMP_IF_NOT_NONE:
19451945
case POP_JUMP_IF_NONE:

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy