Skip to content
  • Dan McGee's avatar
    pkghash improvements/modifications · 0b9cd944
    Dan McGee authored
    
    
    This patch changes a variety of small things related to our pkghash
    implementation with an eye toward performance, especially on native
    32-bit systems.
    
    * Use `unsigned int` rather than `size_t` for hash sizes. We already
      return ERANGE for any attempted creation of a hash greater than 1
      million elements, so unsigned int is more than large enough for our
      purposes. Switching to this type allows 32 bit systems to do native
      math without helper functions from libgcc.
    * _alpm_pkghash_create() now internally adds extra padding for
      additional array elements, rather than that being the responsibility of
      the caller.
    * #define values are moved into static const values in pkghash.c; a new
      `stride` value is also extracted (but remains set at 1).
    * Division and modulus operators are removed from the normal find and
      add paths if possible. We store the upper limit of the number of
      elements in the hash so we no longer need to calculate this every
      element addition. When doing wraparound position calculations, we only
      apply the modulus operator if the value is greater than the number of
      buckets.
    
    Signed-off-by: default avatarDan McGee <dan@archlinux.org>
    0b9cd944