summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog5
-rw-r--r--thread.c6
2 files changed, 6 insertions, 5 deletions
diff --git a/ChangeLog b/ChangeLog
index 5a71fd2186..9201d9f584 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+Thu Aug 14 06:09:12 2008 Koichi Sasada <ko1@atdot.net>
+
+ * thread.c (rb_thread_execute_interrupts): switch event
+ should be occur only once.
+
Thu Aug 14 05:36:36 2008 NARUSE, Yui <naruse@ruby-lang.org>
* common.mk: parse.h depends on parse.c.
diff --git a/thread.c b/thread.c
index e30e4e33d7..5032f773ef 100644
--- a/thread.c
+++ b/thread.c
@@ -1015,16 +1015,13 @@ rb_thread_execute_interrupts(rb_thread_t *th)
}
if (timer_interrupt) {
-#if USE_NATIVE_THREAD_PRIORITY
EXEC_EVENT_HOOK(th, RUBY_EVENT_SWITCH, th->cfp->self, 0, 0);
- rb_thread_schedule();
-#else
+
if (th->slice > 0) {
th->slice--;
}
else {
reschedule:
- EXEC_EVENT_HOOK(th, RUBY_EVENT_SWITCH, th->cfp->self, 0, 0);
rb_thread_schedule();
if (th->slice < 0) {
th->slice++;
@@ -1034,7 +1031,6 @@ rb_thread_execute_interrupts(rb_thread_t *th)
th->slice = th->priority;
}
}
-#endif
}
}
}