X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=rts%2FTask.c;h=7120436bb47d387ef3484bffe53d2877e2d8df05;hb=a650cec6aebe5be3706f6aef603bd27a5c0ec1f0;hp=4301ab4b59f7520cae055048eed9cd97f0d5a6ab;hpb=3f82e352ede25e6c3be4b3f5a32dcf313d9a0315;p=ghc-hetmet.git diff --git a/rts/Task.c b/rts/Task.c index 4301ab4..7120436 100644 --- a/rts/Task.c +++ b/rts/Task.c @@ -99,6 +99,9 @@ freeTaskManager (void) } all_tasks = NULL; task_free_list = NULL; +#if defined(THREADED_RTS) + freeThreadLocalKey(¤tTaskKey); +#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--;