summaryrefslogtreecommitdiffstats
path: root/Python/optimizer.c
diff options
context:
space:
mode:
Diffstat (limited to 'Python/optimizer.c')
-rw-r--r--Python/optimizer.c8
1 files changed, 5 insertions, 3 deletions
diff --git a/Python/optimizer.c b/Python/optimizer.c
index d721bfa..8f7a972 100644
--- a/Python/optimizer.c
+++ b/Python/optimizer.c
@@ -148,15 +148,17 @@ PyUnstable_SetOptimizer(_PyOptimizerObject *optimizer)
_PyInterpreterFrame *
_PyOptimizer_BackEdge(_PyInterpreterFrame *frame, _Py_CODEUNIT *src, _Py_CODEUNIT *dest, PyObject **stack_pointer)
{
+ PyCodeObject *code = (PyCodeObject *)frame->f_executable;
+ assert(PyCode_Check(code));
PyInterpreterState *interp = PyInterpreterState_Get();
- int index = get_executor_index(frame->f_code, src);
+ int index = get_executor_index(code, src);
if (index < 0) {
_PyFrame_SetStackPointer(frame, stack_pointer);
return frame;
}
_PyOptimizerObject *opt = interp->optimizer;
_PyExecutorObject *executor;
- int err = opt->optimize(opt, frame->f_code, dest, &executor);
+ int err = opt->optimize(opt, code, dest, &executor);
if (err <= 0) {
if (err < 0) {
return NULL;
@@ -164,7 +166,7 @@ _PyOptimizer_BackEdge(_PyInterpreterFrame *frame, _Py_CODEUNIT *src, _Py_CODEUNI
_PyFrame_SetStackPointer(frame, stack_pointer);
return frame;
}
- insert_executor(frame->f_code, src, index, executor);
+ insert_executor(code, src, index, executor);
return executor->execute(executor, frame, stack_pointer);
}