small interpreter fix
authorSimon Marlow <marlowsd@gmail.com>
Tue, 17 Jun 2008 13:46:51 +0000 (13:46 +0000)
committerSimon Marlow <marlowsd@gmail.com>
Tue, 17 Jun 2008 13:46:51 +0000 (13:46 +0000)
rts/Schedule.c

index 715517e..fd84fde 100644 (file)
@@ -550,8 +550,6 @@ schedule (Capability *initialCapability, Task *task)
     }
 #endif
 
-    cap->r.rCurrentTSO = t;
-    
     /* context switches are initiated by the timer signal, unless
      * the user specified "context switch as often as possible", with
      * +RTS -C0
@@ -563,6 +561,11 @@ schedule (Capability *initialCapability, Task *task)
         
 run_thread:
 
+    // CurrentTSO is the thread to run.  t might be different if we
+    // loop back to run_thread, so make sure to set CurrentTSO after
+    // that.
+    cap->r.rCurrentTSO = t;
+
     debugTrace(DEBUG_sched, "-->> running thread %ld %s ...", 
                              (long)t->id, whatNext_strs[t->what_next]);