From 92b493d4cd0a309d8e6ff9b036170adcf5448a9d Mon Sep 17 00:00:00 2001 From: Guido van Rossum Date: Tue, 25 Jul 2023 11:01:05 -0700 Subject: [PATCH 1/2] Fix instruction size computation for ENTER_EXECUTOR --- Python/instrumentation.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/Python/instrumentation.c b/Python/instrumentation.c index e1b62bb32ec8bd..5249ab34a5047c 100644 --- a/Python/instrumentation.c +++ b/Python/instrumentation.c @@ -276,6 +276,12 @@ _PyInstruction_GetLength(PyCodeObject *code, int offset) } assert(opcode != 0); assert(!is_instrumented(opcode)); + if (opcode == ENTER_EXECUTOR) { + _PyExecutorObject *exec = code->co_executors->executors[_PyCode_CODE(code)[offset].op.arg]; + opcode = exec->vm_data.opcode; + + } + assert(opcode != ENTER_EXECUTOR); assert(opcode == _PyOpcode_Deopt[opcode]); return 1 + _PyOpcode_Caches[opcode]; } From 7e8208cf525f5028e03475febf4275b67211d1cd Mon Sep 17 00:00:00 2001 From: Guido van Rossum Date: Tue, 25 Jul 2023 12:26:11 -0700 Subject: [PATCH 2/2] Rewrite for readability Co-authored-by: Victor Stinner --- Python/instrumentation.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/Python/instrumentation.c b/Python/instrumentation.c index 5249ab34a5047c..c3515d2c5a3ad9 100644 --- a/Python/instrumentation.c +++ b/Python/instrumentation.c @@ -277,7 +277,8 @@ _PyInstruction_GetLength(PyCodeObject *code, int offset) assert(opcode != 0); assert(!is_instrumented(opcode)); if (opcode == ENTER_EXECUTOR) { - _PyExecutorObject *exec = code->co_executors->executors[_PyCode_CODE(code)[offset].op.arg]; + int exec_index = _PyCode_CODE(code)[offset].op.arg; + _PyExecutorObject *exec = code->co_executors->executors[exec_index]; opcode = exec->vm_data.opcode; }