Wed Oct 11 05:05:18 PDT 2006  Simon Marlow <[EMAIL PROTECTED]>
  * Interface file optimisation and removal of nameParent
  
  This large commit combines several interrelated changes:
  
    - IfaceSyn now contains actual Names rather than the special
      IfaceExtName type.  The binary interface file contains
      a symbol table of Names, where each entry is a (package,
      ModuleName, OccName) triple.  Names in the IfaceSyn point
      to entries in the symbol table.
  
      This reduces the size of interface files, which should
      hopefully improve performance (not measured yet).
  
      The toIfaceXXX functions now do not need to pass around
      a function from Name -> IfaceExtName, which makes that
      code simpler.
  
    - Names now do not point directly to their parents, and the
      nameParent operation has gone away.  It turned out to be hard to
      keep this information consistent in practice, and the parent info
      was only valid in some Names.  Instead we made the following
      changes:
  
      * ImportAvails contains a new field 
            imp_parent :: NameEnv AvailInfo
        which gives the family info for any Name in scope, and
        is used by the renamer when renaming export lists, amongst
        other things.  This info is thrown away after renaming.
  
      * The mi_ver_fn field of ModIface now maps to
        (OccName,Version) instead of just Version, where the
        OccName is the parent name.  This mapping is used when
        constructing the usage info for dependent modules.
        There may be entries in mi_ver_fn for things that are not in
        scope, whereas imp_parent only deals with in-scope things.
  
      * The md_exports field of ModDetails now contains
        [AvailInfo] rather than NameSet.  This gives us
        family info for the exported names of a module.
  
  Also:
  
     - ifaceDeclSubBinders moved to IfaceSyn (seems like the
       right place for it).
  
     - heavily refactored renaming of import/export lists.
  
     - Unfortunately external core is now broken, as it relied on
       IfaceSyn.  It requires some attention.

    M ./compiler/basicTypes/MkId.lhs -2 +2
    M ./compiler/basicTypes/Name.lhs -42 +56
    M ./compiler/basicTypes/RdrName.lhs -3 +2
    M ./compiler/codeGen/CodeGen.lhs -1 +1
    M ./compiler/deSugar/Desugar.lhs -4 +5
    M ./compiler/deSugar/DsMeta.hs -1 +4
    M ./compiler/iface/BinIface.hs -50 +195
    M ./compiler/iface/IfaceEnv.lhs -99 +57
    M ./compiler/iface/IfaceSyn.lhs -47 +108
    M ./compiler/iface/IfaceType.lhs -96 +45
    M ./compiler/iface/LoadIface.lhs -87 +16
    M ./compiler/iface/MkIface.lhs -252 +298
    M ./compiler/iface/TcIface.lhs -45 +33
    M ./compiler/main/GHC.hs -6 +6
    M ./compiler/main/HscMain.lhs -2 +4
    M ./compiler/main/HscTypes.lhs -29 +43
    M ./compiler/main/Main.hs -1 +11
    M ./compiler/main/TidyPgm.lhs -10 +5
    M ./compiler/parser/ParserCore.y -11 +8
    M ./compiler/prelude/PrelNames.lhs -49 +44
    M ./compiler/prelude/TysPrim.lhs -1
    M ./compiler/prelude/TysWiredIn.lhs -17 +14
    M ./compiler/rename/RnEnv.lhs -12 +28
    M ./compiler/rename/RnExpr.lhs -1 +4
    M ./compiler/rename/RnNames.lhs -352 +456
    M ./compiler/typecheck/TcEnv.lhs -2 +2
    M ./compiler/typecheck/TcForeign.lhs -1 +1
    M ./compiler/typecheck/TcRnDriver.lhs -22 +19
    M ./compiler/typecheck/TcRnMonad.lhs -3 +2
    M ./compiler/typecheck/TcRnTypes.lhs -16 +37
    M ./compiler/typecheck/TcTyDecls.lhs -2 +2
    M ./compiler/types/Coercion.lhs -1 +1
    M ./compiler/types/TyCon.lhs -1 +15
    M ./compiler/types/TypeRep.lhs -1
    M ./compiler/utils/Binary.hs -100 +61
    M ./compiler/utils/IOEnv.hs -2 +5
_______________________________________________
Cvs-ghc mailing list
[EMAIL PROTECTED]
http://www.haskell.org/mailman/listinfo/cvs-ghc

Reply via email to