X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=compiler%2Fmain%2FHscMain.lhs;h=06279250f3e852401d6c09027692ff9766565e81;hb=3c22606bf3114747deeae0a8a1d5832ee834d9d1;hp=cafba835c69b31928fafc7484c62bbf429abd952;hpb=6e2021202c3eec0c95a9d0b7c355559f2630d380;p=ghc-hetmet.git diff --git a/compiler/main/HscMain.lhs b/compiler/main/HscMain.lhs index cafba83..0627925 100644 --- a/compiler/main/HscMain.lhs +++ b/compiler/main/HscMain.lhs @@ -193,7 +193,7 @@ data HscStatus -- This is a hack. We can't compile C files here -- since it's done in DriverPipeline. For now we -- just return True if we want the caller to compile - -- it for us. + -- them for us. -- Status of a compilation to byte-code. data InteractiveStatus @@ -289,31 +289,26 @@ hscMkCompiler norecomp messenger frontend backend -- 1 2 3 4 5 6 7 8 9 -- Compile Haskell, boot and extCore in OneShot mode. hscCompileOneShot :: Compiler HscStatus -hscCompileOneShot hsc_env mod_summary = - compiler hsc_env mod_summary - where mkComp = hscMkCompiler norecompOneShot oneShotMsg - -- How to compile nonBoot files. - nonBootComp inp = hscSimplify inp >>= hscNormalIface >>= - hscWriteIface >>= hscOneShot - -- How to compile boot files. - bootComp inp = hscSimpleIface inp >>= hscWriteIface >>= hscConst (HscRecomp False) - compiler - = case ms_hsc_src mod_summary of - ExtCoreFile - -> mkComp hscCoreFrontEnd nonBootComp - HsSrcFile - -> mkComp hscFileFrontEnd nonBootComp - HsBootFile - -> mkComp hscFileFrontEnd bootComp +hscCompileOneShot = hscCompileHardCode norecompOneShot oneShotMsg hscOneShot (hscConst (HscRecomp False)) -- Compile Haskell, boot and extCore in batch mode. hscCompileBatch :: Compiler (HscStatus, ModIface, ModDetails) -hscCompileBatch hsc_env mod_summary - = compiler hsc_env mod_summary - where mkComp = hscMkCompiler norecompBatch batchMsg +hscCompileBatch = hscCompileHardCode norecompBatch batchMsg hscBatch hscNothing + +-- Compile to hardcode (C,asm,...). This general structure is shared by OneShot and Batch. +hscCompileHardCode :: NoRecomp result -- No recomp necessary + -> (Maybe (Int,Int) -> Bool -> Comp ()) -- Message callback + -> ((ModIface, ModDetails, CgGuts) -> Comp result) -- Compile normal file + -> ((ModIface, ModDetails, ModGuts) -> Comp result) -- Compile boot file + -> Compiler result +hscCompileHardCode norecomp msg compNormal compBoot hsc_env mod_summary = + compiler hsc_env mod_summary + where mkComp = hscMkCompiler norecomp msg + -- How to compile nonBoot files. nonBootComp inp = hscSimplify inp >>= hscNormalIface >>= - hscWriteIface >>= hscBatch - bootComp inp = hscSimpleIface inp >>= hscWriteIface >>= hscNothing + hscWriteIface >>= compNormal + -- How to compile boot files. + bootComp inp = hscSimpleIface inp >>= hscWriteIface >>= compBoot compiler = case ms_hsc_src mod_summary of ExtCoreFile