Skip to content
Snippets Groups Projects
Commit 0db77341 authored by Cheng Shao's avatar Cheng Shao
Browse files

driver: fix -fexternal-interpreter flag for JS backend

Previously, -fexternal-interpreter is broken for JS backend, since GHC
would attempt to launch a non-existent ghc-iserv* executable. This
commit fixes it by adjusting pattern matching order in
setTopSessionDynFlags.

(cherry picked from commit 621c753d)
parent b546f245
No related branches found
No related tags found
No related merge requests found
......@@ -676,6 +676,24 @@ setTopSessionDynFlags dflags = do
-- Interpreter
interp <- if
-- JavaScript interpreter
| ArchJavaScript <- platformArch (targetPlatform dflags)
-> do
s <- liftIO $ newMVar InterpPending
loader <- liftIO Loader.uninitializedLoader
let cfg = JSInterpConfig
{ jsInterpNodeConfig = defaultNodeJsSettings
, jsInterpScript = topDir dflags </> "ghc-interp.js"
, jsInterpTmpFs = hsc_tmpfs hsc_env
, jsInterpTmpDir = tmpDir dflags
, jsInterpLogger = hsc_logger hsc_env
, jsInterpCodegenCfg = initStgToJSConfig dflags
, jsInterpUnitEnv = hsc_unit_env hsc_env
, jsInterpFinderOpts = initFinderOpts dflags
, jsInterpFinderCache = hsc_FC hsc_env
}
return (Just (Interp (ExternalInterp (ExtJS (ExtInterpState cfg s))) loader))
-- external interpreter
| gopt Opt_ExternalInterpreter dflags
-> do
......@@ -704,24 +722,6 @@ setTopSessionDynFlags dflags = do
loader <- liftIO Loader.uninitializedLoader
return (Just (Interp (ExternalInterp (ExtIServ (ExtInterpState conf s))) loader))
-- JavaScript interpreter
| ArchJavaScript <- platformArch (targetPlatform dflags)
-> do
s <- liftIO $ newMVar InterpPending
loader <- liftIO Loader.uninitializedLoader
let cfg = JSInterpConfig
{ jsInterpNodeConfig = defaultNodeJsSettings
, jsInterpScript = topDir dflags </> "ghc-interp.js"
, jsInterpTmpFs = hsc_tmpfs hsc_env
, jsInterpTmpDir = tmpDir dflags
, jsInterpLogger = hsc_logger hsc_env
, jsInterpCodegenCfg = initStgToJSConfig dflags
, jsInterpUnitEnv = hsc_unit_env hsc_env
, jsInterpFinderOpts = initFinderOpts dflags
, jsInterpFinderCache = hsc_FC hsc_env
}
return (Just (Interp (ExternalInterp (ExtJS (ExtInterpState cfg s))) loader))
-- Internal interpreter
| otherwise
->
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment