+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#)))
+