X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=compiler%2Futils%2FStringBuffer.lhs;h=2b3b775791e0cdcdde57b363e08ffe86305c0a60;hb=9aad47f1162666431deee99884c523b1ff69cf98;hp=d51c800fcaa31775dbc9e6cb1d6eeb4eed587f04;hpb=b3ee146e56463e8b492bf7ba1ad95ba7d966ea8d;p=ghc-hetmet.git diff --git a/compiler/utils/StringBuffer.lhs b/compiler/utils/StringBuffer.lhs index d51c800..2b3b775 100644 --- a/compiler/utils/StringBuffer.lhs +++ b/compiler/utils/StringBuffer.lhs @@ -6,6 +6,10 @@ Buffers for scanning string input stored in external arrays. \begin{code} +{-# OPTIONS_GHC -O -funbox-strict-fields #-} +-- We always optimise this, otherwise performance of a non-optimised +-- compiler is severely affected + module StringBuffer ( StringBuffer(..), @@ -75,7 +79,7 @@ data StringBuffer instance Show StringBuffer where showsPrec _ s = showString "" + . showString ")>" -- ----------------------------------------------------------------------------- -- Creation / Destruction @@ -220,7 +224,7 @@ parseUnsignedInteger (StringBuffer buf _ cur) len radix char_to_int --LOL, in implementations where the indexing needs slow unsafePerformIO, --this is less (not more) efficient than using the IO monad explicitly --here. - ptr' = pUnbox ptr + !ptr' = pUnbox ptr byteOff i = cBox (indexWord8OffFastPtrAsFastChar ptr' (iUnbox (cur + i))) go i x | i == len = x | otherwise = case byteOff i of