diff options
author | Akira Kakuto <kakuto@fuk.kindai.ac.jp> | 2018-07-17 22:07:21 +0000 |
---|---|---|
committer | Akira Kakuto <kakuto@fuk.kindai.ac.jp> | 2018-07-17 22:07:21 +0000 |
commit | 770a5f6791fab72ee2f79c68d9b627b24bb35586 (patch) | |
tree | 0d8ee15eeb95f961e94ec4e78097a71eb2bed11d /Build/source | |
parent | be2ba34847d97ae5b26b683e0eb0e53896e92180 (diff) |
harfbuzz 1.8.4
git-svn-id: svn://tug.org/texlive/trunk@48216 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Build/source')
18 files changed, 318 insertions, 72 deletions
diff --git a/Build/source/libs/README b/Build/source/libs/README index 84b71201bb7..5971f192b43 100644 --- a/Build/source/libs/README +++ b/Build/source/libs/README @@ -24,7 +24,7 @@ gmp 6.1.2 - checked 16dec16 graphite2 1.3.11 - checked 05mar18 http://sourceforge.net/projects/silgraphite/files/graphite2/ -harfbuzz 1.8.3 - checked 13jul18 +harfbuzz 1.8.4 - checked 18jul18 http://www.freedesktop.org/software/harfbuzz/release/ icu 61.1 - checked 29mar18 diff --git a/Build/source/libs/harfbuzz/ChangeLog b/Build/source/libs/harfbuzz/ChangeLog index 6bc8166db22..f1b35ac9381 100644 --- a/Build/source/libs/harfbuzz/ChangeLog +++ b/Build/source/libs/harfbuzz/ChangeLog @@ -1,3 +1,8 @@ +2018-07-18 Akira Kakuto <kakuto@fuk.kindai.ac.jp> + + Import harfbuzz-1.8.4. + * version.ac: Adjusted. + 2018-07-13 Akira Kakuto <kakuto@fuk.kindai.ac.jp> Import harfbuzz-1.8.3. diff --git a/Build/source/libs/harfbuzz/TLpatches/ChangeLog b/Build/source/libs/harfbuzz/TLpatches/ChangeLog index 58d99e16909..27b3c9eec01 100644 --- a/Build/source/libs/harfbuzz/TLpatches/ChangeLog +++ b/Build/source/libs/harfbuzz/TLpatches/ChangeLog @@ -1,3 +1,8 @@ +2018-07-18 Akira Kakuto <kakuto@fuk.kindai.ac.jp> + + Imported harfbuzz-1.8.4 source tree from: + http://www.freedesktop.org/software/harfbuzz/release/ + 2018-07-13 Akira Kakuto <kakuto@fuk.kindai.ac.jp> Imported harfbuzz-1.8.3 source tree from: diff --git a/Build/source/libs/harfbuzz/TLpatches/TL-Changes b/Build/source/libs/harfbuzz/TLpatches/TL-Changes index b00494e006b..2f56c6d39d5 100644 --- a/Build/source/libs/harfbuzz/TLpatches/TL-Changes +++ b/Build/source/libs/harfbuzz/TLpatches/TL-Changes @@ -1,4 +1,4 @@ -Changes applied to the harfbuzz-1.8.3/ tree as obtained from: +Changes applied to the harfbuzz-1.8.4/ tree as obtained from: http://www.freedesktop.org/software/harfbuzz/release/ Removed: diff --git a/Build/source/libs/harfbuzz/configure b/Build/source/libs/harfbuzz/configure index adbcfb220bf..6e3413d3495 100755 --- a/Build/source/libs/harfbuzz/configure +++ b/Build/source/libs/harfbuzz/configure @@ -1,6 +1,6 @@ #! /bin/sh # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.69 for harfbuzz (TeX Live) 1.8.3. +# Generated by GNU Autoconf 2.69 for harfbuzz (TeX Live) 1.8.4. # # Report bugs to <tex-k@tug.org>. # @@ -580,8 +580,8 @@ MAKEFLAGS= # Identity of this package. PACKAGE_NAME='harfbuzz (TeX Live)' PACKAGE_TARNAME='harfbuzz--tex-live-' -PACKAGE_VERSION='1.8.3' -PACKAGE_STRING='harfbuzz (TeX Live) 1.8.3' +PACKAGE_VERSION='1.8.4' +PACKAGE_STRING='harfbuzz (TeX Live) 1.8.4' PACKAGE_BUGREPORT='tex-k@tug.org' PACKAGE_URL='' @@ -1317,7 +1317,7 @@ if test "$ac_init_help" = "long"; then # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF -\`configure' configures harfbuzz (TeX Live) 1.8.3 to adapt to many kinds of systems. +\`configure' configures harfbuzz (TeX Live) 1.8.4 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -1388,7 +1388,7 @@ fi if test -n "$ac_init_help"; then case $ac_init_help in - short | recursive ) echo "Configuration of harfbuzz (TeX Live) 1.8.3:";; + short | recursive ) echo "Configuration of harfbuzz (TeX Live) 1.8.4:";; esac cat <<\_ACEOF @@ -1495,7 +1495,7 @@ fi test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF -harfbuzz (TeX Live) configure 1.8.3 +harfbuzz (TeX Live) configure 1.8.4 generated by GNU Autoconf 2.69 Copyright (C) 2012 Free Software Foundation, Inc. @@ -2131,7 +2131,7 @@ cat >config.log <<_ACEOF This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. -It was created by harfbuzz (TeX Live) $as_me 1.8.3, which was +It was created by harfbuzz (TeX Live) $as_me 1.8.4, which was generated by GNU Autoconf 2.69. Invocation command line was $ $0 $@ @@ -4054,7 +4054,7 @@ fi # Define the identity of the package. PACKAGE='harfbuzz--tex-live-' - VERSION='1.8.3' + VERSION='1.8.4' # Some tools Automake needs. @@ -4248,8 +4248,8 @@ WARNING_CFLAGS=$kpse_cv_warning_cflags HB_VERSION_MAJOR=1 HB_VERSION_MINOR=8 -HB_VERSION_MICRO=3 -HB_VERSION=1.8.3 +HB_VERSION_MICRO=4 +HB_VERSION=1.8.4 ac_ext=c ac_cpp='$CPP $CPPFLAGS' @@ -8140,7 +8140,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" -This file was extended by harfbuzz (TeX Live) $as_me 1.8.3, which was +This file was extended by harfbuzz (TeX Live) $as_me 1.8.4, which was generated by GNU Autoconf 2.69. Invocation command line was CONFIG_FILES = $CONFIG_FILES @@ -8206,7 +8206,7 @@ _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" ac_cs_version="\\ -harfbuzz (TeX Live) config.status 1.8.3 +harfbuzz (TeX Live) config.status 1.8.4 configured by $0, generated by GNU Autoconf 2.69, with options \\"\$ac_cs_config\\" diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/ChangeLog b/Build/source/libs/harfbuzz/harfbuzz-src/ChangeLog index e5c02c5305e..ac451d81213 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-src/ChangeLog +++ b/Build/source/libs/harfbuzz/harfbuzz-src/ChangeLog @@ -1,3 +1,187 @@ +commit 04b7b81bcbf19cb85d06d930192d6591ba45ef72 +Author: Behdad Esfahbod <behdad@behdad.org> +Date: Tue Jul 17 10:57:01 2018 +0200 + + Reland "Implement C++11-style GCC builtin atomic ops" + + Fixed the crasher in it. + + src/hb-atomic-private.hh | 22 +++++++++++++++++++--- + src/hb-object-private.hh | 2 +- + 2 files changed, 20 insertions(+), 4 deletions(-) + +commit 019d18e9ae643134bfc3861be65ac618a5892c92 +Author: Behdad Esfahbod <behdad@behdad.org> +Date: Tue Jul 17 10:59:19 2018 +0200 + + Minor + + src/Makefile.am | 1 + + test/api/Makefile.am | 2 ++ + 2 files changed, 3 insertions(+) + +commit 3edef5a19b5c0f30381ae6fe01c3370ded37f6ca +Author: Behdad Esfahbod <behdad@behdad.org> +Date: Tue Jul 17 10:50:01 2018 +0200 + + Revert "Implement C++11-style GCC builtin atomic ops" + + This reverts commit 21fa170f0bfb0109c506ed17f5aff8b062564ffa. + + Is crashing. Oops. + + src/hb-atomic-private.hh | 22 +++------------------- + src/hb-object-private.hh | 2 +- + 2 files changed, 4 insertions(+), 20 deletions(-) + +commit 21fa170f0bfb0109c506ed17f5aff8b062564ffa +Author: Behdad Esfahbod <behdad@behdad.org> +Date: Mon Jul 16 17:58:02 2018 +0200 + + Implement C++11-style GCC builtin atomic ops + + Hopefully fixes bots. + + src/hb-atomic-private.hh | 22 +++++++++++++++++++--- + src/hb-object-private.hh | 2 +- + 2 files changed, 20 insertions(+), 4 deletions(-) + +commit 804b59cf4901d471253016e0cbf82cc1bbbc1d15 +Author: Behdad Esfahbod <behdad@behdad.org> +Date: Mon Jul 16 15:44:58 2018 +0200 + + Relax C++11 atomic ops memory order to acquire-release + + src/hb-atomic-private.hh | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) + +commit bda242409fc0cbb79a0ff00eba9856c4b0a9c7a1 +Author: Behdad Esfahbod <behdad@behdad.org> +Date: Mon Jul 16 15:41:09 2018 +0200 + + Implement C++11 <atomic> operations + + Fixes https://github.com/harfbuzz/harfbuzz/issues/345 + + src/hb-atomic-private.hh | 27 ++++++++++++++++++++++++--- + src/hb-open-type-private.hh | 2 +- + src/hb-ot-shape-complex-arabic.cc | 2 +- + 3 files changed, 26 insertions(+), 5 deletions(-) + +commit 524411224054b23bab4adad7343314df45c9c183 +Merge: 2aae617a 269eb456 +Author: Cosimo Lupo <cosimo@anthrotype.com> +Date: Mon Jul 16 14:42:43 2018 +0200 + + Merge pull request #1094 from anthrotype/fix-appveyor-msys2 + + appveyor.yml: try updating msys2 to fix failing mingw-w64-x86_64 build + +commit 269eb45650be66901627da7f1014339065a948a5 +Author: Cosimo Lupo <cosimo@anthrotype.com> +Date: Mon Jul 16 14:14:42 2018 +0200 + + appveyor.yml: try only updating msys2 core, not the rest of the + packages + + maybe it'll get a bit faster + + appveyor.yml | 1 - + 1 file changed, 1 deletion(-) + +commit 3ab52c6cb5c405366af804d278216e2d02a39ecb +Author: Cosimo Lupo <cosimo@anthrotype.com> +Date: Mon Jul 16 12:57:27 2018 +0200 + + appveyor.yml: pass --needed option to pacman + + so it won't attempt reinstalling packages which are already installed + + appveyor.yml | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 5631d70d36aa7952d343ea794bd5169a730706ae +Author: Cosimo Lupo <cosimo@anthrotype.com> +Date: Mon Jul 16 12:41:59 2018 +0200 + + appveyor.yml: try updating msys2 to fix failing mingw-w64-x86_64 build + + https://github.com/harfbuzz/harfbuzz/pull/1093#issuecomment-405201903 + https://ci.appveyor.com/project/harfbuzz/harfbuzz/build/job/ky7lao1ii1bi7ew4#L71 + + appveyor.yml | 2 ++ + 1 file changed, 2 insertions(+) + +commit 2aae617a84f47836f10efd30df43e13e3a9447e1 +Author: Behdad Esfahbod <behdad@behdad.org> +Date: Wed Jul 11 17:27:23 2018 +0200 + + Move _hb_alignof later again + + It uses constexpr... + + src/hb-private.hh | 26 +++++++++++++------------- + 1 file changed, 13 insertions(+), 13 deletions(-) + +commit f3a74c16ecafdca135a647ebe85117c35c1ef585 +Author: Behdad Esfahbod <behdad@behdad.org> +Date: Wed Jul 11 17:23:53 2018 +0200 + + Make hb_vector_t 8 bytes smaller + + src/hb-dsalgs.hh | 8 +++----- + 1 file changed, 3 insertions(+), 5 deletions(-) + +commit 44999f8b758374015f5d48c83f9adcb464607c2f +Author: Behdad Esfahbod <behdad@behdad.org> +Date: Wed Jul 11 17:00:59 2018 +0200 + + Align NullPool and CrapPool to HB_VECTOR_SIZE + + src/hb-dsalgs.hh | 3 +-- + src/hb-private.hh | 64 + ++++++++++++++++++++++++++++++++----------------------- + src/hb-static.cc | 4 ++-- + 3 files changed, 40 insertions(+), 31 deletions(-) + +commit 20a318d06acaabdee0090339dfa621aab46f1441 +Author: Behdad Esfahbod <behdad@behdad.org> +Date: Wed Jul 11 17:00:13 2018 +0200 + + Fix return type of alignof() fallback + + src/hb-private.hh | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 58cb4d9f73f1292454e3673d5e7ae5a58a566522 +Author: Behdad Esfahbod <behdad@behdad.org> +Date: Wed Jul 11 16:44:21 2018 +0200 + + Minor + + test/api/test-ot-math.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit 7796857c93b779e3c93eedd1cceb217d691dfd81 +Author: Behdad Esfahbod <behdad@behdad.org> +Date: Wed Jul 11 15:27:37 2018 +0200 + + Minor + + RELEASING.md | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 2b76767bf572364d3d647cdd139f2044a7ad06b2 +Author: Behdad Esfahbod <behdad@behdad.org> +Date: Wed Jul 11 15:27:13 2018 +0200 + + 1.8.3 + + NEWS | 8 ++++++++ + configure.ac | 2 +- + src/hb-version.h | 4 ++-- + 3 files changed, 11 insertions(+), 3 deletions(-) + commit 718dfd4189275b1e4233dc7c12ab457352fccfcb Author: Behdad Esfahbod <behdad@behdad.org> Date: Tue Jul 10 16:34:31 2018 +0200 diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/NEWS b/Build/source/libs/harfbuzz/harfbuzz-src/NEWS index 9031766dba1..fce43a3648e 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-src/NEWS +++ b/Build/source/libs/harfbuzz/harfbuzz-src/NEWS @@ -1,3 +1,10 @@ +Overview of changes leading to 1.8.4 +Tuesday, July 17, 2018 +==================================== +- Fix build on non-C++11. +- Use C++-style GCC atomics and C++11 atomics. + + Overview of changes leading to 1.8.3 Wednesday, July 11, 2018 ==================================== diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/RELEASING.md b/Build/source/libs/harfbuzz/harfbuzz-src/RELEASING.md index 0aef610b6bf..c57f8466a2d 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-src/RELEASING.md +++ b/Build/source/libs/harfbuzz/harfbuzz-src/RELEASING.md @@ -29,7 +29,7 @@ HarfBuzz release walk-through checklist: 7. "make release-files". Enter your GPG password. This creates a sha256 hash and signs it. -8. Now that you have release files built, commit NEWS and configure.ac changes, +8. Now that you have release files, commit NEWS, configure.ac, and src/hb-version.h, as well as any REPLACEME changes you made. The commit message is simply the release number. Eg. "1.4.7" diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/configure.ac b/Build/source/libs/harfbuzz/harfbuzz-src/configure.ac index b6fcfc02a21..0dd70e68f8d 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-src/configure.ac +++ b/Build/source/libs/harfbuzz/harfbuzz-src/configure.ac @@ -1,6 +1,6 @@ AC_PREREQ([2.64]) AC_INIT([HarfBuzz], - [1.8.3], + [1.8.4], [https://github.com/harfbuzz/harfbuzz/issues/new], [harfbuzz], [http://harfbuzz.org/]) diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/Makefile.am b/Build/source/libs/harfbuzz/harfbuzz-src/src/Makefile.am index 6dfec3bfa70..66594bbcd19 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-src/src/Makefile.am +++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/Makefile.am @@ -14,6 +14,7 @@ check_PROGRAMS = # Convenience targets: lib: $(BUILT_SOURCES) libharfbuzz.la libharfbuzz-subset.la +libs: $(BUILT_SOURCES) $(lib_LTLIBRARIES) fuzzing: $(BUILT_SOURCES) libharfbuzz-fuzzing.la libharfbuzz-subset-fuzzing.la lib_LTLIBRARIES = libharfbuzz.la diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-atomic-private.hh b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-atomic-private.hh index 12caacaaba7..02cf6f38811 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-atomic-private.hh +++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-atomic-private.hh @@ -46,6 +46,41 @@ /* Defined externally, i.e. in config.h; must have typedef'ed hb_atomic_int_impl_t as well. */ +#elif !defined(HB_NO_MT) && defined(__ATOMIC_ACQUIRE) + +/* C++11-style GCC primitives. */ + +typedef int hb_atomic_int_impl_t; +#define hb_atomic_int_impl_add(AI, V) __atomic_fetch_add (&(AI), (V), __ATOMIC_ACQ_REL) + +#define hb_atomic_ptr_impl_get(P) __atomic_load_n ((P), __ATOMIC_ACQUIRE) +static inline bool +_hb_atomic_ptr_impl_cmplexch (const void **P, const void *O_, const void *N) +{ + const void *O = O_; // Need lvalue + return __atomic_compare_exchange_n ((void **) P, (void **) &O, (void *) N, true, __ATOMIC_ACQ_REL, __ATOMIC_RELAXED); +} +#define hb_atomic_ptr_impl_cmpexch(P,O,N) (_hb_atomic_ptr_impl_cmplexch ((const void **) (P), (O), (N))) + +#elif !defined(HB_NO_MT) && __cplusplus >= 201103L + +/* C++11 atomics. */ + +#include <atomic> + +typedef int hb_atomic_int_impl_t; +#define hb_atomic_int_impl_add(AI, V) (reinterpret_cast<std::atomic<int> *> (&AI)->fetch_add ((V), std::memory_order_acq_rel)) + +#define hb_atomic_ptr_impl_get(P) (reinterpret_cast<std::atomic<void*> *> (P)->load (std::memory_order_acquire)) +static inline bool +_hb_atomic_ptr_impl_cmplexch (const void **P, const void *O_, const void *N) +{ + const void *O = O_; // Need lvalue + return reinterpret_cast<std::atomic<const void*> *> (P)->compare_exchange_weak (O, N, std::memory_order_acq_rel, std::memory_order_relaxed); +} +#define hb_atomic_ptr_impl_cmpexch(P,O,N) (_hb_atomic_ptr_impl_cmplexch ((const void **) (P), (O), (N))) + + #elif !defined(HB_NO_MT) && (defined(_WIN32) || defined(__CYGWIN__)) #include <windows.h> @@ -162,16 +197,18 @@ typedef int hb_atomic_int_impl_t; #endif +#ifndef HB_ATOMIC_INT_INIT #define HB_ATOMIC_INT_INIT(V) {V} +#endif struct hb_atomic_int_t { - hb_atomic_int_impl_t v; + mutable hb_atomic_int_impl_t v; inline void set_unsafe (int v_) { v = v_; } inline int get_unsafe (void) const { return v; } - inline int inc (void) { return hb_atomic_int_impl_add (const_cast<hb_atomic_int_impl_t &> (v), 1); } - inline int dec (void) { return hb_atomic_int_impl_add (const_cast<hb_atomic_int_impl_t &> (v), -1); } + inline int inc (void) { return hb_atomic_int_impl_add (v, 1); } + inline int dec (void) { return hb_atomic_int_impl_add (v, -1); } }; diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-dsalgs.hh b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-dsalgs.hh index 6a8ddaa995b..fc7d1f0a904 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-dsalgs.hh +++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-dsalgs.hh @@ -450,8 +450,7 @@ template <typename Type, unsigned int StaticSize=8> struct hb_vector_t { unsigned int len; - unsigned int allocated; - bool successful; + unsigned int allocated; /* == 0 means allocation failed. */ Type *arrayZ; Type static_array[StaticSize]; @@ -459,7 +458,6 @@ struct hb_vector_t { len = 0; allocated = ARRAY_LENGTH (static_array); - successful = true; arrayZ = static_array; } @@ -492,7 +490,7 @@ struct hb_vector_t /* Allocate for size but don't adjust len. */ inline bool alloc (unsigned int size) { - if (unlikely (!successful)) + if (unlikely (!allocated)) return false; if (likely (size <= allocated)) @@ -521,7 +519,7 @@ struct hb_vector_t if (unlikely (!new_array)) { - successful = false; + allocated = 0; return false; } @@ -854,8 +852,7 @@ struct hb_vector_size_t union { elt_t v[byte_size / sizeof (elt_t)]; #if HB_VECTOR_SIZE - typedef unsigned long vec_t __attribute__((vector_size (HB_VECTOR_SIZE / 8))); - vec_t vec[byte_size / sizeof (vec_t)]; + hb_vector_size_impl_t vec[byte_size / sizeof (hb_vector_size_impl_t)]; #endif } u; }; diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-object-private.hh b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-object-private.hh index fcdc9256d9b..8199c4b8407 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-object-private.hh +++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-object-private.hh @@ -94,7 +94,7 @@ struct hb_user_data_array_t struct hb_object_header_t { hb_reference_count_t ref_count; - hb_user_data_array_t *user_data; + mutable hb_user_data_array_t *user_data; #define HB_OBJECT_HEADER_STATIC {HB_REFERENCE_COUNT_INIT, nullptr} diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-open-type-private.hh b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-open-type-private.hh index 207f6e0e204..f6113c33aaf 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-open-type-private.hh +++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-open-type-private.hh @@ -1247,7 +1247,7 @@ struct hb_lazy_loader_t private: hb_face_t *face; - T *instance; + mutable T *instance; }; /* Logic is shared between hb_lazy_loader_t and hb_table_lazy_loader_t */ diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shape-complex-arabic.cc b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shape-complex-arabic.cc index b1cba1c711d..0c4948dfdf4 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shape-complex-arabic.cc +++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shape-complex-arabic.cc @@ -250,7 +250,7 @@ struct arabic_shape_plan_t * mask_array[NONE] == 0. */ hb_mask_t mask_array[ARABIC_NUM_FEATURES + 1]; - arabic_fallback_plan_t *fallback_plan; + mutable arabic_fallback_plan_t *fallback_plan; unsigned int do_fallback : 1; unsigned int has_stch : 1; diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-private.hh b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-private.hh index ff339df4dca..ddb256f80d5 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-private.hh +++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-private.hh @@ -84,19 +84,9 @@ extern "C" int hb_memalign_impl(void **memptr, size_t alignment, size_t size); #endif -/* Compiler attributes */ - - -template <typename T> -struct _hb_alignof -{ - struct s - { - char c; - T t; - }; - static constexpr unsigned int value = offsetof (s, t); -}; +/* + * Compiler attributes + * */ #if __cplusplus < 201103L @@ -122,6 +112,16 @@ struct _hb_alignof #define thread_local #endif +template <typename T> +struct _hb_alignof +{ + struct s + { + char c; + T t; + }; + static constexpr size_t value = offsetof (s, t); +}; #ifndef alignof #define alignof(x) (_hb_alignof<x>::value) #endif // alignof @@ -334,6 +334,39 @@ static_assert ((sizeof (hb_var_int_t) == 4), ""); TypeName(const TypeName&); \ void operator=(const TypeName&) + +/* + * Compiler-assisted vectorization parameters. + */ + +/* + * Disable vectorization for now. To correctly use them, we should + * use posix_memalign() to allocate in hb_vector_t. Otherwise, can + * cause misaligned access. + * + * https://bugs.chromium.org/p/chromium/issues/detail?id=860184 + */ +#if !defined(HB_VECTOR_SIZE) +# define HB_VECTOR_SIZE 0 +#endif + +/* The `vector_size' attribute was introduced in gcc 3.1. */ +#if !defined(HB_VECTOR_SIZE) +# if defined( __GNUC__ ) && ( __GNUC__ >= 4 ) +# define HB_VECTOR_SIZE 128 +# else +# define HB_VECTOR_SIZE 0 +# endif +#endif +static_assert (0 == (HB_VECTOR_SIZE & (HB_VECTOR_SIZE - 1)), "HB_VECTOR_SIZE is not power of 2."); +static_assert (0 == (HB_VECTOR_SIZE % 64), "HB_VECTOR_SIZE is not multiple of 64."); +#if HB_VECTOR_SIZE +typedef uint64_t hb_vector_size_impl_t __attribute__((vector_size (HB_VECTOR_SIZE / 8))); +#else +typedef uint64_t hb_vector_size_impl_t; +#endif + + /* * Static pools */ @@ -341,18 +374,18 @@ static_assert ((sizeof (hb_var_int_t) == 4), ""); /* Global nul-content Null pool. Enlarge as necessary. */ #define HB_NULL_POOL_SIZE 264 -static_assert (HB_NULL_POOL_SIZE % sizeof (void *) == 0, "Align HB_NULL_POOL_SIZE."); #ifdef HB_NO_VISIBILITY static #else extern HB_INTERNAL #endif -void * const _hb_NullPool[HB_NULL_POOL_SIZE / sizeof (void *)] +hb_vector_size_impl_t const _hb_NullPool[(HB_NULL_POOL_SIZE + sizeof (hb_vector_size_impl_t) - 1) / sizeof (hb_vector_size_impl_t)] #ifdef HB_NO_VISIBILITY = {} #endif ; + /* Generic nul-content Null objects. */ template <typename Type> static inline Type const & Null (void) { @@ -385,11 +418,12 @@ static #else extern HB_INTERNAL #endif -/*thread_local*/ void * _hb_CrapPool[HB_NULL_POOL_SIZE / sizeof (void *)] +/*thread_local*/ hb_vector_size_impl_t _hb_CrapPool[(HB_NULL_POOL_SIZE + sizeof (hb_vector_size_impl_t) - 1) / sizeof (hb_vector_size_impl_t)] #ifdef HB_NO_VISIBILITY = {} #endif ; + /* CRAP pool: Common Region for Access Protection. */ template <typename Type> static inline Type& Crap (void) { @@ -503,30 +537,6 @@ hb_in_ranges (T u, T lo1, T hi1, T lo2, T hi2, T lo3, T hi3) #define FLAG_RANGE(x,y) (ASSERT_STATIC_EXPR_ZERO ((x) < (y)) + FLAG(y+1) - FLAG(x)) - -/* Compiler-assisted vectorization. */ - -/* - * Disable vectorization for now. To correctly use them, we should - * use posix_memalign() to allocate them. Otherwise, can cause - * misaligned access. - * - * https://bugs.chromium.org/p/chromium/issues/detail?id=860184 - */ -#if !defined(HB_VECTOR_SIZE) -# define HB_VECTOR_SIZE 0 -#endif - -/* The `vector_size' attribute was introduced in gcc 3.1. */ -#if !defined(HB_VECTOR_SIZE) -# if defined( __GNUC__ ) && ( __GNUC__ >= 4 ) -# define HB_VECTOR_SIZE 128 -# else -# define HB_VECTOR_SIZE 0 -# endif -#endif - - /* Global runtime options. */ struct hb_options_t diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-static.cc b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-static.cc index e26e5c80154..ee17cd3481c 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-static.cc +++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-static.cc @@ -27,6 +27,6 @@ #include "hb-private.hh" #ifndef HB_NO_VISIBILITY -void * const _hb_NullPool[HB_NULL_POOL_SIZE / sizeof (void *)] = {}; -/*thread_local*/ void * _hb_CrapPool[HB_NULL_POOL_SIZE / sizeof (void *)] = {}; +hb_vector_size_impl_t const _hb_NullPool[(HB_NULL_POOL_SIZE + sizeof (hb_vector_size_impl_t) - 1) / sizeof (hb_vector_size_impl_t)] = {}; +/*thread_local*/ hb_vector_size_impl_t _hb_CrapPool[(HB_NULL_POOL_SIZE + sizeof (hb_vector_size_impl_t) - 1) / sizeof (hb_vector_size_impl_t)] = {}; #endif diff --git a/Build/source/libs/harfbuzz/version.ac b/Build/source/libs/harfbuzz/version.ac index f9ad64a1155..d3f0c25996f 100644 --- a/Build/source/libs/harfbuzz/version.ac +++ b/Build/source/libs/harfbuzz/version.ac @@ -8,4 +8,4 @@ dnl dnl -------------------------------------------------------- dnl dnl m4-include this file to define the current harfbuzz version -m4_define([harfbuzz_version], [1.8.3]) +m4_define([harfbuzz_version], [1.8.4]) |