Commit message (Collapse) | Author | Age | Files | Lines | |
---|---|---|---|---|---|
* | Put the contents of Evac.c-inc back in Evac.c, and just compile the file twice | Simon Marlow | 2008-06-03 | 7 | -1249/+1189 |
| | | | | Similarly for Scav.c/Scav.c-inc. | ||||
* | DECLARE_GCT for when we have no register variable | Simon Marlow | 2008-06-03 | 1 | -0/+2 |
| | |||||
* | comment updates | Simon Marlow | 2008-06-03 | 1 | -2/+8 |
| | |||||
* | FIX #2164: check for ThreadRelocated in isAlive() | Simon Marlow | 2008-05-28 | 1 | -0/+5 |
| | |||||
* | FIX the compacting GC again | Simon Marlow | 2008-04-24 | 1 | -14/+14 |
| | |||||
* | FIX #2185: sparks should not be treated as roots by the GC | Simon Marlow | 2008-04-24 | 2 | -1/+6 |
| | |||||
* | turn off the usleep() in the GC thread idle loop (tmp, for portability) | Simon Marlow | 2008-04-17 | 1 | -1/+1 |
| | |||||
* | declare the GC thread register variable more portably | Simon Marlow | 2008-04-17 | 1 | -2/+29 |
| | |||||
* | remove EVACUATED: store the forwarding pointer in the info pointer | Simon Marlow | 2008-04-17 | 6 | -173/+222 |
| | |||||
* | Don't look at all the threads before each GC. | Simon Marlow | 2008-04-16 | 4 | -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 Marlow | 2008-04-16 | 4 | -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 Marlow | 2008-04-16 | 1 | -1/+1 |
| | |||||
* | refactoring | Simon Marlow | 2008-04-16 | 1 | -12/+11 |
| | |||||
* | bugfix for traverseBlackHoleQueue | Simon Marlow | 2008-04-16 | 1 | -3/+2 |
| | |||||
* | Add a write barrier to the TSO link field (#1589) | Simon Marlow | 2008-04-16 | 7 | -37/+69 |
| | |||||
* | fix trace | Simon Marlow | 2008-04-16 | 1 | -1/+1 |
| | |||||
* | tmp: alloc one block at a time | Simon Marlow | 2008-04-16 | 1 | -9/+19 |
| | |||||
* | add debugging code to check for fragmentation | Simon Marlow | 2008-04-16 | 1 | -0/+8 |
| | |||||
* | do a better job of re-using partial blocks in subsequent GCs | Simon Marlow | 2008-04-16 | 1 | -6/+40 |
| | |||||
* | Use the BF_EVACUATED flag to indicate to-space consistently | Simon Marlow | 2008-04-16 | 6 | -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 often | Simon Marlow | 2008-04-16 | 1 | -17/+22 |
| | |||||
* | debug output: show mem in use | Simon Marlow | 2008-04-16 | 1 | -2/+2 |
| | |||||
* | make +RTS -G1 work again | Simon Marlow | 2008-04-16 | 1 | -15/+7 |
| | |||||
* | pad step_workspace to 64 bytes, to speed up access to gct->steps[] | Simon Marlow | 2008-04-16 | 2 | -1/+8 |
| | |||||
* | update copyrights in rts/sm | Simon Marlow | 2008-04-16 | 20 | -20/+20 |
| | |||||
* | Reorganisation to fix problems related to the gct register variable | Simon Marlow | 2008-04-16 | 13 | -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 buckets | Simon Marlow | 2008-04-16 | 1 | -165/+165 |
| | |||||
* | allocate more blocks in one go, to reduce contention for the block allocator | Simon Marlow | 2008-04-16 | 1 | -8/+35 |
| | |||||
* | remove outdated comment | Simon Marlow | 2008-04-16 | 1 | -4/+0 |
| | |||||
* | calculate and report slop (wasted space at the end of blocks) | Simon Marlow | 2008-04-16 | 1 | -2/+3 |
| | |||||
* | free empty blocks at the end of GC | Simon Marlow | 2008-04-16 | 1 | -14/+27 |
| | |||||
* | move the scan block pointer into the gct structure | Simon Marlow | 2008-04-16 | 5 | -56/+33 |
| | |||||
* | improvements to +RTS -s output | Simon Marlow | 2008-04-16 | 6 | -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 properly | Simon Marlow | 2008-04-16 | 1 | -2/+12 |
| | |||||
* | debug output tweaks | Simon Marlow | 2008-04-16 | 1 | -2/+2 |
| | |||||
* | Keep track of an accurate count of live words in each step | Simon Marlow | 2008-04-16 | 3 | -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 balancing | Simon Marlow | 2008-04-16 | 7 | -114/+193 |
| | |||||
* | in scavenge_block1(), we can use the lock-free recordMutableGen() | Simon Marlow | 2008-04-16 | 1 | -0/+2 |
| | |||||
* | update the debug counters following changes to scav_find_work() | Simon Marlow | 2008-04-16 | 3 | -7/+4 |
| | |||||
* | change the find-work strategy: use oldest-first consistently | Simon Marlow | 2008-04-16 | 1 | -69/+61 |
| | |||||
* | per-thread debug output when using multiple threads, not just major gc | Simon Marlow | 2008-04-16 | 1 | -1/+1 |
| | |||||
* | small debug output improvements | Simon Marlow | 2008-04-16 | 2 | -4/+4 |
| | |||||
* | allow parallel minor collections too | Simon Marlow | 2008-04-16 | 1 | -34/+79 |
| | |||||
* | Specialise evac/scav for single-threaded, not minor, GC | Simon Marlow | 2008-04-16 | 6 | -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 Marlow | 2008-04-16 | 2 | -4/+3 |
| | |||||
* | treat the global work list as a queue rather than a stack | Simon Marlow | 2008-04-16 | 2 | -2/+11 |
| | |||||
* | GC: move static object processinng into thread-local storage | Simon Marlow | 2008-04-16 | 6 | -64/+75 |
| | |||||
* | tmp: usleep(1) during anyWork() if no work | Simon Marlow | 2008-04-16 | 1 | -0/+3 |
| | |||||
* | anyWork(): count the number of times we don't find any work | Simon Marlow | 2008-04-16 | 3 | -0/+5 |
| | |||||
* | Add +RTS -vg flag for requesting some GC trace messages, outside DEBUG | Simon Marlow | 2008-04-16 | 4 | -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. |