summaryrefslogtreecommitdiff
path: root/rts/sm/GCUtils.c
Commit message (Collapse)AuthorAgeFilesLines
...
* Add +RTS -vg flag for requesting some GC trace messages, outside DEBUGSimon Marlow2008-04-161-1/+1
| | | | | | | DEBUG imposes a significant performance hit in the GC, yet we often want some of the debugging output, so -vg gives us the cheap trace messages without the sanity checking of DEBUG, just like -vs for the scheduler.
* use synchronised version of freeChain() in scavenge_mutable_list()simonmar@microsoft.com2007-12-131-0/+8
|
* GC: small improvement to parallelismsimonmar@microsoft.com2007-11-291-3/+13
| | | | don't cache a work block locally if the global queue is empty
* count the number of todo blocks, and add a tracesimonmar@microsoft.com2007-11-271-0/+4
|
* cache bd->todo_bd->free and the limit in the workspaceSimon Marlow2007-11-211-2/+8
| | | | | avoids cache contention: bd->todo_bd->free may clash with any cache line, so we localise it.
* Remove the optimisation of avoiding scavenging for certain objectsSimon Marlow2007-10-311-35/+3
| | | | | | | Some objects don't need to be scavenged, in particular if they have no pointers. This seems like an obvious optimisation, but in fact it only accounts for about 1% of objects (in GHC, for example), and the extra complication means it probably isn't worth doing.
* Refactoring of the GC in preparation for parallel GCSimon Marlow2007-10-311-33/+132
| | | | | | | | | | | | This patch localises the state of the GC into a gc_thread structure, and reorganises the inner loop of the GC to scavenge one block at a time from global work lists in each "step". The gc_thread structure has a "workspace" for each step, in which it collects evacuated objects until it has a full block to push out to the step's global list. Details of the algorithm will be on the wiki in due course. At the moment, THREADED_RTS does not compile, but the single-threaded GC works (and is 10-20% slower than before).
* copyright updates and add Commentary linksSimon Marlow2006-10-261-0/+5
|
* Split GC.c, and move storage manager into sm/ directorySimon Marlow2006-10-241-0/+79
In preparation for parallel GC, split up the monolithic GC.c file into smaller parts. Also in this patch (and difficult to separate, unfortunatley): - Don't include Stable.h in Rts.h, instead just include it where necessary. - consistently use STATIC_INLINE in source files, and INLINE_HEADER in header files. STATIC_INLINE is now turned off when DEBUG is on, to make debugging easier. - The GC no longer takes the get_roots function as an argument. We weren't making use of this generalisation.