Changeset: b304b24b78b6 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=b304b24b78b6
Modified Files:
        gdk/gdk_bitvector.c
        gdk/gdk_bitvector.h
        monetdb5/modules/mosaic/TODO_MOSAIC.txt
        monetdb5/modules/mosaic/mosaic_delta.c
        monetdb5/modules/mosaic/mosaic_delta.h
        monetdb5/modules/mosaic/mosaic_frame.c
        monetdb5/modules/mosaic/mosaic_prefix.c
        monetdb5/modules/mosaic/mosaic_prefix.h
Branch: mosaic
Log Message:

Bits counters fit in a byte.


diffs (209 lines):

diff --git a/gdk/gdk_bitvector.c b/gdk/gdk_bitvector.c
--- a/gdk/gdk_bitvector.c
+++ b/gdk/gdk_bitvector.c
@@ -61,7 +61,7 @@ newBitVector(BUN cnt, int width)
 
 // get the bits of cell i 
 int
-getBitVector(BitVector vector, BUN i, int bits)
+getBitVector(BitVector vector, BUN i, const bte bits)
 {
        BUN cid;
        unsigned int value = 0, shift, m1;
@@ -93,7 +93,7 @@ getBitVector(BitVector vector, BUN i, in
 
 // set the bits of cell idx to the lower number of bits of the value
 void
-setBitVector(BitVector vector, const BUN i, const int bits, const 
BitVectorChunk value)
+setBitVector(BitVector vector, const BUN i, const bte bits, const 
BitVectorChunk value)
 {
        BUN cid;
        unsigned int m1,  shift;
@@ -129,14 +129,14 @@ setBitVector(BitVector vector, const BUN
 
 // clear a cell
 void
-clrBitVector(BitVector vector, BUN i, int bits)
+clrBitVector(BitVector vector, BUN i, const bte bits)
 {
        setBitVector(vector,i,bits, 0);
 }
 
 
 int
-tstBitVector(BitVector m, BUN idx, int width)
+tstBitVector(BitVector m, BUN idx, const bte width)
 {
        return getBitVector(m,idx,width) > 0;
 }
diff --git a/gdk/gdk_bitvector.h b/gdk/gdk_bitvector.h
--- a/gdk/gdk_bitvector.h
+++ b/gdk/gdk_bitvector.h
@@ -24,10 +24,10 @@ typedef BitVectorChunk *BitVector;
 gdk_export void initBitMasks(void);
 gdk_export size_t getBitVectorSize(const BUN cnt, const int width);
 gdk_export BitVector newBitVector(BUN cnt, int width);
-gdk_export void setBitVector(BitVector vector, const BUN i, const int bits, 
const BitVectorChunk value);
-gdk_export void clrBitVector(BitVector vector, BUN i, int bits);
-gdk_export int tstBitVector(BitVector vector, BUN i, int bits);
-gdk_export int getBitVector(BitVector vector, BUN i, int bits);
+gdk_export void setBitVector(BitVector vector, const BUN i, const bte bits, 
const BitVectorChunk value);
+gdk_export void clrBitVector(BitVector vector, BUN i, const bte bits);
+gdk_export int tstBitVector(BitVector vector, BUN i, const bte bits);
+gdk_export int getBitVector(BitVector vector, BUN i, const bte bits);
 
 #define BitVectorSize(CNT, BITS) wordaligned(((CNT) * (BITS) / CHAR_BIT) + ( 
((CNT) * (BITS)) % CHAR_BIT != 0 ), BitVectorChunk)
 
diff --git a/monetdb5/modules/mosaic/TODO_MOSAIC.txt 
b/monetdb5/modules/mosaic/TODO_MOSAIC.txt
--- a/monetdb5/modules/mosaic/TODO_MOSAIC.txt
+++ b/monetdb5/modules/mosaic/TODO_MOSAIC.txt
@@ -22,6 +22,5 @@ Create a plug-in estimation model framew
 ####code issues####
 See if the iteration algorithms can be improved.
 Get rid of (most of) MOStask and/or don't allocate it on the heap.
-Make sure the parameters.bits fields are always char.
 Use GDK naming conventions, e.g. o for stuff coming out if canditer_next.
 Update copyright in 2020.
diff --git a/monetdb5/modules/mosaic/mosaic_delta.c 
b/monetdb5/modules/mosaic/mosaic_delta.c
--- a/monetdb5/modules/mosaic/mosaic_delta.c
+++ b/monetdb5/modules/mosaic/mosaic_delta.c
@@ -94,7 +94,7 @@ MOSlayout_delta(MOStask task, BAT *btech
 #define determineDeltaParameters(PARAMETERS, SRC, LIMIT, TPE) \
 do {\
        TPE *val = SRC;\
-       int bits = 1;\
+       bte bits = 1;\
        unsigned int i;\
        DeltaTpe(TPE) unsigned_delta = 0;\
        TPE prev_val;\
@@ -111,7 +111,7 @@ do {\
                }\
 \
                if (current_unsigned_delta > unsigned_delta) {\
-                       int current_bits = bits;\
+                       bte current_bits = bits;\
                        while (current_unsigned_delta > ((DeltaTpe(TPE))(-1)) 
>> (sizeof(DeltaTpe(TPE)) * CHAR_BIT - current_bits) ) {\
                                /*keep track of number of BITS necessary to 
store the difference*/\
                                current_bits++;\
@@ -247,7 +247,7 @@ MOSdecompress_DEF(hge)
        MOSBlockHeaderTpe(delta, TPE)* parameters = (MOSBlockHeaderTpe(delta, 
TPE)*) task->blk;\
        BitVector base = (BitVector) MOScodevectorDelta(task, TPE);\
        DeltaTpe(TPE) acc = (DeltaTpe(TPE)) parameters->init; /*previous 
value*/\
-       int bits = parameters->bits;\
+       const bte bits = parameters->bits;\
        DeltaTpe(TPE) sign_mask = (DeltaTpe(TPE)) ((IPTpe(TPE)) 1) << (bits - 
1);\
     v = (TPE) acc;\
     BUN j = 0;\
@@ -276,7 +276,7 @@ MOSselect_DEF(delta, hge)
        MOSBlockHeaderTpe(delta, TPE)* parameters = (MOSBlockHeaderTpe(delta, 
TPE)*) task->blk;\
        BitVector base = (BitVector) MOScodevectorDelta(task, TPE);\
        DeltaTpe(TPE) acc = (DeltaTpe(TPE)) parameters->init; /*previous 
value*/\
-       int bits = parameters->bits;\
+       const bte bits = parameters->bits;\
        DeltaTpe(TPE) sign_mask = (DeltaTpe(TPE)) ((IPTpe(TPE)) 1) << (bits - 
1);\
     TPE v = (TPE) acc;\
     BUN j = 0;\
@@ -304,7 +304,7 @@ MOSprojection_DEF(delta, hge)
        MOSBlockHeaderTpe(delta, TPE)* parameters = (MOSBlockHeaderTpe(delta, 
TPE)*) task->blk;\
        BitVector base = (BitVector) MOScodevectorDelta(task, TPE);\
        DeltaTpe(TPE) acc = (DeltaTpe(TPE)) parameters->init; /*previous 
value*/\
-       int bits = parameters->bits;\
+       const bte bits = parameters->bits;\
        DeltaTpe(TPE) sign_mask = (DeltaTpe(TPE)) ((IPTpe(TPE)) 1) << (bits - 
1);\
     TPE lval = (TPE) acc;\
     BUN j = 0;\
diff --git a/monetdb5/modules/mosaic/mosaic_delta.h 
b/monetdb5/modules/mosaic/mosaic_delta.h
--- a/monetdb5/modules/mosaic/mosaic_delta.h
+++ b/monetdb5/modules/mosaic/mosaic_delta.h
@@ -50,7 +50,7 @@ ALGEBRA_INTERFACES_INTEGERS_ONLY(delta);
        MOSBlockHeaderTpe(delta, TPE)* parameters = (MOSBlockHeaderTpe(delta, 
TPE)*) task->blk;\
        BitVector base = MOScodevectorDelta(task, TPE);\
        DeltaTpe(TPE) acc = (DeltaTpe(TPE)) parameters->init; /*previous 
value*/\
-       char bits = parameters->bits;\
+       const bte bits = parameters->bits;\
        DeltaTpe(TPE) sign_mask = (DeltaTpe(TPE)) ((IPTpe(TPE)) 1) << (bits - 
1);\
     TPE rval = (TPE) acc;\
     BUN j = 0;\
diff --git a/monetdb5/modules/mosaic/mosaic_frame.c 
b/monetdb5/modules/mosaic/mosaic_frame.c
--- a/monetdb5/modules/mosaic/mosaic_frame.c
+++ b/monetdb5/modules/mosaic/mosaic_frame.c
@@ -92,7 +92,7 @@ MOSlayout_frame(MOStask task, BAT *btech
 #define determineFrameParameters(PARAMETERS, SRC, LIMIT, TPE) \
 do {\
        TPE *val = SRC, max, min;\
-       int bits = 1;\
+       bte bits = 1;\
        unsigned int i;\
        max = *val;\
        min = *val;\
@@ -111,7 +111,7 @@ do {\
                }\
                if (evaluate_bits) {\
                        DeltaTpe(TPE) width = GET_DELTA(TPE, current_max, 
current_min);\
-                       int current_bits = bits;\
+                       bte current_bits = bits;\
                        while (width > ((DeltaTpe(TPE))(-1)) >> 
(sizeof(DeltaTpe(TPE)) * CHAR_BIT - current_bits) ) {/*keep track of number of 
BITS necessary to store difference*/\
                                current_bits++;\
                        }\
diff --git a/monetdb5/modules/mosaic/mosaic_prefix.c 
b/monetdb5/modules/mosaic/mosaic_prefix.c
--- a/monetdb5/modules/mosaic/mosaic_prefix.c
+++ b/monetdb5/modules/mosaic/mosaic_prefix.c
@@ -133,15 +133,15 @@ MOSadvance_DEF(hge)
 do {\
        PrefixTpe(TPE) *val = (PrefixTpe(TPE)*) (SRC);\
        const int type_size_in_bits = sizeof(PrefixTpe(TPE))  * CHAR_BIT;\
-       int suffix_bits = 1;\
-       int prefix_bits = type_size_in_bits - suffix_bits;\
+       bte suffix_bits = 1;\
+       bte prefix_bits = type_size_in_bits - suffix_bits;\
        PrefixTpe(TPE) prefix_mask = getPrefixMask(prefix_bits, TPE);\
        PrefixTpe(TPE) prefix = *val & prefix_mask;\
        /*TODO: add additional loop to find best bit wise upper bound*/\
        BUN i;\
        for(i = 0; i < (LIMIT); i++, val++){\
-               int current_prefix_bits = prefix_bits;\
-               int current_suffix_bits = suffix_bits;\
+               bte current_prefix_bits = prefix_bits;\
+               bte current_suffix_bits = suffix_bits;\
                PrefixTpe(TPE) current_prefix = prefix;\
                PrefixTpe(TPE) current_prefix_mask =  prefix_mask;\
 \
@@ -291,7 +291,7 @@ MOSdecompress_DEF(hge)
        MOSBlockHeaderTpe(prefix, TPE)* parameters = (MOSBlockHeaderTpe(prefix, 
TPE)*) task->blk;\
        BitVector base = (BitVector) MOScodevectorPrefix(task, TPE);\
        PrefixTpe(TPE) prefix = parameters->prefix;\
-       int suffix_bits = parameters->suffix_bits;\
+       bte suffix_bits = parameters->suffix_bits;\
     for (oid c = canditer_peekprev(task->ci); !is_oid_nil(c) && c < last; c = 
CI_NEXT(task->ci)) {\
         BUN i = (BUN) (c - first);\
         v = (TPE) (prefix | getBitVector(base,i,suffix_bits));\
@@ -314,7 +314,7 @@ MOSselect_DEF(prefix, hge)
     MOSBlockHeaderTpe(prefix, TPE)* parameters = (MOSBlockHeaderTpe(prefix, 
TPE)*) task->blk;\
        BitVector base = (BitVector) MOScodevectorPrefix(task, TPE);\
        PrefixTpe(TPE) prefix = parameters->prefix;\
-       int suffix_bits = parameters->suffix_bits;\
+       bte suffix_bits = parameters->suffix_bits;\
        for (oid o = canditer_peekprev(task->ci); !is_oid_nil(o) && o < last; o 
= CI_NEXT(task->ci)) {\
                BUN i = (BUN) (o - first);\
                TPE value =  (TPE) (prefix | getBitVector(base,i,suffix_bits));\
@@ -336,7 +336,7 @@ MOSprojection_DEF(prefix, hge)
     MOSBlockHeaderTpe(prefix, TPE)* parameters = (MOSBlockHeaderTpe(prefix, 
TPE)*) task->blk;\
        BitVector base = (BitVector) MOScodevectorPrefix(task, TPE);\
        PrefixTpe(TPE) prefix = parameters->prefix;\
-       int suffix_bits = parameters->suffix_bits;\
+       bte suffix_bits = parameters->suffix_bits;\
        for (oid lo = canditer_peekprev(task->ci); !is_oid_nil(lo) && lo < 
last; lo = LEFT_CI_NEXT(task->ci)) {\
                BUN i = (BUN) (lo - first);\
                TPE lval =  (TPE) (prefix | getBitVector(base,i,suffix_bits));\
diff --git a/monetdb5/modules/mosaic/mosaic_prefix.h 
b/monetdb5/modules/mosaic/mosaic_prefix.h
--- a/monetdb5/modules/mosaic/mosaic_prefix.h
+++ b/monetdb5/modules/mosaic/mosaic_prefix.h
@@ -56,7 +56,7 @@ ALGEBRA_INTERFACES_INTEGERS_ONLY(prefix)
     MOSBlockHeaderTpe(prefix, TPE)* parameters = (MOSBlockHeaderTpe(prefix, 
TPE)*) task->blk;\
        BitVector base = (BitVector) MOScodevectorPrefix(task, TPE);\
        PrefixTpe(TPE) prefix = parameters->prefix;\
-       int suffix_bits = parameters->suffix_bits;\
+       bte suffix_bits = parameters->suffix_bits;\
     for (oid ro = canditer_peekprev(task->ci); !is_oid_nil(ro) && ro < last; 
ro = RIGHT_CI_NEXT(task->ci)) {\
                BUN i = (BUN) (ro - first);\
                TPE rval =  (TPE) (prefix | getBitVector(base,i,suffix_bits));\
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to