Changeset: 704e9ae616e0 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/704e9ae616e0
Modified Files:
        gdk/gdk_batop.c
Branch: default
Log Message:

A little cleanup.


diffs (157 lines):

diff --git a/gdk/gdk_batop.c b/gdk/gdk_batop.c
--- a/gdk/gdk_batop.c
+++ b/gdk/gdk_batop.c
@@ -63,12 +63,7 @@ insert_string_bat(BAT *b, BAT *n, struct
        size_t toff = ~(size_t) 0;      /* tail offset */
        BUN p, r;               /* loop variables */
        const void *tp = NULL;  /* tail value pointer */
-       unsigned char tbv;      /* tail value-as-bte */
-       unsigned short tsv;     /* tail value-as-sht */
-#if SIZEOF_VAR_T == 8
-       unsigned int tiv;       /* tail value-as-int */
-#endif
-       var_t v;                /* value */
+       var_t v;
        size_t off;             /* offset within n's string heap */
        BUN cnt = ci->ncand;
        BUN oldcnt = BATcount(b);
@@ -184,35 +179,13 @@ insert_string_bat(BAT *b, BAT *n, struct
                 * only one of them will actually be used, hence we
                 * still obey the rule for restrict-qualified
                 * pointers */
-               const unsigned char *restrict tbp = (const unsigned char *) 
ni.base;
-               const unsigned short *restrict tsp = (const unsigned short *) 
ni.base;
-#if SIZEOF_VAR_T == 8
-               const unsigned int *restrict tip = (const unsigned int *) 
ni.base;
-#endif
-               const var_t *restrict tvp = (const var_t *) ni.base;
-
-               switch (b->twidth) {
-               case 1:
-                       tp = &tbv;
-                       break;
-               case 2:
-                       tp = &tsv;
-                       break;
+               const uint8_t *restrict tbp = (const uint8_t *) ni.base;
+               const uint16_t *restrict tsp = (const uint16_t *) ni.base;
+               const uint32_t *restrict tip = (const uint32_t *) ni.base;
 #if SIZEOF_VAR_T == 8
-               case 4:
-                       tp = &tiv;
-                       break;
-               case 8:
-                       tp = &v;
-                       break;
-#else
-               case 4:
-                       tp = &v;
-                       break;
+               const uint64_t *restrict tlp = (const uint64_t *) ni.base;
 #endif
-               default:
-                       MT_UNREACHABLE();
-               }
+
                MT_thread_setalgorithm("copy offset values");
                r = b->batCount;
                while (cnt > 0) {
@@ -225,14 +198,16 @@ insert_string_bat(BAT *b, BAT *n, struct
                        case 2:
                                v = (var_t) tsp[p] + GDK_VAROFFSET;
                                break;
-#if SIZEOF_VAR_T == 8
                        case 4:
                                v = (var_t) tip[p];
                                break;
+#if SIZEOF_VAR_T == 8
+                       case 8:
+                               v = (var_t) tlp[p];
+                               break;
 #endif
                        default:
-                               v = tvp[p];
-                               break;
+                               MT_UNREACHABLE();
                        }
                        v = (var_t) ((size_t) v + toff);
                        assert(v >= GDK_VAROFFSET);
@@ -246,15 +221,19 @@ insert_string_bat(BAT *b, BAT *n, struct
                                assert(v - GDK_VAROFFSET < ((var_t) 1 << 16));
                                ((uint16_t *) b->theap->base)[r++] = (uint16_t) 
(v - GDK_VAROFFSET);
                                break;
+                       case 4:
 #if SIZEOF_VAR_T == 8
-                       case 4:
                                assert(v < ((var_t) 1 << 32));
+#endif
                                ((uint32_t *) b->theap->base)[r++] = (uint32_t) 
v;
                                break;
+#if SIZEOF_VAR_T == 8
+                       case 8:
+                               ((uint64_t *) b->theap->base)[r++] = (uint64_t) 
v;
+                               break;
 #endif
                        default:
-                               ((var_t *) b->theap->base)[r++] = v;
-                               break;
+                               MT_UNREACHABLE();
                        }
                }
        } else if (b->tvheap->free < ni.vhfree / 2 ||
@@ -302,21 +281,25 @@ insert_string_bat(BAT *b, BAT *n, struct
                                switch (b->twidth) {
                                case 1:
                                        assert(v - GDK_VAROFFSET < ((var_t) 1 
<< 8));
-                                       ((uint8_t *) b->theap->base)[r] = 
(unsigned char) (v - GDK_VAROFFSET);
+                                       ((uint8_t *) b->theap->base)[r] = 
(uint8_t) (v - GDK_VAROFFSET);
                                        break;
                                case 2:
                                        assert(v - GDK_VAROFFSET < ((var_t) 1 
<< 16));
-                                       ((uint16_t *) b->theap->base)[r] = 
(unsigned short) (v - GDK_VAROFFSET);
+                                       ((uint16_t *) b->theap->base)[r] = 
(uint16_t) (v - GDK_VAROFFSET);
+                                       break;
+                               case 4:
+#if SIZEOF_VAR_T == 8
+                                       assert(v < ((var_t) 1 << 32));
+#endif
+                                       ((uint32_t *) b->theap->base)[r] = 
(uint32_t) v;
                                        break;
 #if SIZEOF_VAR_T == 8
-                               case 4:
-                                       assert(v < ((var_t) 1 << 32));
-                                       ((uint32_t *) b->theap->base)[r] = 
(unsigned int) v;
+                               case 8:
+                                       ((uint64_t *) b->theap->base)[r] = 
(uint64_t) v;
                                        break;
 #endif
                                default:
-                                       ((var_t *) b->theap->base)[r] = v;
-                                       break;
+                                       MT_UNREACHABLE();
                                }
                        } else {
                                if (tfastins_nocheckVAR(b, r, tp) != 
GDK_SUCCEED) {
@@ -2919,16 +2902,18 @@ BATcount_no_nil(BAT *b, BAT *s)
                        for (i = 0; i < n; i++)
                                cnt += base[(var_t) ((const uint16_t *) 
p)[canditer_next(&ci) - hseq] + GDK_VAROFFSET] != '\200';
                        break;
-#if SIZEOF_VAR_T != SIZEOF_INT
                case 4:
                        for (i = 0; i < n; i++)
                                cnt += base[(var_t) ((const uint32_t *) 
p)[canditer_next(&ci) - hseq]] != '\200';
                        break;
+#if SIZEOF_VAR_T == 8
+               case 8:
+                       for (i = 0; i < n; i++)
+                               cnt += base[(var_t) ((const uint64_t *) 
p)[canditer_next(&ci) - hseq]] != '\200';
+                       break;
 #endif
                default:
-                       for (i = 0; i < n; i++)
-                               cnt += base[((const var_t *) 
p)[canditer_next(&ci) - hseq]] != '\200';
-                       break;
+                       MT_UNREACHABLE();
                }
                break;
        default:
_______________________________________________
checkin-list mailing list -- checkin-list@monetdb.org
To unsubscribe send an email to checkin-list-le...@monetdb.org

Reply via email to