Skip to content

Commit a55ed28

Browse files
committed
Guard JS modules behind HAVE_JS_BACKEND and disable library-for-ghci for stage1
- Guard GHC.HsToCore.Foreign.JavaScript import and ArchJavaScript pattern matches in dsFImport/dsFExport behind #if defined(HAVE_JS_BACKEND), matching the existing HAVE_INTERPRETER guard pattern for Wasm. - Move 11 JS-related modules (GHC.HsToCore.Foreign.JavaScript, GHC.JS.*) from unconditional Exposed-Modules to the if flag(js-backend) section in ghc.cabal.in. These modules are only needed when the JS backend is enabled and were being compiled unconditionally in stage1 despite -js-backend. - Set library-for-ghci: False in cabal.project.stage1. Stage1 never loads libraries interactively, so generating GHCi-compatible .o files from every .a archive is pure waste. Stage2 retains library-for-ghci: True. Estimated stage1 build time savings: 3-7% on top of existing minimal-stage1.
1 parent ff77684 commit a55ed28

3 files changed

Lines changed: 19 additions & 13 deletions

File tree

cabal.project.stage1

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,7 @@ package *
7575

7676
if !os(windows)
7777
package *
78-
library-for-ghci: True
78+
library-for-ghci: False
7979

8080
package ghc
8181
flags: +bootstrap

compiler/GHC/HsToCore/Foreign/Decl.hs

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,9 @@ import GHC.Data.FastString
2020
import GHC.Tc.Utils.Monad -- temp
2121

2222
import GHC.HsToCore.Foreign.C
23+
#if defined(HAVE_JS_BACKEND)
2324
import GHC.HsToCore.Foreign.JavaScript
25+
#endif
2426
#if defined(HAVE_INTERPRETER)
2527
import GHC.HsToCore.Foreign.Wasm
2628
#endif
@@ -136,9 +138,11 @@ dsFImport id co (CImport _ cconv safety mHeader spec) = do
136138
let cconv' = unLoc cconv
137139
safety' = unLoc safety
138140
case (platformArch platform, cconv') of
141+
#if defined(HAVE_JS_BACKEND)
139142
(ArchJavaScript, _) -> do
140143
(bs, h, c) <- dsJsImport id co spec cconv' safety' mHeader
141144
pure (bs, h, c, [])
145+
#endif
142146
#if defined(HAVE_INTERPRETER)
143147
(ArchWasm32, JavaScriptCallConv) ->
144148
dsWasmJSImport id co spec safety'
@@ -184,9 +188,11 @@ dsFExport :: Id -- Either the exported Id,
184188
dsFExport fn_id co ext_name cconv is_dyn = do
185189
platform <- getPlatform
186190
case (platformArch platform, cconv) of
191+
#if defined(HAVE_JS_BACKEND)
187192
(ArchJavaScript, _) -> do
188193
(h, c, ts) <- dsJsFExport fn_id co ext_name cconv is_dyn
189194
pure (h, c, ts, [fn_id], [])
195+
#endif
190196
#if defined(HAVE_INTERPRETER)
191197
(ArchWasm32, JavaScriptCallConv) ->
192198
dsWasmJSExport fn_id co ext_name

compiler/ghc.cabal.in

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -630,7 +630,6 @@ Library
630630
GHC.HsToCore.Foreign.C
631631
GHC.HsToCore.Foreign.Call
632632
GHC.HsToCore.Foreign.Decl
633-
GHC.HsToCore.Foreign.JavaScript
634633
GHC.HsToCore.Foreign.Prim
635634
GHC.HsToCore.Foreign.Utils
636635

@@ -681,16 +680,6 @@ Library
681680
GHC.Iface.Warnings
682681
GHC.IfaceToCore
683682
GHC.Iface.Type
684-
GHC.JS.Ident
685-
GHC.JS.Make
686-
GHC.JS.Optimizer
687-
GHC.JS.Opt.Expr
688-
GHC.JS.Opt.Simple
689-
GHC.JS.Ppr
690-
GHC.JS.Syntax
691-
GHC.JS.JStg.Syntax
692-
GHC.JS.JStg.Monad
693-
GHC.JS.Transform
694683
GHC.Linker.Types
695684
GHC.Linker.Config
696685
GHC.Linker.Dynamic
@@ -1097,9 +1086,20 @@ Library
10971086
GHC.CmmToAsm.LA64.Regs
10981087
GHC.CmmToAsm.Reg.Linear.LA64
10991088

1100-
-- JavaScript Backend (StgToJS)
1089+
-- JavaScript Backend (JS IR, foreign decl desugaring, StgToJS)
11011090
if flag(js-backend)
11021091
Exposed-Modules:
1092+
GHC.HsToCore.Foreign.JavaScript
1093+
GHC.JS.Ident
1094+
GHC.JS.Make
1095+
GHC.JS.Optimizer
1096+
GHC.JS.Opt.Expr
1097+
GHC.JS.Opt.Simple
1098+
GHC.JS.Ppr
1099+
GHC.JS.Syntax
1100+
GHC.JS.JStg.Syntax
1101+
GHC.JS.JStg.Monad
1102+
GHC.JS.Transform
11031103
GHC.Driver.Config.StgToJS
11041104
GHC.StgToJS
11051105
GHC.StgToJS.Apply

0 commit comments

Comments
 (0)