Changeset: c386f8fb65f9 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=c386f8fb65f9
Modified Files:
        monetdb5/modules/mosaic/mosaic.c
        monetdb5/modules/mosaic/mosaic.h
        monetdb5/modules/mosaic/mosaic_delta.c
        monetdb5/modules/mosaic/mosaic_dictionary.c
        monetdb5/modules/mosaic/mosaic_frame.c
Branch: mosaic
Log Message:

Macro definition


diffs (164 lines):

diff --git a/monetdb5/modules/mosaic/mosaic.c b/monetdb5/modules/mosaic/mosaic.c
--- a/monetdb5/modules/mosaic/mosaic.c
+++ b/monetdb5/modules/mosaic/mosaic.c
@@ -52,7 +52,7 @@ MOSinit(MOStask task, BAT *b){
        task->hdr = (MosaicHdr) base;
        base += MosaicHdrSize;
        task->blk = (MosaicBlk)  base;
-       task->dst = base + MosaicBlkSize;
+       task->dst = MOScodevector(task);
 }
 
 void MOSblk(MosaicBlk blk)
@@ -280,7 +280,7 @@ inheritCOL( BAT *bn, COLrec *cn, BAT *b,
 #define MOSnewBlk(TASK)\
                        MOSsetTag(TASK->blk,MOSAIC_EOL);\
                        MOSsetCnt(TASK->blk,0);\
-                       TASK->dst = ((char*) TASK->blk)+ MosaicBlkSize;
+                       TASK->dst = MOScodevector(TASK);
 
 /* The compression orchestration is dealt with here.
  * We assume that the estimates for each scheme returns
@@ -450,7 +450,7 @@ MOScompressInternal(Client cntxt, bat *r
                                MOSupdateHeader(cntxt,task);
                                MOSadvance_literal(cntxt,task);
                                // always start with an EOL block
-                               task->dst = ((char*) task->blk)+ MosaicBlkSize;
+                               task->dst = MOScodevector(task);
                                MOSsetTag(task->blk,MOSAIC_EOL);
                                MOSsetCnt(task->blk,0);
                        }
@@ -461,7 +461,7 @@ MOScompressInternal(Client cntxt, bat *r
                                MOSupdateHeader(cntxt,task);
                                MOSadvance_literal(cntxt,task);
                                // always start with an EOL block
-                               task->dst = ((char*) task->blk)+ MosaicBlkSize;
+                               task->dst = MOScodevector(task);
                                MOSsetTag(task->blk,MOSAIC_EOL);
                                MOSsetCnt(task->blk,0);
                        }
@@ -513,10 +513,10 @@ MOScompressInternal(Client cntxt, bat *r
        if( MOSgetTag(task->blk) == MOSAIC_NONE && MOSgetCnt(task->blk)){
                MOSupdateHeader(cntxt,task);
                MOSadvance_literal(cntxt,task);
-               task->dst = ((char*) task->blk)+ MosaicBlkSize;
+               task->dst = MOScodevector(task);
                MOSsetTag(task->blk,MOSAIC_EOL);
        } else
-               task->dst = ((char*) task->blk)+ MosaicBlkSize;
+               task->dst = MOScodevector(task);
        task->bsrc->tmosaic->free = (task->dst - (char*)task->hdr);
        task->timer = GDKusec() - task->timer;
        if(debug) 
diff --git a/monetdb5/modules/mosaic/mosaic.h b/monetdb5/modules/mosaic/mosaic.h
--- a/monetdb5/modules/mosaic/mosaic.h
+++ b/monetdb5/modules/mosaic/mosaic.h
@@ -109,6 +109,9 @@ typedef struct MOSAICBLK{
 #define MOSgetCnt(Blk) (BUN)((Blk)->cnt)
 #define MOSincCnt(Blk,I) (assert((Blk)->cnt +I < MOSAICMAXCNT), (Blk)->cnt+= 
(unsigned int)(I))
 
+/* The start of the encoding withing a Mosaic block */
+#define MOScodevector(Task) (((char*) Task->blk)+ MosaicBlkSize)
+
 /* Memory word alignement is type and platform dependent.
  * We use an encoding that fits the column type requirements
  */
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
@@ -200,7 +200,7 @@ MOSestimate_delta(Client cntxt, MOStask 
 #define DELTAcompress(TYPE,EXPR)\
 {      TYPE *v = ((TYPE*)task->src) + task->start, val= *v, delta =0;\
        BUN limit = task->stop - task->start > MOSlimit()? 
MOSlimit():task->stop - task->start;\
-       task->dst = ((char*) task->blk) + MosaicBlkSize;\
+       task->dst = MOScodevector(task); \
        *(TYPE*)task->dst = val;\
        task->dst += sizeof(TYPE);\
        for(v++,i =1; i<limit; i++,v++){\
@@ -236,7 +236,7 @@ MOScompress_delta(Client cntxt, MOStask 
        case TYPE_lng:
                {       lng *v = ((lng*)task->src) + task->start, val= *v, 
delta;
                        BUN limit = task->stop - task->start > MOSlimit()? 
MOSlimit():task->stop - task->start;
-                       task->dst = ((char*) task->blk) + MosaicBlkSize;
+                       task->dst = MOScodevector(task);
                        *(lng*)task->dst = val;
                        task->dst += sizeof(lng);
                        for(v++, i =1; i<limit; i++, v++){
@@ -269,7 +269,7 @@ MOScompress_delta(Client cntxt, MOStask 
 #define DELTAdecompress(TYPE)\
 {      TYPE val;\
        BUN lim = MOSgetCnt(blk);\
-       task->dst = ((char*) task->blk) + MosaicBlkSize;\
+       task->dst = MOScodevector(task);\
        val = *(TYPE*)task->dst ;\
        task->dst += sizeof(TYPE);\
        for(i = 0; i < lim; i++) {\
@@ -299,7 +299,7 @@ MOSdecompress_delta(Client cntxt, MOStas
        case TYPE_lng:
        {       lng val;
                BUN lim = MOSgetCnt(blk);
-               task->dst = ((char*) task->blk) + MosaicBlkSize;
+               task->dst = MOScodevector(task);
                val = *(lng*)task->dst ;
                task->dst += sizeof(lng);
                for(i = 0; i < lim; i++) {
@@ -327,7 +327,7 @@ MOSdecompress_delta(Client cntxt, MOStas
        
 #define subselect_delta(TPE) {\
                TPE val= * (TPE*) (((char*) task->blk) + MosaicBlkSize);\
-               task->dst = ((char*)task->blk)+ MosaicBlkSize + sizeof(TYPE);\
+               task->dst = MOScodevector(task)  + sizeof(TYPE);\
                if( !*anti){\
                        if( *(TPE*) low == TPE##_nil && *(TPE*) hgh == 
TPE##_nil){\
                                for( ; first < last; first++){\
@@ -418,7 +418,7 @@ MOSsubselect_delta(Client cntxt,  MOStas
        case TYPE_int:
        // Expanded MOSselect_delta for debugging
                {       int val= *(int*) (((char*) task->blk) + MosaicBlkSize);
-                       task->dst = ((char *)task->blk) +MosaicBlkSize + 
sizeof(int);
+                       task->dst = MOScodevector(task) + sizeof(int);
 
                        if( !*anti){
                                if( *(int*) low == int_nil && *(int*) hgh == 
int_nil){
@@ -592,7 +592,7 @@ MOSsubselect_delta(Client cntxt,  MOStas
                hgh= low= *(TPE*) val;\
        } \
        v= *(TPE*) (((char*) task->blk) + MosaicBlkSize);\
-       task->dst = ((char *)task->blk) +MosaicBlkSize + sizeof(int);\
+       task->dst = MOScodevector(task) + sizeof(int);\
        for( ; first < last; first++, v+= *(bte*)task->dst, task->dst++){\
                if( (low == TPE##_nil || v >= low) && (v <= hgh || hgh == 
TPE##_nil) ){\
                        if ( !anti) {\
@@ -657,7 +657,7 @@ MOSthetasubselect_delta(Client cntxt,  M
                                hgh= low= *(int*) val;
                        } 
                        v= *(int*) (((char*) task->blk) + MosaicBlkSize);
-                       task->dst = ((char *)task->blk) +MosaicBlkSize + 
sizeof(int);
+                       task->dst = MOScodevector(task) + sizeof(int);
                        for( ; first < last; first++, v+= *(bte*)task->dst, 
task->dst++){
                                if( (low == int_nil || v >= low) && (v <= hgh 
|| hgh == int_nil) ){
                                        if ( !anti) {
diff --git a/monetdb5/modules/mosaic/mosaic_dictionary.c 
b/monetdb5/modules/mosaic/mosaic_dictionary.c
--- a/monetdb5/modules/mosaic/mosaic_dictionary.c
+++ b/monetdb5/modules/mosaic/mosaic_dictionary.c
@@ -323,7 +323,7 @@ MOScompress_dictionary(Client cntxt, MOS
        MosaicHdr hdr = task->hdr;
        BitVector base;
 
-       task->dst = ((char*) task->blk)+ MosaicBlkSize;
+       task->dst = MOScodevector(task);
        base  = (BitVector) task->dst; 
 
        (void) cntxt;
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
@@ -340,7 +340,7 @@ MOSestimate_frame(Client cntxt, MOStask 
 {      TPE *val = ((TPE*)task->src) + task->start, frame = *val, delta;\
        TPE *dict = (TPE*)hdr->frame;\
        BUN limit = task->stop - task->start > MOSlimit()? MOSlimit(): 
task->stop - task->start;\
-       task->dst = ((char*) task->blk)+ MosaicBlkSize;\
+       task->dst = MOScodevector(task); \
     *(TPE*) task->dst = frame;\
        task->dst += sizeof(TPE);\
        base = (BitVector) (((char*) task->blk) +  MosaicBlkSize + 
wordaligned(sizeof(TPE),lng));\
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to