Use new array copying primitives
authorRoman Leshchinskiy <rl@cse.unsw.edu.au>
Wed, 17 Aug 2011 22:28:20 +0000 (22:28 +0000)
committerRoman Leshchinskiy <rl@cse.unsw.edu.au>
Wed, 17 Aug 2011 22:28:20 +0000 (22:28 +0000)
Data/Vector.hs
Data/Vector/Mutable.hs

index e3093b3..5f0d0b5 100644 (file)
@@ -219,6 +219,10 @@ instance G.Vector Vector a where
   {-# INLINE basicUnsafeIndexM #-}
   basicUnsafeIndexM (Vector i _ arr) j = indexArrayM arr (i+j)
 
+  {-# INLINE basicUnsafeCopy #-}
+  basicUnsafeCopy (MVector i n dst) (Vector j _ src)
+    = copyArray src j dst i n
+
 -- See http://trac.haskell.org/vector/ticket/12
 instance Eq a => Eq (Vector a) where
   {-# INLINE (==) #-}
index e4e50de..d2fd332 100644 (file)
@@ -104,6 +104,10 @@ instance G.MVector MVector a where
 
   {-# INLINE basicUnsafeWrite #-}
   basicUnsafeWrite (MVector i n arr) j x = writeArray arr (i+j) x
+
+  {-# INLINE basicUnsafeCopy #-}
+  basicUnsafeCopy (MVector i n dst) (MVector j _ src)
+    = copyMutableArray src j dst i n
   
   basicUnsafeMove dst@(MVector iDst n arrDst) src@(MVector iSrc _ arrSrc)
     = case n of