X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=ghc%2Fcompiler%2Futils%2FUbiq.lhi;h=0ffea8b5f41cc07304fef5f141a8677b8cc83ffc;hb=12899612693163154531da3285ec99c1c8ca2226;hp=a4168519910db049dabc546e853a0d392287eb87;hpb=7d61cb61daa5e433a0cb85b34b7f0c58b2f961ff;p=ghc-hetmet.git diff --git a/ghc/compiler/utils/Ubiq.lhi b/ghc/compiler/utils/Ubiq.lhi index a416851..0ffea8b 100644 --- a/ghc/compiler/utils/Ubiq.lhi +++ b/ghc/compiler/utils/Ubiq.lhi @@ -14,40 +14,38 @@ import Class ( GenClass, GenClassOp, Class(..), ClassOp ) import ClosureInfo ( ClosureInfo, LambdaFormInfo ) import CmdLineOpts ( SimplifierSwitch, SwitchResult ) import CoreSyn ( GenCoreArg, GenCoreBinder, GenCoreBinding, GenCoreExpr, - GenCoreCaseAlts, GenCoreCaseDefault + GenCoreCaseAlts, GenCoreCaseDefault, Coercion ) -import CoreUnfold ( UnfoldingDetails, UnfoldingGuidance ) +import CoreUnfold ( Unfolding, UnfoldingGuidance ) import CostCentre ( CostCentre ) import FieldLabel ( FieldLabel ) import FiniteMap ( FiniteMap ) import HeapOffs ( HeapOffset ) import HsCore ( UnfoldingCoreExpr ) import HsPat ( OutPat ) -import HsPragmas ( ClassOpPragmas, ClassPragmas, DataPragmas, GenPragmas, - InstancePragmas - ) +import HsPragmas ( ClassOpPragmas, ClassPragmas, DataPragmas, GenPragmas, InstancePragmas ) import Id ( StrictnessMark, GenId, Id(..) ) import IdInfo ( IdInfo, OptIdInfo(..), ArityInfo, DeforestInfo, Demand, StrictnessInfo, UpdateInfo ) import Kind ( Kind ) import Literal ( Literal ) +import MachRegs ( Reg ) import Maybes ( MaybeErr ) import MatchEnv ( MatchEnv ) -import Name ( Name ) -import NameTypes ( FullName, ShortName ) -import Outputable ( ExportFlag, NamedThing(..), Outputable(..) ) +import Name ( Module(..), OrigName, RdrName, Name, ExportFlag, NamedThing(..) ) +import Outputable ( Outputable(..) ) import PprStyle ( PprStyle ) import PragmaInfo ( PragmaInfo ) import Pretty ( PrettyRep ) import PrimOp ( PrimOp ) import PrimRep ( PrimRep ) -import ProtoName ( ProtoName ) +import RnHsSyn ( RnName ) import SMRep ( SMRep ) import SrcLoc ( SrcLoc ) import TcType ( TcMaybe ) import TyCon ( TyCon, Arity(..) ) import TyVar ( GenTyVar, TyVar(..) ) import Type ( GenType, Type(..) ) -import UniqFM ( UniqFM ) +import UniqFM ( UniqFM, Uniquable(..) ) import UniqSupply ( UniqSupply ) import Unique ( Unique ) import Usage ( GenUsage, Usage(..) ) @@ -57,14 +55,7 @@ import Util ( Ord3(..) ) -- to try to contain their visibility. class NamedThing a where - getExportFlag :: a -> ExportFlag - isLocallyDefined :: a -> Bool - getOrigName :: a -> (_PackedString, _PackedString) - getOccurrenceName :: a -> _PackedString - getInformingModules :: a -> [_PackedString] - getSrcLoc :: a -> SrcLoc - getItsUnique :: a -> Unique - fromPreludeCore :: a -> Bool + getName :: a -> Name class OptIdInfo a where noInfo :: a getInfo :: IdInfo -> a @@ -74,6 +65,8 @@ class Ord3 a where cmp :: a -> a -> Int# class Outputable a where ppr :: PprStyle -> a -> Int -> Bool -> PrettyRep +class Uniquable a where + uniqueOf :: a -> Unique -- For datatypes, we ubiquitize those types that (a) are -- used everywhere and (b) the compiler doesn't lose much @@ -87,6 +80,7 @@ data CLabel data ClassOpPragmas a data ClassPragmas a data ClosureInfo +data Coercion data CostCentre data CSeq data DataPragmas a @@ -95,7 +89,6 @@ data Demand data ExportFlag data FieldLabel data FiniteMap a b -data FullName -- NB: fails the optimisation criterion data GenClass a b data GenClassOp a data GenCoreArg a b c @@ -118,14 +111,16 @@ data Literal data MaybeErr a b data MatchEnv a b data Name +data OrigName = OrigName _PackedString _PackedString +data RdrName = Unqual _PackedString | Qual _PackedString _PackedString +data Reg data OutPat a b c data PprStyle data PragmaInfo data PrettyRep data PrimOp data PrimRep -- NB: an enumeration -data ProtoName -data ShortName -- NB: fails the optimisation criterion +data RnName data SimplifierSwitch data SMRep data SrcLoc @@ -138,12 +133,13 @@ data UnfoldingCoreExpr a data UniqFM a data UpdateInfo data UniqSupply -data UnfoldingDetails +data Unfolding data UnfoldingGuidance data Unique -- NB: fails the optimisation criterion -- don't get clever and unexpand some of these synonyms -- (GHC 0.26 will barf) +type Module = _PackedString type Arity = Int type Class = GenClass (GenTyVar (GenUsage Unique)) Unique type ClassOp = GenClassOp (GenType (GenTyVar (GenUsage Unique)) Unique) @@ -151,4 +147,22 @@ type Id = GenId (GenType (GenTyVar (GenUsage Unique)) Unique) type Type = GenType (GenTyVar (GenUsage Unique)) Unique type TyVar = GenTyVar (GenUsage Unique) type Usage = GenUsage Unique + +-- These are here only for SPECIALIZing in FiniteMap (ToDo:move?) +instance Ord Reg +instance Ord OrigName +instance Ord RdrName +instance Ord CLabel +instance Ord TyCon +instance Eq Reg +instance Eq OrigName +instance Eq RdrName +instance Eq CLabel +instance Eq TyCon +-- specializing in UniqFM, UniqSet +instance Uniquable Unique +instance Uniquable RnName +instance Uniquable Name +-- specializing in Name +instance NamedThing RnName \end{code}