diff options
author | Guido van Rossum <guido@python.org> | 2023-08-24 19:10:51 (GMT) |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-08-24 19:10:51 (GMT) |
commit | 88941d665fc6b345f38b9147a7321e40019964d5 (patch) | |
tree | 90c5be62832700767b7183d9b8891f1b8372d20c /Include | |
parent | c494fb333b57bdf43fc90189fc29a00c293b2987 (diff) | |
download | cpython-88941d665fc6b345f38b9147a7321e40019964d5.zip cpython-88941d665fc6b345f38b9147a7321e40019964d5.tar.gz cpython-88941d665fc6b345f38b9147a7321e40019964d5.tar.bz2 |
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 'Include')
0 files changed, 0 insertions, 0 deletions