X-Git-Url: http://git.megacz.com/?p=ghc-hetmet.git;a=blobdiff_plain;f=compiler%2FcodeGen%2FBitmap.hs;h=acd398c8d5ffd0477bc9eedc9842d367b17b7784;hp=93cf43f639d68c163e8a401142b6313c2b520a17;hb=d9a655dad8e013e41c74dca98fb86c4ed6f29879;hpb=49c98d143c382a1341e1046f5ca00819a25691ba diff --git a/compiler/codeGen/Bitmap.hs b/compiler/codeGen/Bitmap.hs index 93cf43f..acd398c 100644 --- a/compiler/codeGen/Bitmap.hs +++ b/compiler/codeGen/Bitmap.hs @@ -9,7 +9,8 @@ module Bitmap ( Bitmap, mkBitmap, intsToBitmap, intsToReverseBitmap, - mAX_SMALL_BITMAP_SIZE + mAX_SMALL_BITMAP_SIZE, + seqBitmap, ) where #include "HsVersions.h" @@ -17,6 +18,7 @@ module Bitmap ( import SMRep import Constants +import Util import Data.Bits @@ -38,7 +40,7 @@ chunkToBitmap chunk = foldr (.|.) 0 [ 1 `shiftL` n | (True,n) <- zip chunk [0..] ] -- | Make a bitmap where the slots specified are the /ones/ in the bitmap. --- eg. @[1,2,4], size 4 ==> 0xb@. +-- eg. @[0,1,3], size 4 ==> 0xb@. -- -- The list of @Int@s /must/ be already sorted. intsToBitmap :: Int -> [Int] -> Bitmap @@ -51,7 +53,7 @@ intsToBitmap size slots{- must be sorted -} where (these,rest) = span ( 0x8@ (we leave any bits outside the size as zero, +-- eg. @[0,1,3], size 4 ==> 0x4@ (we leave any bits outside the size as zero, -- just to make the bitmap easier to read). -- -- The list of @Int@s /must/ be already sorted. @@ -78,3 +80,6 @@ mAX_SMALL_BITMAP_SIZE :: Int mAX_SMALL_BITMAP_SIZE | wORD_SIZE == 4 = 27 | otherwise = 58 +seqBitmap :: Bitmap -> a -> a +seqBitmap = seqList +