1. 29 Apr, 2014 10 commits
  2. 28 Apr, 2014 12 commits
  3. 27 Apr, 2014 8 commits
  4. 25 Apr, 2014 1 commit
    • Herbert Valerio Riedel's avatar
      Drop `template-haskell`'s build-dep on `containers` · 07388af8
      Herbert Valerio Riedel authored
      This is an attempt to address
      by replicating the less than 100 lines of code actually used from the
      containers package into an internal non-exposed `template-haskell` module.
      Moreover, `template-haskell` does not expose the `Map` type, so this change
      should have no visible effect on the public API.
      It may turn out that `Data.Map` is not necessary and that even a simple
      list-based associative list (`Prelude.lookup`) may suffice. However, in
      order to avoid any regressions, this commit takes the safe route and just
      clones `Data.Map` for now.
      Signed-off-by: Herbert Valerio Riedel's avatarHerbert Valerio Riedel <hvr@gnu.org>
  5. 24 Apr, 2014 6 commits
    • Gabor Greif's avatar
      Some typos in comments · 4ceb5dec
      Gabor Greif authored
    • Simon Peyton Jones's avatar
      Don't eta-expand PAPs (fixes Trac #9020) · 79e46aea
      Simon Peyton Jones authored
      See Note [Do not eta-expand PAPs] in SimplUtils.  This has a tremendously
      good effect on compile times for some simple benchmarks.
      The test is now where it belongs, in perf/compiler/T9020 (instead of simpl015).
      I did a nofib run and got essentially zero change except for cacheprof which
      gets 4% more allocation.  I investigated.  Turns out that we have
          instance PP Reg where
             pp ppm ST_0 = "%st"
             pp ppm ST_1 = "%st(1)"
             pp ppm ST_2 = "%st(2)"
             pp ppm ST_3 = "%st(3)"
             pp ppm ST_4 = "%st(4)"
             pp ppm ST_5 = "%st(5)"
             pp ppm ST_6 = "%st(6)"
             pp ppm ST_7 = "%st(7)"
             pp ppm r    = "%" ++ map toLower (show r)
      That (map toLower (show r) does a lot of map/toLowers.  But if we inline show
      we get something like
             pp ppm ST_0 = "%st"
             pp ppm ST_1 = "%st(1)"
             pp ppm ST_2 = "%st(2)"
             pp ppm ST_3 = "%st(3)"
             pp ppm ST_4 = "%st(4)"
             pp ppm ST_5 = "%st(5)"
             pp ppm ST_6 = "%st(6)"
             pp ppm ST_7 = "%st(7)"
             pp ppm EAX  = map toLower (show EAX)
             pp ppm EBX  = map toLower (show EBX)
      and all those map/toLower calls can now be floated to top level.
      This gives a 4% decrease in allocation.  But it depends on inlining
      a pretty big 'show' function.
      With this new patch we get slightly better eta-expansion, which makes
      a function look slightly bigger, which just stops it being inlined.
      The previous behaviour was luck, so I'm not going to worry about
      losing it.
      I've added some notes to nofib/Simon-nofib-notes
    • Simon Peyton Jones's avatar
      Be less verbose when printing Names when we don't know what's in scope · 134b7223
      Simon Peyton Jones authored
      Previously we always printed qualified names, but that makes a lot of debug or
      warning output very verbose. So now we only print qualified names with -dppr-debug.
      Civilised output (from pukka error messages, with the environment available) is
    • Simon Peyton Jones's avatar
      Make absolutely sure that 'done' and 'safeIndex' are strict in the index · 68a1e679
      Simon Peyton Jones authored
      This is just to make sure that there is no redundant boxing.
      For safeIndex, for example, the error path doesn't evaluate the
      index, so it may be passed boxed unless safeIndex is inlined bodily,
      which I don't want to rely on.
    • Simon Peyton Jones's avatar
      Be sure to UNPACK the size of an array · 98aab76a
      Simon Peyton Jones authored
      The code before did actually unpack the size, I think, but it
      wasn't very clear, and it's better to do it explicitly
    • Simon Peyton Jones's avatar
  6. 22 Apr, 2014 3 commits