1. 12 Apr, 2008 34 commits
  2. 22 Apr, 2008 6 commits
    • simonpj@microsoft.com's avatar
      Simplify SimplCont, plus some other small changes to the Simplifier · 53f99d84
      simonpj@microsoft.com authored
      The main change in this patch is this:
        
        * The Stop constructor of SimplCont no longer contains the OutType
          of the whole continuation.  This is a nice simplification in 
          lots of places where we build a Stop continuation.  For example,
          rebuildCall no longer needs to maintain the type of the function.
      
        * Similarly StrictArg no longer needs an OutType
      
        * The consequential complication is that contResultType (not called
          much) needs to be given the type of the thing in the middle.  No
          big deal.
      
        * Lots of other small knock-on effects
      
      Other changes in here
      
        * simplLazyBind does do the type-abstraction thing if there's
          a lambda inside.  See comments in simplLazyBind
      
        * simplLazyBind reduces simplifier iterations by keeping 
          unfolding information for stuff for which type abstraction is 
          done (see add_poly_bind)
      
      All of this came up when implementing System IF, but seems worth applying
      to the HEAD
      53f99d84
    • simonpj@microsoft.com's avatar
      Comments only in SimplCore · 4e94e629
      simonpj@microsoft.com authored
      4e94e629
    • simonpj@microsoft.com's avatar
      Comments only · 9526ada5
      simonpj@microsoft.com authored
      9526ada5
    • simonpj@microsoft.com's avatar
      Minor bug in SpecConstr · 207151a3
      simonpj@microsoft.com authored
      In SpecConstr.isValue, we recorded a ConVal for a big-lambda,
      which seems wrong. I came across this when implementing System IF.
      The code now reads:
      
        isValue env (Lam b e)
          | isTyVar b = case isValue env e of
        		    Just _  -> Just LambdaVal	-- NB!
        		    Nothing -> Nothing
          | otherwise = Just LambdaVal
      207151a3
    • simonpj@microsoft.com's avatar
      Comments only · 7ecf87b2
      simonpj@microsoft.com authored
      7ecf87b2
    • simonpj@microsoft.com's avatar
      Fix a long-standing bug in FloatOut · c0fe534f
      simonpj@microsoft.com authored
      We really should not float anything out of an _inline_me_ Note,
      for reasons described in this new comment:
      	-- Do no floating at all inside INLINE.
      	-- The SetLevels pass did not clone the bindings, so it's
      	-- unsafe to do any floating, even if we dump the results
      	-- inside the Note (which is what we used to do).
      
      I'm about to get rid of these _inline_me_ Notes, but it's
      better to fix it anyway.  I found this bug when implementing System IF.
      c0fe534f