mirror of
https://github.com/python/cpython.git
synced 2026-04-13 23:31:02 +00:00
gh-131798: Optimize _ITER_CHECK_RANGE and _ITER_CHECK_LIST in the JIT (GH-144583)
This commit is contained in:
parent
9d7621b75b
commit
1efd9939c8
4 changed files with 51 additions and 0 deletions
|
|
@ -1091,6 +1091,24 @@ dummy_func(void) {
|
|||
sym_set_type(iter, &PyTuple_Type);
|
||||
}
|
||||
|
||||
op(_ITER_CHECK_LIST, (iter, null_or_index -- iter, null_or_index)) {
|
||||
if (sym_matches_type(iter, &PyList_Type)) {
|
||||
ADD_OP(_NOP, 0, 0);
|
||||
}
|
||||
else {
|
||||
sym_set_type(iter, &PyList_Type);
|
||||
}
|
||||
}
|
||||
|
||||
op(_ITER_CHECK_RANGE, (iter, null_or_index -- iter, null_or_index)) {
|
||||
if (sym_matches_type(iter, &PyRange_Type)) {
|
||||
ADD_OP(_NOP, 0, 0);
|
||||
}
|
||||
else {
|
||||
sym_set_type(iter, &PyRange_Type);
|
||||
}
|
||||
}
|
||||
|
||||
op(_ITER_NEXT_RANGE, (iter, null_or_index -- iter, null_or_index, next)) {
|
||||
next = sym_new_type(ctx, &PyLong_Type);
|
||||
}
|
||||
|
|
|
|||
16
Python/optimizer_cases.c.h
generated
16
Python/optimizer_cases.c.h
generated
|
|
@ -2752,6 +2752,14 @@
|
|||
/* _INSTRUMENTED_FOR_ITER is not a viable micro-op for tier 2 */
|
||||
|
||||
case _ITER_CHECK_LIST: {
|
||||
JitOptRef iter;
|
||||
iter = stack_pointer[-2];
|
||||
if (sym_matches_type(iter, &PyList_Type)) {
|
||||
ADD_OP(_NOP, 0, 0);
|
||||
}
|
||||
else {
|
||||
sym_set_type(iter, &PyList_Type);
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
|
|
@ -2800,6 +2808,14 @@
|
|||
}
|
||||
|
||||
case _ITER_CHECK_RANGE: {
|
||||
JitOptRef iter;
|
||||
iter = stack_pointer[-2];
|
||||
if (sym_matches_type(iter, &PyRange_Type)) {
|
||||
ADD_OP(_NOP, 0, 0);
|
||||
}
|
||||
else {
|
||||
sym_set_type(iter, &PyRange_Type);
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue