Changeset: 3b338ae3232b for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=3b338ae3232b
Modified Files:
        gdk/gdk_bitvector.c
Branch: mosaic
Log Message:

Align at 4-byte bounds
and some debugging


diffs (51 lines):

diff --git a/gdk/gdk_bitvector.c b/gdk/gdk_bitvector.c
--- a/gdk/gdk_bitvector.c
+++ b/gdk/gdk_bitvector.c
@@ -29,13 +29,16 @@ void initBitMasks(void)
 
 BitVector
 newBitVector(BUN cnt, int width)  
-{ 
+{   int size;
        BitVector m;
        if( (unsigned) width > BITS)
                return 0;
        
-       m = (BitVector) malloc( (cnt * width)/ 8 + (((cnt * width) % 8) > 0)* 
8);
-       memset((char*) m, 0,  (cnt * width)/ 8 + (((cnt * width) % 8) > 0)* 8);
+       size = (cnt * width)/8 + ((cnt * width)%8) >0;
+       size = (size / sizeof(int)) * sizeof(int) + ((size % sizeof(int)) > 0) 
* sizeof(int);
+
+       m = (BitVector) GDKzalloc( size);
+       initBitMasks();
        return m;
 }
 
@@ -46,9 +49,9 @@ setBitVector(BitVector vector, const BUN
        BUN cid;
        unsigned int m1,  m2;
 
-    //printf("#setBitVector %ld i "BUNFMT" bits %d value 
%d\n",(long)vector,i,bits, value);
        cid = (i * bits) / BITS;
        m1  = ((i * bits) % BITS)/bits;
+    //mnstr_printf(GDKout,"#setBitVector %ld i "BUNFMT" bits %d value %d cid 
%d ",(long)vector,i,bits, value, vector[cid]);
     if ( m1 * bits <= BITS)
         vector[cid]= (vector[cid]  & ~( masks[bits] << (m1 * bits))) | ((value 
& masks[bits]) << (m1 * bits));
     else{ 
@@ -57,6 +60,7 @@ setBitVector(BitVector vector, const BUN
         vector[cid]= (vector[cid]  & ~( masks[bits] << (m1 * bits))) | ( 
(value & masks[bits]) << (BITS-m1));
         vector[cid+1]= 0 | ( (value & masks[bits])  >> m2);
        }
+    //mnstr_printf(GDKout,"-> %o\n",vector[cid]);
 }
 
 // clear a cell
@@ -82,7 +86,7 @@ getBitVector(BitVector vector, BUN i, in
                m2 = bits - m1;
                value  = (((vector[cid] >> (BITS - m1)) & masks[bits - m1]) << 
m2) | (vector[cid+1] & masks[m2]);
          }
-    //printf("#getBitVector %ld i "BUNFMT" bits %d value 
%d\n",(long)vector,i,bits,value);
+    //mnstr_printf(GDKout,"#getBitVector %ld i "BUNFMT" bits %d value %d cid 
%o\n",(long)vector,i,bits,value,vector[cid]);
        return value;
 }
 
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to