src/hb-map-private.hh | 89 ++++++++++++++++++++++---------------------- src/hb-open-type-private.hh | 6 ++ 2 files changed, 51 insertions(+), 44 deletions(-)
New commits: commit dcd1b07eeaf2c28f0d20b9812749810d069041e3 Author: Behdad Esfahbod <beh...@behdad.org> Date: Thu May 31 17:58:40 2018 -0700 Add const OffsetTo<> dereference Unused, but now that we have CrapPool, implement it. diff --git a/src/hb-open-type-private.hh b/src/hb-open-type-private.hh index 6f639dca..8180287d 100644 --- a/src/hb-open-type-private.hh +++ b/src/hb-open-type-private.hh @@ -779,6 +779,12 @@ struct OffsetTo : Offset<OffsetType> { unsigned int offset = *this; if (unlikely (!offset)) return Null(Type); + return StructAtOffset<const Type> (base, offset); + } + inline Type& operator () (void *base) const + { + unsigned int offset = *this; + if (unlikely (!offset)) return Crap(Type); return StructAtOffset<Type> (base, offset); } commit 2baa357ac7fe2ae91029dff26a01b8ba1cc0b365 Author: Ebrahim Byagowi <ebra...@gnu.org> Date: Thu May 31 12:27:31 2018 +0430 Fix symbol export issue of prime_mod on Alpine bot Apparently our gcc-6.4.0 on Alpine Linux distribution doesn't like defining static const inside a method, lets put that on outside the classes. diff --git a/src/hb-map-private.hh b/src/hb-map-private.hh index aecebe83..55f0dbea 100644 --- a/src/hb-map-private.hh +++ b/src/hb-map-private.hh @@ -39,6 +39,49 @@ inline uint32_t Hash (const T &v) } +/* Following comment and table copied from glib. */ +/* Each table size has an associated prime modulo (the first prime + * lower than the table size) used to find the initial bucket. Probing + * then works modulo 2^n. The prime modulo is necessary to get a + * good distribution with poor hash functions. + */ +static const unsigned int prime_mod [] = +{ + 1, /* For 1 << 0 */ + 2, + 3, + 7, + 13, + 31, + 61, + 127, + 251, + 509, + 1021, + 2039, + 4093, + 8191, + 16381, + 32749, + 65521, /* For 1 << 16 */ + 131071, + 262139, + 524287, + 1048573, + 2097143, + 4194301, + 8388593, + 16777213, + 33554393, + 67108859, + 134217689, + 268435399, + 536870909, + 1073741789, + 2147483647 /* For 1 << 31 */ +}; + + /* * hb_map_t */ @@ -184,52 +227,10 @@ struct hb_map_t protected: - static HB_INTERNAL inline unsigned int prime_for (unsigned int shift) + static inline unsigned int prime_for (unsigned int shift) { - /* Following comment and table copied from glib. */ - /* Each table size has an associated prime modulo (the first prime - * lower than the table size) used to find the initial bucket. Probing - * then works modulo 2^n. The prime modulo is necessary to get a - * good distribution with poor hash functions. - */ - static const unsigned int prime_mod [] = - { - 1, /* For 1 << 0 */ - 2, - 3, - 7, - 13, - 31, - 61, - 127, - 251, - 509, - 1021, - 2039, - 4093, - 8191, - 16381, - 32749, - 65521, /* For 1 << 16 */ - 131071, - 262139, - 524287, - 1048573, - 2097143, - 4194301, - 8388593, - 16777213, - 33554393, - 67108859, - 134217689, - 268435399, - 536870909, - 1073741789, - 2147483647 /* For 1 << 31 */ - }; - if (unlikely (shift >= ARRAY_LENGTH (prime_mod))) - return prime_mod[ARRAY_LENGTH (prime_mod) -1]; + return prime_mod[ARRAY_LENGTH (prime_mod) - 1]; return prime_mod[shift]; } _______________________________________________ HarfBuzz mailing list HarfBuzz@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/harfbuzz