aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/Python/generated_cases.c.h
diff options
context:
space:
mode:
authorGuido van Rossum <guido@python.org>2023-08-24 12:10:51 -0700
committerGitHub <noreply@github.com>2023-08-24 19:10:51 +0000
commit88941d665fc6b345f38b9147a7321e40019964d5 (patch)
tree90c5be62832700767b7183d9b8891f1b8372d20c /Python/generated_cases.c.h
parentc494fb333b57bdf43fc90189fc29a00c293b2987 (diff)
downloadcpython-88941d665fc6b345f38b9147a7321e40019964d5.tar.gz
cpython-88941d665fc6b345f38b9147a7321e40019964d5.zip
gh-106581: Fix two bugs in the code generator's copy optimization (#108380)
I was comparing the last preceding poke with the *last* peek, rather than the *first* peek. Unfortunately this bug obscured another bug: When the last preceding poke is UNUSED, the first peek disappears, leaving the variable unassigned. This is how I fixed it: - Rename CopyEffect to CopyItem. - Change CopyItem to contain StackItems instead of StackEffects. - Update those StackItems when adjusting the manager higher or lower. - Assert that those StackItems' offsets are equivalent. - Other clever things. --------- Co-authored-by: Irit Katriel <1055913+iritkatriel@users.noreply.github.com>
Diffstat (limited to 'Python/generated_cases.c.h')
-rw-r--r--Python/generated_cases.c.h3
1 files changed, 0 insertions, 3 deletions
diff --git a/Python/generated_cases.c.h b/Python/generated_cases.c.h
index f6322df566c..1724d112317 100644
--- a/Python/generated_cases.c.h
+++ b/Python/generated_cases.c.h
@@ -3833,7 +3833,6 @@
DEOPT_IF(code->co_argcount != oparg + (self_or_null != NULL), CALL);
}
// _CHECK_STACK_SPACE
- callable = stack_pointer[-2 - oparg];
{
PyFunctionObject *func = (PyFunctionObject *)callable;
PyCodeObject *code = (PyCodeObject *)func->func_code;
@@ -3841,8 +3840,6 @@
}
// _INIT_CALL_PY_EXACT_ARGS
args = stack_pointer - oparg;
- self_or_null = stack_pointer[-1 - oparg];
- callable = stack_pointer[-2 - oparg];
{
int argcount = oparg;
if (self_or_null != NULL) {