Changeset: b6ead7de4477 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=b6ead7de4477
Modified Files:
        gdk/gdk_hash.c
Branch: Jun2020
Log Message:

Cleanup layout.


diffs (106 lines):

diff --git a/gdk/gdk_hash.c b/gdk/gdk_hash.c
--- a/gdk/gdk_hash.c
+++ b/gdk/gdk_hash.c
@@ -35,7 +35,7 @@
 #include "gdk.h"
 #include "gdk_private.h"
 
-static int
+static uint8_t
 HASHwidth(BUN hashsize)
 {
        if (hashsize <= (BUN) BUN2_NONE)
@@ -1007,51 +1007,57 @@ HASHprobe(const Hash *h, const void *v)
        }
 }
 
-void
-HASHins(BAT *b, BUN i, const void *v)
+static void
+HASHins_locked(BAT *b, BUN i, const void *v)
 {
-       MT_lock_set(&b->batIdxLock);
        Hash *h = b->thash;
        if (h == NULL) {
-               /* nothing to do */
-       } else if (h == (Hash *) 1) {
-               GDKunlink(BBPselectfarm(b->batRole, b->ttype, hashheap),
-                         BATDIR,
-                         BBP_physical(b->batCacheid),
-                         "thash");
+               return;
+       }
+       if (h == (Hash *) 1) {
                b->thash = NULL;
-       } else if ((ATOMsize(b->ttype) > 2 &&
-                   HASHgrowbucket(b) != GDK_SUCCEED) ||
-                  ((i + 1) * h->width > h->heaplink.size &&
-                   HEAPextend(&h->heaplink,
-                              i * h->width + GDK_mmap_pagesize,
-                              true) != GDK_SUCCEED)) {
+               doHASHdestroy(b, h);
+               return;
+       }
+       if ((ATOMsize(b->ttype) > 2 &&
+            HASHgrowbucket(b) != GDK_SUCCEED) ||
+           ((i + 1) * h->width > h->heaplink.size &&
+            HEAPextend(&h->heaplink,
+                       i * h->width + GDK_mmap_pagesize,
+                       true) != GDK_SUCCEED)) {
                b->thash = NULL;
                HEAPfree(&h->heapbckt, true);
                HEAPfree(&h->heaplink, true);
                GDKfree(h);
-       } else {
-               h->Link = h->heaplink.base;
-               BUN c = HASHprobe(h, v);
-               h->heaplink.free += h->width;
-               BUN hb = HASHget(h, c);
-               BUN hb2;
-               BATiter bi = bat_iterator(b);
-               for (hb2 = hb;
-                    hb2 != HASHnil(h);
-                    hb2 = HASHgetlink(h, hb2)) {
-                       if (ATOMcmp(h->type,
-                                   v,
-                                   BUNtail(bi, hb2)) == 0)
-                               break;
-               }
-               h->nheads += hb == HASHnil(h);
-               h->nunique += hb2 == HASHnil(h);
-               HASHputlink(h, i, hb);
-               HASHput(h, c, i);
-               h->heapbckt.dirty = true;
-               h->heaplink.dirty = true;
+               return;
        }
+       h->Link = h->heaplink.base;
+       BUN c = HASHprobe(h, v);
+       h->heaplink.free += h->width;
+       BUN hb = HASHget(h, c);
+       BUN hb2;
+       BATiter bi = bat_iterator(b);
+       for (hb2 = hb;
+            hb2 != HASHnil(h);
+            hb2 = HASHgetlink(h, hb2)) {
+               if (ATOMcmp(h->type,
+                           v,
+                           BUNtail(bi, hb2)) == 0)
+                       break;
+       }
+       h->nheads += hb == HASHnil(h);
+       h->nunique += hb2 == HASHnil(h);
+       HASHputlink(h, i, hb);
+       HASHput(h, c, i);
+       h->heapbckt.dirty = true;
+       h->heaplink.dirty = true;
+}
+
+void
+HASHins(BAT *b, BUN i, const void *v)
+{
+       MT_lock_set(&b->batIdxLock);
+       HASHins_locked(b, i, v);
        MT_lock_unset(&b->batIdxLock);
 }
 
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to