on master help sign in
Change the working array position in the APIs of Foreign(.Type)
commit7cd7a185d3227d8c5c3ab1e35de2a21fe141b2ea authorAdithya Kumar <adithya@composewell.com> dateFri 4 Feb 2022, 23:21 (5 years ago) parent64c476f
9 files changed+24−24
benchmark/Streamly/Benchmark/Data/Array/Stream/Foreign.hs+1−1 src/Streamly/Internal/Data/Array/Foreign.hs+5−5 src/Streamly/Internal/Data/Array/Foreign/Type.hs+4−4 src/Streamly/Internal/Data/Binary/Decode.hs+1−1 src/Streamly/Internal/Data/Stream/StreamD/Nesting.hs+2−2 src/Streamly/Internal/FileSystem/Event/Darwin.hs+3−3 src/Streamly/Internal/FileSystem/Event/Linux.hs+2−2 test/Streamly/Test/Data/Parser.hs+3−3 test/Streamly/Test/Data/Parser/ParserD.hs+3−3
benchmark/Streamly/Benchmark/Data/Array/Stream/Foreign.hs+1−1
@@ -85,7 +85,7 @@ toChunksLast inh = do
8585 larr <- Stream.last s
8686 return $ case larr of
8787 Nothing -> Nothing
88− Just arr -> Array.getIndex arr (Array.length arr - 1)
88+ Just arr -> Array.getIndex (Array.length arr - 1) arr
8989
9090#ifdef INSPECTION
9191inspect $ hasNoTypeClasses 'toChunksLast
src/Streamly/Internal/Data/Array/Foreign.hs+5−5
@@ -266,8 +266,8 @@ null arr = A.byteLength arr == 0
266266--
267267-- /Pre-release/
268268{-# INLINE getIndexRev #-}
269−getIndexRev :: forall a. Storable a => Array a -> Int -> Maybe a
270−getIndexRev arr i =
269+getIndexRev :: forall a. Storable a => Int -> Array a -> Maybe a
270+getIndexRev i arr =
271271 unsafeInlineIO
272272 $ MA.unsafeWithArrayContents (arrContents arr) (arrStart arr)
273273 $ \ptr -> do
@@ -284,7 +284,7 @@ getIndexRev arr i =
284284-- /Pre-release/
285285{-# INLINE last #-}
286286last :: Storable a => Array a -> Maybe a
287−last arr = getIndexRev arr 0
287+last = getIndexRev 0
288288
289289-------------------------------------------------------------------------------
290290-- Folds with Array as the container
@@ -431,8 +431,8 @@ getSlicesFromLen from len =
431431--
432432-- @since 0.8.0
433433{-# INLINE getIndex #-}
434−getIndex :: forall a. Storable a => Array a -> Int -> Maybe a
435−getIndex arr i =
434+getIndex :: forall a. Storable a => Int -> Array a -> Maybe a
435+getIndex i arr =
436436 unsafeInlineIO
437437 $ MA.unsafeWithArrayContents (arrContents arr) (arrStart arr)
438438 $ \ptr -> do
src/Streamly/Internal/Data/Array/Foreign/Type.hs+4−4
@@ -433,13 +433,13 @@ breakOn sep arr = do
433433--
434434-- Unsafe because it does not check the bounds of the array.
435435{-# INLINE_NORMAL unsafeIndexIO #-}
436−unsafeIndexIO :: forall a. Storable a => Array a -> Int -> IO a
437−unsafeIndexIO arr i = MA.getIndexUnsafe i (unsafeThaw arr)
436+unsafeIndexIO :: forall a. Storable a => Int -> Array a -> IO a
437+unsafeIndexIO i arr = MA.getIndexUnsafe i (unsafeThaw arr)
438438
439439-- | Return element at the specified index without checking the bounds.
440440{-# INLINE_NORMAL unsafeIndex #-}
441−unsafeIndex :: forall a. Storable a => Array a -> Int -> a
442−unsafeIndex arr i = let !r = unsafeInlineIO $ unsafeIndexIO arr i in r
441+unsafeIndex :: forall a. Storable a => Int -> Array a -> a
442+unsafeIndex i arr = let !r = unsafeInlineIO $ unsafeIndexIO i arr in r
443443
444444-- | /O(1)/ Get the byte length of the array.
445445--
src/Streamly/Internal/Data/Binary/Decode.hs+1−1
@@ -275,4 +275,4 @@ word64le = PRK.toParserK word64leD
275275{-# INLINE word64host #-}
276276word64host :: (MonadIO m, MonadCatch m) => Parser m Word8 Word64
277277word64host =
278− fmap (flip A.unsafeIndex 0 . A.unsafeCast) $ PR.takeEQ 8 (A.writeN 8)
278+ fmap (A.unsafeIndex 0 . A.unsafeCast) $ PR.takeEQ 8 (A.writeN 8)
src/Streamly/Internal/Data/Stream/StreamD/Nesting.hs+2−2
@@ -1718,7 +1718,7 @@ splitOnSeq patArr (Fold fstep initial done) (Stream step state) =
17181718 then return $ Skip $ SplitOnSeqEmpty acc state
17191719 else if patLen == 1
17201720 then do
1721− pat <- liftIO $ A.unsafeIndexIO patArr 0
1721+ pat <- liftIO $ A.unsafeIndexIO 0 patArr
17221722 return $ Skip $ SplitOnSeqSingle acc state pat
17231723 else if SIZE_OF(a) * patLen
17241724 <= sizeOf (undefined :: Word)
@@ -2051,7 +2051,7 @@ splitOnSuffixSeq withSep patArr (Fold fstep initial done) (Stream step state) =
20512051 then skip $ SplitOnSuffixSeqEmpty fs state
20522052 else if patLen == 1
20532053 then do
2054− pat <- liftIO $ A.unsafeIndexIO patArr 0
2054+ pat <- liftIO $ A.unsafeIndexIO 0 patArr
20552055 skip $ SplitOnSuffixSeqSingleInit fs state pat
20562056 else if SIZE_OF(a) * patLen
20572057 <= sizeOf (undefined :: Word)
src/Streamly/Internal/FileSystem/Event/Darwin.hs+3−3
@@ -500,9 +500,9 @@ readOneEvent :: Parser IO Word8 Event
500500readOneEvent = do
501501 arr <- PR.takeEQ 24 (A.writeN 24)
502502 let arr1 = A.unsafeCast arr :: Array Word64
503− eid = A.unsafeIndex arr1 0
504− eflags = A.unsafeIndex arr1 1
505− pathLen = fromIntegral $ A.unsafeIndex arr1 2
503+ eid = A.unsafeIndex 0 arr1
504+ eflags = A.unsafeIndex 1 arr1
505+ pathLen = fromIntegral $ A.unsafeIndex 2 arr1
506506 path <- PR.takeEQ pathLen (A.writeN pathLen)
507507 return $ Event
508508 { eventId = eid
src/Streamly/Internal/FileSystem/Event/Linux.hs+2−2
@@ -658,7 +658,7 @@ ensureTrailingSlash :: Array Word8 -> Array Word8
658658ensureTrailingSlash path =
659659 if byteLength path /= 0
660660 then
661− let mx = A.getIndex path (byteLength path - 1)
661+ let mx = A.getIndex (byteLength path - 1) path
662662 in case mx of
663663 Nothing -> error "ensureTrailingSlash: Bug: Invalid index"
664664 Just x ->
@@ -672,7 +672,7 @@ removeTrailingSlash path =
672672 if byteLength path /= 0
673673 then
674674 let n = byteLength path - 1
675− mx = A.getIndex path n
675+ mx = A.getIndex n path
676676 in case mx of
677677 Nothing -> error "removeTrailingSlash: Bug: Invalid index"
678678 Just x ->
test/Streamly/Test/Data/Parser.hs+3−3
@@ -678,9 +678,9 @@ readOneEvent :: P.Parser IO Word8 Event
678678readOneEvent = do
679679 arr <- P.takeEQ 24 (A.writeN 24)
680680 let arr1 = A.unsafeCast arr :: A.Array Word64
681− eid = A.unsafeIndex arr1 0
682− eflags = A.unsafeIndex arr1 1
683− pathLen = fromIntegral $ A.unsafeIndex arr1 2
681+ eid = A.unsafeIndex 0 arr1
682+ eflags = A.unsafeIndex 1 arr1
683+ pathLen = fromIntegral $ A.unsafeIndex 2 arr1
684684 -- XXX handle if pathLen is 0
685685 path <- P.takeEQ pathLen (A.writeN pathLen)
686686 return $ Event
test/Streamly/Test/Data/Parser/ParserD.hs+3−3
@@ -669,9 +669,9 @@ readOneEvent :: P.Parser IO Word8 Event
669669readOneEvent = do
670670 arr <- P.takeEQ 24 (A.writeN 24)
671671 let arr1 = A.unsafeCast arr :: A.Array Word64
672− eid = A.unsafeIndex arr1 0
673− eflags = A.unsafeIndex arr1 1
674− pathLen = fromIntegral $ A.unsafeIndex arr1 2
672+ eid = A.unsafeIndex 0 arr1
673+ eflags = A.unsafeIndex 1 arr1
674+ pathLen = fromIntegral $ A.unsafeIndex 2 arr1
675675 path <- P.takeEQ pathLen (A.writeN pathLen)
676676 return $ Event
677677 { eventId = eid