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]