on master help sign in
Reduce inlining bloat from use of single-element literals
e33c89bBryan O'Sullivan
Data/Text.hs+4
@@ -423,6 +423,10 @@ unpackCString# addr# = unstream (S.streamCString# addr#)
423 unstream (S.map safe (S.streamList []))
423 unstream (S.map safe (S.streamList []))
424 = empty_ #-}
424 = empty_ #-}
425
425
426+{-# RULES "TEXT singleton literal" forall a.
427+ unstream (S.map safe (S.streamList [a]))
428+ = singleton_ a #-}
429+
426-- | /O(1)/ Convert a character into a Text. Subject to fusion.
430-- | /O(1)/ Convert a character into a Text. Subject to fusion.
427-- Performs replacement on invalid scalar values.
431-- Performs replacement on invalid scalar values.
428singleton :: Char -> Text
432singleton :: Char -> Text
Data/Text/Lazy.hs+4
@@ -385,6 +385,10 @@ unpackCString# addr# = unstream (S.streamCString# addr#)
385 unstream (S.streamList (L.map safe []))
385 unstream (S.streamList (L.map safe []))
386 = Empty #-}
386 = Empty #-}
387
387
388+{-# RULES "LAZY TEXT empty literal" forall a.
389+ unstream (S.streamList (L.map safe [a]))
390+ = Chunk (T.singleton a) Empty #-}
391+
388-- | /O(1)/ Convert a character into a Text. Subject to fusion.
392-- | /O(1)/ Convert a character into a Text. Subject to fusion.
389-- Performs replacement on invalid scalar values.
393-- Performs replacement on invalid scalar values.
390singleton :: Char -> Text
394singleton :: Char -> Text