Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Commits on Mar 15, 2010
  1. igfoo
  2. Simon Marlow
Commits on Mar 14, 2010
  1. igfoo
  2. igfoo
  3. igfoo
Commits on Mar 13, 2010
  1. igfoo

    Add a -with-rtsopts link-time flag

    igfoo authored
    You can now link with
        -with-rtsopts="-H128m -K1m"
  2. igfoo

    Rename a variable

    igfoo authored
  3. igfoo

    Add a link-time flag to en/disable the RTS options

    igfoo authored
    If RTS options are disabled then:
    * The ghc_rts_opts C code variable is processed as normal
    * The GHCRTS environment variable is ignored and, if it is defined, a
      warning is emitted
    * The +RTS flag gives an error and terminates the program
Commits on Mar 11, 2010
  1. Simon Marlow
  2. Simon Marlow

    Use message-passing to implement throwTo in the RTS

    simonmar authored
    This replaces some complicated locking schemes with message-passing
    in the implementation of throwTo. The benefits are
    
     - previously it was impossible to guarantee that a throwTo from
       a thread running on one CPU to a thread running on another CPU
       would be noticed, and we had to rely on the GC to pick up these
       forgotten exceptions. This no longer happens.
    
     - the locking regime is simpler (though the code is about the same
       size)
    
     - threads can be unblocked from a blocked_exceptions queue without
       having to traverse the whole queue now.  It's a rare case, but
       replaces an O(n) operation with an O(1).
    
     - generally we move in the direction of sharing less between
       Capabilities (aka HECs), which will become important with other
       changes we have planned.
    
    Also in this patch I replaced several STM-specific closure types with
    a generic MUT_PRIM closure type, which allowed a lot of code in the GC
    and other places to go away, hence the line-count reduction.  The
    message-passing changes resulted in about a net zero line-count
    difference.
  3. Simon Marlow
Commits on Mar 9, 2010
  1. Fix Trac #1954: newtype deriving caused 'defined but not used' error

    simonpj@microsoft.com authored
    We were getting a bogus claim that a newtype "data constructor" was
    unused.  The fix is easy, although I had to add a field to the constructor
    TcEnv.NewTypeDerived
    
    See Note [Newtype deriving and unused constructors] in TcDeriv
  2. Rule binders shouldn't have IdInfo

    simonpj@microsoft.com authored
    While I was looking at the rule binders generated in DsBinds for specialise pragmas,
    I also looked at Specialise.  It too was "cloning" the dictionary binders including
    their IdInfo. In this case they should not have any, but its seems better to make
    them completely fresh rather than substitute in existing (albeit non-existent) IdInfo.
  3. Add comment

    simonpj@microsoft.com authored
  4. Rule binders shouldn't have DFun pragmas

    simonpj@microsoft.com authored
    When DsBinds deals with a SPECIALISE pragma, it makes up the binders
    for a RULE. These binders should be very vanilla: no IdInfo of any sort.
    But the way it was before they could have DFun pragmas, which led to
    Bad Joss downstream.  (Actually to cause a downstream *error* was itself
    a bug, which I've fixed, but it's clearly wrong for them to be DFuns!)
  5. A bug in isClosedUnfolding

    simonpj@microsoft.com authored
    isClosedUnfolding should say False for DFUnUnfolding!
  6. Comments only

    simonpj@microsoft.com authored
  7. Comments and type signatures only

    simonpj@microsoft.com authored
  8. Comments only

    simonpj@microsoft.com authored
  9. Tidy up pretty-printing of InlinePragma

    simonpj@microsoft.com authored
    We were getting "INLINEALWAYS" printed out here and there.
    Now there are always brackets around the activation, thus "INLINE[ALWAYS]"
  10. Simon Marlow

    Split part of the Task struct into a separate struct InCall

    simonmar authored
    The idea is that this leaves Tasks and OSThread in one-to-one
    correspondence.  The part of a Task that represents a call into
    Haskell from C is split into a separate struct InCall, pointed to by
    the Task and the TSO bound to it.  A given OSThread/Task thus always
    uses the same mutex and condition variable, rather than getting a new
    one for each callback.  Conceptually it is simpler, although there are
    more types and indirections in a few places now.
    
    This improves callback performance by removing some of the locks that
    we had to take when making in-calls.  Now we also keep the current Task
    in a thread-local variable if supported by the OS and gcc (currently
    only Linux).
  11. Simon Marlow

    add a note

    simonmar authored
  12. Simon Marlow

    Fix a rare deadlock when the IO manager thread is slow to start up

    simonmar authored
    This fixes occasional failures of ffi002(threaded1) on a loaded
    machine.
Commits on Mar 5, 2010
  1. When BUILD_DOCBOOK_HTML is NO, keep the rules, just omit the target

    simonpj@microsoft.com authored
      (and similarly for PS and PDF)
    
    The previous setup nuked the rules for making the documentation when
    BUILD_DOCBOOK_HTML=NO.  This meant that "make html" didn't work.
    
    There isn't any reason to nuke the rules (so far as Simon and I know).
  2. Fix Trac #3736: do not preInlineUnconditionally with INLINE

    simonpj@microsoft.com authored
    preInlineUnconditionally was, in effect, nuking an INLINE pragma, with
    very bad effect on runtime in this program.  Fortunately the fix is
    very simple.
    
    See Note [InlineRule and preInlineUnconditionally] in SimplUtils.
Commits on Mar 4, 2010
  1. Comments only

    simonpj@microsoft.com authored
  2. Comments only

    simonpj@microsoft.com authored
  3. Refactor part of the renamer to fix Trac #3901

    simonpj@microsoft.com authored
    This one was bigger than I anticipated!  The problem was that were
    were gathering the binders from a pattern before renaming -- but with
    record wild-cards we don't know what variables are bound by C {..}
    until after the renamer has filled in the "..".
    
    So this patch does the following
    
    * Change all the collect-X-Binders functions in HsUtils so that
      they expect to only be called *after* renaming.  That means they
      don't need to return [Located id] but just [id].  Which turned out
      to be a very worthwhile simplification all by itself.
    
    * Refactor the renamer, and in ptic RnExpr.rnStmt, so that it
      doesn't need to use collectLStmtsBinders on pre-renamed Stmts.
    
    * This in turn required me to understand how GroupStmt and
      TransformStmts were renamed.  Quite fiddly. I rewrote most of it;
      result is much shorter.
    
    * In doing so I flattened HsExpr.GroupByClause into its parent
      GroupStmt, with trivial knock-on effects in other files.
    
    Blargh.
  4. Minor refactoring of placeHolderPunRhs

    simonpj@microsoft.com authored
  5. Make `mkFunTy` associate to the right, as it should

    simonpj@microsoft.com authored
  6. Add fmapMaybeM and fmapEitherM

    simonpj@microsoft.com authored
  7. Comments only

    simonpj@microsoft.com authored
  8. Two things to do with -dsuppress-uniques

    simonpj@microsoft.com authored
    a) Even with -dsuppress-uniques, don't suppress them when outputing
       code, else the assembler falls over bleating
    
    b) Do suppress uniques in names generated by TH.  It's a bit grungy
       to do this: see Note [Suppressing uniques in OccNames].  But
       it's only needed for test de-wobblification so the grunge isn't
       really important.
  9. Simon Marlow
Commits on Nov 23, 2009
  1. Simon Marlow
Something went wrong with that request. Please try again.