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