X-Git-Url: http://git.megacz.com/?p=ghc-hetmet.git;a=blobdiff_plain;f=compiler%2Fmain%2FHscMain.lhs;h=4413c52ec2538479ff2252a4a8897dfdc5b9de6e;hp=463c3035364adb44bc990a14e7b48d2205435df5;hb=cdce647711c0f46f5799b24de087622cb77e647f;hpb=6d94e4fef600e9f14112e11d3e1ff20834bf3446 diff --git a/compiler/main/HscMain.lhs b/compiler/main/HscMain.lhs index 463c303..4413c52 100644 --- a/compiler/main/HscMain.lhs +++ b/compiler/main/HscMain.lhs @@ -76,7 +76,6 @@ import CodeGen ( codeGen ) import CmmParse ( parseCmmFile ) import CodeOutput ( codeOutput ) import NameEnv ( emptyNameEnv ) -import Breakpoints ( noDbgSites ) import DynFlags import ErrUtils @@ -289,31 +288,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 @@ -641,7 +635,7 @@ hscInteractive (iface, details, cgguts) prepd_binds <- {-# SCC "CorePrep" #-} corePrepPgm dflags core_binds data_tycons ; ----------------- Generate byte code ------------------ - comp_bc <- byteCodeGen dflags prepd_binds data_tycons + comp_bc <- byteCodeGen dflags prepd_binds data_tycons (md_modBreaks details) ------------------ Create f-x-dynamic C-side stuff --- (istub_h_exists, istub_c_exists) <- outputForeignStubs dflags this_mod location foreign_stubs @@ -687,7 +681,7 @@ hscFileCheck hsc_env mod_summary = do { md_exports = tcg_exports tc_result, md_insts = tcg_insts tc_result, md_fam_insts = tcg_fam_insts tc_result, - md_dbg_sites = noDbgSites, + md_modBreaks = emptyModBreaks, md_rules = [panic "no rules"] } -- Rules are CoreRules, not the -- RuleDecls we get out of the typechecker