-#ifndef GHCI
-linkObjs = panic "CmLink.linkObjs: no interpreter"
-#else
-linkObjs [] pls = linkFinish pls []
-linkObjs (l@(LM _ m uls) : ls) pls
- | all isObject uls = do
- if isLoaded l pls then linkObjs ls pls else do
- let objs = [ file | DotO file <- uls ]
- mapM_ loadObj objs
- linkObjs ls pls{objects_loaded = l : objects_loaded pls}
- | all isInterpretable uls = linkInterpretedCode (l:ls) [] pls
- | otherwise = invalidLinkable
-
-isLoaded :: Linkable -> PersistentLinkerState -> Bool
-isLoaded l pls =
- case findModuleLinkable_maybe (objects_loaded pls) (linkableModName l) of
- Nothing -> False
- Just m -> linkableTime l == linkableTime m
-
-linkInterpretedCode [] ul_trees pls = linkFinish pls ul_trees
-linkInterpretedCode (l@(LM _ m uls) : ls) ul_trees pls
- | all isInterpretable uls =
- if isLoaded l pls then linkInterpretedCode ls ul_trees pls else
- linkInterpretedCode ls (uls++ul_trees)
- pls{objects_loaded = l : objects_loaded pls}
- | any isObject uls
- = panic "linkInterpretedCode: trying to link object code to interpreted code"
- | otherwise = invalidLinkable