From 5e584eb704d656c9a6a648dadda63237706287db Mon Sep 17 00:00:00 2001 From: Brandt Bucher Date: Mon, 31 Jul 2023 14:16:57 -0700 Subject: GH-104584: Fix incorrect uoperands (GH-107513) --- .../Core and Builtins/2023-07-29-22-01-30.gh-issue-104584.tINuoA.rst | 2 ++ Python/optimizer.c | 3 ++- 2 files changed, 4 insertions(+), 1 deletion(-) create mode 100644 Misc/NEWS.d/next/Core and Builtins/2023-07-29-22-01-30.gh-issue-104584.tINuoA.rst 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 0000000..0595248 --- /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 09120c3..238ab02 100644 --- a/Python/optimizer.c +++ b/Python/optimizer.c @@ -579,7 +579,8 @@ pop_jump_if_bool: 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)) { -- cgit v0.12