summaryrefslogtreecommitdiff
path: root/rts/sm
Commit message (Collapse)AuthorAgeFilesLines
* Put the contents of Evac.c-inc back in Evac.c, and just compile the file twiceSimon Marlow2008-06-037-1249/+1189
| | | | Similarly for Scav.c/Scav.c-inc.
* DECLARE_GCT for when we have no register variableSimon Marlow2008-06-031-0/+2
|
* comment updatesSimon Marlow2008-06-031-2/+8
|
* FIX #2164: check for ThreadRelocated in isAlive()Simon Marlow2008-05-281-0/+5
|
* FIX the compacting GC againSimon Marlow2008-04-241-14/+14
|
* FIX #2185: sparks should not be treated as roots by the GCSimon Marlow2008-04-242-1/+6
|
* turn off the usleep() in the GC thread idle loop (tmp, for portability)Simon Marlow2008-04-171-1/+1
|
* declare the GC thread register variable more portablySimon Marlow2008-04-171-2/+29
|
* remove EVACUATED: store the forwarding pointer in the info pointerSimon Marlow2008-04-176-173/+222
|
* Don't look at all the threads before each GC.Simon Marlow2008-04-164-10/+30
| | | | | | | | | | | We were looking at all the threads for 2 reasons: 1. to catch transactions that might be looping as a result of seeing an inconsistent view of memory. 2. to catch threads with blocked exceptions that are themselves blocked. For (1) we now check for this case whenever a thread yields, and for (2) we catch these threads in the GC itself and send the exceptions after GC (see performPendingThrowTos).
* Don't traverse the entire list of threads on every GC (phase 1)Simon Marlow2008-04-164-60/+85
| | | | | | Instead of keeping a single list of all threads, keep one per step and only look at the threads belonging to steps that we are collecting.
* optimisation for isAlive()Simon Marlow2008-04-161-1/+1
|
* refactoringSimon Marlow2008-04-161-12/+11
|
* bugfix for traverseBlackHoleQueueSimon Marlow2008-04-161-3/+2
|
* Add a write barrier to the TSO link field (#1589)Simon Marlow2008-04-167-37/+69
|
* fix traceSimon Marlow2008-04-161-1/+1
|
* tmp: alloc one block at a timeSimon Marlow2008-04-161-9/+19
|
* add debugging code to check for fragmentationSimon Marlow2008-04-161-0/+8
|
* do a better job of re-using partial blocks in subsequent GCsSimon Marlow2008-04-161-6/+40
|
* Use the BF_EVACUATED flag to indicate to-space consistentlySimon Marlow2008-04-166-46/+19
| | | | | | | | | BF_EVACUATED is now set on all blocks except those that we are copying. This means we don't need a separate test for gen>N in evacuate(), because in generations older than N, BF_EVACUATED will be set anyway. The disadvantage is that we have to reset the BF_EVACUATED flag on the blocks of any generation we're collecting before starting GC. Results in a small speed improvement.
* rearrange: we were calling markSomeCapabilities too oftenSimon Marlow2008-04-161-17/+22
|
* debug output: show mem in useSimon Marlow2008-04-161-2/+2
|
* make +RTS -G1 work againSimon Marlow2008-04-161-15/+7
|
* pad step_workspace to 64 bytes, to speed up access to gct->steps[]Simon Marlow2008-04-162-1/+8
|
* update copyrights in rts/smSimon Marlow2008-04-1620-20/+20
|
* Reorganisation to fix problems related to the gct register variableSimon Marlow2008-04-1613-432/+371
| | | | | | | | | - GCAux.c contains code not compiled with the gct register enabled, it is callable from outside the GC - marking functions are moved to their relevant subsystems, outside the GC - mark_root needs to save the gct register, as it is called from outside the GC
* faster block allocator, by dividing the free list into bucketsSimon Marlow2008-04-161-165/+165
|
* allocate more blocks in one go, to reduce contention for the block allocatorSimon Marlow2008-04-161-8/+35
|
* remove outdated commentSimon Marlow2008-04-161-4/+0
|
* calculate and report slop (wasted space at the end of blocks)Simon Marlow2008-04-161-2/+3
|
* free empty blocks at the end of GCSimon Marlow2008-04-161-14/+27
|
* move the scan block pointer into the gct structureSimon Marlow2008-04-165-56/+33
|
* improvements to +RTS -s outputSimon Marlow2008-04-166-15/+30
| | | | | | | - count and report number of parallel collections - calculate bytes scanned in addition to bytes copied per thread - calculate "work balance factor" - tidy up the formatting a bit
* wait for threads to start up properlySimon Marlow2008-04-161-2/+12
|
* debug output tweaksSimon Marlow2008-04-161-2/+2
|
* Keep track of an accurate count of live words in each stepSimon Marlow2008-04-163-14/+18
| | | | | This means we can calculate slop easily, and also improve predictability of GC.
* Allow work units smaller than a block to improve load balancingSimon Marlow2008-04-167-114/+193
|
* in scavenge_block1(), we can use the lock-free recordMutableGen()Simon Marlow2008-04-161-0/+2
|
* update the debug counters following changes to scav_find_work()Simon Marlow2008-04-163-7/+4
|
* change the find-work strategy: use oldest-first consistentlySimon Marlow2008-04-161-69/+61
|
* per-thread debug output when using multiple threads, not just major gcSimon Marlow2008-04-161-1/+1
|
* small debug output improvementsSimon Marlow2008-04-162-4/+4
|
* allow parallel minor collections tooSimon Marlow2008-04-161-34/+79
|
* Specialise evac/scav for single-threaded, not minor, GCSimon Marlow2008-04-166-49/+26
| | | | So we can parallelise minor collections too. Sometimes it's worth it.
* move usleep(1) to gc_thread_work() from any_work()Simon Marlow2008-04-162-4/+3
|
* treat the global work list as a queue rather than a stackSimon Marlow2008-04-162-2/+11
|
* GC: move static object processinng into thread-local storageSimon Marlow2008-04-166-64/+75
|
* tmp: usleep(1) during anyWork() if no workSimon Marlow2008-04-161-0/+3
|
* anyWork(): count the number of times we don't find any workSimon Marlow2008-04-163-0/+5
|
* Add +RTS -vg flag for requesting some GC trace messages, outside DEBUGSimon Marlow2008-04-164-5/+35
| | | | | | | 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.