From 27024fa57469af22d5b39309042f203c7b2efc5e Mon Sep 17 00:00:00 2001 From: alexwl Date: Thu, 13 Dec 2018 18:31:39 +0300 Subject: [PATCH] Replace Vector.fromList with Vector.fromListN Vector.fromListN allocates less memory and allows to remove the call to Vector.force before compaction ('compact $ Vector.fromList [1,2,3]' crashes, 'compact $ Vector.fromListN 3 [1,2,3]' doesn't crash) --- app/Server.hs | 12 +++--------- src/HaskellCodeExplorer/Types.hs | 2 +- 2 files changed, 4 insertions(+), 10 deletions(-) diff --git a/app/Server.hs b/app/Server.hs index f6e1d6d..3bfebd8 100644 --- a/app/Server.hs +++ b/app/Server.hs @@ -374,15 +374,9 @@ loadPackageInfo config path = ( updateEachModuleInfo packageInfo (\modInfo -> - let source = - HCE.source :: HCE.CompactModuleInfo -> V.Vector T.Text - in if not enableExpressionInfo - then modInfo - { HCE.exprInfoMap = IVM.empty - , HCE.source = V.force $ source modInfo - -- 'force' fixes this error: Data.Vector.Mutable: uninitialised element CallStack (from HasCallStack): error, called at ./Data/Vector/Mutable.hs:188:17 in vector-0.12.0.1-GGZqQZyzchy8YFPCF67wxL:Data.Vector.Mutable - } - else modInfo {HCE.source = V.force $ source modInfo}) + if not enableExpressionInfo + then modInfo {HCE.exprInfoMap = IVM.empty} + else modInfo) , path) Left e -> return . Left $ (e, path) diff --git a/src/HaskellCodeExplorer/Types.hs b/src/HaskellCodeExplorer/Types.hs index f94b3af..a21a483 100644 --- a/src/HaskellCodeExplorer/Types.hs +++ b/src/HaskellCodeExplorer/Types.hs @@ -549,7 +549,7 @@ instance Serialize IdentifierOccurrenceSort instance Serialize TypeComponent instance (Serialize a) => Serialize (V.Vector a) where put = put . V.toList - get = V.fromList <$> get + get = (\l -> V.fromListN (L.length l) l) <$> get instance Serialize Type instance Serialize ExpressionInfo instance Serialize LocatableEntity