[HarfBuzz] harfbuzz: Branch 'master'

Behdad Esfahbod behdad at kemper.freedesktop.org
Thu Feb 25 03:23:44 UTC 2016


 src/Makefile.am          |    1 +
 src/hb-buffer-private.hh |   30 ++++++++++++++++++++----------
 src/hb-buffer.cc         |    6 ++++--
 3 files changed, 25 insertions(+), 12 deletions(-)

New commits:
commit 988165021f8d48dc7120b071d056491256569f4f
Author: Behdad Esfahbod <behdad at behdad.org>
Date:   Thu Feb 25 12:23:02 2016 +0900

    Disable internal buffer variable bookkeeping in NDEBUG builds
    
    Saves some sweet time and binary size!

diff --git a/src/Makefile.am b/src/Makefile.am
index bb085ad..2a3d6c7 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 c8eec3c..c3184cf 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 5f320bd..ea2a70d 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 */
 


More information about the HarfBuzz mailing list