X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=compiler%2Fghci%2FRtClosureInspect.hs;h=170dec028616bd79d422d231296847f64f3e6e6e;hb=790cd00dc6ab044a6dd436a9aa781750e0d750a0;hp=ef8d367602df5ba93bdd653595f2b5f7c4fd8601;hpb=316d4c57e003dee948de9fb12b423ec4247d34b5;p=ghc-hetmet.git diff --git a/compiler/ghci/RtClosureInspect.hs b/compiler/ghci/RtClosureInspect.hs index ef8d367..170dec0 100644 --- a/compiler/ghci/RtClosureInspect.hs +++ b/compiler/ghci/RtClosureInspect.hs @@ -19,12 +19,12 @@ module RtClosureInspect( lookupAddressEnv, ClosureType(..), - getClosureData, + getClosureData, -- :: a -> IO Closure Closure ( tipe, infoTable, ptrs, nonPtrs ), - getClosureType, - isConstr, - isIndirection, - getInfoTablePtr, + getClosureType, -- :: a -> IO ClosureType + isConstr, -- :: ClosureType -> Bool + isIndirection, -- :: ClosureType -> Bool + getInfoTablePtr, -- :: a -> Ptr StgInfoTable Term(..), printTerm, @@ -61,7 +61,6 @@ import Name import VarEnv import OccName import VarSet -import Unique import {-#SOURCE#-} TcRnDriver ( tcRnRecoverDataCon ) import TysPrim @@ -125,6 +124,11 @@ isPrim _ = False termType t@(Suspension {}) = mb_ty t termType t = Just$ ty t +isFullyEvaluatedTerm :: Term -> Bool +isFullyEvaluatedTerm Term {subTerms=tt} = all isFullyEvaluatedTerm tt +isFullyEvaluatedTerm Suspension {} = False +isFullyEvaluatedTerm Prim {} = True + instance Outputable (Term) where ppr = head . customPrintTerm customPrintTermBase @@ -358,7 +362,7 @@ customPrintTermBase showP = , largeIntegerDataConName] isTupleDC Term{dc=dc} = dc `elem` snd (unzip (elems boxedTupleArr)) isDC a_dc Term{dc=dc} = a_dc == dc - coerceShow f Term{val=val} = return . text . show . f . unsafeCoerce# $ val + coerceShow f = return . text . show . f . unsafeCoerce# . val --TODO pprinting of list terms is not lazy doList h t = do let elems = h : getListTerms t @@ -379,12 +383,6 @@ customPrintTermBase showP = getListTerms t@Suspension{} = [t] getListTerms t = pprPanic "getListTerms" (ppr t) -isFullyEvaluatedTerm :: Term -> Bool -isFullyEvaluatedTerm Term {subTerms=tt} = all isFullyEvaluatedTerm tt -isFullyEvaluatedTerm Suspension {} = False -isFullyEvaluatedTerm Prim {} = True - - ----------------------------------- -- Type Reconstruction -----------------------------------