summaryrefslogtreecommitdiffstats
path: root/Python/optimizer_cases.c.h
diff options
context:
space:
mode:
authorMark Shannon <mark@hotpy.org>2024-03-26 09:35:11 (GMT)
committerGitHub <noreply@github.com>2024-03-26 09:35:11 (GMT)
commitbf82f77957a31c3731b4ec470c406f5708ca9ba3 (patch)
tree89b5e94311e0ae020754155b243be49607af4bf4 /Python/optimizer_cases.c.h
parent61599a48f52e951d8813877ee311d2a830ba2cd8 (diff)
downloadcpython-bf82f77957a31c3731b4ec470c406f5708ca9ba3.zip
cpython-bf82f77957a31c3731b4ec470c406f5708ca9ba3.tar.gz
cpython-bf82f77957a31c3731b4ec470c406f5708ca9ba3.tar.bz2
GH-116422: Tier2 hot/cold splitting (GH-116813)
Splits the "cold" path, deopts and exits, from the "hot" path, reducing the size of most jitted instructions, at the cost of slower exits.
Diffstat (limited to 'Python/optimizer_cases.c.h')
-rw-r--r--Python/optimizer_cases.c.h57
1 files changed, 17 insertions, 40 deletions
diff --git a/Python/optimizer_cases.c.h b/Python/optimizer_cases.c.h
index 6aeea51..df73cc0 100644
--- a/Python/optimizer_cases.c.h
+++ b/Python/optimizer_cases.c.h
@@ -769,14 +769,7 @@
break;
}
- case _LOAD_NAME: {
- _Py_UopsSymbol *v;
- v = sym_new_not_null(ctx);
- if (v == NULL) goto out_of_space;
- stack_pointer[0] = v;
- stack_pointer += 1;
- break;
- }
+ /* _LOAD_NAME is not a viable micro-op for tier 2 */
case _LOAD_GLOBAL: {
_Py_UopsSymbol *res;
@@ -900,14 +893,7 @@
break;
}
- case _BUILD_SET: {
- _Py_UopsSymbol *set;
- set = sym_new_not_null(ctx);
- if (set == NULL) goto out_of_space;
- stack_pointer[-oparg] = set;
- stack_pointer += 1 - oparg;
- break;
- }
+ /* _BUILD_SET is not a viable micro-op for tier 2 */
case _BUILD_MAP: {
_Py_UopsSymbol *map;
@@ -1408,31 +1394,9 @@
/* _FOR_ITER_GEN is not a viable micro-op for tier 2 */
- case _BEFORE_ASYNC_WITH: {
- _Py_UopsSymbol *exit;
- _Py_UopsSymbol *res;
- exit = sym_new_not_null(ctx);
- if (exit == NULL) goto out_of_space;
- res = sym_new_not_null(ctx);
- if (res == NULL) goto out_of_space;
- stack_pointer[-1] = exit;
- stack_pointer[0] = res;
- stack_pointer += 1;
- break;
- }
+ /* _BEFORE_ASYNC_WITH is not a viable micro-op for tier 2 */
- case _BEFORE_WITH: {
- _Py_UopsSymbol *exit;
- _Py_UopsSymbol *res;
- exit = sym_new_not_null(ctx);
- if (exit == NULL) goto out_of_space;
- res = sym_new_not_null(ctx);
- if (res == NULL) goto out_of_space;
- stack_pointer[-1] = exit;
- stack_pointer[0] = res;
- stack_pointer += 1;
- break;
- }
+ /* _BEFORE_WITH is not a viable micro-op for tier 2 */
case _WITH_EXCEPT_START: {
_Py_UopsSymbol *res;
@@ -2029,3 +1993,16 @@
break;
}
+ case _DEOPT: {
+ break;
+ }
+
+ case _SIDE_EXIT: {
+ break;
+ }
+
+ case _ERROR_POP_N: {
+ stack_pointer += -oparg;
+ break;
+ }
+