Disable internal buffer variable bookkeeping in NDEBUG builds
Saves some sweet time and binary size!
This commit is contained in:
parent
94dd0bb7e7
commit
988165021f
|
@ -130,6 +130,7 @@ pkgconfig_DATA = harfbuzz.pc
|
|||
EXTRA_DIST += harfbuzz.pc.in
|
||||
|
||||
FUZZING_CPPFLAGS= \
|
||||
-DNDEBUG \
|
||||
-DHB_MAX_NESTING_LEVEL=3 \
|
||||
-DHB_SANITIZE_MAX_EDITS=3 \
|
||||
-DHB_BUFFER_MAX_EXPANSION_FACTOR=3 \
|
||||
|
|
|
@ -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,24 @@ 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;
|
||||
|
||||
#ifndef NDEBUG
|
||||
/* Internal debugging. */
|
||||
/* 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];
|
||||
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);
|
||||
#else
|
||||
inline void deallocate_var_all (void) {}
|
||||
#endif
|
||||
|
||||
|
||||
/* Methods */
|
||||
|
||||
|
@ -140,11 +149,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);
|
||||
|
@ -256,12 +260,18 @@ struct hb_buffer_t {
|
|||
#define HB_BUFFER_XALLOCATE_VAR(b, func, var, owner) \
|
||||
b->func (offsetof (hb_glyph_info_t, var) - offsetof(hb_glyph_info_t, var1), \
|
||||
sizeof (b->info[0].var), owner)
|
||||
#ifndef NDEBUG
|
||||
#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)
|
||||
#else
|
||||
#define HB_BUFFER_ALLOCATE_VAR(b, var)
|
||||
#define HB_BUFFER_DEALLOCATE_VAR(b, var)
|
||||
#define HB_BUFFER_ASSERT_VAR(b, var)
|
||||
#endif
|
||||
|
||||
|
||||
#endif /* HB_BUFFER_PRIVATE_HH */
|
||||
|
|
|
@ -242,11 +242,11 @@ hb_buffer_t::clear (void)
|
|||
out_info = info;
|
||||
|
||||
serial = 0;
|
||||
memset (allocated_var_bytes, 0, sizeof allocated_var_bytes);
|
||||
memset (allocated_var_owner, 0, sizeof allocated_var_owner);
|
||||
|
||||
memset (context, 0, sizeof context);
|
||||
memset (context_len, 0, sizeof context_len);
|
||||
|
||||
deallocate_var_all ();
|
||||
}
|
||||
|
||||
void
|
||||
|
@ -661,6 +661,7 @@ hb_buffer_t::guess_segment_properties (void)
|
|||
}
|
||||
|
||||
|
||||
#ifndef NDEBUG
|
||||
static inline void
|
||||
dump_var_allocation (const hb_buffer_t *buffer)
|
||||
{
|
||||
|
@ -728,6 +729,7 @@ void hb_buffer_t::deallocate_var_all (void)
|
|||
memset (allocated_var_bytes, 0, sizeof (allocated_var_bytes));
|
||||
memset (allocated_var_owner, 0, sizeof (allocated_var_owner));
|
||||
}
|
||||
#endif /* NDEBUG */
|
||||
|
||||
/* Public API */
|
||||
|
||||
|
|
Loading…
Reference in New Issue