Changeset: c98ff0244d13 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/c98ff0244d13
Modified Files:
        gdk/gdk.h
        gdk/gdk_bat.c
        gdk/gdk_batop.c
Branch: Jul2021
Log Message:

Don't use BUNtloc for TYPE_msk and introduce BUNtmsk for TYPE_msk.


diffs (49 lines):

diff --git a/gdk/gdk.h b/gdk/gdk.h
--- a/gdk/gdk.h
+++ b/gdk/gdk.h
@@ -1150,10 +1150,11 @@ typedef var_t stridx_t;
 
 #define BUNtvaroff(bi,p) VarHeapVal((bi).base, (p), (bi).width)
 
-#define BUNtloc(bi,p)  (ATOMstorage((bi).type) == TYPE_msk ? Tmsk(&(bi), p) : 
(void *) ((char *) (bi).base + ((p) << (bi).shift)))
+#define BUNtmsk(bi,p)  Tmsk(&(bi), (p))
+#define BUNtloc(bi,p)  (assert((bi).type != TYPE_msk), ((void *) ((char *) 
(bi).base + ((p) << (bi).shift))))
 #define BUNtpos(bi,p)  Tpos(&(bi),p)
 #define BUNtvar(bi,p)  (assert((bi).type && (bi).b->tvarsized), (void *) 
((bi).vh->base+BUNtvaroff(bi,p)))
-#define BUNtail(bi,p)  
((bi).type?(bi).b->tvarsized?BUNtvar(bi,p):BUNtloc(bi,p):BUNtpos(bi,p))
+#define BUNtail(bi,p)  
((bi).type?(bi).b->tvarsized?BUNtvar(bi,p):(bi).type==TYPE_msk?BUNtmsk(bi,p):BUNtloc(bi,p):BUNtpos(bi,p))
 
 #define BUNlast(b)     (assert((b)->batCount <= BUN_MAX), (b)->batCount)
 
@@ -1955,6 +1956,7 @@ Tpos(BATiter *bi, BUN p)
 static inline bool
 Tmskval(BATiter *bi, BUN p)
 {
+       assert(ATOMstorage(bi->type) == TYPE_msk);
        return ((uint32_t *) bi->base)[p / 32] & (1U << (p % 32));
 }
 
diff --git a/gdk/gdk_bat.c b/gdk/gdk_bat.c
--- a/gdk/gdk_bat.c
+++ b/gdk/gdk_bat.c
@@ -1438,6 +1438,8 @@ BUNinplacemulti(BAT *b, const oid *posit
                        } else {
                                val = BUNtpos(bi, p);
                        }
+               } else if (bi.type == TYPE_msk) {
+                       val = BUNtmsk(bi, p);
                } else {
                        val = BUNtloc(bi, p);
                }
diff --git a/gdk/gdk_batop.c b/gdk/gdk_batop.c
--- a/gdk/gdk_batop.c
+++ b/gdk/gdk_batop.c
@@ -1332,7 +1332,7 @@ BATappend_or_update(BAT *b, BAT *p, cons
                                        bat_iterator_end(&ni);
                                        return GDK_FAIL;
                                }
-                               if (BUNappend(b, Tmsk(&ni, i), force) != 
GDK_SUCCEED) {
+                               if (BUNappend(b, BUNtmsk(ni, i), force) != 
GDK_SUCCEED) {
                                        bat_iterator_end(&ni);
                                        return GDK_FAIL;
                                }
_______________________________________________
checkin-list mailing list -- [email protected]
To unsubscribe send an email to [email protected]

Reply via email to