1. 23 Feb, 2006 3 commits
  2. 10 Feb, 2006 1 commit
  3. 22 Feb, 2006 5 commits
  4. 21 Feb, 2006 3 commits
  5. 13 Feb, 2006 1 commit
  6. 12 Feb, 2006 3 commits
  7. 10 Feb, 2006 4 commits
  8. 09 Feb, 2006 1 commit
  9. 10 Feb, 2006 2 commits
    • Simon Marlow's avatar
    • Simon Marlow's avatar
      STM fix from Tim Harris · a5bd0560
      Simon Marlow authored
      Fixes assertion failures with STM and -debug.  Tim says:
      Sorry, it's a problem in how nested transactions are handled in
      non-SMP builds.  It'll bite when trying to commit a nested transaction
      which has read from a TVar but not updated it.
      
      The call to validate_and_acquire_ownership in
      stmCommitNestedTransaction should be the same as that in
      stmCommitNestedTransaction, i.e.:
      
        result = validate_and_acquire_ownership(trec, (!use_read_phase), TRUE);
      a5bd0560
  10. 09 Feb, 2006 1 commit
    • Simon Marlow's avatar
      improvement to the deadlock detection · 6ff10661
      Simon Marlow authored
      When the RTS is idle, as detected by the timer signal, instead of
      prodding capabilities from the signal handler (which is not guaranteed
      to work - pthread_cond_signal() can't be called from signal handlers),
      create a new thread to do it.
      6ff10661
  11. 10 Feb, 2006 1 commit
  12. 09 Feb, 2006 11 commits
  13. 06 Feb, 2006 1 commit
    • Ross Paterson's avatar
      relaxed instance termination test · 1cdafe99
      Ross Paterson authored
      With -fglasgow-exts but not -fallow-undecidable-instances, GHC 6.4
      requires that instances be of the following form:
      
       (1) each assertion in the context must constrain distinct variables
           mentioned in the head, and
      
       (2) at least one argument of the head must be a non-variable type.
      
      This patch replaces these rules with the requirement that each assertion
      in the context satisfy
      
       (1) no variable has more occurrences in the assertion than in the head, and
      
       (2) the assertion has fewer constructors and variables (taken together
           and counting repetitions) than the head.
      
      This allows all instances permitted by the old rule, plus such instances as
      
             instance C a
             instance Show (s a) => Show (Sized s a)
             instance (Eq a, Show b) => C2 a b
             instance C2 Int a => C3 Bool [a]
             instance C2 Int a => C3 [a] b
             instance C4 a a => C4 [a] [a]
      
      but still ensures that under any substitution assertions in the context
      will be smaller than the head, so context reduction must terminate.
      
      This is probably the best we can do if we consider each instance in
      isolation.
      1cdafe99
  14. 09 Feb, 2006 1 commit
  15. 08 Feb, 2006 2 commits
    • Simon Marlow's avatar
    • simonpj@microsoft.com's avatar
      Do type refinement in TcIface · f5ca07d6
      simonpj@microsoft.com authored
      This commit fixes a bug in 6.4.1 and the HEAD.  Consider this code,
      recorded **in an interface file**
      
          \(x::a) -> case y of 
      	         MkT -> case x of { True -> ... }
      (where MkT forces a=Bool)
      
      In the "case x" we need to know x's type, because we use that
      to find which module to look for "True" in. x's type comes from
      the envt, so we must refine the envt.  
      
      The alternative would be to record more info with an IfaceCase,
      but that would change the interface file format.
      
      (This stuff will go away when we have proper coercions.)
      	
      f5ca07d6