diff options
author | Vladislav Zavialov <vlad.z.4096@gmail.com> | 2021-04-06 15:51:38 +0300 |
---|---|---|
committer | Vladislav Zavialov <vlad.z.4096@gmail.com> | 2021-05-22 22:17:04 +0300 |
commit | 385c8d8809b26b2d86883041d42fd1a33a80e990 (patch) | |
tree | db9c01ec2678aa78ce7c230668c5f83a7f49c34d /compiler/GHC/Parser/Header.hs | |
parent | 503388c53b0860e5a1fca11113ac7fc3e1e44492 (diff) | |
download | haskell-wip/strict-maybe.tar.gz |
Introduce Strict.Maybe, Strict.Pair (#19156)wip/strict-maybe
This patch fixes a space leak related to the use of
Maybe in RealSrcSpan by introducing a strict variant
of Maybe.
In addition to that, it also introduces a strict pair
and uses the newly introduced strict data types in a few
other places (e.g. the lexer/parser state) to reduce
allocations.
Includes a regression test.
Diffstat (limited to 'compiler/GHC/Parser/Header.hs')
-rw-r--r-- | compiler/GHC/Parser/Header.hs | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/compiler/GHC/Parser/Header.hs b/compiler/GHC/Parser/Header.hs index 7a60830d34..52a98d86dc 100644 --- a/compiler/GHC/Parser/Header.hs +++ b/compiler/GHC/Parser/Header.hs @@ -55,6 +55,7 @@ import GHC.Data.StringBuffer import GHC.Data.Maybe import GHC.Data.Bag (Bag, isEmptyBag ) import GHC.Data.FastString +import qualified GHC.Data.Strict as Strict import Control.Monad import System.IO @@ -347,7 +348,7 @@ toArgs starting_loc orig_str advance_src_loc_many = foldl' advanceSrcLoc locate :: RealSrcLoc -> RealSrcLoc -> a -> Located a - locate begin end x = L (RealSrcSpan (mkRealSrcSpan begin end) Nothing) x + locate begin end x = L (RealSrcSpan (mkRealSrcSpan begin end) Strict.Nothing) x toArgs' :: RealSrcLoc -> String -> Either String [Located String] -- Remove outer quotes: |