src/hb-algs.hh


Log

Author Commit Date CI Message
Qunxin Liu 1d91622d 2023-07-18T09:52:40 [instancer] add a hashing impl for floating point type
Behdad Esfahbod e7ce6339 2023-07-17T08:52:12 [algs] Fix -Wcomma errors Fixes https://github.com/harfbuzz/harfbuzz/issues/4328
Behdad Esfahbod 0980e2b7 2023-07-09T15:13:57 Minor casts
Behdad Esfahbod b1e7e8ba 2023-06-26T17:19:45 [algs] Fix return of hb_memset()
Behdad Esfahbod b557a841 2023-06-23T15:31:54 [algs] Speed up fasthash for aligned uint64_t
Behdad Esfahbod ca27925d 2023-06-03T16:18:15 Use hb_codepoint_pair_t in more places
Behdad Esfahbod 88d8a6d6 2023-06-01T19:24:02 [BEInt] Use packed-int trick for writing as well
Behdad Esfahbod 66a84355 2023-05-29T17:17:15 [hash] Use unsigned types Hopefully ubsan wouldn't complain about overflows now.
Behdad Esfahbod 00900f76 2023-05-27T10:13:53 [hash] Enable better hash for integers https://github.com/harfbuzz/harfbuzz/pull/4228#issuecomment-1565079537
Behdad Esfahbod c248fd91 2023-05-10T01:44:10 [hash] Comment
Behdad Esfahbod 42f4dab8 2023-05-10T01:11:32 [hash] Switch to Knuth multiplicative hash Wow, the old adhoc one was why the cmap test was timing out!
Behdad Esfahbod 19b628bd 2023-05-09T23:40:07 Revert "[map] Implement Robinhood hashing" This reverts commit 705617856818056a44a627f340c91e335c57f310.
Behdad Esfahbod 18c3ba50 2023-05-09T22:44:22 [map] Implement Robinhood hashing Numbers are not improved though. :(
Behdad Esfahbod 5d0cc006 2023-05-09T18:40:35 [hash] Disable int hash as it has negative performance gain
Behdad Esfahbod 1fbb0858 2023-05-09T17:11:05 [hash] Adjust prime number Previous one wasn't a prime. Ouch!
Behdad Esfahbod 9cc7eb80 2023-05-09T16:13:46 [hash] Speed-up int64 hash
Behdad Esfahbod b2b15fa3 2023-05-09T13:39:52 [hash] Links
Behdad Esfahbod 05567da0 2023-05-09T12:22:43 Revert "[hash] Use fasthash for integer hash" This reverts commit 3bf758a57071572a0ffae3c359b4cfec5a096312. This was resulting in long chains again :(.
Behdad Esfahbod bdaa74d2 2023-05-09T11:58:35 [hash] Use fasthash for integer hash This seems to speed things up surprisingly.
Behdad Esfahbod fe3339ea 2023-05-09T11:31:06 [algs] Add hash for 64bit ints
Behdad Esfahbod f04d08b8 2023-05-09T02:14:30 [fasthash] Remove GNU extension
Behdad Esfahbod 99f5050c 2023-05-09T02:07:54 [algs] Remove HB_NO_PACKED We depend on packed attribute in fasthash now.
Behdad Esfahbod da619c69 2023-05-09T02:06:37 [fasthash] Try to fix unaligned access
Behdad Esfahbod 075ecff7 2023-05-09T01:43:39 [hash] Work around g++ bug?! I kid you not. Revert this and see src/test-map loop forever eating your memory freezing your maching. In this loop: { hb_hashmap_t<int, int> m0; hb_hashmap_t<std::string, int> m1; hb_hashmap_t<int, std::string> m2; hb_hashmap_t<std::string, std::string> m3; std::string s; for (unsigned i = 1; i < 1000; i++) { s += "x"; m0.set (i, i); m1.set (s, i); m2.set (i, s); m3.set (s, s); } } i will not stop at 1000 and just keeps going. If you figure out what's going on, please enlighten me!
Behdad Esfahbod e2fd49ff 2023-05-08T23:37:47 [hash] Comment
Behdad Esfahbod fa64e42d 2023-05-08T23:31:52 [algs] Adjust int hash
Behdad Esfahbod 078b2a51 2023-05-08T22:28:48 [hash] Use a Mersenne prime for int hash And hope that compiler optimizes to int ops instead of modula. Improves chaining it seems. Part of https://github.com/harfbuzz/harfbuzz/pull/4228
Behdad Esfahbod fe0f7dc5 2023-05-08T22:19:02 [bytes] Use fasthash as hash algorithm Part of https://github.com/harfbuzz/harfbuzz/pull/4228
Behdad Esfahbod 0e026808 2023-05-08T16:31:58 [hash] Add hash impl for integers Part of https://github.com/harfbuzz/harfbuzz/issues/4227
Behdad Esfahbod 262f029e 2023-04-28T12:57:24 [algs] Undo touching HACKMEM 169
Behdad Esfahbod bd62a91d 2023-04-28T12:01:21 [algs] 64bit popcount
Behdad Esfahbod d29d7b7a 2023-03-01T13:10:11 [algs] Adjust solve_itp
Behdad Esfahbod b937edfb 2023-03-01T10:44:57 [justify] Add min/max target_width Speeds up solving when some slack available.
Behdad Esfahbod 6e483c40 2023-02-28T12:25:32 [shape] Add hb_shape_justify() and hb-view --width
Behdad Esfahbod ee4822f9 2023-02-28T09:39:32 [algs] Add solve_itp method Port from kurbo.
Behdad Esfahbod 5bc6ab00 2023-02-22T08:08:11 Use __has_builtin for builtin checks instead of compiler versions https://github.com/harfbuzz/harfbuzz/issues/4066#issuecomment-1439510188
Behdad Esfahbod fe94c760 2023-01-23T14:05:28 [algs] Build fix for clang and __builtin_mul_overflow Fixes https://github.com/harfbuzz/harfbuzz/issues/4066
Behdad Esfahbod ff419789 2022-12-02T16:25:26 [subset-plan] Sort unicode_to_new_gid_list when needed
Behdad Esfahbod 35878df2 2022-11-21T19:14:03 [algs] Implement swap() for pair_t Helps priority_queue::pop_minimum and friends, which help subsetter repacker. Shows a few percentage improvement on NotoNastaliq benchmark.
Behdad Esfahbod 3ff75411 2022-11-21T13:08:55 [algs] Fix bot fail
Behdad Esfahbod 4c14043b 2022-11-21T12:56:33 [algs] Add output argument to hb_unsigned_mul_overflows()
Behdad Esfahbod 25adbb38 2022-11-21T12:47:53 [algs] Use __builtin_mul_overflow Compiles to smaller binary.
Behdad Esfahbod a10cfe3f 2022-11-21T12:37:59 [algs] Write hb_in_ranges() recursively
Behdad Esfahbod 70a5cd53 2022-11-21T08:52:33 [algs] Assert trivial copy assignable in stable_sort
Behdad Esfahbod 9bb39423 2022-11-20T17:40:54 [algs] Simplify stable_sort signatures
Behdad Esfahbod a9c6a20b 2022-11-18T18:29:12 [map] Support moving value in sink interface
Behdad Esfahbod 43a4028f 2022-11-18T15:54:34 [algs] Move hb_vector_size_t to bit-page as only user
Behdad Esfahbod 3aad7c2d 2022-11-17T15:10:47 [algs] Remove smart-pointers from hb_hash() hb_deref() handles them. I think this code predated that.
Behdad Esfahbod c9e84394 2022-07-22T09:01:07 [min/max] Don't forward argument
Behdad Esfahbod 0cc2f3c2 2022-07-21T16:46:45 [algs] Remove hb_pair_t()
Behdad Esfahbod 90e40f24 2022-07-17T15:01:04 [algs] Tweak attribute(packed) usage Allow disabling it. Also don't cast this pointer.
Behdad Esfahbod 4ee47192 2022-07-13T10:36:53 More -Wcomma fixes Fixes https://github.com/harfbuzz/harfbuzz/issues/3716
David Corbett 04c47671 2022-06-26T21:44:51 [lao] Decompose and reorder U+0EB3 around U+0EBB
Behdad Esfahbod 215a0afa 2022-06-03T01:48:46 [algs] Remove unused hb_coerce()
Behdad Esfahbod d7785a6d 2022-06-02T12:42:24 [cplusplus] Add unique_ptr
Behdad Esfahbod 7ec3aad2 2022-06-02T10:50:55 [shared_ptr] Fix hb_hash() crash on nullptr
Behdad Esfahbod a089d91f 2022-06-02T09:55:43 [hash] Adjust hash for shared_ptr, implement it for std::hash
Behdad Esfahbod e037325e 2022-06-02T08:51:12 [hash] Remove custom hash, rely on std::hash
Behdad Esfahbod 0b35940a 2022-06-01T15:10:19 Make hb::shared_ptr hashable
Behdad Esfahbod 45a22526 2022-05-31T06:23:47 [flags] Fix undefined-behavior SUMMARY: UndefinedBehaviorSanitizer: undefined-behavior ../src/hb-buffer.hh:60:1 in failure on clusterfuzz-testcase-minimized-hb-subset-get-codepoints-fuzzer-5736539338833920
Behdad Esfahbod b4d1ec31 2022-05-19T16:06:21 [algs] Declare coerce() as constexpr
Behdad Esfahbod 15fa8afb 2022-05-02T16:46:41 Add fast-path for big-endian 32-bit byteswap Speeds up cmap format-12 decoding by some 40% as measured by the newly added test in perf/benchmark-font!
Behdad Esfahbod 8e900f2c 2022-02-17T13:28:44 Revert "hb-algs.hh: Fix build on Visual Studio 2015" This reverts commit 52c536bb8d90cf0f09e13f5e9e21bf489cc08c23. See https://github.com/harfbuzz/harfbuzz/pull/3448
Behdad Esfahbod 94517850 2022-02-13T13:39:26 [algs] Fix typo in hb_pair_t conversion operator Fixes https://github.com/harfbuzz/harfbuzz/issues/2083
Chun-wei Fan 52c536bb 2022-02-10T16:39:40 hb-algs.hh: Fix build on Visual Studio 2015 The compiler does not recognize the std::hash call on hb_decay<decltype (hb_deref (v)>, so give it a shove so that it is recognized there.
Behdad Esfahbod cd979978 2022-01-19T11:14:25 [vector] Remove old find() method
Behdad Esfahbod 92f17907 2022-01-16T07:51:35 Make hb_coerce static inline That's the pattern we follow. https://github.com/harfbuzz/harfbuzz/commit/985b63b3eeee5be1f5234fc7f13077eacf5e5b94#commitcomment-63973544
Behdad Esfahbod 19793f33 2022-01-16T07:49:40 Better try at previous commit https://github.com/harfbuzz/harfbuzz/commit/985b63b3eeee5be1f5234fc7f13077eacf5e5b94#commitcomment-63973544
Behdad Esfahbod 1173ed1f 2022-01-16T07:48:02 Try fix Mac build https://github.com/harfbuzz/harfbuzz/commit/985b63b3eeee5be1f5234fc7f13077eacf5e5b94#commitcomment-63973544
Behdad Esfahbod c0f57ccc 2022-01-16T06:59:24 [algs] Add default-construtor to hb_pair_t
Behdad Esfahbod 8a69e006 2022-01-13T16:17:34 [meta] Use std::addressof() instead of hb_addressof()
Behdad Esfahbod 47afb3ef 2022-01-13T15:26:07 [meta] Replace hb_is_pointer with std::is_pointer
Behdad Esfahbod 985b63b3 2022-01-13T13:33:07 [map] Allow invalid items to be pointer to static object By derefencing them when necessary. Also, we do not rely on trivially-copyable, so remove that assertion.
Behdad Esfahbod 1e27f95d 2022-01-13T13:10:47 [algs] Add hb_coerce()
Behdad Esfahbod cfe2b661 2022-01-13T11:42:48 [algs] Fix hash chaining to std::hash()
Behdad Esfahbod 53847dba 2022-01-10T15:04:47 [algs] Call std::hash from hb_hash()
Behdad Esfahbod 943921cf 2021-11-02T00:26:46 [meta] Use more std type_traits
Behdad Esfahbod 6d555ce8 2021-11-02T00:18:22 [meta] Use std::forward instead of hb_forward()
Behdad Esfahbod 30c05e8b 2021-11-01T23:57:00 [algs] include <new>
Behdad Esfahbod 3604f5f2 2021-11-01T22:37:42 [algs] Include <initializer_list>
Behdad Esfahbod 8c055699 2021-11-01T17:59:17 [algs] Add hb_swap() ala, and using, std::swap() Use it in vector. Use ADL idiom.
Behdad Esfahbod f09d5ed0 2021-08-19T13:06:10 [algs] Remove hb_bitwise_non()
Behdad Esfahbod b94f24ec 2021-08-19T00:48:00 [bit-set-invertible] Implement set algebra
Behdad Esfahbod 6afefe1d 2021-08-19T00:27:03 [algs] Remove unnecessary struct tag names
Behdad Esfahbod bf2c87bf 2021-07-27T13:10:41 Add hb_memcpy() that does len=0 check
Behdad Esfahbod cc16b26e 2021-02-22T17:55:47 [constexpr] IntType See https://github.com/harfbuzz/harfbuzz/pull/2875
Behdad Esfahbod c55bf551 2020-06-29T02:04:16 Remove HB_CONST_FUNC and HB_PURE_FUNC They are not necessary for inline functions.
Behdad Esfahbod cba9893a 2020-06-29T01:55:57 m[algs] Move roundf() here
Behdad Esfahbod 69464e9d 2021-02-20T15:42:44 [algs] Another try at fixing BEInt constexpr ../src/hb-algs.hh:120:3: error: body of constexpr function ‘constexpr BEInt<Type, 2>::operator Type() const [with Type = short unsigned int]’ not a return-statement
Behdad Esfahbod ff7bf881 2021-02-20T15:39:29 m[algs] Fix BEInt -Wnarrowing errors
Behdad Esfahbod e208f804 2021-02-20T15:31:27 Make constexpr BEInt<Type, 2>::operator Type() C++11-compatible Multiple return values not permitted until C++14
Behdad Esfahbod 47f01c07 2020-06-29T01:25:35 m[algs] Move BEInt here
Behdad Esfahbod e1706ffe 2020-06-29T00:59:06 m [algs] Move flags here
Behdad Esfahbod ed04174a 2021-02-05T13:36:46 Whitespace
Behdad Esfahbod 921b4e46 2021-01-29T20:35:05 [algs] Add hb_equal() Use in hb_array_t::lfind()
Behdad Esfahbod 881ad720 2021-01-21T14:27:45 [algs] Remove passthru declaration Let compiler figure it out.
Behdad Esfahbod 7c241651 2020-11-30T16:38:53 [algs] Don't forward rvalue twice Part of https://github.com/harfbuzz/harfbuzz/issues/2293
David Corbett b207eab8 2020-04-30T11:53:21 Round-trip OpenType tags through BCP 47
Ebrahim Byagowi 818f109b 2020-04-16T21:25:32 Use float in avar calculation instead ints and checking their overflows
Ebrahim Byagowi 9ffa50fe 2020-04-16T21:25:32 Add an appropriate fallback to hb_int_mul_overflows