aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/Python/optimizer.c
diff options
context:
space:
mode:
Diffstat (limited to 'Python/optimizer.c')
-rw-r--r--Python/optimizer.c14
1 files changed, 12 insertions, 2 deletions
diff --git a/Python/optimizer.c b/Python/optimizer.c
index bc2ecc098b0..6a232218981 100644
--- a/Python/optimizer.c
+++ b/Python/optimizer.c
@@ -205,8 +205,8 @@ _PyOptimizer_Optimize(
return 1;
}
-_PyExecutorObject *
-_Py_GetExecutor(PyCodeObject *code, int offset)
+static _PyExecutorObject *
+get_executor_lock_held(PyCodeObject *code, int offset)
{
int code_len = (int)Py_SIZE(code);
for (int i = 0 ; i < code_len;) {
@@ -222,6 +222,16 @@ _Py_GetExecutor(PyCodeObject *code, int offset)
return NULL;
}
+_PyExecutorObject *
+_Py_GetExecutor(PyCodeObject *code, int offset)
+{
+ _PyExecutorObject *executor;
+ Py_BEGIN_CRITICAL_SECTION(code);
+ executor = get_executor_lock_held(code, offset);
+ Py_END_CRITICAL_SECTION();
+ return executor;
+}
+
static PyObject *
is_valid(PyObject *self, PyObject *Py_UNUSED(ignored))
{