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 Sep, 2010 1 commit
  2. 08 Jul, 2010 1 commit
    • Simon Marlow's avatar
      New asynchronous exception control API (ghc parts) · ad3b79d2
      Simon Marlow authored
      As discussed on the libraries/haskell-cafe mailing lists
        http://www.haskell.org/pipermail/libraries/2010-April/013420.html
      
      This is a replacement for block/unblock in the asychronous exceptions
      API to fix a problem whereby a function could unblock asynchronous
      exceptions even if called within a blocked context.
      
      The new terminology is "mask" rather than "block" (to avoid confusion
      due to overloaded meanings of the latter).
      
      In GHC, we changed the names of some primops:
      
        blockAsyncExceptions#   -> maskAsyncExceptions#
        unblockAsyncExceptions# -> unmaskAsyncExceptions#
        asyncExceptionsBlocked# -> getMaskingState#
      
      and added one new primop:
      
        maskUninterruptible#
      
      See the accompanying patch to libraries/base for the API changes.
      ad3b79d2
  3. 05 May, 2010 1 commit
  4. 11 Mar, 2010 1 commit
    • 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
  5. 14 Oct, 2009 1 commit
  6. 18 Aug, 2009 1 commit
    • Simon Marlow's avatar
      Fix #3429: a tricky race condition · c5cafbcc
      Simon Marlow authored
      There were two bugs, and had it not been for the first one we would
      not have noticed the second one, so this is quite fortunate.
      
      The first bug is in stg_unblockAsyncExceptionszh_ret, when we found a
      pending exception to raise, but don't end up raising it, there was a
      missing adjustment to the stack pointer.  
      
      The second bug was that this case was actually happening at all: it
      ought to be incredibly rare, because the pending exception thread
      would have to be killed between us finding it and attempting to raise
      the exception.  This made me suspicious.  It turned out that there was
      a race condition on the tso->flags field; multiple threads were
      updating this bitmask field non-atomically (one of the bits is the
      dirty-bit for the generational GC).  The fix is to move the dirty bit
      into its own field of the TSO, making the TSO one word larger (sadly).
      c5cafbcc
  7. 03 Aug, 2009 2 commits
  8. 16 Jun, 2009 1 commit
  9. 10 Jun, 2009 1 commit
    • Duncan Coutts's avatar
      Make killThread# cmm primop use local stack allocation · c9acb4de
      Duncan Coutts authored
      It using the mp_tmp_w register/global as a convenient temporary
      variable. This is naughty because those vars are supposed to be
      for gmp. Also, we want to remove the gmp temp vars so we must
      now use a local stack slot instead.
      c9acb4de
  10. 14 Aug, 2008 1 commit
    • dias@eecs.harvard.edu's avatar
      Merging in the new codegen branch · 176fa33f
      dias@eecs.harvard.edu authored
      This merge does not turn on the new codegen (which only compiles
      a select few programs at this point),
      but it does introduce some changes to the old code generator.
      
      The high bits:
      1. The Rep Swamp patch is finally here.
         The highlight is that the representation of types at the
         machine level has changed.
         Consequently, this patch contains updates across several back ends.
      2. The new Stg -> Cmm path is here, although it appears to have a
         fair number of bugs lurking.
      3. Many improvements along the CmmCPSZ path, including:
         o stack layout
         o some code for infotables, half of which is right and half wrong
         o proc-point splitting
      176fa33f
  11. 28 Jul, 2008 1 commit
    • Simon Marlow's avatar
      Change the calling conventions for unboxed tuples slightly · 02620e7c
      Simon Marlow authored
      When returning an unboxed tuple with a single non-void component, we
      now use the same calling convention as for returning a value of the
      same type as that component.  This means that the return convention
      for IO now doesn't vary depending on the platform, which make some
      parts of the RTS simpler, and fixes a problem I was having with making
      the FFI work in unregisterised GHCi (the byte-code compiler makes
      some assumptions about calling conventions to keep things simple).
      02620e7c
  12. 09 Jul, 2008 1 commit
  13. 17 Apr, 2008 1 commit
  14. 23 May, 2008 1 commit
  15. 02 Apr, 2008 1 commit
    • Simon Marlow's avatar
      Do not #include external header files when compiling via C · c245355e
      Simon Marlow authored
      This has several advantages:
      
       - -fvia-C is consistent with -fasm with respect to FFI declarations:
         both bind to the ABI, not the API.
      
       - foreign calls can now be inlined freely across module boundaries, since
         a header file is not required when compiling the call.
      
       - bootstrapping via C will be more reliable, because this difference
         in behavour between the two backends has been removed.
      
      There is one disadvantage:
      
       - we get no checking by the C compiler that the FFI declaration
         is correct.
      
      So now, the c-includes field in a .cabal file is always ignored by
      GHC, as are header files specified in an FFI declaration.  This was
      previously the case only for -fasm compilations, now it is also the
      case for -fvia-C too.
      c245355e
  16. 23 Mar, 2008 1 commit
  17. 17 Dec, 2007 1 commit
  18. 18 Oct, 2007 1 commit
  19. 10 Aug, 2007 1 commit
  20. 06 Aug, 2007 1 commit
  21. 27 Jun, 2007 1 commit
  22. 26 Jun, 2007 1 commit
  23. 18 May, 2007 1 commit
  24. 16 May, 2007 1 commit
  25. 15 May, 2007 1 commit
    • Simon Marlow's avatar
      GHCi debugger: new flag -fbreak-on-exception · 17f848e1
      Simon Marlow authored
      When -fbreak-on-exception is set, an exception will cause GHCi to
      suspend the current computation and return to the prompt, where the
      history of the current evaluation can be inspected (if we are in
      :trace).  This isn't on by default, because the behaviour could be
      confusing: for example, ^C will cause a breakpoint.  It can be very
      useful for finding the cause of a "head []" or a "fromJust Nothing",
      though.
      17f848e1
  26. 16 Apr, 2007 1 commit
    • Simon Marlow's avatar
      MERGE: Fix a few uses of the wrong return convention for the scheduler · 94363dd5
      Simon Marlow authored
      We changed the convention a while ago so that BaseReg is returned to
      the scheduler in R1, because BaseReg may change during the run of a
      thread, e.g. during a foreign call.  A few places got missed,
      mostly for very rare events.
      
      Should fix concprog001, although I'm not able to reliably reproduce
      the failure.
      94363dd5
  27. 08 Mar, 2007 1 commit
  28. 28 Feb, 2007 1 commit
  29. 17 Jan, 2007 1 commit
  30. 09 Jan, 2007 1 commit
  31. 05 Jan, 2007 1 commit
  32. 14 Dec, 2006 1 commit
  33. 13 Dec, 2006 1 commit
  34. 09 Dec, 2006 1 commit
  35. 07 Oct, 2006 1 commit
  36. 10 Aug, 2006 1 commit
  37. 20 Jun, 2006 3 commits