aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/Python
diff options
context:
space:
mode:
authorKen Jin <kenjin@python.org>2025-02-11 23:23:58 +0800
committerGitHub <noreply@github.com>2025-02-11 23:23:58 +0800
commit247b50dec8af47ed8a80069117e07b7139f9d54f (patch)
tree1455ce5080636abf6b8429b2d4ad711321058ca0 /Python
parent374abded070b861cc389d509937344073193c36a (diff)
downloadcpython-247b50dec8af47ed8a80069117e07b7139f9d54f.tar.gz
cpython-247b50dec8af47ed8a80069117e07b7139f9d54f.zip
gh-130004: Revert commit 9e52e55 (GH-130005)
Revert commit 9e52e55
Diffstat (limited to 'Python')
-rw-r--r--Python/ceval.c21
1 files changed, 21 insertions, 0 deletions
diff --git a/Python/ceval.c b/Python/ceval.c
index 1e4f1f3af20..c6a7a0f841f 100644
--- a/Python/ceval.c
+++ b/Python/ceval.c
@@ -764,6 +764,23 @@ _PyObjectArray_Free(PyObject **array, PyObject **scratch)
#define PY_EVAL_C_STACK_UNITS 2
+/* _PyEval_EvalFrameDefault is too large to optimize for speed with PGO on MSVC
+ when the JIT is enabled or GIL is disabled. Disable that optimization around
+ this function only. If this is fixed upstream, we should gate this on the
+ version of MSVC.
+ */
+#if (defined(_MSC_VER) && \
+ defined(_Py_USING_PGO) && \
+ (defined(_Py_JIT) || \
+ defined(Py_GIL_DISABLED)))
+#define DO_NOT_OPTIMIZE_INTERP_LOOP
+#endif
+
+#ifdef DO_NOT_OPTIMIZE_INTERP_LOOP
+# pragma optimize("t", off)
+/* This setting is reversed below following _PyEval_EvalFrameDefault */
+#endif
+
#ifdef Py_TAIL_CALL_INTERP
#include "opcode_targets.h"
#include "generated_cases.c.h"
@@ -986,6 +1003,10 @@ early_exit:
return NULL;
}
+#ifdef DO_NOT_OPTIMIZE_INTERP_LOOP
+# pragma optimize("", on)
+#endif
+
#if defined(__GNUC__)
# pragma GCC diagnostic pop
#elif defined(_MSC_VER) /* MS_WINDOWS */