summaryrefslogtreecommitdiff
path: root/compiler/GHC/Driver/Main.hs
diff options
context:
space:
mode:
Diffstat (limited to 'compiler/GHC/Driver/Main.hs')
-rw-r--r--compiler/GHC/Driver/Main.hs24
1 files changed, 14 insertions, 10 deletions
diff --git a/compiler/GHC/Driver/Main.hs b/compiler/GHC/Driver/Main.hs
index 0ee84f7ca8..cb3c82ebd1 100644
--- a/compiler/GHC/Driver/Main.hs
+++ b/compiler/GHC/Driver/Main.hs
@@ -121,7 +121,7 @@ import GHC.Hs.Stats ( ppSourceStats )
import GHC.HsToCore
-import GHC.StgToByteCode ( byteCodeGen, stgExprToBCOs )
+import GHC.StgToByteCode ( byteCodeGen )
import GHC.IfaceToCore ( typecheckIface )
@@ -223,7 +223,6 @@ import GHC.Data.Stream (Stream)
import qualified GHC.SysTools
import Data.Data hiding (Fixity, TyCon)
-import Data.Maybe ( fromJust )
import Data.List ( nub, isPrefixOf, partition )
import Control.Monad
import Data.IORef
@@ -235,6 +234,7 @@ import Data.Set (Set)
import Data.Functor
import Control.DeepSeq (force)
import Data.Bifunctor (first)
+import GHC.Data.Maybe
{- **********************************************************************
%* *
@@ -1814,7 +1814,8 @@ doCodeGen hsc_env this_mod denv data_tycons
myCoreToStgExpr :: Logger -> DynFlags -> InteractiveContext
-> Module -> ModLocation -> CoreExpr
- -> IO ( StgRhs
+ -> IO ( Id
+ , [StgTopBinding]
, InfoTableProvMap
, CollectedCCs )
myCoreToStgExpr logger dflags ictxt this_mod ml prepd_expr = do
@@ -1824,14 +1825,14 @@ myCoreToStgExpr logger dflags ictxt this_mod ml prepd_expr = do
(mkPseudoUniqueE 0)
Many
(exprType prepd_expr)
- ([StgTopLifted (StgNonRec _ stg_expr)], prov_map, collected_ccs) <-
+ (stg_binds, prov_map, collected_ccs) <-
myCoreToStg logger
dflags
ictxt
this_mod
ml
[NonRec bco_tmp_id prepd_expr]
- return (stg_expr, prov_map, collected_ccs)
+ return (bco_tmp_id, stg_binds, prov_map, collected_ccs)
myCoreToStg :: Logger -> DynFlags -> InteractiveContext
-> Module -> ModLocation -> CoreProgram
@@ -2000,7 +2001,7 @@ hscParsedDecls hsc_env decls = runInteractiveHsc hsc_env $ do
stg_binds data_tycons mod_breaks
let src_span = srcLocSpan interactiveSrcLoc
- liftIO $ loadDecls interp hsc_env (src_span, Nothing) cbc
+ _ <- liftIO $ loadDecls interp hsc_env (src_span, Nothing) cbc
{- Load static pointer table entries -}
liftIO $ hscAddSptEntries hsc_env Nothing (cg_spt_entries tidy_cg)
@@ -2171,7 +2172,7 @@ hscCompileCoreExpr' hsc_env srcspan ds_expr
ml_hie_file = panic "hscCompileCoreExpr':ml_hie_file" }
; let ictxt = hsc_IC hsc_env
- ; (stg_expr, _, _) <-
+ ; (binding_id, stg_expr, _, _) <-
myCoreToStgExpr (hsc_logger hsc_env)
(hsc_dflags hsc_env)
ictxt
@@ -2180,13 +2181,16 @@ hscCompileCoreExpr' hsc_env srcspan ds_expr
prepd_expr
{- Convert to BCOs -}
- ; bcos <- stgExprToBCOs hsc_env
+ ; bcos <- byteCodeGen hsc_env
(icInteractiveModule ictxt)
- (exprType prepd_expr)
stg_expr
+ [] Nothing
{- load it -}
- ; loadExpr (hscInterp hsc_env) hsc_env srcspan bcos }
+ ; fv_hvs <- loadDecls (hscInterp hsc_env) hsc_env srcspan bcos
+ {- Get the HValue for the root -}
+ ; return (expectJust "hscCompileCoreExpr'"
+ $ lookup (idName binding_id) fv_hvs) }
{- **********************************************************************