| Index: third_party/harfbuzz-ng/src/hb-buffer-private.hh
|
| diff --git a/third_party/harfbuzz-ng/src/hb-buffer-private.hh b/third_party/harfbuzz-ng/src/hb-buffer-private.hh
|
| index c8eec3c178079a2604fc2d4ffdceb3ae2bf38c77..ed592f4481fd09786e2b65a44c5a2b68b58ee0cd 100644
|
| --- a/third_party/harfbuzz-ng/src/hb-buffer-private.hh
|
| +++ b/third_party/harfbuzz-ng/src/hb-buffer-private.hh
|
| @@ -112,10 +112,6 @@ struct hb_buffer_t {
|
|
|
| unsigned int serial;
|
|
|
| - /* These reflect current allocations of the bytes in glyph_info_t's var1 and var2. */
|
| - uint8_t allocated_var_bytes[8];
|
| - const char *allocated_var_owner[8];
|
| -
|
| /* Text before / after the main buffer contents.
|
| * Always in Unicode, and ordered outward.
|
| * Index 0 is for "pre-context", 1 for "post-context". */
|
| @@ -123,11 +119,52 @@ struct hb_buffer_t {
|
| hb_codepoint_t context[2][CONTEXT_LENGTH];
|
| unsigned int context_len[2];
|
|
|
| - /* Debugging */
|
| + /* Debugging API */
|
| hb_buffer_message_func_t message_func;
|
| void *message_data;
|
| hb_destroy_func_t message_destroy;
|
|
|
| + /* Internal debugging. */
|
| + /* The bits here reflect current allocations of the bytes in glyph_info_t's var1 and var2. */
|
| +#ifndef HB_NDEBUG
|
| + uint8_t allocated_var_bits;
|
| +#endif
|
| + inline void allocate_var (unsigned int start, unsigned int count)
|
| + {
|
| +#ifndef HB_NDEBUG
|
| + unsigned int end = start + count;
|
| + assert (end <= 8);
|
| + unsigned int bits = (1<<end) - (1<<start);
|
| + assert (0 == (allocated_var_bits & bits));
|
| + allocated_var_bits |= bits;
|
| +#endif
|
| + }
|
| + inline void deallocate_var (unsigned int start, unsigned int count)
|
| + {
|
| +#ifndef HB_NDEBUG
|
| + unsigned int end = start + count;
|
| + assert (end <= 8);
|
| + unsigned int bits = (1<<end) - (1<<start);
|
| + assert (bits == (allocated_var_bits & bits));
|
| + allocated_var_bits &= ~bits;
|
| +#endif
|
| + }
|
| + inline void assert_var (unsigned int start, unsigned int count)
|
| + {
|
| +#ifndef HB_NDEBUG
|
| + unsigned int end = start + count;
|
| + assert (end <= 8);
|
| + unsigned int bits = (1<<end) - (1<<start);
|
| + assert (bits == (allocated_var_bits & bits));
|
| +#endif
|
| + }
|
| + inline void deallocate_var_all (void)
|
| + {
|
| +#ifndef HB_NDEBUG
|
| + allocated_var_bits = 0;
|
| +#endif
|
| + }
|
| +
|
|
|
| /* Methods */
|
|
|
| @@ -140,11 +177,6 @@ struct hb_buffer_t {
|
| { return len - idx; }
|
| inline unsigned int next_serial (void) { return serial++; }
|
|
|
| - HB_INTERNAL void allocate_var (unsigned int byte_i, unsigned int count, const char *owner);
|
| - HB_INTERNAL void deallocate_var (unsigned int byte_i, unsigned int count, const char *owner);
|
| - HB_INTERNAL void assert_var (unsigned int byte_i, unsigned int count, const char *owner);
|
| - HB_INTERNAL void deallocate_var_all (void);
|
| -
|
| HB_INTERNAL void add (hb_codepoint_t codepoint,
|
| unsigned int cluster);
|
| HB_INTERNAL void add_info (const hb_glyph_info_t &glyph_info);
|
| @@ -253,15 +285,12 @@ struct hb_buffer_t {
|
| };
|
|
|
|
|
| -#define HB_BUFFER_XALLOCATE_VAR(b, func, var, owner) \
|
| +#define HB_BUFFER_XALLOCATE_VAR(b, func, var) \
|
| b->func (offsetof (hb_glyph_info_t, var) - offsetof(hb_glyph_info_t, var1), \
|
| - sizeof (b->info[0].var), owner)
|
| -#define HB_BUFFER_ALLOCATE_VAR(b, var) \
|
| - HB_BUFFER_XALLOCATE_VAR (b, allocate_var, var (), #var)
|
| -#define HB_BUFFER_DEALLOCATE_VAR(b, var) \
|
| - HB_BUFFER_XALLOCATE_VAR (b, deallocate_var, var (), #var)
|
| -#define HB_BUFFER_ASSERT_VAR(b, var) \
|
| - HB_BUFFER_XALLOCATE_VAR (b, assert_var, var (), #var)
|
| + sizeof (b->info[0].var))
|
| +#define HB_BUFFER_ALLOCATE_VAR(b, var) HB_BUFFER_XALLOCATE_VAR (b, allocate_var, var ())
|
| +#define HB_BUFFER_DEALLOCATE_VAR(b, var) HB_BUFFER_XALLOCATE_VAR (b, deallocate_var, var ())
|
| +#define HB_BUFFER_ASSERT_VAR(b, var) HB_BUFFER_XALLOCATE_VAR (b, assert_var, var ())
|
|
|
|
|
| #endif /* HB_BUFFER_PRIVATE_HH */
|
|
|