Changeset: 354fc17b25b0 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/354fc17b25b0
Modified Files:
        sql/storage/bat/bat_storage.c
Branch: default
Log Message:

Deduplicate code a bit.


diffs (82 lines):

diff --git a/sql/storage/bat/bat_storage.c b/sql/storage/bat/bat_storage.c
--- a/sql/storage/bat/bat_storage.c
+++ b/sql/storage/bat/bat_storage.c
@@ -328,55 +328,30 @@ segments2cs(sql_trans *tr, segments *seg
                        size_t pos = s->start;
                        dst = (uint32_t *) Tloc(b, 0) + (pos/32);
                        uint32_t cur = 0;
-                       if (s->deleted) {
-                               size_t used = pos&31, end = 32;
-                               if (used) {
-                                       if (lnr < (32-used))
-                                               end = used + lnr;
-                                       assert(end > used);
-                                       cur |= ((1U << (end - used)) - 1) << 
used;
-                                       lnr -= end - used;
-                                       *dst++ |= cur;
-                                       cur = 0;
-                               }
-                               size_t full = lnr/32;
-                               size_t rest = lnr%32;
-                               if (full > 0) {
-                                       memset(dst, ~0, full * sizeof(*dst));
-                                       dst += full;
-                                       lnr -= full * 32;
-                               }
-                               if (rest > 0) {
-                                       cur |= (1U << rest) - 1;
-                                       lnr -= rest;
-                                       *dst |= cur;
-                               }
-                               assert(lnr==0);
-                       } else {
-                               size_t used = pos&31, end = 32;
-                               if (used) {
-                                       if (lnr < (32-used))
-                                               end = used + lnr;
-                                       assert(end > used);
-                                       cur |= ((1U << (end - used)) - 1) << 
used;
-                                       lnr -= end - used;
-                                       *dst++ &= ~cur;
-                                       cur = 0;
-                               }
-                               size_t full = lnr/32;
-                               size_t rest = lnr%32;
-                               if (full > 0) {
-                                       memset(dst, 0, full * sizeof(*dst));
-                                       dst += full;
-                                       lnr -= full * 32;
-                               }
-                               if (rest > 0) {
-                                       cur |= (1U << rest) - 1;
-                                       lnr -= rest;
-                                       *dst &= ~cur;
-                               }
-                               assert(lnr==0);
+                       size_t used = pos&31, end = 32;
+                       if (used) {
+                               if (lnr < (32-used))
+                                       end = used + lnr;
+                               assert(end > used);
+                               cur |= ((1U << (end - used)) - 1) << used;
+                               lnr -= end - used;
+                               *dst = s->deleted ? *dst | cur : *dst & ~cur;
+                               dst++;
+                               cur = 0;
                        }
+                       size_t full = lnr/32;
+                       size_t rest = lnr%32;
+                       if (full > 0) {
+                               memset(dst, s->deleted?~0:0, full * 
sizeof(*dst));
+                               dst += full;
+                               lnr -= full * 32;
+                       }
+                       if (rest > 0) {
+                               cur |= (1U << rest) - 1;
+                               lnr -= rest;
+                               *dst = s->deleted ? *dst | cur : *dst & ~cur;
+                       }
+                       assert(lnr==0);
                        if (cnt < s->end)
                                cnt = s->end;
                }
_______________________________________________
checkin-list mailing list -- checkin-list@monetdb.org
To unsubscribe send an email to checkin-list-le...@monetdb.org

Reply via email to