Add 'packageDbModules' function to GHC API.
[ghc-hetmet.git] / rts / Task.c
index 4301ab4..7120436 100644 (file)
@@ -99,6 +99,9 @@ freeTaskManager (void)
     }
     all_tasks = NULL;
     task_free_list = NULL;
+#if defined(THREADED_RTS)
+    freeThreadLocalKey(&currentTaskKey);
+#endif
     RELEASE_LOCK(&sched_mutex);
 }
 
@@ -111,7 +114,8 @@ newTask (void)
 #endif
     Task *task;
 
-    task = stgMallocBytes(sizeof(Task), "newTask");
+#define ROUND_TO_CACHE_LINE(x) ((((x)+63) / 64) * 64)
+    task = stgMallocBytes(ROUND_TO_CACHE_LINE(sizeof(Task)), "newTask");
     
     task->cap  = NULL;
     task->stopped = rtsFalse;
@@ -255,6 +259,7 @@ workerTaskStop (Task *task)
     ASSERT(myTask() == task);
 #endif
 
+    task->cap = NULL;
     taskTimeStamp(task);
     task->stopped = rtsTrue;
     tasksRunning--;