X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=ghc%2Fcompiler%2Futils%2FPrimPacked.lhs;h=153ff5d3034e723e0da8208a15f3290339f04201;hb=438596897ebbe25a07e1c82085cfbc5bdb00f09e;hp=2578d4aba134b96f0f23940d30e15e1cfdca610d;hpb=b013eb356b0af840580638275cef67ddf682d844;p=ghc-hetmet.git diff --git a/ghc/compiler/utils/PrimPacked.lhs b/ghc/compiler/utils/PrimPacked.lhs index 2578d4a..153ff5d 100644 --- a/ghc/compiler/utils/PrimPacked.lhs +++ b/ghc/compiler/utils/PrimPacked.lhs @@ -1,5 +1,5 @@ % -% (c) The GRASP/AQUA Project, Glasgow University, 1997 +% (c) The GRASP/AQUA Project, Glasgow University, 1997-1998 % \section{Basic ops on packed representations} @@ -43,10 +43,12 @@ import PrelForeign ( ForeignObj(..) ) import ArrBase ( StateAndMutableByteArray#(..), StateAndByteArray#(..) ) import STBase -#else +#elif __GLASGOW_HASKELL__ < 400 import PrelArr ( StateAndMutableByteArray#(..), StateAndByteArray#(..) ) import PrelST +#else +import PrelST #endif \end{code} @@ -176,19 +178,33 @@ write_ps_array :: MutableByteArray s Int -> Int# -> Char# -> ST s () freeze_ps_array :: MutableByteArray s Int -> Int# -> ST s (ByteArray Int) new_ps_array size = ST $ \ s -> +#if __GLASGOW_HASKELL__ < 400 case (newCharArray# size s) of { StateAndMutableByteArray# s2# barr# -> STret s2# (MutableByteArray bot barr#) } +#else + case (newCharArray# size s) of { (# s2#, barr# #) -> + (# s2#, MutableByteArray bot barr# #) } +#endif where bot = error "new_ps_array" write_ps_array (MutableByteArray _ barr#) n ch = ST $ \ s# -> case writeCharArray# barr# n ch s# of { s2# -> +#if __GLASGOW_HASKELL__ < 400 STret s2# () } +#else + (# s2#, () #) } +#endif -- same as unsafeFreezeByteArray freeze_ps_array (MutableByteArray _ arr#) len# = ST $ \ s# -> +#if __GLASGOW_HASKELL__ < 400 case unsafeFreezeByteArray# arr# s# of { StateAndByteArray# s2# frozen# -> STret s2# (ByteArray (0,I# len#) frozen#) } +#else + case unsafeFreezeByteArray# arr# s# of { (# s2#, frozen# #) -> + (# s2#, ByteArray (0,I# len#) frozen# #) } +#endif \end{code}