inlinePerformIO now comes from package primitive as unsafeInlineIO
authorRoman Leshchinskiy <rl@cse.unsw.edu.au>
Sun, 18 Apr 2010 15:31:58 +0000 (15:31 +0000)
committerRoman Leshchinskiy <rl@cse.unsw.edu.au>
Sun, 18 Apr 2010 15:31:58 +0000 (15:31 +0000)
Data/Vector/Storable.hs
Data/Vector/Storable/Internal.hs

index 0afc25f..502ff63 100644 (file)
@@ -151,7 +151,7 @@ instance Storable a => G.Vector Vector a where
 
   {-# INLINE basicUnsafeIndexM #-}
   basicUnsafeIndexM (Vector p _ fp) i = return
-                                      . inlinePerformIO
+                                      . unsafeInlineIO
                                       $ withForeignPtr fp $ \_ ->
                                         peekElemOff p i
 
index eff96e7..44a13ce 100644 (file)
 --
 
 module Data.Vector.Storable.Internal (
-  inlinePerformIO,
-
   ptrToOffset, offsetToPtr
 ) where
 
+import Control.Monad.Primitive ( unsafeInlineIO )
 import Foreign.Storable
 import Foreign.ForeignPtr
 import Foreign.Ptr
 import Foreign.Marshal.Array ( advancePtr )
-import GHC.Base         ( realWorld#, quotInt )
-import GHC.IOBase       ( IO(..) )
-
--- Stolen from the ByteString library
-inlinePerformIO :: IO a -> a
-{-# INLINE inlinePerformIO #-}
-inlinePerformIO (IO m) = case m realWorld# of (# _, r #) -> r
+import GHC.Base         ( quotInt )
 
 distance :: forall a. Storable a => Ptr a -> Ptr a -> Int
 {-# INLINE distance #-}
@@ -36,11 +29,11 @@ distance p q = (p `minusPtr` q) `quotInt` sizeOf (undefined :: a)
 
 ptrToOffset :: Storable a => ForeignPtr a -> Ptr a -> Int
 {-# INLINE ptrToOffset #-}
-ptrToOffset fp q = inlinePerformIO
+ptrToOffset fp q = unsafeInlineIO
                  $ withForeignPtr fp $ \p -> return (distance p q)
 
 offsetToPtr :: Storable a => ForeignPtr a -> Int -> Ptr a
 {-# INLINE offsetToPtr #-}
-offsetToPtr fp i = inlinePerformIO
+offsetToPtr fp i = unsafeInlineIO
                  $ withForeignPtr fp $ \p -> return (advancePtr p i)