[Git][ghc/ghc][wip/marge_bot_batch_merge_job] 3 commits: Make IOEnv monad one-shot (#18202)
Marge Bot
gitlab at gitlab.haskell.org
Fri Aug 14 01:40:03 UTC 2020
Marge Bot pushed to branch wip/marge_bot_batch_merge_job at Glasgow Haskell Compiler / GHC
Commits:
8a51b2ab by Sylvain Henry at 2020-08-13T21:09:15-04:00
Make IOEnv monad one-shot (#18202)
On CI (x86_64-linux-deb9-hadrian, compile_time/bytes_allocated):
T10421 -1.8% (threshold: +/- 1%)
T10421a -1.7% (threshold: +/- 1%)
T12150 -4.9% (threshold: +/- 2%)
T12227 -1.6 (threshold: +/- 1%)
T12425 -1.5% (threshold: +/- 1%)
T12545 -3.8% (threshold: +/- 1%)
T12707 -3.0% (threshold: +/- 1%)
T13035 -3.0% (threshold: +/- 1%)
T14683 -10.3% (threshold: +/- 2%)
T3064 -6.9% (threshold: +/- 2%)
T4801 -4.3% (threshold: +/- 2%)
T5030 -2.6% (threshold: +/- 2%)
T5321FD -3.6% (threshold: +/- 2%)
T5321Fun -4.6% (threshold: +/- 2%)
T5631 -19.7% (threshold: +/- 2%)
T5642 -13.0% (threshold: +/- 2%)
T783 -2.7 (threshold: +/- 2%)
T9020 -11.1 (threshold: +/- 2%)
T9961 -3.4% (threshold: +/- 2%)
T1969 (compile_time/bytes_allocated) -2.2% (threshold: +/-1%)
T1969 (compile_time/max_bytes_used) +24.4% (threshold: +/-20%)
Additionally on other CIs:
haddock.Cabal -10.0% (threshold: +/- 5%)
haddock.compiler -9.5% (threshold: +/- 5%)
haddock.base (max bytes used) +24.6% (threshold: +/- 15%)
T10370 (max bytes used, i386) +18.4% (threshold: +/- 15%)
Metric Decrease:
T10421
T10421a
T12150
T12227
T12425
T12545
T12707
T13035
T14683
T3064
T4801
T5030
T5321FD
T5321Fun
T5631
T5642
T783
T9020
T9961
haddock.Cabal
haddock.compiler
Metric Decrease 'compile_time/bytes allocated':
T1969
Metric Increase 'compile_time/max_bytes_used':
T1969
T10370
haddock.base
- - - - -
d0418d8d by Ben Gamari at 2020-08-13T21:39:59-04:00
testsuite: Drop --io-manager flag from testsuite configuration
This is no longer necessary as there are now dedicated testsuite ways
which run tests with WinIO.
- - - - -
4f867bd4 by Ben Gamari at 2020-08-13T21:40:00-04:00
llvm-targets: Add i686 targets
Addresses #18422.
- - - - -
4 changed files:
- compiler/GHC/Data/IOEnv.hs
- llvm-targets
- testsuite/mk/test.mk
- utils/llvm-targets/gen-data-layout.sh
Changes:
=====================================
compiler/GHC/Data/IOEnv.hs
=====================================
@@ -1,6 +1,7 @@
{-# LANGUAGE CPP #-}
{-# LANGUAGE DeriveFunctor #-}
{-# LANGUAGE DerivingVia #-}
+{-# LANGUAGE PatternSynonyms #-}
--
-- (c) The University of Glasgow 2002-2006
--
@@ -48,16 +49,25 @@ import Control.Monad.Trans.Reader
import Control.Monad.Catch (MonadCatch, MonadMask, MonadThrow)
import GHC.Utils.Monad
import Control.Applicative (Alternative(..))
+import GHC.Exts( oneShot )
----------------------------------------------------------------------
-- Defining the monad type
----------------------------------------------------------------------
-newtype IOEnv env a = IOEnv (env -> IO a)
+newtype IOEnv env a = IOEnv' (env -> IO a)
deriving (Functor)
deriving (MonadThrow, MonadCatch, MonadMask, MonadIO) via (ReaderT env IO)
+-- See Note [The one-shot state monad trick] in GHC.Utils.Monad
+pattern IOEnv :: forall env a. (env -> IO a) -> IOEnv env a
+pattern IOEnv m <- IOEnv' m
+ where
+ IOEnv m = IOEnv' (oneShot m)
+
+{-# COMPLETE IOEnv #-}
+
unIOEnv :: IOEnv env a -> (env -> IO a)
unIOEnv (IOEnv m) = m
=====================================
llvm-targets
=====================================
@@ -24,6 +24,9 @@
,("i386-unknown-linux-gnu", ("e-m:e-p:32:32-f64:32:64-f80:32-n8:16:32-S128", "pentium4", ""))
,("i386-unknown-linux-musl", ("e-m:e-p:32:32-f64:32:64-f80:32-n8:16:32-S128", "pentium4", ""))
,("i386-unknown-linux", ("e-m:e-p:32:32-f64:32:64-f80:32-n8:16:32-S128", "pentium4", ""))
+,("i686-unknown-linux-gnu", ("e-m:e-p:32:32-f64:32:64-f80:32-n8:16:32-S128", "pentium4", ""))
+,("i686-unknown-linux-musl", ("e-m:e-p:32:32-f64:32:64-f80:32-n8:16:32-S128", "pentium4", ""))
+,("i686-unknown-linux", ("e-m:e-p:32:32-f64:32:64-f80:32-n8:16:32-S128", "pentium4", ""))
,("x86_64-unknown-linux-gnu", ("e-m:e-i64:64-f80:128-n8:16:32:64-S128", "x86-64", ""))
,("x86_64-unknown-linux-musl", ("e-m:e-i64:64-f80:128-n8:16:32:64-S128", "x86-64", ""))
,("x86_64-unknown-linux", ("e-m:e-i64:64-f80:128-n8:16:32:64-S128", "x86-64", ""))
=====================================
testsuite/mk/test.mk
=====================================
@@ -60,7 +60,7 @@ TEST_HC_OPTS += -Werror=compat
# removing this line.
TEST_HC_OPTS += -dno-debug-output
-TEST_HC_OPTS_INTERACTIVE = $(TEST_HC_OPTS) --interactive -v0 -ignore-dot-ghci -fno-ghci-history +RTS --io-manager=native -RTS
+TEST_HC_OPTS_INTERACTIVE = $(TEST_HC_OPTS) --interactive -v0 -ignore-dot-ghci -fno-ghci-history
RUNTEST_OPTS =
=====================================
utils/llvm-targets/gen-data-layout.sh
=====================================
@@ -59,6 +59,9 @@ TARGETS=(
"i386-unknown-linux-gnu"
"i386-unknown-linux-musl"
"i386-unknown-linux"
+ "i686-unknown-linux-gnu"
+ "i686-unknown-linux-musl"
+ "i686-unknown-linux"
"x86_64-unknown-linux-gnu"
"x86_64-unknown-linux-musl"
"x86_64-unknown-linux"
View it on GitLab: https://gitlab.haskell.org/ghc/ghc/-/compare/349e7c4765d0d3f9f2127dd533d38fda6cf7dc60...4f867bd487f18575fa3ee892696c2355795ef66e
--
View it on GitLab: https://gitlab.haskell.org/ghc/ghc/-/compare/349e7c4765d0d3f9f2127dd533d38fda6cf7dc60...4f867bd487f18575fa3ee892696c2355795ef66e
You're receiving this email because of your account on gitlab.haskell.org.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.haskell.org/pipermail/ghc-commits/attachments/20200813/68db3483/attachment-0001.html>
More information about the ghc-commits
mailing list