Skip to content
  • Simon Marlow's avatar
    [project @ 2003-03-03 12:43:31 by simonmar] · 19108ede
    Simon Marlow authored
    A round of space-leak fixing.
    
      - re-instate zapping of the PersistentCompilerState at various
        points during the compilation cycle in HscMain.  This affects
        one-shot compilation only, since in this mode the information
        collected in the PCS is not required after creating the final
        interface file.
    
      - Unravel the recursive dependency between MkIface and
        CoreTidy/CoreToStg.  Previously the CafInfo for each binding was
        calculated by CoreToStg, and fed back into the IdInfo of the Ids
        generated by CoreTidy (an earlier pass).  MkIface then took this
        IdInfo and the bindings from CoreTidy to generate the interface;
        but it couldn't do this until *after* CoreToStg, because the CafInfo
        hadn't been calculated yet.  The result was that the CoreTidy
        output lived until after CoreToStg, and at the same time as the
        CorePrep and STG syntax, which is wasted space, not to mention
        the complexity and general ugliness in HscMain.
    
        So now we calculate CafInfo directly in CoreTidy.  The downside is
        that we have to predict what CorePrep is going to do to the
        bindings so we can tell what will turn into a CAF later, but it's
        no worse than before (it turned out that we were doing this
        prediction before in CoreToStg anyhow).
    
      - The typechecker lazilly typechecks unfoldings.  It turns out that
        this is a good idea from a performance perspective, but it also
        means that it must hang on to all the information it needs to
        do the typechecking.  Previously this meant holding on to the
        whole of the typechecker's environment, which includes all sorts
        of stuff which isn't necessary to typecheck unfoldings.  By paring
        down the environment captured by the lazy unfoldings, we can
        save quite a bit of space in the phases after typechecking.
    19108ede