1. 15 May, 2013 5 commits
    • Simon Peyton Jones's avatar
    • Simon Peyton Jones's avatar
      Make splitHsAppTys look through parentheses, fixing Trac #7903 · fe389f50
      Simon Peyton Jones authored
      This was really just an oversight from long ago.
    • Simon Peyton Jones's avatar
      Make 'undefined' have the magical type 'forall (a:OpenKind).a' · a18ea4f2
      Simon Peyton Jones authored
      This fixes Trac #7888, where the user wanted to use 'undefined' in a
      context that needed ((forall a. a->a) -> Int).  We allow OpenKind
      unification variables to be instantiate with polytypes (or unboxed
      types), hence the change.
      'error' has always been like this; this change simply extends
      the special treatment to 'undefined'.  It's still magical;
      you can't define your own wrapper for 'error' and get the
      same behaviour.  Really just a convenience hack.
    • Simon Peyton Jones's avatar
      Comments only · a91e2304
      Simon Peyton Jones authored
    • amosrobinson's avatar
      SpecConstr: seed specialisation of top-level bindings, as with letrecs. · 8a588511
      amosrobinson authored
      When specialising a top-level recursive group, if none of the binders
      are exported then we can start specialising based on the later calls to
      the functions.
      This is instead of creating specialisations based on the RHS of the
      The main benefit of this is that only specialisations that will actually
      be used are created. This saves quite a bit of memory when compiling
      stream-fusion and ForceSpecConstr sort of code.
      Nofib has an average allocation and runtime of -0.7%, maximum 2%.
      There are a few with significant decreases in allocation (10 - 20%)
      but, interestingly, those ones seem to have similar runtimes.
      One of these does have a significantly reduced total elapsed time
      though: -38%.
      On average the nofib compilation times are the same, but they do vary
      with s.d. of -4 to 4%.
      I think this is acceptable because of the fairly major code blowup fixes
      this has for fusion-style code.
      (In one example, a SpecConstr was previously producing 122,000 term size,
      now only produces 28,000 with the same object code)
  2. 14 May, 2013 3 commits
  3. 13 May, 2013 5 commits
  4. 12 May, 2013 11 commits
  5. 10 May, 2013 6 commits
  6. 09 May, 2013 5 commits
  7. 07 May, 2013 1 commit
  8. 04 May, 2013 2 commits
  9. 03 May, 2013 2 commits