[LLVMdev] [PATCH]: Add SparseBitmap implementation

Dan Gohman djg at cray.com
Tue Sep 4 07:21:18 PDT 2007


On Fri, Aug 31, 2007 at 08:10:33PM -0400, Daniel Berlin wrote:
> Suggestions, criticisms, etc, are welcome.

I haven't studied the implementation, but I have a few comments on
the interface, and some style comments, below.

> Index: include/llvm/ADT/SparseBitmap.h
> ===================================================================
> --- include/llvm/ADT/SparseBitmap.h	(revision 0)
> +++ include/llvm/ADT/SparseBitmap.h	(revision 0)
> @@ -0,0 +1,571 @@
> +//===- llvm/ADT/SparseBitmap.h - Efficient Sparse Bitmap ----*- C++ -*-===//

Add '-'s to make the first line line exactly 80 cols.

> +/// SparseBitmap is an implementation of a bitvector that is sparse by only
> +/// storing the elements that have non-zero bits set.  In order to make this

I'd like to suggest the name SparseBitVector for this class, to
correspond with the name of the existing BitVector class, which has
a similar interface, but isn't sparse.

> +    SparseBitmapElement(unsigned Idx) {

This misses an explicit keyword.

> +        if (Bitmap.Elements.empty())
> +          {
> +            AtEnd = true;
> +            return;
> +          }

Here and a few other places miss reformatting.

> +  template <int ElementSize>
> +  class SparseBitmap {   

Do you expect clients will often want custom ElementSize values? Otherwise,
it seems like this template parameter should be given a default value, or
even just removed from the API.

> +      bool AtEnd;
> +      
> +      SparseBitmap<ElementSize> &Bitmap;
> +
> +      // Current element inside of bitmap
> +      ElementListConstIter Iter;
> +
> +      // Current bit number inside of our bitmap
> +      unsigned BitNumber;
> +      
> +      // Current word number inside of our element
> +      unsigned WordNumber;
> +      
> +      // Current bits from the element.
> +      typename SparseBitmapElement<ElementSize>::BitWord Bits;

Can these SparseBitmapIterator members, and a few more that follow,
be made private?

> +      SparseBitmapIterator(SparseBitmap<ElementSize> &RHS,
> +                           bool end = false):Bitmap(RHS) {

This appears to miss an explicit keyword.

Dan

-- 
Dan Gohman, Cray Inc.



More information about the llvm-dev mailing list