diff options
Diffstat (limited to 'compiler/utils/FastString.lhs')
-rw-r--r-- | compiler/utils/FastString.lhs | 16 |
1 files changed, 4 insertions, 12 deletions
diff --git a/compiler/utils/FastString.lhs b/compiler/utils/FastString.lhs index a340e6eedb..29965b188f 100644 --- a/compiler/utils/FastString.lhs +++ b/compiler/utils/FastString.lhs @@ -540,18 +540,10 @@ zEncodeFS fs@(FastString _ _ _ _ enc) = return efs appendFS :: FastString -> FastString -> FastString -appendFS fs1 fs2 = - inlinePerformIO $ do - r <- mallocForeignPtrBytes len - withForeignPtr r $ \ r' -> do - withForeignPtr (buf fs1) $ \ fs1Ptr -> do - withForeignPtr (buf fs2) $ \ fs2Ptr -> do - copyBytes r' fs1Ptr len1 - copyBytes (advancePtr r' len1) fs2Ptr len2 - mkFastStringForeignPtr r' r len - where len = len1 + len2 - len1 = lengthFS fs1 - len2 = lengthFS fs2 +appendFS fs1 fs2 = inlinePerformIO + $ mkFastStringFastBytes + $ appendFB (fastStringToFastBytes fs1) + (fastStringToFastBytes fs2) concatFS :: [FastString] -> FastString concatFS ls = mkFastString (Prelude.concat (map unpackFS ls)) -- ToDo: do better |