git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: [PATCH v3 3/9] ewah/bitmap: introduce bitmap_word_alloc()

From
Christian Couder <christian.couder@gmail.com>
Date
Dec 11, 2019, 13:50 UTC
Message-ID
<CAP8UFD3PwuSyJ0kjiYKo_UbgqzC1hjJS0rkBjhdfuNmC6hvGvw@mail.gmail.com>
In-Reply-To
<20191209062841.GC40570@coredump.intra.peff.net>
On Mon, Dec 9, 2019 at 7:28 AM Jeff King <peff@peff.net> wrote:
Show 12 quoted lines
>
> On Fri, Nov 15, 2019 at 03:15:35PM +0100, Christian Couder wrote:
>
> > In a following commit we will need to allocate a variable
> > number of bitmap words, instead of always 32, so let's add
> > bitmap_word_alloc() for this purpose.
>
> This name is much better than the horrible "bitmap_new2()" it was called
> in the original. ;)
>
> I wonder if "new_with_world_alloc" or "new_with_size" would make it more
> obvious that this is also a constructor, though.

bitmap_new_with_word_alloc() feels a bit verbose to me for such a short function, so for now I kept bitmap_word_alloc().

I think that if we really want to use "new" for constructors then a better solution would be something like renaming bitmap_new(void) to bitmap_new_default(void) and bitmap_word_alloc(size_t word_alloc) to bitmap_new(size_t word_alloc).

Show 15 quoted lines
> >  void bitmap_set(struct bitmap *self, size_t pos)
> >  {
> >       size_t block = EWAH_BLOCK(pos);
> >
> >       if (block >= self->word_alloc) {
> >               size_t old_size = self->word_alloc;
> > -             self->word_alloc = block * 2;
> > +             self->word_alloc = block ? block * 2 : 1;
>
> Since this hunk caused so much confusion, maybe worth calling it out in
> the commit message. Something like:
>
>   Note that we have to adjust the block growth in bitmap_set(), since
>   a caller could now use an initial size of "0" (we don't plan to do
>   that, but it doesn't hurt to be defensive).
Ok, I added the above as a commit message note in my current version.
Previous: Jeff KingNext: Jeff King
Message 9 of 42 in “Rewrite packfile reuse code”
  1. 0/9 Rewrite packfile reuse codeChristian Couder, Nov 15, 2019
  2. 1/9 builtin/pack-objects: report reused packfile objectsChristian Couder, Nov 15, 2019
  3. Jeff KingDec 9, 2019
  4. Christian CouderDec 11, 2019
  5. 2/9 packfile: expose get_delta_base()Christian Couder, Nov 15, 2019
  6. Jeff KingDec 9, 2019
  7. 3/9 ewah/bitmap: introduce bitmap_word_alloc()Christian Couder, Nov 15, 2019
  8. Jeff KingDec 9, 2019
  9. Christian CouderDec 11, 2019
  10. Jeff KingDec 12, 2019
  11. 5/9 pack-bitmap: introduce bitmap_walk_contains()Christian Couder, Nov 15, 2019
  12. Jeff KingDec 9, 2019
  13. Christian CouderDec 13, 2019
  14. 6/9 csum-file: introduce hashfile_total()Christian Couder, Nov 15, 2019
  15. Jeff KingDec 9, 2019
  16. 4/9 pack-bitmap: don't rely on bitmap_git->reuse_objectsChristian Couder, Nov 15, 2019
  17. Jeff KingDec 9, 2019
  18. Christian CouderDec 13, 2019
  19. 7/9 pack-objects: introduce pack.allowPackReuseChristian Couder, Nov 15, 2019
  20. Jeff KingDec 9, 2019
  21. Christian CouderDec 13, 2019
  22. 8/9 builtin/pack-objects: introduce obj_is_packed()Christian Couder, Nov 15, 2019
  23. Jeff KingDec 9, 2019
  24. 9/9 pack-objects: improve partial packfile reuseChristian Couder, Nov 15, 2019
  25. Jeff KingDec 9, 2019
  26. Christian CouderDec 18, 2019
  27. Jeff KingDec 19, 2019
  28. Christian CouderJan 23, 2020
  29. Jonathan TanNov 15, 2019
  30. Junio C HamanoNov 25, 2019
  31. Junio C HamanoNov 25, 2019
  32. Junio C HamanoDec 6, 2019
  33. Christian CouderDec 7, 2019
  34. Johannes SchindelinDec 7, 2019
  35. Christian CouderDec 8, 2019
  36. Johannes SchindelinDec 8, 2019
  37. Christian CouderDec 8, 2019
  38. Johannes SchindelinDec 8, 2019
  39. Jeff KingDec 9, 2019
  40. Johannes SchindelinDec 9, 2019
  41. Junio C HamanoDec 9, 2019
  42. Junio C HamanoDec 9, 2019

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.