summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBenjamin Peterson <benjamin@python.org>2010-09-10 22:47:02 (GMT)
committerBenjamin Peterson <benjamin@python.org>2010-09-10 22:47:02 (GMT)
commitd2be5b4fe4cbca197d27e853a08e6339945c879a (patch)
tree572b7ca23d87510ec0da494f573292567042eb37
parentb4ba986a7170ab02059a149737928b00d30fa306 (diff)
downloadcpython-d2be5b4fe4cbca197d27e853a08e6339945c879a.zip
cpython-d2be5b4fe4cbca197d27e853a08e6339945c879a.tar.gz
cpython-d2be5b4fe4cbca197d27e853a08e6339945c879a.tar.bz2
remove gil_drop_request in --without-threads
-rw-r--r--Python/ceval.c17
1 files changed, 13 insertions, 4 deletions
diff --git a/Python/ceval.c b/Python/ceval.c
index ff505a5..2c7f57b 100644
--- a/Python/ceval.c
+++ b/Python/ceval.c
@@ -217,16 +217,24 @@ PyEval_GetCallStats(PyObject *self)
#endif
+#ifdef WITH_THREAD
+#define GIL_REQUEST _Py_atomic_load_relaxed(&gil_drop_request)
+#else
+#define GIL_REQUEST 0
+#endif
+
/* This can set eval_breaker to 0 even though gil_drop_request became
1. We believe this is all right because the eval loop will release
the GIL eventually anyway. */
#define COMPUTE_EVAL_BREAKER() \
_Py_atomic_store_relaxed( \
&eval_breaker, \
- _Py_atomic_load_relaxed(&gil_drop_request) | \
+ GIL_REQUEST | \
_Py_atomic_load_relaxed(&pendingcalls_to_do) | \
pending_async_exc)
+#ifdef WITH_THREAD
+
#define SET_GIL_DROP_REQUEST() \
do { \
_Py_atomic_store_relaxed(&gil_drop_request, 1); \
@@ -239,6 +247,8 @@ PyEval_GetCallStats(PyObject *self)
COMPUTE_EVAL_BREAKER(); \
} while (0)
+#endif
+
/* Pending calls are only modified under pending_lock */
#define SIGNAL_PENDING_CALLS() \
do { \
@@ -387,7 +397,6 @@ PyEval_ReInitThreads(void)
#else
static _Py_atomic_int eval_breaker = {0};
-static _Py_atomic_int gil_drop_request = {0};
static int pending_async_exc = 0;
#endif /* WITH_THREAD */
@@ -1277,8 +1286,8 @@ PyEval_EvalFrameEx(PyFrameObject *f, int throwflag)
goto on_error;
}
}
- if (_Py_atomic_load_relaxed(&gil_drop_request)) {
#ifdef WITH_THREAD
+ if (_Py_atomic_load_relaxed(&gil_drop_request)) {
/* Give another thread a chance */
if (PyThreadState_Swap(NULL) != tstate)
Py_FatalError("ceval: tstate mix-up");
@@ -1289,8 +1298,8 @@ PyEval_EvalFrameEx(PyFrameObject *f, int throwflag)
take_gil(tstate);
if (PyThreadState_Swap(tstate) != NULL)
Py_FatalError("ceval: orphan tstate");
-#endif
}
+#endif
/* Check for asynchronous exceptions. */
if (tstate->async_exc != NULL) {
x = tstate->async_exc;