Changeset: 8c7b9598349a for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=8c7b9598349a
Modified Files:
        gdk/gdk_calc.c
        gdk/gdk_calc_compare.h
Branch: default
Log Message:

Extract constants from loops (just to make sure they are always extracted). I 
did run the testweb twice.


diffs (truncated from 1337 to 300 lines):

diff --git a/gdk/gdk_calc.c b/gdk/gdk_calc.c
--- a/gdk/gdk_calc.c
+++ b/gdk/gdk_calc.c
@@ -87,8 +87,8 @@ checkbats(BAT *b1, BAT *b2, const char *
        do {                                                            \
                const TYPE1 *restrict src = (const TYPE1 *) Tloc(b, 0); \
                TYPE2 *restrict dst = (TYPE2 *) Tloc(bn, 0);            \
-               for (i = 0; i < ci.ncand; i++) {                        \
-                       x = canditer_next(&ci) - b->hseqbase;           \
+               for (i = 0; i < ncand; i++) {                   \
+                       x = canditer_next(&ci) - bhseqbase;             \
                        if (is_##TYPE1##_nil(src[x])) {                 \
                                nils++;                                 \
                                dst[i] = TYPE2##_nil;                   \
@@ -102,8 +102,8 @@ checkbats(BAT *b1, BAT *b2, const char *
        do {                                                            \
                const TYPE1 *restrict src = (const TYPE1 *) Tloc(b, 0); \
                TYPE2 *restrict dst = (TYPE2 *) Tloc(bn, 0);            \
-               for (i = 0; i < ci.ncand; i++) {                        \
-                       x = canditer_next(&ci) - b->hseqbase;           \
+               for (i = 0; i < ncand; i++) {                   \
+                       x = canditer_next(&ci) - bhseqbase;             \
                        if (is_##TYPE1##_nil(src[x])) {                 \
                                nils++;                                 \
                                dst[i] = TYPE2##_nil;                   \
@@ -120,7 +120,7 @@ checkbats(BAT *b1, BAT *b2, const char *
        do {                                                            \
                i = j = 0;                                              \
                if (ci1->tpe == cand_dense && ci2->tpe == cand_dense) { \
-                       for (k = 0; k < ci1->ncand; k++) {              \
+                       for (k = 0; k < ncand; k++) {           \
                                if (incr1)                              \
                                        i = canditer_next_dense(ci1) - 
candoff1; \
                                if (incr2)                              \
@@ -135,7 +135,7 @@ checkbats(BAT *b1, BAT *b2, const char *
                                }                                       \
                        }                                               \
                } else {                                                \
-                       for (k = 0; k < ci1->ncand; k++) {              \
+                       for (k = 0; k < ncand; k++) {           \
                                if (incr1)                              \
                                        i = canditer_next(ci1) - candoff1; \
                                if (incr2)                              \
@@ -156,7 +156,7 @@ checkbats(BAT *b1, BAT *b2, const char *
        do {                                                            \
                i = j = 0;                                              \
                if (ci1->tpe == cand_dense && ci2->tpe == cand_dense) { \
-                       for (k = 0; k < ci1->ncand; k++) {              \
+                       for (k = 0; k < ncand; k++) {           \
                                if (incr1)                              \
                                        i = canditer_next_dense(ci1) - 
candoff1; \
                                if (incr2)                              \
@@ -173,7 +173,7 @@ checkbats(BAT *b1, BAT *b2, const char *
                                }                                       \
                        }                                               \
                } else {                                                \
-                       for (k = 0; k < ci1->ncand; k++) {              \
+                       for (k = 0; k < ncand; k++) {           \
                                if (incr1)                              \
                                        i = canditer_next(ci1) - candoff1; \
                                if (incr2)                              \
@@ -198,7 +198,7 @@ checkbats(BAT *b1, BAT *b2, const char *
        do {                                                            \
                i = j = 0;                                              \
                if (ci1->tpe == cand_dense && ci2->tpe == cand_dense) { \
-                       for (k = 0; k < ci1->ncand; k++) {              \
+                       for (k = 0; k < ncand; k++) {           \
                                if (incr1)                              \
                                        i = canditer_next_dense(ci1) - 
candoff1; \
                                if (incr2)                              \
@@ -212,7 +212,7 @@ checkbats(BAT *b1, BAT *b2, const char *
                                }                                       \
                        }                                               \
                } else {                                                \
-                       for (k = 0; k < ci1->ncand; k++) {              \
+                       for (k = 0; k < ncand; k++) {           \
                                if (incr1)                              \
                                        i = canditer_next(ci1) - candoff1; \
                                if (incr2)                              \
@@ -232,7 +232,7 @@ checkbats(BAT *b1, BAT *b2, const char *
        do {                                                            \
                i = j = 0;                                              \
                if (ci1->tpe == cand_dense && ci2->tpe == cand_dense) { \
-                       for (k = 0; k < ci1->ncand; k++) {              \
+                       for (k = 0; k < ncand; k++) {           \
                                if (incr1)                              \
                                        i = canditer_next_dense(ci1) - 
candoff1; \
                                if (incr2)                              \
@@ -242,7 +242,7 @@ checkbats(BAT *b1, BAT *b2, const char *
                                ((TYPE3 *) dst)[k] = FUNC(v1, v2);      \
                        }                                               \
                } else {                                                \
-                       for (k = 0; k < ci1->ncand; k++) {              \
+                       for (k = 0; k < ncand; k++) {           \
                                if (incr1)                              \
                                        i = canditer_next(ci1) - candoff1; \
                                if (incr2)                              \
@@ -258,7 +258,7 @@ checkbats(BAT *b1, BAT *b2, const char *
        do {                                                            \
                i = j = 0;                                              \
                if (ci1->tpe == cand_dense && ci2->tpe == cand_dense) { \
-                       for (k = 0; k < ci1->ncand; k++) {              \
+                       for (k = 0; k < ncand; k++) {           \
                                if (incr1)                              \
                                        i = canditer_next_dense(ci1) - 
candoff1; \
                                if (incr2)                              \
@@ -270,7 +270,7 @@ checkbats(BAT *b1, BAT *b2, const char *
                                        on_overflow;                    \
                        }                                               \
                } else {                                                \
-                       for (k = 0; k < ci1->ncand; k++) {              \
+                       for (k = 0; k < ncand; k++) {           \
                                if (incr1)                              \
                                        i = canditer_next(ci1) - candoff1; \
                                if (incr2)                              \
@@ -288,7 +288,7 @@ checkbats(BAT *b1, BAT *b2, const char *
        do {                                                            \
                i = j = 0;                                              \
                if (ci1->tpe == cand_dense && ci2->tpe == cand_dense) { \
-                       for (k = 0; k < ci1->ncand; k++) {              \
+                       for (k = 0; k < ncand; k++) {           \
                                if (incr1)                              \
                                        i = canditer_next_dense(ci1) - 
candoff1; \
                                if (incr2)                              \
@@ -314,7 +314,7 @@ checkbats(BAT *b1, BAT *b2, const char *
                                }                                       \
                        }                                               \
                } else {                                                \
-                       for (k = 0; k < ci1->ncand; k++) {              \
+                       for (k = 0; k < ncand; k++) {           \
                                if (incr1)                              \
                                        i = canditer_next(ci1) - candoff1; \
                                if (incr2)                              \
@@ -355,7 +355,7 @@ BATcalcnot(BAT *b, BAT *s)
        BAT *bn;
        BUN nils = 0;
        BUN i, ncand;
-       oid x;
+       oid x, bhseqbase = b->hseqbase;
        struct canditer ci;
 
        TRC_DEBUG_IF(ALGO) t0 = GDKusec();
@@ -387,8 +387,8 @@ BATcalcnot(BAT *b, BAT *s)
                        if (ci.ncand % 32 != 0)
                                dst[ci.ncand / 32] &= (1U << (ci.ncand % 32)) - 
1;
                } else {
-                       for (i = 0; i < ci.ncand; i++) {
-                               x = canditer_next(&ci) - b->hseqbase;
+                       for (i = 0; i < ncand; i++) {
+                               x = canditer_next(&ci) - bhseqbase;
                                mskSetVal(bn, i, !mskGetVal(b, x));
                        }
                }
@@ -529,7 +529,7 @@ BATcalcnegate(BAT *b, BAT *s)
        BAT *bn;
        BUN nils = 0;
        BUN i, ncand;
-       oid x;
+       oid x, bhseqbase = b->hseqbase;
        struct canditer ci;
 
        TRC_DEBUG_IF(ALGO) t0 = GDKusec();
@@ -657,7 +657,7 @@ BATcalcabsolute(BAT *b, BAT *s)
        BAT *bn;
        BUN nils= 0;
        BUN i, ncand;
-       oid x;
+       oid x, bhseqbase = b->hseqbase;
        struct canditer ci;
 
        TRC_DEBUG_IF(ALGO) t0 = GDKusec();
@@ -789,7 +789,7 @@ BATcalciszero(BAT *b, BAT *s)
        BAT *bn;
        BUN nils = 0;
        BUN i, ncand;
-       oid x;
+       oid x, bhseqbase = b->hseqbase;
        struct canditer ci;
 
        TRC_DEBUG_IF(ALGO) t0 = GDKusec();
@@ -919,7 +919,7 @@ BATcalcsign(BAT *b, BAT *s)
        BAT *bn;
        BUN nils = 0;
        BUN i, ncand;
-       oid x;
+       oid x, bhseqbase = b->hseqbase;
        struct canditer ci;
 
        TRC_DEBUG_IF(ALGO) t0 = GDKusec();
@@ -1046,8 +1046,8 @@ VARcalcsign(ValPtr ret, const ValRecord 
 #define ISNIL_TYPE(TYPE, NOTNIL)                                       \
        do {                                                            \
                const TYPE *restrict src = (const TYPE *) Tloc(b, 0);   \
-               for (i = 0; i < ci.ncand; i++) {                        \
-                       x = canditer_next(&ci) - b->hseqbase;           \
+               for (i = 0; i < ncand; i++) {                   \
+                       x = canditer_next(&ci) - bhseqbase;             \
                        dst[i] = (bit) (is_##TYPE##_nil(src[x]) ^ NOTNIL); \
                }                                                       \
        } while (0)
@@ -1062,6 +1062,7 @@ BATcalcisnil_implementation(BAT *b, BAT 
        struct canditer ci;
        bit *restrict dst;
        BUN nils = 0;
+       oid bhseqbase = b->hseqbase;
 
        TRC_DEBUG_IF(ALGO) t0 = GDKusec();
 
@@ -1118,8 +1119,8 @@ BATcalcisnil_implementation(BAT *b, BAT 
                int (*atomcmp)(const void *, const void *) = 
ATOMcompare(b->ttype);
                const void *nil = ATOMnilptr(b->ttype);
 
-               for (i = 0; i < ci.ncand; i++) {
-                       x = canditer_next(&ci) - b->hseqbase;
+               for (i = 0; i < ncand; i++) {
+                       x = canditer_next(&ci) - bhseqbase;
                        dst[i] = (bit) (((*atomcmp)(BUNtail(bi, x), nil) == 0) 
^ notnil);
                }
                break;
@@ -1182,8 +1183,8 @@ VARcalcisnotnil(ValPtr ret, const ValRec
        do {                                                            \
                TYPE *tb1 = Tloc(b1, 0), *tb2 = Tloc(b2, 0), *restrict tbn = 
Tloc(bn, 0); \
                for (BUN i = 0; i < ncand; i++) { \
-                       oid x1 = canditer_next(&ci1) - b1->hseqbase; \
-                       oid x2 = canditer_next(&ci2) - b2->hseqbase; \
+                       oid x1 = canditer_next(&ci1) - b1hseqbase; \
+                       oid x2 = canditer_next(&ci2) - b2hseqbase; \
                        TYPE p1 = tb1[x1], p2 = tb2[x2]; \
                        if (is_##TYPE##_nil(p1) || is_##TYPE##_nil(p2)) { \
                                nils = true; \
@@ -1202,6 +1203,7 @@ BATcalcmin(BAT *b1, BAT *b2, BAT *s1, BA
        bool nils = false;
        BUN ncand;
        struct canditer ci1, ci2;
+       oid b1hseqbase = b1->hseqbase, b2hseqbase = b2->hseqbase;
 
        TRC_DEBUG_IF(ALGO) t0 = GDKusec();
 
@@ -1253,8 +1255,8 @@ BATcalcmin(BAT *b1, BAT *b2, BAT *s1, BA
                int (*cmp)(const void *, const void *) = ATOMcompare(b1->ttype);
 
                for (BUN i = 0; i < ncand; i++) {
-                       oid x1 = canditer_next(&ci1) - b1->hseqbase;
-                       oid x2 = canditer_next(&ci2) - b2->hseqbase;
+                       oid x1 = canditer_next(&ci1) - b1hseqbase;
+                       oid x2 = canditer_next(&ci2) - b2hseqbase;
                        const void *p1 = BUNtail(b1i, x1);
                        const void *p2 = BUNtail(b2i, x2);
                        if (cmp(p1, nil) == 0 || cmp(p2, nil) == 0) {
@@ -1301,8 +1303,8 @@ BATcalcmin(BAT *b1, BAT *b2, BAT *s1, BA
        do {                                                            \
                TYPE *tb1 = Tloc(b1, 0), *tb2 = Tloc(b2, 0), *restrict tbn = 
Tloc(bn, 0); \
                for (BUN i = 0; i < ncand; i++) { \
-                       oid x1 = canditer_next(&ci1) - b1->hseqbase; \
-                       oid x2 = canditer_next(&ci2) - b2->hseqbase; \
+                       oid x1 = canditer_next(&ci1) - b1hseqbase; \
+                       oid x2 = canditer_next(&ci2) - b2hseqbase; \
                        TYPE p1 = tb1[x1], p2 = tb2[x2]; \
                        if (is_##TYPE##_nil(p1)) { \
                                if (is_##TYPE##_nil(p2)) { \
@@ -1325,6 +1327,7 @@ BATcalcmin_no_nil(BAT *b1, BAT *b2, BAT 
        bool nils = false;
        BUN ncand;
        struct canditer ci1, ci2;
+       oid b1hseqbase = b1->hseqbase, b2hseqbase = b2->hseqbase;
 
        TRC_DEBUG_IF(ALGO) t0 = GDKusec();
 
@@ -1376,8 +1379,8 @@ BATcalcmin_no_nil(BAT *b1, BAT *b2, BAT 
                int (*cmp)(const void *, const void *) = ATOMcompare(b1->ttype);
 
                for (BUN i = 0; i < ncand; i++) {
-                       oid x1 = canditer_next(&ci1) - b1->hseqbase;
-                       oid x2 = canditer_next(&ci2) - b2->hseqbase;
+                       oid x1 = canditer_next(&ci1) - b1hseqbase;
+                       oid x2 = canditer_next(&ci2) - b2hseqbase;
                        const void *p1 = BUNtail(b1i, x1);
                        const void *p2 = BUNtail(b2i, x2);
                        if (cmp(p1, nil) == 0) {
@@ -1428,7 +1431,7 @@ BATcalcmin_no_nil(BAT *b1, BAT *b2, BAT 
        do {                                                            \
                TYPE *restrict tb = Tloc(b, 0), *restrict tbn = Tloc(bn, 0), 
pp2 = *(TYPE*) p2; \
                for (BUN i = 0; i < ncand; i++) {       \
-                       oid x = canditer_next(&ci) - b->hseqbase;       \
+                       oid x = canditer_next(&ci) - bhseqbase; \
                        TYPE p1 = tb[x]; \
                        if (is_##TYPE##_nil(p1)) {      \
                                nils = true;    \
@@ -1450,6 +1453,7 @@ BATcalcmincst(BAT *b, const ValRecord *v
        const void *p2;
        const void *restrict nil = ATOMnilptr(b->ttype);
        int (*cmp)(const void *, const void *) = ATOMcompare(b->ttype);
+       oid bhseqbase = b->hseqbase;
 
        TRC_DEBUG_IF(ALGO) t0 = GDKusec();
 
@@ -1498,7 +1502,7 @@ BATcalcmincst(BAT *b, const ValRecord *v
                BATiter bi = bat_iterator(b);
 
                for (BUN i = 0; i < ncand; i++) {
_______________________________________________
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to