Skip to content

Commit 4449d84

Browse files
committed
optimise _ITER_CHECK_RANGE and _ITER_CHECK_LIST
1 parent e682141 commit 4449d84

File tree

2 files changed

+26
-0
lines changed

2 files changed

+26
-0
lines changed

Python/optimizer_bytecodes.c

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1088,6 +1088,20 @@ dummy_func(void) {
10881088
sym_set_type(iter, &PyTuple_Type);
10891089
}
10901090

1091+
op(_ITER_CHECK_LIST, (iter, null_or_index -- iter, null_or_index)) {
1092+
if (sym_matches_type(iter, &PyList_Type)) {
1093+
ADD_OP(_NOP, 0, 0);
1094+
}
1095+
sym_set_type(iter, &PyList_Type);
1096+
}
1097+
1098+
op(_ITER_CHECK_RANGE, (iter, null_or_index -- iter, null_or_index)) {
1099+
if (sym_matches_type(iter, &PyRange_Type)) {
1100+
ADD_OP(_NOP, 0, 0);
1101+
}
1102+
sym_set_type(iter, &PyRange_Type);
1103+
}
1104+
10911105
op(_ITER_NEXT_RANGE, (iter, null_or_index -- iter, null_or_index, next)) {
10921106
next = sym_new_type(ctx, &PyLong_Type);
10931107
}

Python/optimizer_cases.c.h

Lines changed: 12 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)