diff --git a/ghc/rts/Schedule.c b/ghc/rts/Schedule.c
index 8f3f7e323c46b9530dae7836a8186d9070adf902..9ad20d106fcdeb689c6834d9a9a6ba204c6463d8 100644
--- a/ghc/rts/Schedule.c
+++ b/ghc/rts/Schedule.c
@@ -1,5 +1,5 @@
 /* -----------------------------------------------------------------------------
- * $Id: Schedule.c,v 1.26 1999/10/04 16:13:18 simonmar Exp $
+ * $Id: Schedule.c,v 1.27 1999/10/19 15:41:18 simonmar Exp $
  *
  * (c) The GHC Team, 1998-1999
  *
@@ -376,19 +376,7 @@ SchedulerStatus schedule(StgTSO *main, StgClosure **ret_val)
       /* Put the thread back on the run queue, at the end.
        * t->link is already set to END_TSO_QUEUE.
        */
-      ASSERT(t->link == END_TSO_QUEUE);
-      if (run_queue_tl == END_TSO_QUEUE) {
-        run_queue_hd = run_queue_tl = t;
-      } else {
-        ASSERT(get_itbl(run_queue_tl)->type == TSO);
-	if (run_queue_hd == run_queue_tl) {
-	  run_queue_hd->link = t;
-	  run_queue_tl = t;
-	} else {
-	  run_queue_tl->link = t;
-	  run_queue_tl = t;
-	}
-      }
+      PUSH_ON_RUN_QUEUE(t);
       break;
 
     case ThreadBlocked: