[project @ 2005-04-05 12:19:54 by simonmar]
authorsimonmar <unknown>
Tue, 5 Apr 2005 12:19:57 +0000 (12:19 +0000)
committersimonmar <unknown>
Tue, 5 Apr 2005 12:19:57 +0000 (12:19 +0000)
commit1621421619df6f19dce3b8cb29471e5d3c731acb
treee4e545eac8569444d1df5c357677881d7c6f1231
parent14a5aadb84c34dbe2bee129ed80fdfa1fb12e3e0
[project @ 2005-04-05 12:19:54 by simonmar]
Some multi-processor hackery, including

  - Don't hang blocked threads off BLACKHOLEs any more, instead keep
    them all on a separate queue which is checked periodically for
    threads to wake up.

    This is good because (a) we don't have to worry about locking the
    closure in SMP mode when we want to block on it, and (b) it means
    the standard update code doesn't need to wake up any threads or
    check for a BLACKHOLE_BQ, simplifying the update code.

    The downside is that if there are lots of threads blocked on
    BLACKHOLEs, we might have to do a lot of repeated list traversal.
    We don't expect this to be common, though.  conc023 goes slower
    with this change, but we expect most programs to benefit from the
    shorter update code.

  - Fixing up the Capability code to handle multiple capabilities (SMP
    mode), and related changes to get the SMP mode at least building.
31 files changed:
ghc/includes/ClosureTypes.h
ghc/includes/Closures.h
ghc/includes/SchedAPI.h
ghc/includes/StgMiscClosures.h
ghc/includes/Storage.h
ghc/includes/Updates.h
ghc/includes/mkDerivedConstants.c
ghc/rts/Capability.c
ghc/rts/Capability.h
ghc/rts/GC.c
ghc/rts/GCCompact.c
ghc/rts/HeapStackCheck.cmm
ghc/rts/LdvProfile.c
ghc/rts/Linker.c
ghc/rts/Printer.c
ghc/rts/ProfHeap.c
ghc/rts/RetainerProfile.c
ghc/rts/RtsAPI.c
ghc/rts/RtsStartup.c
ghc/rts/Sanity.c
ghc/rts/Schedule.c
ghc/rts/Schedule.h
ghc/rts/Sparks.c
ghc/rts/Sparks.h
ghc/rts/Stable.c
ghc/rts/Stats.c
ghc/rts/StgMiscClosures.cmm
ghc/rts/StgStartup.cmm
ghc/rts/Storage.c
ghc/rts/Task.c
ghc/rts/Task.h