[Python-checkins] GH-104584: Fix incorrect uoperands (GH-107513)
brandtbucher
webhook-mailer at python.org
Mon Jul 31 17:17:01 EDT 2023
https://github.com/python/cpython/commit/5e584eb704d656c9a6a648dadda63237706287db
commit: 5e584eb704d656c9a6a648dadda63237706287db
branch: main
author: Brandt Bucher <brandtbucher at microsoft.com>
committer: brandtbucher <brandtbucher at gmail.com>
date: 2023-07-31T21:16:57Z
summary:
GH-104584: Fix incorrect uoperands (GH-107513)
files:
A Misc/NEWS.d/next/Core and Builtins/2023-07-29-22-01-30.gh-issue-104584.tINuoA.rst
M Python/optimizer.c
diff --git a/Misc/NEWS.d/next/Core and Builtins/2023-07-29-22-01-30.gh-issue-104584.tINuoA.rst b/Misc/NEWS.d/next/Core and Builtins/2023-07-29-22-01-30.gh-issue-104584.tINuoA.rst
new file mode 100644
index 0000000000000..059524831597b
--- /dev/null
+++ b/Misc/NEWS.d/next/Core and Builtins/2023-07-29-22-01-30.gh-issue-104584.tINuoA.rst
@@ -0,0 +1,2 @@
+Fix an issue which caused incorrect inline caches to be read when running
+with :envvar:`PYTHONUOPS` or :option:`-X uops <-X>` enabled.
diff --git a/Python/optimizer.c b/Python/optimizer.c
index 09120c33d130c..238ab02d09faa 100644
--- a/Python/optimizer.c
+++ b/Python/optimizer.c
@@ -579,7 +579,8 @@ translate_bytecode_to_trace(
for (int i = 0; i < nuops; i++) {
oparg = orig_oparg;
uint64_t operand = 0;
- int offset = expansion->uops[i].offset;
+ // Add one to account for the actual opcode/oparg pair:
+ int offset = expansion->uops[i].offset + 1;
switch (expansion->uops[i].size) {
case OPARG_FULL:
if (extras && OPCODE_HAS_JUMP(opcode)) {
More information about the Python-checkins
mailing list