Skip to content
Snippets Groups Projects
  1. Sep 08, 2008
  2. Sep 03, 2008
  3. Sep 07, 2008
  4. Aug 22, 2008
  5. Sep 07, 2008
  6. Sep 06, 2008
  7. Sep 05, 2008
  8. Sep 04, 2008
  9. Sep 03, 2008
    • 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
    • Simon Peyton Jones's avatar
      Major change in compilation of instance declarations (fix Trac #955, #2328) · f16dbbbe
      Simon Peyton Jones 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
    • Simon Peyton Jones's avatar
      Improved specialisation of recursive groups · 78260da4
      Simon Peyton Jones 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
  10. Sep 02, 2008
Loading