summaryrefslogtreecommitdiffstats
path: root/Python/bytecodes.c
diff options
context:
space:
mode:
Diffstat (limited to 'Python/bytecodes.c')
-rw-r--r--Python/bytecodes.c10
1 files changed, 7 insertions, 3 deletions
diff --git a/Python/bytecodes.c b/Python/bytecodes.c
index 2ad5878..96b97ca 100644
--- a/Python/bytecodes.c
+++ b/Python/bytecodes.c
@@ -4037,10 +4037,9 @@ dummy_func(
CHECK_EVAL_BREAKER();
}
- op(_SET_IP, (--)) {
+ op(_SET_IP, (instr_ptr/4 --)) {
TIER_TWO_ONLY
- // TODO: Put the code pointer in `operand` to avoid indirection via `frame`
- frame->instr_ptr = _PyCode_CODE(_PyFrame_GetCode(frame)) + oparg;
+ frame->instr_ptr = (_Py_CODEUNIT *)instr_ptr;
}
op(_SAVE_RETURN_OFFSET, (--)) {
@@ -4100,6 +4099,11 @@ dummy_func(
exe->count++;
}
+ op(_CHECK_VALIDITY_AND_SET_IP, (instr_ptr/4 --)) {
+ TIER_TWO_ONLY
+ DEOPT_IF(!current_executor->vm_data.valid);
+ frame->instr_ptr = (_Py_CODEUNIT *)instr_ptr;
+ }
// END BYTECODES //