summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGuido van Rossum <guido@python.org>1997-01-21 06:15:24 (GMT)
committerGuido van Rossum <guido@python.org>1997-01-21 06:15:24 (GMT)
commit70d44787a366e8c72d4dc3e0537e92c47f63a75b (patch)
tree2a48f1a6922b8e005c017321eab7b8d636b8ab6f
parentfcdd0e40a45d0897ea363e590716cba6fd1834d5 (diff)
downloadcpython-70d44787a366e8c72d4dc3e0537e92c47f63a75b.zip
cpython-70d44787a366e8c72d4dc3e0537e92c47f63a75b.tar.gz
cpython-70d44787a366e8c72d4dc3e0537e92c47f63a75b.tar.bz2
Only call sigcheck() at the ticker code if we don't have true signals.
This is safe now that both intrcheck() and signalmodule.c schedule a sigcheck() call via Py_AddPendingCall(). This gives another 7% speedup (never run such a test twice ;-).
-rw-r--r--Python/ceval.c8
1 files changed, 6 insertions, 2 deletions
diff --git a/Python/ceval.c b/Python/ceval.c
index accb56e..651066c 100644
--- a/Python/ceval.c
+++ b/Python/ceval.c
@@ -92,7 +92,6 @@ static object *apply_subscript PROTO((object *, object *));
static object *loop_subscript PROTO((object *, object *));
static int slice_index PROTO((object *, int, int *));
static object *apply_slice PROTO((object *, object *, object *));
-static object *build_slice PROTO((object *, object *, object *));
static int assign_subscript PROTO((object *, object *, object *));
static int assign_slice PROTO((object *, object *, object *, object *));
static int cmp_exception PROTO((object *, object *));
@@ -557,7 +556,7 @@ eval_code2(co, globals, locals,
So we do it only every Nth instruction.
The ticker is reset to zero if there are pending
- calls (see Py_AddPendingCalls() and
+ calls (see Py_AddPendingCall() and
Py_MakePendingCalls() above). */
if (--ticker < 0) {
@@ -568,10 +567,15 @@ eval_code2(co, globals, locals,
goto on_error;
}
}
+#ifndef HAVE_SIGNAL_H /* Is this the right #define? */
+/* If we have true signals, the signal handler will call
+ Py_AddPendingCall() so we don't have to call sigcheck().
+ On the Mac and DOS, alas, we have to call it. */
if (sigcheck()) {
why = WHY_EXCEPTION;
goto on_error;
}
+#endif
#ifdef WITH_THREAD
if (interpreter_lock) {