Switch branches/tags
Commits on Mar 15, 2010
Commits on Mar 14, 2010
  1. Document the new RTS linker flags

    igfoo committed Mar 14, 2010
Commits on Mar 13, 2010
  1. Add a -with-rtsopts link-time flag

    igfoo committed Mar 13, 2010
    You can now link with
        -with-rtsopts="-H128m -K1m"
  2. Rename a variable

    igfoo committed Mar 13, 2010
  3. Add a link-time flag to en/disable the RTS options

    igfoo committed Mar 13, 2010
    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. Use message-passing to implement throwTo in the RTS

    simonmar committed Mar 11, 2010
    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
     - 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
Commits on Mar 9, 2010
  1. Fix Trac #1954: newtype deriving caused 'defined but not used' error committed Mar 9, 2010
    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
    See Note [Newtype deriving and unused constructors] in TcDeriv
  2. Rule binders shouldn't have IdInfo committed Mar 9, 2010
    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 committed Mar 9, 2010
  4. Rule binders shouldn't have DFun pragmas committed Mar 9, 2010
    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 committed Mar 9, 2010
    isClosedUnfolding should say False for DFUnUnfolding!
  6. Comments only committed Mar 9, 2010
  7. Comments and type signatures only committed Mar 9, 2010
  8. Comments only committed Mar 9, 2010
  9. Tidy up pretty-printing of InlinePragma committed Mar 9, 2010
    We were getting "INLINEALWAYS" printed out here and there.
    Now there are always brackets around the activation, thus "INLINE[ALWAYS]"
  10. Split part of the Task struct into a separate struct InCall

    simonmar committed Mar 9, 2010
    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. add a note

    simonmar committed Mar 9, 2010
  12. Fix a rare deadlock when the IO manager thread is slow to start up

    simonmar committed Mar 9, 2010
    This fixes occasional failures of ffi002(threaded1) on a loaded
Commits on Mar 5, 2010
  1. When BUILD_DOCBOOK_HTML is NO, keep the rules, just omit the target committed Mar 5, 2010
      (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 committed Mar 5, 2010
    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 committed Mar 4, 2010
  2. Comments only committed Mar 4, 2010
  3. Refactor part of the renamer to fix Trac #3901 committed Mar 4, 2010
    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.
  4. Minor refactoring of placeHolderPunRhs committed Mar 4, 2010
  5. Make `mkFunTy` associate to the right, as it should committed Mar 4, 2010
  6. Add fmapMaybeM and fmapEitherM committed Mar 4, 2010
  7. Comments only committed Mar 4, 2010
  8. Two things to do with -dsuppress-uniques committed Mar 4, 2010
    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.
Commits on Nov 23, 2009