[project @ 2005-10-27 15:26:06 by simonmar]
authorsimonmar <unknown>
Thu, 27 Oct 2005 15:26:06 +0000 (15:26 +0000)
committersimonmar <unknown>
Thu, 27 Oct 2005 15:26:06 +0000 (15:26 +0000)
commit677c63455e46b5536800a2dc2db70b64cc802266
tree68801662420fdc208fddef72df6bc151fc4f1e80
parentf9f5235fce1fb043b0738d86190a4e50386e5dcc
[project @ 2005-10-27 15:26:06 by simonmar]
- Very simple work-sharing amongst Capabilities: whenever a Capability
  detects that it has more than 1 thread in its run queue, it runs
  around looking for empty Capabilities, and shares the threads on its
  run queue equally with the free Capabilities it finds.

- unlock the garbage collector's mutable lists, by having private
  mutable lists per capability (and per generation).  The private
  mutable lists are moved onto the main mutable lists at each GC.
  This pulls the old-generation update code out of the storage manager
  mutex, which is one of the last remaining causes of (alleged) contention.

- Fix some problems with synchronising when a GC is required.  We should
  synchronise quicker now.
ghc/rts/Capability.c
ghc/rts/Capability.h
ghc/rts/GC.c
ghc/rts/Schedule.c
ghc/rts/Storage.c
ghc/rts/Updates.h [moved from ghc/includes/Updates.h with 98% similarity]