diff options
author | Josh Meredith <joshmeredith2008@gmail.com> | 2022-06-07 17:20:27 +0000 |
---|---|---|
committer | Josh Meredith <joshmeredith2008@gmail.com> | 2022-06-16 10:44:34 +0000 |
commit | 8daea76fd41f2987efe4cd1b7162bd5bef91c135 (patch) | |
tree | b04b16be1eab69f7143996030e68b19b24162afb /compiler/GHC/StgToJS/CodeGen.hs | |
parent | 91746c5f04534ee7c7e4a3430e44d21d359da456 (diff) | |
download | haskell-wip/js-binary.tar.gz |
Replace GHCJS Objectable with GHC Binarywip/js-binary
Diffstat (limited to 'compiler/GHC/StgToJS/CodeGen.hs')
-rw-r--r-- | compiler/GHC/StgToJS/CodeGen.hs | 12 |
1 files changed, 7 insertions, 5 deletions
diff --git a/compiler/GHC/StgToJS/CodeGen.hs b/compiler/GHC/StgToJS/CodeGen.hs index 89d30111ea..2522cf8007 100644 --- a/compiler/GHC/StgToJS/CodeGen.hs +++ b/compiler/GHC/StgToJS/CodeGen.hs @@ -48,7 +48,7 @@ import GHC.Utils.Encoding import GHC.Utils.Logger import GHC.Utils.Panic import GHC.Utils.Misc -import qualified GHC.Utils.Monad.State.Strict as State +import qualified Control.Monad.Trans.State.Strict as State import GHC.Utils.Outputable hiding ((<>)) import qualified Data.Set as S @@ -56,6 +56,7 @@ import qualified Data.ByteString as BS import qualified Data.ByteString.Lazy as BL import Data.Monoid import Control.Monad +import Control.Monad.Trans.Class import Data.Bifunctor -- | Code generator for JavaScript @@ -77,7 +78,7 @@ stgToJS logger config stg_binds0 this_mod spt_entries foreign_stubs cccs output_ -- TODO: add dump pass for optimized STG ast for JS - let obj = runG config this_mod unfloated_binds $ do + obj <- runG config this_mod unfloated_binds $ do ifProfilingM $ initCostCentres cccs (sym_table, lus) <- genUnits this_mod stg_binds spt_entries foreign_stubs @@ -87,12 +88,13 @@ stgToJS logger config stg_binds0 this_mod spt_entries foreign_stubs cccs output_ return (ts ++ luOtherExports u, luStat u) deps <- genDependencyData this_mod lus - pure $! Object.object' (moduleName this_mod) sym_table deps (map (second BL.fromStrict) p) + lift $ Object.object' (moduleName this_mod) sym_table deps (map (second BL.fromStrict) p) -- Doc to dump when -ddump-js is enabled let mod_name = renderWithContext defaultSDocContext (ppr this_mod) + o <- Object.readObject mod_name obj putDumpFileMaybe logger Opt_D_dump_js "JavaScript code" FormatJS - $ vcat (fmap (docToSDoc . jsToDoc . Object.oiStat) (Object.readObject mod_name obj)) + $ vcat (fmap (docToSDoc . jsToDoc . Object.oiStat) o) BL.writeFile output_fn obj @@ -235,7 +237,7 @@ serializeLinkableUnit :: HasDebugCallStack -> G (Object.SymbolTable, [ShortText], BS.ByteString) serializeLinkableUnit _m st i ci si stat rawStat fe fi = do !i' <- mapM idStr i - let !(!st', !o) = Object.serializeStat st ci si stat rawStat fe fi + !(!st', !o) <- lift $ Object.serializeStat st ci si stat rawStat fe fi return (st', i', o) -- deepseq results? where idStr i = itxt <$> jsIdI i |