Fri Aug 21 02:52:51 PDT 2009  [email protected]
  * Fix Trac #3437: strictness of specialised functions
  Ignore-this: 24345ff251a517e540a9666a78ed8176
  
  'lilac' helpful pin-pointed a space leak that was due to a specialised
  function being insufficiently strict.  Here's the new comment in SpecConstr:
  
  Note [Transfer strictness]
  ~~~~~~~~~~~~~~~~~~~~~~~~~~
  We must transfer strictness information from the original function to
  the specialised one.  Suppose, for example
  
    f has strictness     SS
          and a RULE     f (a:as) b = f_spec a as b
  
  Now we want f_spec to have strictess  LLS, otherwise we'll use call-by-need
  when calling f_spec instead of call-by-value.  And that can result in 
  unbounded worsening in space (cf the classic foldl vs foldl')
  
  See Trac #3437 for a good example.
  
  The function calcSpecStrictness performs the calculation.
  
  

    M ./compiler/specialise/SpecConstr.lhs +44

View patch online:
http://darcs.haskell.org/ghc/_darcs/patches/20090821095251-1287e-dec3cf6e5242ddc9cd5d16a69747395e5e14e86a.gz

_______________________________________________
Cvs-ghc mailing list
[email protected]
http://www.haskell.org/mailman/listinfo/cvs-ghc

Reply via email to