https://github.com/python/cpython/commit/37986e830ba25d2c382988b06bbe27410596346c
commit: 37986e830ba25d2c382988b06bbe27410596346c
branch: main
author: Michael Droettboom <[email protected]>
committer: mdboom <[email protected]>
date: 2024-10-17T08:20:30-04:00
summary:
gh-123153: Fix PGO builds with free-threading on Windows (#125607)
* gh-123153: Fix PGO builds with free-threading
* Redo how the #define works
files:
M Python/ceval.c
diff --git a/Python/ceval.c b/Python/ceval.c
index 43776e773e0deb..98d95b28488fd0 100644
--- a/Python/ceval.c
+++ b/Python/ceval.c
@@ -761,12 +761,20 @@ _PyObjectArray_Free(PyObject **array, PyObject **scratch)
* so consume 3 units of C stack */
#define PY_EVAL_C_STACK_UNITS 2
-#if defined(_MSC_VER) && defined(_Py_USING_PGO) && defined(_Py_JIT)
-/* _PyEval_EvalFrameDefault is too large to optimize for speed with
- PGO on MSVC when the JIT is enabled. Disable that optimization
- around this function only. If this is fixed upstream, we should
- gate this on the version of MSVC.
+
+/* _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
@@ -1146,7 +1154,7 @@ _PyEval_EvalFrameDefault(PyThreadState *tstate,
_PyInterpreterFrame *frame, int
}
-#if defined(_MSC_VER) && defined(_Py_USING_PGO) && defined(_Py_JIT)
+#ifdef DO_NOT_OPTIMIZE_INTERP_LOOP
# pragma optimize("", on)
#endif
_______________________________________________
Python-checkins mailing list -- [email protected]
To unsubscribe send an email to [email protected]
https://mail.python.org/mailman3/lists/python-checkins.python.org/
Member address: [email protected]