X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=rts%2Fsm%2FGC.c;h=63023b6d93c97bb2fa8e01546888373446c56f7e;hb=4207605cc8e035e05f651334ef1be90b098d305d;hp=dc4c68fe75ec40daad1b3a9daea7d2e9e659d3b8;hpb=214b3663d5d7598c13643f9221e43d5a7735b47f;p=ghc-hetmet.git diff --git a/rts/sm/GC.c b/rts/sm/GC.c index dc4c68f..63023b6 100644 --- a/rts/sm/GC.c +++ b/rts/sm/GC.c @@ -140,7 +140,6 @@ static nat initialise_N (rtsBool force_major_gc); static void init_collected_gen (nat g, nat threads); static void init_uncollected_gen (nat g, nat threads); static void init_gc_thread (gc_thread *t); -static void update_task_list (void); static void resize_generations (void); static void resize_nursery (void); static void start_gc_threads (void); @@ -416,9 +415,6 @@ SET_GCT(gc_threads[0]); shutdown_gc_threads(n_gc_threads, gct->thread_index); - // Update pointers from the Task list - update_task_list(); - // Now see which stable names are still alive. gcStablePtrTable(); @@ -649,6 +645,7 @@ SET_GCT(gc_threads[0]); freeChain(gen->large_objects); gen->large_objects = gen->scavenged_large_objects; gen->n_large_blocks = gen->n_scavenged_large_blocks; + gen->n_new_large_blocks = 0; ASSERT(countBlocks(gen->large_objects) == gen->n_large_blocks); } else // for generations > N @@ -1451,39 +1448,6 @@ zero_static_object_list(StgClosure* first_static) } /* ---------------------------------------------------------------------------- - Update the pointers from the task list - - These are treated as weak pointers because we want to allow a main - thread to get a BlockedOnDeadMVar exception in the same way as any - other thread. Note that the threads should all have been retained - by GC by virtue of being on the all_threads list, we're just - updating pointers here. - ------------------------------------------------------------------------- */ - -static void -update_task_list (void) -{ - Task *task; - StgTSO *tso; - for (task = all_tasks; task != NULL; task = task->all_link) { - if (!task->stopped && task->tso) { - ASSERT(task->tso->bound == task); - tso = (StgTSO *) isAlive((StgClosure *)task->tso); - if (tso == NULL) { - barf("task %p: main thread %d has been GC'd", -#ifdef THREADED_RTS - (void *)task->id, -#else - (void *)task, -#endif - task->tso->id); - } - task->tso = tso; - } - } -} - -/* ---------------------------------------------------------------------------- Reset the sizes of the older generations when we do a major collection.