1. 21 Jul, 2010 1 commit
    • simonpj@microsoft.com's avatar
      Allow reification of existentials and GADTs · 0237ed67
      simonpj@microsoft.com authored
      It turns out that TH.Syntax is rich enough to express even GADTs,
      provided we express them in equality-predicate form.  So for
      example
      
        data T a where
           MkT1 :: a -> T [a]
           MkT2 :: T Int
      
      will appear in TH syntax like this
      
        data T a = forall b. (a ~ [b]) => MkT1 b
                 | (a ~ Int) => MkT2
      
      While I was at it I also improved the reification of types,
      so that we use TH.TupleT and TH.ListT when we can.
      0237ed67
  2. 20 Jul, 2010 4 commits
  3. 16 Jul, 2010 1 commit
    • Simon Marlow's avatar
      Use a separate mutex to protect all_tasks, avoiding a lock-order-reversal · ed301949
      Simon Marlow authored
      In GHC 6.12.x I found a rare deadlock caused by this
      lock-order-reversal:
      
      AQ cap->lock
        startWorkerTask
          newTask
            AQ sched_mutex
      
      scheduleCheckBlackHoles
        AQ sched_mutex
         unblockOne_
          wakeupThreadOnCapabilty
            AQ cap->lock
      
      so sched_mutex and cap->lock are taken in a different order in two
      places.
      
      This doesn't happen in the HEAD because we don't have
      scheduleCheckBlackHoles, but I thought it would be prudent to make
      this less likely to happen in the future by using a different mutex in
      newTask.  We can clearly see that the all_tasks mutex cannot be
      involved in a deadlock, becasue we never call anything else while
      holding it.
      ed301949
  4. 15 Jul, 2010 1 commit
  5. 19 Jul, 2010 2 commits
  6. 18 Jul, 2010 1 commit
  7. 15 Jul, 2010 1 commit
  8. 17 Jul, 2010 5 commits
  9. 16 Jul, 2010 6 commits
  10. 15 Jul, 2010 6 commits
  11. 14 Jul, 2010 4 commits
  12. 13 Jul, 2010 6 commits
  13. 07 Jul, 2010 2 commits