< prev index next >

src/java.desktop/share/native/libfontmanager/harfbuzz/hb-debug.hh

Print this page

        

*** 25,41 **** */ #ifndef HB_DEBUG_HH #define HB_DEBUG_HH ! #include "hb-private.hh" #ifndef HB_DEBUG #define HB_DEBUG 0 #endif static inline bool _hb_debug (unsigned int level, unsigned int max_level) { return level < max_level; --- 25,88 ---- */ #ifndef HB_DEBUG_HH #define HB_DEBUG_HH ! #include "hb.hh" ! #include "hb-atomic.hh" ! #include "hb-dsalgs.hh" #ifndef HB_DEBUG #define HB_DEBUG 0 #endif + + /* + * Global runtime options. + */ + + struct hb_options_t + { + bool unused : 1; /* In-case sign bit is here. */ + bool initialized : 1; + bool uniscribe_bug_compatible : 1; + bool aat : 1; + }; + + union hb_options_union_t { + int i; + hb_options_t opts; + }; + static_assert ((sizeof (hb_atomic_int_t) >= sizeof (hb_options_union_t)), ""); + + HB_INTERNAL void + _hb_options_init (); + + extern HB_INTERNAL hb_atomic_int_t _hb_options; + + static inline hb_options_t + hb_options () + { + /* Make a local copy, so we can access bitfield threadsafely. */ + hb_options_union_t u; + u.i = _hb_options.get_relaxed (); + + if (unlikely (!u.i)) + { + _hb_options_init (); + u.i = _hb_options.get_relaxed (); + } + + return u.opts; + } + + + /* + * Debug output (needs enabling at compile time.) + */ + static inline bool _hb_debug (unsigned int level, unsigned int max_level) { return level < max_level;
*** 124,134 **** vfprintf (stderr, message, ap); } fprintf (stderr, "\n"); } ! template <> inline void _hb_debug_msg_va<0> (const char *what HB_UNUSED, const void *obj HB_UNUSED, const char *func HB_UNUSED, bool indented HB_UNUSED, unsigned int level HB_UNUSED, --- 171,181 ---- vfprintf (stderr, message, ap); } fprintf (stderr, "\n"); } ! template <> inline void HB_PRINTF_FUNC(7, 0) _hb_debug_msg_va<0> (const char *what HB_UNUSED, const void *obj HB_UNUSED, const char *func HB_UNUSED, bool indented HB_UNUSED, unsigned int level HB_UNUSED,
*** 143,153 **** bool indented, unsigned int level, int level_dir, const char *message, ...) HB_PRINTF_FUNC(7, 8); ! template <int max_level> static inline void _hb_debug_msg (const char *what, const void *obj, const char *func, bool indented, unsigned int level, --- 190,200 ---- bool indented, unsigned int level, int level_dir, const char *message, ...) HB_PRINTF_FUNC(7, 8); ! template <int max_level> static inline void HB_PRINTF_FUNC(7, 8) _hb_debug_msg (const char *what, const void *obj, const char *func, bool indented, unsigned int level,
*** 167,177 **** bool indented HB_UNUSED, unsigned int level HB_UNUSED, int level_dir HB_UNUSED, const char *message HB_UNUSED, ...) HB_PRINTF_FUNC(7, 8); ! template <> inline void _hb_debug_msg<0> (const char *what HB_UNUSED, const void *obj HB_UNUSED, const char *func HB_UNUSED, bool indented HB_UNUSED, unsigned int level HB_UNUSED, --- 214,224 ---- bool indented HB_UNUSED, unsigned int level HB_UNUSED, int level_dir HB_UNUSED, const char *message HB_UNUSED, ...) HB_PRINTF_FUNC(7, 8); ! template <> inline void HB_PRINTF_FUNC(7, 8) _hb_debug_msg<0> (const char *what HB_UNUSED, const void *obj HB_UNUSED, const char *func HB_UNUSED, bool indented HB_UNUSED, unsigned int level HB_UNUSED,
*** 235,261 **** va_list ap; va_start (ap, message); _hb_debug_msg_va<max_level> (what, obj, func, true, plevel ? *plevel : 0, +1, message, ap); va_end (ap); } ! inline ~hb_auto_trace_t (void) { _hb_warn_no_return<ret_t> (returned); if (!returned) { _hb_debug_msg<max_level> (what, obj, nullptr, true, plevel ? *plevel : 1, -1, " "); } if (plevel) --*plevel; } ! inline ret_t ret (ret_t v, unsigned int line = 0) { if (unlikely (returned)) { fprintf (stderr, "OUCH, double calls to return_trace(). This is a bug, please report.\n"); return v; } ! _hb_debug_msg<max_level> (what, obj, nullptr, true, plevel ? *plevel : 1, -1, "return %s (line %d)", hb_printer_t<ret_t>().print (v), line); if (plevel) --*plevel; plevel = nullptr; returned = true; --- 282,310 ---- va_list ap; va_start (ap, message); _hb_debug_msg_va<max_level> (what, obj, func, true, plevel ? *plevel : 0, +1, message, ap); va_end (ap); } ! ~hb_auto_trace_t () { _hb_warn_no_return<ret_t> (returned); if (!returned) { _hb_debug_msg<max_level> (what, obj, nullptr, true, plevel ? *plevel : 1, -1, " "); } if (plevel) --*plevel; } ! ret_t ret (ret_t v, ! const char *func = "", ! unsigned int line = 0) { if (unlikely (returned)) { fprintf (stderr, "OUCH, double calls to return_trace(). This is a bug, please report.\n"); return v; } ! _hb_debug_msg<max_level> (what, obj, func, true, plevel ? *plevel : 1, -1, "return %s (line %d)", hb_printer_t<ret_t>().print (v), line); if (plevel) --*plevel; plevel = nullptr; returned = true;
*** 276,296 **** const void *obj_, const char *func, const char *message, ...) HB_PRINTF_FUNC(6, 7) {} ! inline ret_t ret (ret_t v, unsigned int line HB_UNUSED = 0) { return v; } }; /* For disabled tracing; optimize out everything. * https://github.com/harfbuzz/harfbuzz/pull/605 */ template <typename ret_t> struct hb_no_trace_t { ! inline ret_t ret (ret_t v, unsigned int line HB_UNUSED = 0) { return v; } }; ! #define return_trace(RET) return trace.ret (RET, __LINE__) /* * Instances. */ --- 325,349 ---- const void *obj_, const char *func, const char *message, ...) HB_PRINTF_FUNC(6, 7) {} ! ret_t ret (ret_t v, ! const char *func HB_UNUSED = nullptr, ! unsigned int line HB_UNUSED = 0) { return v; } }; /* For disabled tracing; optimize out everything. * https://github.com/harfbuzz/harfbuzz/pull/605 */ template <typename ret_t> struct hb_no_trace_t { ! ret_t ret (ret_t v, ! const char *func HB_UNUSED = "", ! unsigned int line HB_UNUSED = 0) { return v; } }; ! #define return_trace(RET) return trace.ret (RET, HB_FUNC, __LINE__) /* * Instances. */
*** 346,379 **** c->buffer->idx, c->buffer->cur().codepoint, (int) c->lookup_index) #else #define TRACE_APPLY(this) hb_no_trace_t<bool> trace #endif - #ifndef HB_DEBUG_CLOSURE - #define HB_DEBUG_CLOSURE (HB_DEBUG+0) - #endif - #if HB_DEBUG_CLOSURE - #define TRACE_CLOSURE(this) \ - hb_auto_trace_t<HB_DEBUG_CLOSURE, hb_void_t> trace \ - (&c->debug_depth, c->get_name (), this, HB_FUNC, \ - " ") - #else - #define TRACE_CLOSURE(this) hb_no_trace_t<hb_void_t> trace HB_UNUSED - #endif - - #ifndef HB_DEBUG_COLLECT_GLYPHS - #define HB_DEBUG_COLLECT_GLYPHS (HB_DEBUG+0) - #endif - #if HB_DEBUG_COLLECT_GLYPHS - #define TRACE_COLLECT_GLYPHS(this) \ - hb_auto_trace_t<HB_DEBUG_COLLECT_GLYPHS, hb_void_t> trace \ - (&c->debug_depth, c->get_name (), this, HB_FUNC, \ - " ") - #else - #define TRACE_COLLECT_GLYPHS(this) hb_no_trace_t<hb_void_t> trace HB_UNUSED - #endif - #ifndef HB_DEBUG_SANITIZE #define HB_DEBUG_SANITIZE (HB_DEBUG+0) #endif #if HB_DEBUG_SANITIZE #define TRACE_SANITIZE(this) \ --- 399,408 ----
*** 421,432 **** #endif #ifndef HB_DEBUG_DISPATCH #define HB_DEBUG_DISPATCH ( \ HB_DEBUG_APPLY + \ - HB_DEBUG_CLOSURE + \ - HB_DEBUG_COLLECT_GLYPHS + \ HB_DEBUG_SANITIZE + \ HB_DEBUG_SERIALIZE + \ HB_DEBUG_SUBSET + \ HB_DEBUG_WOULD_APPLY + \ 0) --- 450,459 ----
< prev index next >