Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Commits on Jul 20, 2010
  1. @simonmar

    add numSparks# primop (#4167)

    simonmar authored
Commits on Apr 1, 2010
  1. @simonmar

    Change the representation of the MVar blocked queue

    simonmar authored
    The list of threads blocked on an MVar is now represented as a list of
    separately allocated objects rather than being linked through the TSOs
    themselves.  This lets us remove a TSO from the list in O(1) time
    rather than O(n) time, by marking the list object.  Removing this
    linear component fixes some pathalogical performance cases where many
    threads were blocked on an MVar and became unreachable simultaneously
    (nofib/smp/threads007), or when sending an asynchronous exception to a
    TSO in a long list of thread blocked on an MVar.
    
    MVar performance has actually improved by a few percent as a result of
    this change, slightly to my surprise.
    
    This is the final cleanup in the sequence, which let me remove the old
    way of waking up threads (unblockOne(), MSG_WAKEUP) in favour of the
    new way (tryWakeupThread and MSG_TRY_WAKEUP, which is idempotent).  It
    is now the case that only the Capability that owns a TSO may modify
    its state (well, almost), and this simplifies various things.  More of
    the RTS is based on message-passing between Capabilities now.
Commits on Oct 8, 2009
  1. @simonmar

    Make appendToRunQueue EXTERN_INLINE rather than INLINE_HEADER

    simonmar authored
    Fixes compilation with gcc 4.4
Commits on Aug 2, 2009
  1. @simonmar

    RTS tidyup sweep, first phase

    simonmar authored
    The first phase of this tidyup is focussed on the header files, and in
    particular making sure we are exposinng publicly exactly what we need
    to, and no more.
    
     - Rts.h now includes everything that the RTS exposes publicly,
       rather than a random subset of it.
    
     - Most of the public header files have moved into subdirectories, and
       many of them have been renamed.  But clients should not need to
       include any of the other headers directly, just #include the main
       public headers: Rts.h, HsFFI.h, RtsAPI.h.
    
     - All the headers needed for via-C compilation have moved into the
       stg subdirectory, which is self-contained.  Most of the headers for
       the rest of the RTS APIs have moved into the rts subdirectory.
    
     - I left MachDeps.h where it is, because it is so widely used in
       Haskell code.
     
     - I left a deprecated stub for RtsFlags.h in place.  The flag
       structures are now exposed by Rts.h.
    
     - Various internal APIs are no longer exposed by public header files.
    
     - Various bits of dead code and declarations have been removed
    
     - More gcc warnings are turned on, and the RTS code is more
       warning-clean.
    
     - More source files #include "PosixSource.h", and hence only use
       standard POSIX (1003.1c-1995) interfaces.
    
    There is a lot more tidying up still to do, this is just the first
    pass.  I also intend to standardise the names for external RTS APIs
    (e.g use the rts_ prefix consistently), and declare the internal APIs
    as hidden for shared libraries.
Commits on Jun 19, 2008
  1. @simonmar

    Fix up inlines for gcc 4.3

    simonmar authored
    gcc 4.3 emits warnings for static inline functions that its heuristics
    decided not to inline.  The workaround is to either mark appropriate
    functions as "hot" (a new attribute in gcc 4.3), or sometimes to use
    "extern inline" instead.
    
    With this fix I can validate with gcc 4.3 on Fedora 9.
Something went wrong with that request. Please try again.