projects
/
ghc-hetmet.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (parent:
7ba2a2e
)
force APs, AP_STACKs and ThunkSelectors in :force
author
Simon Marlow
<simonmar@microsoft.com>
Wed, 25 Apr 2007 14:29:45 +0000
(14:29 +0000)
committer
Simon Marlow
<simonmar@microsoft.com>
Wed, 25 Apr 2007 14:29:45 +0000
(14:29 +0000)
compiler/ghci/RtClosureInspect.hs
patch
|
blob
|
history
diff --git
a/compiler/ghci/RtClosureInspect.hs
b/compiler/ghci/RtClosureInspect.hs
index
0624169
..
45c5b0f
100644
(file)
--- a/
compiler/ghci/RtClosureInspect.hs
+++ b/
compiler/ghci/RtClosureInspect.hs
@@
-168,6
+168,7
@@
readCType i
| i == BLACKHOLE = Blackhole
| i >= IND && i <= IND_STATIC = Indirection (fromIntegral i)
| fromIntegral i == aP_CODE = AP
| i == BLACKHOLE = Blackhole
| i >= IND && i <= IND_STATIC = Indirection (fromIntegral i)
| fromIntegral i == aP_CODE = AP
+ | i == AP_STACK = AP
| fromIntegral i == pAP_CODE = PAP
| otherwise = Other (fromIntegral i)
| fromIntegral i == pAP_CODE = PAP
| otherwise = Other (fromIntegral i)
@@
-179,6
+180,11
@@
isIndirection (Indirection _) = True
--isIndirection ThunkSelector = True
isIndirection _ = False
--isIndirection ThunkSelector = True
isIndirection _ = False
+isThunk (Thunk _) = True
+isThunk ThunkSelector = True
+isThunk AP = True
+isThunk _ = False
+
isFullyEvaluated :: a -> IO Bool
isFullyEvaluated a = do
closure <- getClosureData a
isFullyEvaluated :: a -> IO Bool
isFullyEvaluated a = do
closure <- getClosureData a
@@
-489,7
+495,7
@@
cvObtainTerm1 hsc_env force mb_ty hval = runTR hsc_env $ do
Nothing -> go tv tv hval
Just ty | isMonomorphic ty -> go ty ty hval
Just ty -> do
Nothing -> go tv tv hval
Just ty | isMonomorphic ty -> go ty ty hval
Just ty -> do
- (ty',rev_subst) <- instScheme (sigmaType$ fromJust mb_ty)
+ (ty',rev_subst) <- instScheme (sigmaType ty)
addConstraint tv ty'
term <- go tv tv hval
--restore original Tyvars
addConstraint tv ty'
term <- go tv tv hval
--restore original Tyvars
@@
-504,7
+510,7
@@
cvObtainTerm1 hsc_env force mb_ty hval = runTR hsc_env $ do
clos <- trIO $ getClosureData a
case tipe clos of
-- Thunks we may want to force
clos <- trIO $ getClosureData a
case tipe clos of
-- Thunks we may want to force
- Thunk _ | force -> seq a $ go tv ty a
+ t | isThunk t && force -> seq a $ go tv ty a
-- We always follow indirections
Indirection _ -> go tv ty $! (ptrs clos ! 0)
-- The interesting case
-- We always follow indirections
Indirection _ -> go tv ty $! (ptrs clos ! 0)
-- The interesting case