Reduce inlining bloat from use of single-element literals
commite33c89be4256fdd1c31f39d8a2a63e58e23b0182
authorBryan O'Sullivan <bos@serpentine.com>
dateFri 15 Aug 2014, 10:19 (12 years ago)
parent6d75e1a
Data/Text.hs+4
@@ -423,6 +423,10 @@ unpackCString# addr# = unstream (S.streamCString# addr#)
423423 unstream (S.map safe (S.streamList []))
424424 = empty_ #-}
425425
426+{-# RULES "TEXT singleton literal" forall a.
427+ unstream (S.map safe (S.streamList [a]))
428+ = singleton_ a #-}
429+
426430-- | /O(1)/ Convert a character into a Text. Subject to fusion.
427431-- Performs replacement on invalid scalar values.
428432singleton :: Char -> Text
Data/Text/Lazy.hs+4
@@ -385,6 +385,10 @@ unpackCString# addr# = unstream (S.streamCString# addr#)
385385 unstream (S.streamList (L.map safe []))
386386 = Empty #-}
387387
388+{-# RULES "LAZY TEXT empty literal" forall a.
389+ unstream (S.streamList (L.map safe [a]))
390+ = Chunk (T.singleton a) Empty #-}
391+
388392-- | /O(1)/ Convert a character into a Text. Subject to fusion.
389393-- Performs replacement on invalid scalar values.
390394singleton :: Char -> Text