1. 22 Aug, 2008 1 commit
  2. 07 Sep, 2008 1 commit
  3. 06 Sep, 2008 8 commits
  4. 05 Sep, 2008 13 commits
  5. 04 Sep, 2008 5 commits
  6. 03 Sep, 2008 4 commits
    • Ian Lynagh's avatar
      71cb36e1
    • Ian Lynagh's avatar
      Fix ifBuildable · 3a006cb5
      Ian Lynagh authored
      Required libraries now have 3 fields in the packages file, not 2
      3a006cb5
    • simonpj@microsoft.com's avatar
      Major change in compilation of instance declarations (fix Trac #955, #2328) · f16dbbbe
      simonpj@microsoft.com authored
      This patch makes an important change to the way that dictionary
      functions are handled.  Before, they were unconditionally marked
      INLIINE, but all the code written by the user in the instance
      was inside that unconditionally-inlined function.  Result: massive
      code bloat in programs that use complicated instances.
      
      This patch make instances behave rather as if all the methods
      were written in separate definitions.  That dramatically reduces
      bloat.  The new plan is described in TcInstDcls
      	Note [How instance declarations are translated]
      
      Everything validates.  The major code-bloat bug is squashed: in particular
      DoCon is fine now (Trac #2328) and I believe that #955 is also better.
      
      Nofib results:
      
      Binary sizes
              -1 s.d.      +2.5%
              +1 s.d.      +3.1%
              Average      +2.8%
      
      Allocations
              -1 s.d.      -6.4%
              +1 s.d.      +2.5%
              Average      -2.0%
      
      Note that 2% improvement.  Some programs improve by 20% (rewrite)!
      Two get slightly worse: pic (2.1%), and gameteb (3.2%), but all others
      improve or stay the same.
      
      I am not absolutely 100% certain that all the corners are correct; for
      example, when default methods are marked INLINE, are they inlined?  But
      overall it's better.
      
      It's nice that the patch also removes a lot of code.  I deleted some
      out of date comments, but there's something like 100 fewer lines of
      code in the new version!  (In the line counts below, there are a lot
      of new comments.)
      f16dbbbe
    • simonpj@microsoft.com's avatar
      Improved specialisation of recursive groups · 78260da4
      simonpj@microsoft.com authored
      This patch significantly improves the way in which recursive groups
      are specialised.  This turns out ot be very important when specilising
      the bindings that (now) emerge from instance declarations.
      
      Consider
          let rec { f x = ...g x'...
                  ; g y = ...f y'.... }
          in f 'a'
      Here we specialise 'f' at Char; but that is very likely to lead to 
      a specialisation of 'g' at Char.  We must do the latter, else the
      whole point of specialisation is lost.  This was not happening before.
      
      The whole thing is desribed in 
          Note [Specialising a recursive group]
      
      
      Simon
      78260da4
  7. 02 Sep, 2008 2 commits
  8. 01 Sep, 2008 1 commit
    • Simon Marlow's avatar
      Check the modification times of libraries in --make link step · 880a6b90
      Simon Marlow authored
      When linking in --make we check the modification time of the
      executable against the modification time of the object files, and only
      re-link if any object file is newer.  However, we should also check
      the modification times of packages, since the recompilation checker
      also tracks dependencies in packages.  
      
      In a GHC build this means that if you recompile stage2 and don't
      manage to change any fingerpints, we won't recompile Main but we'll
      still re-link it.
      880a6b90
  9. 31 Aug, 2008 1 commit
  10. 30 Aug, 2008 3 commits
  11. 31 Aug, 2008 1 commit