Changeset: 377a7d8c2c47 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=377a7d8c2c47
Modified Files:
gdk/gdk.h
gdk/gdk_bat.c
gdk/gdk_batop.c
gdk/gdk_bbp.c
gdk/gdk_bbp.h
gdk/gdk_hash.c
gdk/gdk_imprints.c
gdk/gdk_logger.c
gdk/gdk_orderidx.c
monetdb5/mal/mal_authorize.c
monetdb5/mal/mal_debugger.c
monetdb5/mal/mal_interpreter.c
monetdb5/mal/mal_listing.c
monetdb5/mal/mal_profiler.c
monetdb5/mal/mal_recycle.c
monetdb5/mal/mal_resource.c
monetdb5/mal/mal_runtime.c
monetdb5/modules/kernel/bat5.c
monetdb5/modules/mal/mat.c
monetdb5/modules/mal/querylog.c
monetdb5/optimizer/opt_statistics.c
sql/backends/monet5/sql.c
sql/backends/monet5/sql_result.c
Branch: default
Log Message:
Since BAT ids are now always positive, we can get rid of calls to abs.
diffs (truncated from 976 to 300 lines):
diff --git a/gdk/gdk.h b/gdk/gdk.h
--- a/gdk/gdk.h
+++ b/gdk/gdk.h
@@ -1758,14 +1758,14 @@ gdk_export BBPrec *BBP[N_BBPINIT];
#define BBP_logical(i) BBP[(i)>>BBPINITLOG][(i)&(BBPINIT-1)].logical
#define BBP_bak(i) BBP[(i)>>BBPINITLOG][(i)&(BBPINIT-1)].bak
#define BBP_next(i) BBP[(i)>>BBPINITLOG][(i)&(BBPINIT-1)].next
-#define BBP_physical(i)
BBP[abs(i)>>BBPINITLOG][abs(i)&(BBPINIT-1)].physical
-#define BBP_options(i) BBP[abs(i)>>BBPINITLOG][abs(i)&(BBPINIT-1)].options
-#define BBP_desc(i) BBP[abs(i)>>BBPINITLOG][abs(i)&(BBPINIT-1)].desc
-#define BBP_refs(i) BBP[abs(i)>>BBPINITLOG][abs(i)&(BBPINIT-1)].refs
-#define BBP_lrefs(i) BBP[abs(i)>>BBPINITLOG][abs(i)&(BBPINIT-1)].lrefs
-#define BBP_lastused(i)
BBP[abs(i)>>BBPINITLOG][abs(i)&(BBPINIT-1)].lastused
-#define BBP_status(i) BBP[abs(i)>>BBPINITLOG][abs(i)&(BBPINIT-1)].status
-#define BBP_pid(i) BBP[abs(i)>>BBPINITLOG][abs(i)&(BBPINIT-1)].pid
+#define BBP_physical(i) BBP[(i)>>BBPINITLOG][(i)&(BBPINIT-1)].physical
+#define BBP_options(i) BBP[(i)>>BBPINITLOG][(i)&(BBPINIT-1)].options
+#define BBP_desc(i) BBP[(i)>>BBPINITLOG][(i)&(BBPINIT-1)].desc
+#define BBP_refs(i) BBP[(i)>>BBPINITLOG][(i)&(BBPINIT-1)].refs
+#define BBP_lrefs(i) BBP[(i)>>BBPINITLOG][(i)&(BBPINIT-1)].lrefs
+#define BBP_lastused(i) BBP[(i)>>BBPINITLOG][(i)&(BBPINIT-1)].lastused
+#define BBP_status(i) BBP[(i)>>BBPINITLOG][(i)&(BBPINIT-1)].status
+#define BBP_pid(i) BBP[(i)>>BBPINITLOG][(i)&(BBPINIT-1)].pid
/* macros that nicely check parameters */
#define BBPcacheid(b) ((b)->batCacheid)
@@ -1773,9 +1773,6 @@ gdk_export BBPrec *BBP[N_BBPINIT];
gdk_export int BBPcurstamp(void);
#define BBPrefs(i) (BBPcheck((i),"BBPrefs")?BBP_refs(i):-1)
#define BBPcache(i) (BBPcheck((i),"BBPcache")?BBP_cache(i):(BAT*) NULL)
-/* we use abs(i) instead of -(i) here because of a bug in gcc 4.8.2
- * (at least) with optimization enabled; it incorrectly complains
- * about an array bound error in monetdb5/modules/kernel/status.c */
#define BBPname(i) \
(BBPcheck((i), "BBPname") ? \
BBP[(i) >> BBPINITLOG][(i) & (BBPINIT - 1)].logical : \
@@ -2545,12 +2542,12 @@ static inline bat
BBPcheck(register bat x, register const char *y)
{
if (x && x != bat_nil) {
- register bat z = abs(x);
+ assert(x > 0);
- if (z >= getBBPsize() || BBP_logical(z) == NULL) {
+ if (x >= getBBPsize() || BBP_logical(x) == NULL) {
CHECKDEBUG fprintf(stderr,"#%s: range error %d\n", y,
(int) x);
} else {
- return z;
+ return x;
}
}
return 0;
@@ -2788,7 +2785,7 @@ gdk_export void ALIGNsetT(BAT *b1, BAT *
#define isVIEWCOMBINE(x) ((x)->H == (x)->T)
#define VIEWtparent(x) ((x)->T->heap.parentid)
-#define VIEWvtparent(x)
(((x)->T->vheap==NULL||(x)->T->vheap->parentid==abs((x)->batCacheid))?0:(x)->T->vheap->parentid)
+#define VIEWvtparent(x) ((x)->T->vheap == NULL ||
(x)->T->vheap->parentid == (x)->batCacheid ? 0 : (x)->T->vheap->parentid)
/*
* @+ BAT Iterators
diff --git a/gdk/gdk_bat.c b/gdk/gdk_bat.c
--- a/gdk/gdk_bat.c
+++ b/gdk/gdk_bat.c
@@ -1975,7 +1975,7 @@ BATmode(BAT *b, int mode)
}
if (mode != b->batPersistence) {
- bat bid = abs(b->batCacheid);
+ bat bid = b->batCacheid;
if (mode == PERSISTENT) {
check_type(b->htype);
diff --git a/gdk/gdk_batop.c b/gdk/gdk_batop.c
--- a/gdk/gdk_batop.c
+++ b/gdk/gdk_batop.c
@@ -98,7 +98,7 @@ insert_string_bat(BAT *b, BAT *n, int fo
* with some other bat, we materialize it
* and we will have to copy strings.
*/
- bat bid = abs(b->batCacheid);
+ bat bid = b->batCacheid;
if (b->batCount == 0) {
if (b->T->vheap->parentid != bid) {
@@ -817,7 +817,7 @@ BATordered(BAT *b)
* use a lock. We reuse the hash lock for this, not because
* this scanning interferes with hashes, but because it's
* there, and not so likely to be used at the same time. */
- MT_lock_set(&GDKhashLock(abs(b->batCacheid)));
+ MT_lock_set(&GDKhashLock(b->batCacheid));
if (!b->tsorted && b->T->nosorted == 0) {
BATiter bi = bat_iterator(b);
int (*cmpf)(const void *, const void *) = ATOMcompare(b->ttype);
@@ -860,7 +860,7 @@ BATordered(BAT *b)
ALGODEBUG fprintf(stderr, "#BATordered: fixed sorted for %s#"
BUNFMT " (" LLFMT " usec)\n", BATgetId(b), BATcount(b), GDKusec() - t0);
}
doreturn:
- MT_lock_unset(&GDKhashLock(abs(b->batCacheid)));
+ MT_lock_unset(&GDKhashLock(b->batCacheid));
return b->tsorted;
}
@@ -876,7 +876,7 @@ BATordered_rev(BAT *b)
return 0;
if (b->ttype == TYPE_void)
return b->tseqbase == oid_nil;
- MT_lock_set(&GDKhashLock(abs(b->batCacheid)));
+ MT_lock_set(&GDKhashLock(b->batCacheid));
if (!b->trevsorted && b->T->norevsorted == 0) {
BATiter bi = bat_iterator(b);
int (*cmpf)(const void *, const void *) = ATOMcompare(b->ttype);
@@ -893,7 +893,7 @@ BATordered_rev(BAT *b)
ALGODEBUG fprintf(stderr, "#BATordered_rev: fixed revsorted for
%s#" BUNFMT " (" LLFMT " usec)\n", BATgetId(b), BATcount(b), GDKusec() - t0);
}
doreturn:
- MT_lock_unset(&GDKhashLock(abs(b->batCacheid)));
+ MT_lock_unset(&GDKhashLock(b->batCacheid));
return b->trevsorted;
}
diff --git a/gdk/gdk_bbp.c b/gdk/gdk_bbp.c
--- a/gdk/gdk_bbp.c
+++ b/gdk/gdk_bbp.c
@@ -119,7 +119,7 @@ static gdk_return BBPdir(int cnt, bat *s
static int havehge = 0;
#endif
-#define BBPnamecheck(s) (BBPtmpcheck(s) ? ((s)[3] == '_' ? strtol((s) + 4,
NULL, 8) : -strtol((s) + 5, NULL, 8)) : 0)
+#define BBPnamecheck(s) (BBPtmpcheck(s) ? strtol((s) + 4, NULL, 8) : 0)
#ifdef ATOMIC_LOCK
static MT_Lock stampLock MT_LOCK_INITIALIZER("stampLock");
@@ -218,7 +218,7 @@ int BBPout = 0; /* bats saved statisti
*
* To reduce contention GDKswapLock was split into multiple locks; it
* is now an array of lock pointers which is accessed by
- * GDKswapLock(abs(bat))
+ * GDKswapLock(bat)
* @end table
*
* Routines that need both locks should first acquire the locks in the
@@ -454,7 +454,7 @@ fixoidheapcolumn(BAT *b, const char *src
const char *filename, const char *headtail,
const char *htheap)
{
- bat bid = abs(b->batCacheid);
+ bat bid = b->batCacheid;
Heap h1, h2;
int *old;
oid *new;
@@ -1888,10 +1888,10 @@ BBP_find(const char *nme, int lock)
bat i = BBPnamecheck(nme);
if (i != 0) {
- /* for tmp_X and tmpr_X BATs, we already know X */
+ /* for tmp_X BATs, we already know X */
const char *s;
- if (abs(i) >= (bat) ATOMIC_GET(BBPsize, BBPsizeLock) || (s =
BBP_logical(i)) == NULL || strcmp(s, nme)) {
+ if (i >= (bat) ATOMIC_GET(BBPsize, BBPsizeLock) || (s =
BBP_logical(i)) == NULL || strcmp(s, nme)) {
i = 0;
}
} else if (*nme != '.') {
@@ -1948,7 +1948,7 @@ BBPphysical(bat bid, str buf)
if (buf == NULL) {
return NULL;
} else if (BBPcheck(bid, "BBPphysical")) {
- strcpy(buf, BBP_physical(abs(bid)));
+ strcpy(buf, BBP_physical(bid));
} else {
*buf = 0;
}
@@ -2237,7 +2237,7 @@ BBPclear(bat i)
int lock = locked_by ? pid != locked_by : 1;
if (BBPcheck(i, "BBPclear")) {
- bbpclear(abs(i), threadmask(pid), lock ? "BBPclear" : NULL);
+ bbpclear(i, threadmask(pid), lock ? "BBPclear" : NULL);
}
}
@@ -2278,7 +2278,7 @@ BBPrename(bat bid, const char *nme)
if (BBP_logical(bid) && strcmp(BBP_logical(bid), nme) == 0)
return 0;
- BBPgetsubdir(dirname, abs(bid));
+ BBPgetsubdir(dirname, bid);
if ((tmpid = BBPnamecheck(nme)) && (bid < 0 || tmpid != bid)) {
return BBPRENAME_ILLEGAL;
@@ -2313,7 +2313,7 @@ BBPrename(bat bid, const char *nme)
if (lock)
MT_lock_set(&GDKswapLock(i));
- BBP_status_on(abs(bid), BBPRENAMED, "BBPrename");
+ BBP_status_on(bid, BBPRENAMED, "BBPrename");
if (lock)
MT_lock_unset(&GDKswapLock(i));
BBPdirty(1);
@@ -2652,7 +2652,7 @@ BBPreclaim(BAT *b)
if (b == NULL)
return -1;
- i = abs(b->batCacheid);
+ i = b->batCacheid;
assert(BBP_refs(i) == 1);
@@ -2730,7 +2730,7 @@ gdk_return
BBPsave(BAT *b)
{
int lock = locked_by ? MT_getpid() != locked_by : 1;
- bat bid = abs(b->batCacheid);
+ bat bid = b->batCacheid;
gdk_return ret = GDK_SUCCEED;
if (BBP_lrefs(bid) == 0 || isVIEW(b) || !BATdirty(b))
diff --git a/gdk/gdk_bbp.h b/gdk/gdk_bbp.h
--- a/gdk/gdk_bbp.h
+++ b/gdk/gdk_bbp.h
@@ -79,9 +79,7 @@ gdk_export void BBPkeepref(bat i);
gdk_export int BBPdecref(bat b, int logical);
gdk_export void BBPshare(bat b);
-/* (strncmp(s, "tmp_", 4) == 0 || strncmp(s, "tmpr_", 5) == 0) */
-#define BBPtmpcheck(s) ((s)[0] == 't' && (s)[1] == 'm' && (s)[2] == 'p' && \
- ((s)[3] == '_' || ((s)[3] == 'r' && (s)[4] == '_')))
+#define BBPtmpcheck(s) (strncmp(s, "tmp_", 4) == 0)
#define BBP_status_set(bid, mode, nme) \
do { \
diff --git a/gdk/gdk_hash.c b/gdk/gdk_hash.c
--- a/gdk/gdk_hash.c
+++ b/gdk/gdk_hash.c
@@ -196,7 +196,7 @@ BATcheckhash(BAT *b)
lng t;
t = GDKusec();
- MT_lock_set(&GDKhashLock(abs(b->batCacheid)));
+ MT_lock_set(&GDKhashLock(b->batCacheid));
t = GDKusec() - t;
if (b->T->hash == (Hash *) 1) {
Hash *h;
@@ -254,7 +254,7 @@ BATcheckhash(BAT *b)
hp->dirty = FALSE;
b->T->hash = h;
ALGODEBUG fprintf(stderr,
"#BATcheckhash: reusing persisted hash %s\n", BATgetId(b));
-
MT_lock_unset(&GDKhashLock(abs(b->batCacheid)));
+
MT_lock_unset(&GDKhashLock(b->batCacheid));
return 1;
}
GDKfree(h);
@@ -268,7 +268,7 @@ BATcheckhash(BAT *b)
GDKclrerr(); /* we're not currently interested in errors */
}
ret = b->T->hash != NULL;
- MT_lock_unset(&GDKhashLock(abs(b->batCacheid)));
+ MT_lock_unset(&GDKhashLock(b->batCacheid));
ALGODEBUG if (ret) fprintf(stderr, "#BATcheckhash: already has hash %s,
waited " LLFMT " usec\n", BATgetId(b), t);
return ret;
}
@@ -327,7 +327,7 @@ BAThash(BAT *b, BUN masksize)
if (BATcheckhash(b)) {
return GDK_SUCCEED;
}
- MT_lock_set(&GDKhashLock(abs(b->batCacheid)));
+ MT_lock_set(&GDKhashLock(b->batCacheid));
if (b->T->hash == NULL) {
unsigned int tpe = ATOMbasetype(b->ttype);
BUN cnt = BATcount(b);
@@ -343,7 +343,7 @@ BAThash(BAT *b, BUN masksize)
if ((hp = GDKzalloc(sizeof(*hp))) == NULL ||
(hp->farmid = BBPselectfarm(b->batRole, b->ttype,
hashheap)) < 0 ||
(hp->filename = GDKmalloc(strlen(nme) + 12)) == NULL) {
- MT_lock_unset(&GDKhashLock(abs(b->batCacheid)));
+ MT_lock_unset(&GDKhashLock(b->batCacheid));
GDKfree(hp);
return GDK_FAIL;
}
@@ -357,7 +357,7 @@ BAThash(BAT *b, BUN masksize)
if (b->ttype == TYPE_void) {
if (b->tseqbase == oid_nil) {
- MT_lock_unset(&GDKhashLock(abs(b->batCacheid)));
+ MT_lock_unset(&GDKhashLock(b->batCacheid));
ALGODEBUG fprintf(stderr, "#BAThash: cannot
create hash-table on void-NIL column.\n");
GDKfree(hp->filename);
GDKfree(hp);
@@ -414,7 +414,7 @@ BAThash(BAT *b, BUN masksize)
/* create the hash structures */
if ((h = HASHnew(hp, ATOMtype(b->ttype),
BATcapacity(b), mask, BATcount(b))) == NULL) {
- MT_lock_unset(&GDKhashLock(abs(b->batCacheid)));
+ MT_lock_unset(&GDKhashLock(b->batCacheid));
GDKfree(hp->filename);
GDKfree(hp);
return GDK_FAIL;
@@ -519,7 +519,7 @@ BAThash(BAT *b, BUN masksize)
ALGODEBUG fprintf(stderr, "#BAThash: hash construction " LLFMT
" usec\n", t1 - t0);
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list