diff options
Diffstat (limited to 'indra/llcommon')
| -rw-r--r-- | indra/llcommon/llcallstack.h | 12 | ||||
| -rw-r--r-- | indra/llcommon/llerror.cpp | 15 | ||||
| -rw-r--r-- | indra/llcommon/llerror.h | 24 | 
3 files changed, 29 insertions, 22 deletions
diff --git a/indra/llcommon/llcallstack.h b/indra/llcommon/llcallstack.h index 5acf04a49f..d5a2b7b157 100644 --- a/indra/llcommon/llcallstack.h +++ b/indra/llcommon/llcallstack.h @@ -79,9 +79,9 @@ struct LLContextStatus  LL_COMMON_API std::ostream& operator<<(std::ostream& s, const LLContextStatus& context_status); -#define dumpStack(tag) \ -    if (debugLoggingEnabled(tag)) \ -    { \ -        LLCallStack cs; \ -        LL_DEBUGS(tag) << "STACK:\n" << "====================\n" << cs << "====================" << LL_ENDL; \ -    } +#define dumpStack(tag)                          \ +    LL_DEBUGS(tag) << "STACK:\n"                \ +                   << "====================\n"  \ +                   << LLCallStack()             \ +                   << "===================="    \ +                   << LL_ENDL; diff --git a/indra/llcommon/llerror.cpp b/indra/llcommon/llerror.cpp index a7794cc045..5aa8558878 100644 --- a/indra/llcommon/llerror.cpp +++ b/indra/llcommon/llerror.cpp @@ -1609,20 +1609,5 @@ namespace LLError      }  } -bool debugLoggingEnabled(const std::string& tag) -{ -    LL_PROFILE_ZONE_SCOPED_CATEGORY_APP; -    LLMutexTrylock lock(getMutex<LOG_MUTEX>(), 5); -    if (!lock.isLocked()) -    { -        return false; -    } - -    SettingsConfigPtr s = Globals::getInstance()->getSettingsConfig(); -    LLError::ELevel level = LLError::LEVEL_DEBUG; -    bool res = checkLevelMap(s->mTagLevelMap, tag, level); -    return res; -} - diff --git a/indra/llcommon/llerror.h b/indra/llcommon/llerror.h index b7dec3cb7f..08eb323c4a 100644 --- a/indra/llcommon/llerror.h +++ b/indra/llcommon/llerror.h @@ -467,7 +467,29 @@ typedef LLError::NoClassInfo _LL_CLASS_TO_LOG;  		LLError::CallSite& _site(_sites[which]);                        \  		lllog_test_() -// Check at run-time whether logging is enabled, without generating output +/* +// Check at run-time whether logging is enabled, without generating output. +Resist the temptation to add a function like this because it incurs the +expense of locking and map-searching every time control reaches it.  bool debugLoggingEnabled(const std::string& tag); +Instead of: + +if debugLoggingEnabled("SomeTag") +{ +    // ... presumably expensive operation ... +    LL_DEBUGS("SomeTag") << ... << LL_ENDL; +} + +Use this: + +LL_DEBUGS("SomeTag"); +// ... presumably expensive operation ... +LL_CONT << ...; +LL_ENDL; + +LL_DEBUGS("SomeTag") performs the locking and map-searching ONCE, then caches +the result in a static variable. +*/  +  #endif // LL_LLERROR_H  | 
