From 4d4fd00bc71679272dd6d216a14b9b278e26bbed Mon Sep 17 00:00:00 2001 From: simonm Date: Wed, 2 Sep 1998 09:19:27 +0000 Subject: [PATCH] [project @ 1998-09-02 09:19:27 by simonm] add #ifndef __PARALLEL_HASKELL__ around ForeignObj bits. --- ghc/lib/exts/Int.lhs | 89 +++++++++++++++++++++++++++----------------------- 1 file changed, 48 insertions(+), 41 deletions(-) diff --git a/ghc/lib/exts/Int.lhs b/ghc/lib/exts/Int.lhs index c93678c..f5be8ca 100644 --- a/ghc/lib/exts/Int.lhs +++ b/ghc/lib/exts/Int.lhs @@ -53,6 +53,7 @@ module Int , sizeofInt32 , sizeofInt64 +#ifndef __PARALLEL_HASKELL__ -- The "official" place to get these from is Foreign , indexInt8OffForeignObj , indexInt16OffForeignObj @@ -66,6 +67,7 @@ module Int , writeInt16OffForeignObj , writeInt32OffForeignObj , writeInt64OffForeignObj +#endif -- non-standard, GHC specific , intToWord @@ -983,9 +985,6 @@ signumReal x | x == 0 = 0 indexInt8OffAddr :: Addr -> Int -> Int8 indexInt8OffAddr (A# a#) (I# i#) = intToInt8 (I# (ord# (indexCharOffAddr# a# i#))) -indexInt8OffForeignObj :: ForeignObj -> Int -> Int8 -indexInt8OffForeignObj (ForeignObj fo#) (I# i#) = intToInt8 (I# (ord# (indexCharOffForeignObj# fo# i#))) - indexInt16OffAddr :: Addr -> Int -> Int16 indexInt16OffAddr a i = #ifdef WORDS_BIGENDIAN @@ -998,6 +997,29 @@ indexInt16OffAddr a i = l = indexInt8OffAddr a byte_idx h = indexInt8OffAddr a (byte_idx+1) +indexInt32OffAddr :: Addr -> Int -> Int32 +indexInt32OffAddr (A# a#) i = intToInt32 (I# (indexIntOffAddr# a# i'#)) + where + -- adjust index to be in Int units, not Int32 ones. + (I# i'#) +#if WORD_SIZE_IN_BYTES==8 + = i `div` 2 +#else + = i +#endif + +indexInt64OffAddr :: Addr -> Int -> Int64 +indexInt64OffAddr (A# a#) (I# i#) +#if WORD_SIZE_IN_BYTES==8 + = I64# (indexIntOffAddr# a# i#) +#else + = I64# (indexInt64OffAddr# a# i#) +#endif + +#ifndef __PARALLEL_HASKELL__ +indexInt8OffForeignObj :: ForeignObj -> Int -> Int8 +indexInt8OffForeignObj (ForeignObj fo#) (I# i#) = intToInt8 (I# (ord# (indexCharOffForeignObj# fo# i#))) + indexInt16OffForeignObj :: ForeignObj -> Int -> Int16 indexInt16OffForeignObj fo i = #ifdef WORDS_BIGENDIAN @@ -1010,17 +1032,6 @@ indexInt16OffForeignObj fo i = l = indexInt8OffForeignObj fo byte_idx h = indexInt8OffForeignObj fo (byte_idx+1) -indexInt32OffAddr :: Addr -> Int -> Int32 -indexInt32OffAddr (A# a#) i = intToInt32 (I# (indexIntOffAddr# a# i'#)) - where - -- adjust index to be in Int units, not Int32 ones. - (I# i'#) -#if WORD_SIZE_IN_BYTES==8 - = i `div` 2 -#else - = i -#endif - indexInt32OffForeignObj :: ForeignObj -> Int -> Int32 indexInt32OffForeignObj (ForeignObj fo#) i = intToInt32 (I# (indexIntOffForeignObj# fo# i'#)) where @@ -1032,14 +1043,6 @@ indexInt32OffForeignObj (ForeignObj fo#) i = intToInt32 (I# (indexIntOffForeignO = i #endif -indexInt64OffAddr :: Addr -> Int -> Int64 -indexInt64OffAddr (A# a#) (I# i#) -#if WORD_SIZE_IN_BYTES==8 - = I64# (indexIntOffAddr# a# i#) -#else - = I64# (indexInt64OffAddr# a# i#) -#endif - indexInt64OffForeignObj :: ForeignObj -> Int -> Int64 indexInt64OffForeignObj (ForeignObj fo#) (I# i#) #if WORD_SIZE_IN_BYTES==8 @@ -1048,6 +1051,7 @@ indexInt64OffForeignObj (ForeignObj fo#) (I# i#) = I64# (indexInt64OffForeignObj# fo# i#) #endif +#endif /* __PARALLEL_HASKELL__ */ \end{code} Read words out of mutable memory: @@ -1056,21 +1060,12 @@ Read words out of mutable memory: readInt8OffAddr :: Addr -> Int -> IO Int8 readInt8OffAddr a i = _casm_ `` %r=(StgInt8)(((StgInt8*)%0)[(StgInt)%1]); '' a i -readInt8OffForeignObj :: ForeignObj -> Int -> IO Int8 -readInt8OffForeignObj fo i = _casm_ `` %r=(StgInt8)(((StgInt8*)%0)[(StgInt)%1]); '' fo i - readInt16OffAddr :: Addr -> Int -> IO Int16 readInt16OffAddr a i = _casm_ `` %r=(StgInt16)(((StgInt16*)%0)[(StgInt)%1]); '' a i -readInt16OffForeignObj :: ForeignObj -> Int -> IO Int16 -readInt16OffForeignObj fo i = _casm_ `` %r=(StgInt16)(((StgInt16*)%0)[(StgInt)%1]); '' fo i - readInt32OffAddr :: Addr -> Int -> IO Int32 readInt32OffAddr a i = _casm_ `` %r=(StgInt32)(((StgInt32*)%0)[(StgInt)%1]); '' a i -readInt32OffForeignObj :: ForeignObj -> Int -> IO Int32 -readInt32OffForeignObj fo i = _casm_ `` %r=(StgInt32)(((StgInt32*)%0)[(StgInt)%1]); '' fo i - readInt64OffAddr :: Addr -> Int -> IO Int64 #if WORD_SIZE_IN_BYTES==8 readInt64OffAddr a i = _casm_ `` %r=(StgInt)(((StgInt*)%0)[(StgInt)%1]); '' a i @@ -1078,33 +1073,35 @@ readInt64OffAddr a i = _casm_ `` %r=(StgInt)(((StgInt*)%0)[(StgInt)%1]); '' a i readInt64OffAddr a i = _casm_ `` %r=(StgInt64)(((StgInt64*)%0)[(StgInt)%1]); '' a i #endif +#ifndef __PARALLEL_HASKELL__ +readInt8OffForeignObj :: ForeignObj -> Int -> IO Int8 +readInt8OffForeignObj fo i = _casm_ `` %r=(StgInt8)(((StgInt8*)%0)[(StgInt)%1]); '' fo i + +readInt16OffForeignObj :: ForeignObj -> Int -> IO Int16 +readInt16OffForeignObj fo i = _casm_ `` %r=(StgInt16)(((StgInt16*)%0)[(StgInt)%1]); '' fo i + +readInt32OffForeignObj :: ForeignObj -> Int -> IO Int32 +readInt32OffForeignObj fo i = _casm_ `` %r=(StgInt32)(((StgInt32*)%0)[(StgInt)%1]); '' fo i + readInt64OffForeignObj :: ForeignObj -> Int -> IO Int64 #if WORD_SIZE_IN_BYTES==8 readInt64OffForeignObj fo i = _casm_ `` %r=(StgInt)(((StgInt*)%0)[(StgInt)%1]); '' fo i #else readInt64OffForeignObj fo i = _casm_ `` %r=(StgInt64)(((StgInt64*)%0)[(StgInt)%1]); '' fo i #endif +#endif /* __PARALLEL_HASKELL__ */ \end{code} \begin{code} writeInt8OffAddr :: Addr -> Int -> Int8 -> IO () writeInt8OffAddr a i e = _casm_ `` (((StgInt8*)%0)[(StgInt)%1])=(StgInt8)%2; '' a i e -writeInt8OffForeignObj :: ForeignObj -> Int -> Int8 -> IO () -writeInt8OffForeignObj fo i e = _casm_ `` (((StgInt8*)%0)[(StgInt)%1])=(StgInt8)%2; '' fo i e - writeInt16OffAddr :: Addr -> Int -> Int16 -> IO () writeInt16OffAddr a i e = _casm_ `` (((StgInt16*)%0)[(StgInt)%1])=(StgInt16)%2; '' a i e -writeInt16OffForeignObj :: ForeignObj -> Int -> Int16 -> IO () -writeInt16OffForeignObj fo i e = _casm_ `` (((StgInt16*)%0)[(StgInt)%1])=(StgInt16)%2; '' fo i e - writeInt32OffAddr :: Addr -> Int -> Int32 -> IO () writeInt32OffAddr a i e = _casm_ `` (((StgInt32*)%0)[(StgInt)%1])=(StgInt32)%2; '' a i e -writeInt32OffForeignObj :: ForeignObj -> Int -> Int32 -> IO () -writeInt32OffForeignObj fo i e = _casm_ `` (((StgInt32*)%0)[(StgInt)%1])=(StgInt32)%2; '' fo i e - writeInt64OffAddr :: Addr -> Int -> Int64 -> IO () #if WORD_SIZE_IN_BYTES==8 writeInt64OffAddr a i e = _casm_ `` (((StgInt*)%0)[(StgInt)%1])=(StgInt)%2; '' a i e @@ -1112,12 +1109,22 @@ writeInt64OffAddr a i e = _casm_ `` (((StgInt*)%0)[(StgInt)%1])=(StgInt)%2; '' a writeInt64OffAddr a i e = _casm_ `` (((StgInt64*)%0)[(StgInt)%1])=(StgInt64)%2; '' a i e #endif +#ifndef __PARALLEL_HASKELL__ +writeInt8OffForeignObj :: ForeignObj -> Int -> Int8 -> IO () +writeInt8OffForeignObj fo i e = _casm_ `` (((StgInt8*)%0)[(StgInt)%1])=(StgInt8)%2; '' fo i e + +writeInt16OffForeignObj :: ForeignObj -> Int -> Int16 -> IO () +writeInt16OffForeignObj fo i e = _casm_ `` (((StgInt16*)%0)[(StgInt)%1])=(StgInt16)%2; '' fo i e + +writeInt32OffForeignObj :: ForeignObj -> Int -> Int32 -> IO () +writeInt32OffForeignObj fo i e = _casm_ `` (((StgInt32*)%0)[(StgInt)%1])=(StgInt32)%2; '' fo i e + writeInt64OffForeignObj :: ForeignObj -> Int -> Int64 -> IO () #if WORD_SIZE_IN_BYTES==8 writeInt64OffForeignObj fo i e = _casm_ `` (((StgInt*)%0)[(StgInt)%1])=(StgInt)%2; '' fo i e #else writeInt64OffForeignObj fo i e = _casm_ `` (((StgInt64*)%0)[(StgInt)%1])=(StgInt64)%2; '' fo i e #endif - +#endif /* __PARALLEL_HASKELL__ */ \end{code} -- 1.7.10.4