summaryrefslogtreecommitdiffstats
path: root/Python/executor_cases.c.h
diff options
context:
space:
mode:
authorMark Shannon <mark@hotpy.org>2024-03-14 16:31:47 (GMT)
committerGitHub <noreply@github.com>2024-03-14 16:31:47 (GMT)
commit61e54bfcee9f08a8e09aa1b2fd6cea69ca6a26e0 (patch)
treeb2b53742294226322d929a6e6cdfcf8c729a5d01 /Python/executor_cases.c.h
parent19c3a2ff91ccf7444efadbc8f7e67269060050a2 (diff)
downloadcpython-61e54bfcee9f08a8e09aa1b2fd6cea69ca6a26e0.zip
cpython-61e54bfcee9f08a8e09aa1b2fd6cea69ca6a26e0.tar.gz
cpython-61e54bfcee9f08a8e09aa1b2fd6cea69ca6a26e0.tar.bz2
GH-116422: Factor out eval breaker checks at end of calls into its own micro-op. (GH-116817)
Diffstat (limited to 'Python/executor_cases.c.h')
-rw-r--r--Python/executor_cases.c.h20
1 files changed, 5 insertions, 15 deletions
diff --git a/Python/executor_cases.c.h b/Python/executor_cases.c.h
index 42e884c..077499e 100644
--- a/Python/executor_cases.c.h
+++ b/Python/executor_cases.c.h
@@ -2819,6 +2819,11 @@
/* _CALL is not a viable micro-op for tier 2 */
+ case _CHECK_PERIODIC: {
+ CHECK_EVAL_BREAKER();
+ break;
+ }
+
case _CHECK_CALL_BOUND_METHOD_EXACT_ARGS: {
PyObject *null;
PyObject *callable;
@@ -3096,7 +3101,6 @@
if (res == NULL) goto pop_3_error_tier_two;
stack_pointer[-3] = res;
stack_pointer += -2;
- CHECK_EVAL_BREAKER();
break;
}
@@ -3118,7 +3122,6 @@
if (res == NULL) goto pop_3_error_tier_two;
stack_pointer[-3] = res;
stack_pointer += -2;
- CHECK_EVAL_BREAKER();
break;
}
@@ -3165,7 +3168,6 @@
if (res == NULL) { stack_pointer += -2 - oparg; goto error_tier_two; }
stack_pointer[-2 - oparg] = res;
stack_pointer += -1 - oparg;
- CHECK_EVAL_BREAKER();
break;
}
@@ -3203,7 +3205,6 @@
if (res == NULL) { stack_pointer += -2 - oparg; goto error_tier_two; }
stack_pointer[-2 - oparg] = res;
stack_pointer += -1 - oparg;
- CHECK_EVAL_BREAKER();
break;
}
@@ -3238,14 +3239,8 @@
}
Py_DECREF(callable);
if (res == NULL) { stack_pointer += -2 - oparg; goto error_tier_two; }
- /* Not deopting because this doesn't mean our optimization was
- wrong. `res` can be NULL for valid reasons. Eg. getattr(x,
- 'invalid'). In those cases an exception is set, so we must
- handle it.
- */
stack_pointer[-2 - oparg] = res;
stack_pointer += -1 - oparg;
- CHECK_EVAL_BREAKER();
break;
}
@@ -3281,7 +3276,6 @@
if (res == NULL) { stack_pointer += -2 - oparg; goto error_tier_two; }
stack_pointer[-2 - oparg] = res;
stack_pointer += -1 - oparg;
- CHECK_EVAL_BREAKER();
break;
}
@@ -3393,7 +3387,6 @@
if (res == NULL) { stack_pointer += -2 - oparg; goto error_tier_two; }
stack_pointer[-2 - oparg] = res;
stack_pointer += -1 - oparg;
- CHECK_EVAL_BREAKER();
break;
}
@@ -3432,7 +3425,6 @@
if (res == NULL) { stack_pointer += -2 - oparg; goto error_tier_two; }
stack_pointer[-2 - oparg] = res;
stack_pointer += -1 - oparg;
- CHECK_EVAL_BREAKER();
break;
}
@@ -3473,7 +3465,6 @@
if (res == NULL) { stack_pointer += -2 - oparg; goto error_tier_two; }
stack_pointer[-2 - oparg] = res;
stack_pointer += -1 - oparg;
- CHECK_EVAL_BREAKER();
break;
}
@@ -3512,7 +3503,6 @@
if (res == NULL) { stack_pointer += -2 - oparg; goto error_tier_two; }
stack_pointer[-2 - oparg] = res;
stack_pointer += -1 - oparg;
- CHECK_EVAL_BREAKER();
break;
}