+{-# OPTIONS -w #-}
+-- The above warning supression flag is a temporary kludge.
+-- While working on this module you are encouraged to remove it and fix
+-- any warnings in the module. See
+-- http://hackage.haskell.org/trac/ghc/wiki/Commentary/CodingStyle#Warnings
+-- for details
+
--
--- (c) The University of Glasgow 2003
+-- (c) The University of Glasgow 2003-2006
--
-- Functions for constructing bitmaps, which are used in various
module Bitmap (
Bitmap, mkBitmap,
intsToBitmap, intsToReverseBitmap,
- mAX_SMALL_BITMAP_SIZE
+ mAX_SMALL_BITMAP_SIZE,
+ seqBitmap,
) where
#include "HsVersions.h"
import SMRep
import Constants
-import DATA_BITS
+import Util
+
+import Data.Bits
{-|
A bitmap represented by a sequence of 'StgWord's on the /target/
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
where (these,rest) = span (<wORD_SIZE_IN_BITS) slots
-- | Make a bitmap where the slots specified are the /zeros/ in the bitmap.
--- eg. @[1,2,4], size 4 ==> 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.
mAX_SMALL_BITMAP_SIZE | wORD_SIZE == 4 = 27
| otherwise = 58
+seqBitmap :: Bitmap -> a -> a
+seqBitmap = seqList
+