aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBehdad Esfahbod <behdad@behdad.org>2016-02-25 12:23:02 +0900
committerBehdad Esfahbod <behdad@behdad.org>2016-02-25 12:23:02 +0900
commit988165021f8d48dc7120b071d056491256569f4f (patch)
treef683e70f9f542c1022c2204d6d4ad12b68469639
parent94dd0bb7e78125994cb7c833a5b03110f1ffc822 (diff)
downloadharfbuzz_ng-988165021f8d48dc7120b071d056491256569f4f.tar.gz
Disable internal buffer variable bookkeeping in NDEBUG builds
Saves some sweet time and binary size!
-rw-r--r--src/Makefile.am1
-rw-r--r--src/hb-buffer-private.hh30
-rw-r--r--src/hb-buffer.cc6
3 files changed, 25 insertions, 12 deletions
diff --git a/src/Makefile.am b/src/Makefile.am
index bb085ad00..2a3d6c79a 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -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 \
diff --git a/src/hb-buffer-private.hh b/src/hb-buffer-private.hh
index c8eec3c17..c3184cf76 100644
--- a/src/hb-buffer-private.hh
+++ b/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,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 */
diff --git a/src/hb-buffer.cc b/src/hb-buffer.cc
index 5f320bd7e..ea2a70d5b 100644
--- a/src/hb-buffer.cc
+++ b/src/hb-buffer.cc
@@ -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 */