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)
This commit is contained in:
alexwl 2018-12-13 18:31:39 +03:00
parent 7488749af2
commit 27024fa574
2 changed files with 4 additions and 10 deletions

View File

@ -374,15 +374,9 @@ loadPackageInfo config path =
( updateEachModuleInfo ( updateEachModuleInfo
packageInfo packageInfo
(\modInfo -> (\modInfo ->
let source = if not enableExpressionInfo
HCE.source :: HCE.CompactModuleInfo -> V.Vector T.Text then modInfo {HCE.exprInfoMap = IVM.empty}
in if not enableExpressionInfo else modInfo)
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})
, path) , path)
Left e -> return . Left $ (e, path) Left e -> return . Left $ (e, path)

View File

@ -549,7 +549,7 @@ instance Serialize IdentifierOccurrenceSort
instance Serialize TypeComponent instance Serialize TypeComponent
instance (Serialize a) => Serialize (V.Vector a) where instance (Serialize a) => Serialize (V.Vector a) where
put = put . V.toList put = put . V.toList
get = V.fromList <$> get get = (\l -> V.fromListN (L.length l) l) <$> get
instance Serialize Type instance Serialize Type
instance Serialize ExpressionInfo instance Serialize ExpressionInfo
instance Serialize LocatableEntity instance Serialize LocatableEntity