[project @ 2001-01-24 15:46:19 by simonmar]
[ghc-hetmet.git] / ghc / rts / Schedule.c
index 380228f..63abd17 100644 (file)
@@ -1,5 +1,5 @@
 /* ---------------------------------------------------------------------------
- * $Id: Schedule.c,v 1.81 2000/11/13 14:40:37 simonmar Exp $
+ * $Id: Schedule.c,v 1.87 2001/01/24 15:46:19 simonmar Exp $
  *
  * (c) The GHC Team, 1998-2000
  *
@@ -62,7 +62,7 @@
 #include "Schedule.h"
 #include "StgMiscClosures.h"
 #include "Storage.h"
-#include "Evaluator.h"
+#include "Interpreter.h"
 #include "Exception.h"
 #include "Printer.h"
 #include "Main.h"
@@ -267,7 +267,7 @@ rtsTime TimeOfLastYield;
 char *whatNext_strs[] = {
   "ThreadEnterGHC",
   "ThreadRunGHC",
-  "ThreadEnterHugs",
+  "ThreadEnterInterp",
   "ThreadKilled",
   "ThreadComplete"
 };
@@ -886,14 +886,11 @@ schedule( void )
     case ThreadRunGHC:
       ret = StgRun((StgFunPtr) stg_returnToStackTop, cap);
       break;
-    case ThreadEnterHugs:
-#ifdef INTERPRETER
+    case ThreadEnterInterp:
+#ifdef GHCI
       {
-         StgClosure* c;
-        IF_DEBUG(scheduler,sched_belch("entering Hugs"));
-        c = (StgClosure *)(cap->rCurrentTSO->sp[0]);
-        cap->rCurrentTSO->sp += 1;
-        ret = enter(cap,c);
+        IF_DEBUG(scheduler,sched_belch("entering interpreter"));
+        ret = interpretBCO(cap);
          break;
       }
 #else
@@ -986,7 +983,7 @@ schedule( void )
        * GC is finished.
        */
       IF_DEBUG(scheduler,
-               if (t->what_next == ThreadEnterHugs) {
+               if (t->what_next == ThreadEnterInterp) {
                   /* ToDo: or maybe a timer expired when we were in Hugs?
                    * or maybe someone hit ctrl-C
                     */
@@ -1247,6 +1244,7 @@ resumeThread( StgInt tok )
   if (tso == END_TSO_QUEUE) {
     barf("resumeThread: thread not found");
   }
+  tso->link = END_TSO_QUEUE;
 
 #ifdef SMP
   while (free_capabilities == NULL) {
@@ -2008,6 +2006,10 @@ static void GetRoots(void)
 #if defined(SMP) || defined(PAR) || defined(GRAN)
   markSparkQueue();
 #endif
+
+#if defined(GHCI)
+  markCafs();
+#endif
 }
 
 /* -----------------------------------------------------------------------------
@@ -3018,7 +3020,7 @@ detectBlackHoles( void )
            break;
        }
 
-    done:
+    done: ;
     }   
 }