This project is mirrored from https://gitlab.haskell.org/ghc/ghc.git. Pull mirroring failed .
Repository mirroring has been paused due to too many failed attempts. It can be resumed by a project maintainer.
Last successful update .
  1. 24 Mar, 2010 5 commits
  2. 23 Mar, 2010 1 commit
    • Ian Lynagh's avatar
      Tweak the Makefile code for making .a libs; fixes trac #3642 · 64c64a6e
      Ian Lynagh authored
      The main change is that, rather than using "xargs ar" we now put
      all the filenames into a file, and do "ar @file". This means that
      ar adds all the files at once, which works around a problem where
      files with the same basename in a later invocation were overwriting
      the existing file in the .a archive.
      64c64a6e
  3. 20 Mar, 2010 1 commit
  4. 21 Mar, 2010 2 commits
  5. 20 Mar, 2010 1 commit
  6. 19 Mar, 2010 2 commits
  7. 17 Mar, 2010 1 commit
  8. 16 Mar, 2010 1 commit
  9. 17 Mar, 2010 1 commit
  10. 16 Mar, 2010 2 commits
    • Simon Marlow's avatar
      copy_tag_nolock(): fix write ordering and add a write_barrier() · 1a050f3c
      Simon Marlow authored
      Fixes a rare crash in the parallel GC.
      
      If we copy a closure non-atomically during GC, as we do for all
      immutable values, then before writing the forwarding pointer we better
      make sure that the closure itself is visible to other threads that
      might follow the forwarding pointer.  I imagine this doesn't happen
      very often, but I just found one case of it: in scavenge_stack, the
      RET_FUN case, after evacuating ret_fun->fun we then follow it and look
      up the info pointer.
      1a050f3c
    • benl@ouroborus.net's avatar
      3a90968f
  11. 11 Mar, 2010 1 commit
  12. 15 Mar, 2010 2 commits
  13. 14 Mar, 2010 3 commits
  14. 13 Mar, 2010 3 commits
  15. 11 Mar, 2010 3 commits
    • Simon Marlow's avatar
    • Simon Marlow's avatar
      Use message-passing to implement throwTo in the RTS · 7408b392
      Simon Marlow 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.
      7408b392
    • Simon Marlow's avatar
      12cfec94
  16. 23 Nov, 2009 1 commit
  17. 09 Mar, 2010 10 commits
    • simonpj@microsoft.com's avatar
      Fix Trac #1954: newtype deriving caused 'defined but not used' error · b7a8d205
      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
      b7a8d205
    • simonpj@microsoft.com's avatar
      Rule binders shouldn't have IdInfo · 435c5194
      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.
      435c5194
    • simonpj@microsoft.com's avatar
      Add comment · 4d4c860c
      simonpj@microsoft.com authored
      4d4c860c
    • simonpj@microsoft.com's avatar
      Rule binders shouldn't have DFun pragmas · 81e41fe3
      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!)
      81e41fe3
    • simonpj@microsoft.com's avatar
      A bug in isClosedUnfolding · 6e335238
      simonpj@microsoft.com authored
      isClosedUnfolding should say False for DFUnUnfolding!
      6e335238
    • simonpj@microsoft.com's avatar
      Comments only · 4ce88e32
      simonpj@microsoft.com authored
      4ce88e32
    • simonpj@microsoft.com's avatar
      Comments and type signatures only · dbcd7b75
      simonpj@microsoft.com authored
      dbcd7b75
    • simonpj@microsoft.com's avatar
      Comments only · 011680bd
      simonpj@microsoft.com authored
      011680bd
    • simonpj@microsoft.com's avatar
      Tidy up pretty-printing of InlinePragma · 0ccb37ab
      simonpj@microsoft.com authored
      We were getting "INLINEALWAYS" printed out here and there.
      Now there are always brackets around the activation, thus "INLINE[ALWAYS]"
      0ccb37ab
    • Simon Marlow's avatar
      Split part of the Task struct into a separate struct InCall · 7effbbbb
      Simon Marlow 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).
      7effbbbb