Permalink
Commits on Sep 12, 2008
  1. Fix retainer profiling (#2576)

    simonmar committed Sep 12, 2008
  2. ext-core library: Add dead code eliminator for Core

    Added code for dead code elimination to the ext-core library. This can be used in concert with Language.Core.Merge to produce a single self-contained module without unnecessary cruft.
    catamorphism committed Sep 12, 2008
  3. ext-core library: Change syntax for primitive coercions

    Changed the ext-core syntax to include primitive coercions (left, right, sym, trans, etc.) as syntax rather than referring them to their names as in GHC. (I hope I updated the docs to reflect this...)
    catamorphism committed Sep 12, 2008
  4. ext-core library: Export a lot more things from Prims

    See comments for details.
    catamorphism committed Sep 12, 2008
  5. ext-core library: Extend Core preprocessor

    See comments for details.
    catamorphism committed Sep 12, 2008
  6. ext-core library: Fix performance bug

    isUtupleTy was implemented inefficiently (and is called a lot by the typechecker). Replaced with uglier but faster code.
    catamorphism committed Sep 12, 2008
  7. ext-core library: Add code for merging multiple Core modules into a s…

    …ingle module
    
    I added a new module, Merge, to the ext-core library that combines a list of ext-core modules into a new, uniquely renamed module.
    
    See comments in Merge.hs for more details.
    catamorphism committed Sep 12, 2008
Commits on Sep 11, 2008
  1. Include docs in the bindists

    igfoo committed Sep 11, 2008
  2. Don't install pwd

    igfoo committed Sep 11, 2008
  3. In stgReallocForGMP, we need to copy min(old_size,new_size)

    We used to always copy old_size
    igfoo committed Sep 11, 2008
Commits on Sep 10, 2008
  1. Remove dataConInstOrigDictsAndArgTys

    This suspicious function had just one call, in BuildTyCl.mkNewTyConRhs.
    I've done it another way now, which is tidier.
    simonpj@microsoft.com committed Sep 10, 2008
  2. Fix debug message formatting on Windows

    simonpj@microsoft.com committed Sep 10, 2008
  3. Check the *right* set of type variables for escape!

    I did the wrong checkSigTyVars, which (happily) triggered an ASSERT
    failure.  This should fix it.
    simonpj@microsoft.com committed Sep 10, 2008
  4. More refactoring of instance declarations (fixes Trac #2572)

    In refactoring instance declarations I'd taken a short cut over
    scoped type variables, but it wasn't right as #2572 shows.
    
    Fixing it required a significant chunk of further refactoring,
    alas. But it's done!  Quite tidily as it turns out.
    
    The main issue is that when typechecking a default method, we
    need two sets of type variables in scope
    	class C a where
       	  op :: forall b. ...
    	  op = e
    In 'e', *both* 'a' and 'b' are in scope.  But the type of the
    default method has a nested flavour
    	op :: forall a. C a => forall b. ....
    and our normal scoping mechanisms don't bring 'b' into scope.
    (And probably shouldn't.)  
    
    Solution (which is done for instance methods too) is to use
    a local defintion, like this:
    
      $dmop :: forall a. C a => forall b. ....
      $dmop a d = let 
                     op :: forall b. ...
                     op = e
                  in op
    
    and now the scoping works out.  I hope I have now see the
    last of this code for a bit!
    simonpj@microsoft.com committed Sep 10, 2008
  5. Fix Trac #2581: inlining of record selectors

    Bryan discovered that a non-trivial record selector (non-trivial in 
    the sense that it has to reconstruct the result value because of
    UNPACK directives) weren't being inlined.  The reason was that the
    unfolding generated by MkId.mRecordSelId was never being optimised
    *at all*, and hence looked big, and hence wasn't inlined.
    
    (The out-of-line version *is* put into the code of the module
    and *is* optimised, which made this bug pretty puzzling.  But the
    unfolding inside the record-selector-Id itself, which is a GlobalId
    and hence does not get its inlining updated like LocalIds, was
    big and fat.)
    
    Solution: I wrote a very simple optimiser, CoreUnfold.simplOptExpr,
    which does enough optimisation to solve this particular problem.
    It's short, simple, and will be useful in other contexts.
    simonpj@microsoft.com committed Sep 10, 2008
  6. Fix Trac #2573; and explanatory comment

    simonpj@microsoft.com committed Sep 10, 2008
  7. Fix the zonking of HsWrappers

    HsWrappers are horribly inconsistent at the moment. I intended that
      WpLam, WpApp     are for evidence abstraction/application
      WpTyLam, WpTyApp are for type abstraction/application
    
    But when we zonk (WpApp co), where co is a coercion variable, we 
    get a *coercion* not a coercion *variable*.   So for now I'm making
    it into a WpTyApp, which the desugarer handles perfectly well.
    
    (I'd forgotten to zonk it properly at all; that is the bug that 
    this patch fixes.)
    simonpj@microsoft.com committed Sep 10, 2008
  8. Add newDictOcc, newDictOccs

    simonpj@microsoft.com committed Sep 10, 2008
  9. Layout and type synonyms only

    simonpj@microsoft.com committed Sep 10, 2008
  10. Robustify the setting of implied flags

    When setting implied flags, do so recursively.  So if -Xa implies -Xb,
    and -Xb implies -Xc, we do the right thing. 
    
    I thought we needed this, but we don't.  But it seems like a good idea
    anyway.
    simonpj@microsoft.com committed Sep 10, 2008
  11. Rename a variable

    simonpj@microsoft.com committed Sep 10, 2008
  12. Comments only

    simonpj@microsoft.com committed Sep 10, 2008
  13. Simplify the type signature for tcPolyBinds

    simonpj@microsoft.com committed Sep 10, 2008
Commits on Sep 9, 2008
  1. Link to core.pdf, not core.ps.gz

    igfoo committed Sep 9, 2008
  2. Tell GHC which module nON_EXHAUSTIVE_GUARDS_ERROR_ID comes from

    This one was missed when the error-ids all moved to Control.Exception.Base
    (The nofib test 'fluid' showed it up.)
    simonpj@microsoft.com committed Sep 9, 2008
  3. Improve float-in somewhat

    See Note [Floating in past a lambda group]. The new thing
    here is that we previously were not floating in past a group
    that had (\(a:*) \(x:State# a). e), with a type var *and* a
    one-shot lambda.  
    
    The fix makes wave4main allocate 2% less, and doesn't change any other
    nofib number, so it's not a big deal.
    simonpj@microsoft.com committed Sep 9, 2008