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

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

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

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

    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
    simonmar committed Mar 11, 2010
Commits on Mar 9, 2010
  1. Fix Trac #1954: newtype deriving caused 'defined but not used' error

    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 committed Mar 9, 2010
  2. Rule binders shouldn't have IdInfo

    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. committed Mar 9, 2010
  3. Add comment committed Mar 9, 2010
  4. Rule binders shouldn't have DFun pragmas

    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!) committed Mar 9, 2010
  5. A bug in isClosedUnfolding

    isClosedUnfolding should say False for DFUnUnfolding! committed Mar 9, 2010
  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

    We were getting "INLINEALWAYS" printed out here and there.
    Now there are always brackets around the activation, thus "INLINE[ALWAYS]" committed Mar 9, 2010
  10. Split part of the Task struct into a separate struct InCall

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

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

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

      (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). committed Mar 5, 2010
  2. Fix Trac #3736: do not preInlineUnconditionally with INLINE

    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. committed Mar 5, 2010
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

    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. committed Mar 4, 2010
  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

    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. committed Mar 4, 2010
Commits on Nov 23, 2009