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

Reply via email to