diff options
| author | cosmic-linden <111533034+cosmic-linden@users.noreply.github.com> | 2024-08-26 17:14:50 -0700 | 
|---|---|---|
| committer | GitHub <noreply@github.com> | 2024-08-26 17:14:50 -0700 | 
| commit | 600ec6fcdac5ae8868759512ba8c0a304ad8738f (patch) | |
| tree | 900b1c7f4a67fe73387fb9ce0fd6b0051d49b686 /indra/llcommon | |
| parent | e5fd6854aedb620825ffcd079c5bb3aa1c90b134 (diff) | |
| parent | 316f0f0b8cb05515068e2acb72740fbab2365ce0 (diff) | |
Merge pull request #2424 from secondlife/brad/cherry-picks-hot-logging
Fast track some changes removing unneeded logging code into DeltaFPS
Diffstat (limited to 'indra/llcommon')
| -rw-r--r-- | indra/llcommon/CMakeLists.txt | 2 | ||||
| -rw-r--r-- | indra/llcommon/llcallstack.cpp | 188 | ||||
| -rw-r--r-- | indra/llcommon/llcallstack.h | 87 | 
3 files changed, 0 insertions, 277 deletions
| diff --git a/indra/llcommon/CMakeLists.txt b/indra/llcommon/CMakeLists.txt index c4041f0c79..437b8d0168 100644 --- a/indra/llcommon/CMakeLists.txt +++ b/indra/llcommon/CMakeLists.txt @@ -26,7 +26,6 @@ set(llcommon_SOURCE_FILES      llbase64.cpp      llbitpack.cpp      llcallbacklist.cpp -    llcallstack.cpp      llcleanup.cpp      llcommon.cpp      llcommonutils.cpp @@ -134,7 +133,6 @@ set(llcommon_HEADER_FILES      llbitpack.h      llboost.h      llcallbacklist.h -    llcallstack.h      llcleanup.h      llcommon.h      llcommonutils.h diff --git a/indra/llcommon/llcallstack.cpp b/indra/llcommon/llcallstack.cpp deleted file mode 100644 index c0be4f598e..0000000000 --- a/indra/llcommon/llcallstack.cpp +++ /dev/null @@ -1,188 +0,0 @@ -/** - * @file llcallstack.cpp - * @brief run-time extraction of the current callstack - * - * $LicenseInfo:firstyear=2016&license=viewerlgpl$ - * Second Life Viewer Source Code - * Copyright (C) 2016, Linden Research, Inc. - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; - * version 2.1 of the License only. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA - * - * Linden Research, Inc., 945 Battery Street, San Francisco, CA  94111  USA - * $/LicenseInfo$ - */ - -#include "linden_common.h" - -#include "llcommon.h" -#include "llcallstack.h" -#include "StackWalker.h" -#include "llthreadlocalstorage.h" - -#if LL_WINDOWS -class LLCallStackImpl: public StackWalker -{ -public: -    LLCallStackImpl(): -        StackWalker(false,0) // non-verbose, options = 0 -    { -    } -    ~LLCallStackImpl() -    { -    } -    void getStack(std::vector<std::string>& stack, S32 skip_count=0, bool verbose=false) -    { -        m_stack.clear(); -        ShowCallstack(verbose); -        // Skip the first few lines because they're just bookkeeping for LLCallStack, -        // plus any additional lines requested to skip. -        S32 first_line = skip_count + 3; -        for (S32 i=first_line; i<m_stack.size(); ++i) -        { -            stack.push_back(m_stack[i]); -        } -    } -protected: -    virtual void OnOutput(LPCSTR szText) -    { -        m_stack.push_back(szText); -    } -    std::vector<std::string> m_stack; -}; -#else -// Stub - not implemented currently on other platforms. -class LLCallStackImpl -{ -public: -    LLCallStackImpl() {} -    ~LLCallStackImpl() {} -    void getStack(std::vector<std::string>& stack, S32 skip_count=0, bool verbose=false) -    { -        stack.clear(); -    } -}; -#endif - -LLCallStackImpl *LLCallStack::s_impl = NULL; - -LLCallStack::LLCallStack(S32 skip_count, bool verbose): -    m_skipCount(skip_count), -    m_verbose(verbose) -{ -    if (!s_impl) -    { -        s_impl = new LLCallStackImpl; -    } -    LLTimer t; -    s_impl->getStack(m_strings, m_skipCount, m_verbose); -} - -bool LLCallStack::contains(const std::string& str) -{ -    for (const std::string& src_str : m_strings) -    { -        if (src_str.find(str) != std::string::npos) -        { -            return true; -        } -    } -    return false; -} - -std::ostream& operator<<(std::ostream& s, const LLCallStack& call_stack) -{ -#ifndef LL_RELEASE_FOR_DOWNLOAD -    for (const std::string& str : call_stack.m_strings) -    { -        s << str; -    } -#else -    s << "UNAVAILABLE IN RELEASE"; -#endif -    return s; -} - -LLContextStrings::LLContextStrings() -{ -} - -// static -LLContextStrings* LLContextStrings::getThreadLocalInstance() -{ -    LLContextStrings *cons = LLThreadLocalSingletonPointer<LLContextStrings>::getInstance(); -    if (!cons) -    { -        LLThreadLocalSingletonPointer<LLContextStrings>::setInstance(new LLContextStrings); -    } -    return LLThreadLocalSingletonPointer<LLContextStrings>::getInstance(); -} - -// static -void LLContextStrings::addContextString(const std::string& str) -{ -    LLContextStrings *cons = getThreadLocalInstance(); -    //LL_INFOS() << "CTX " << (S32)cons << " ADD " << str << " CNT " << cons->m_contextStrings[str] << LL_ENDL; -    cons->m_contextStrings[str]++; -} - -// static -void LLContextStrings::removeContextString(const std::string& str) -{ -    LLContextStrings *cons = getThreadLocalInstance(); -    cons->m_contextStrings[str]--; -    //LL_INFOS() << "CTX " << (S32)cons << " REMOVE " << str << " CNT " << cons->m_contextStrings[str] << LL_ENDL; -    if (cons->m_contextStrings[str] == 0) -    { -        cons->m_contextStrings.erase(str); -    } -} - -// static -bool LLContextStrings::contains(const std::string& str) -{ -    const std::map<std::string,S32>& strings = -        LLThreadLocalSingletonPointer<LLContextStrings>::getInstance()->m_contextStrings; -    for (const std::map<std::string,S32>::value_type& str_pair : strings) -    { -        if (str_pair.first.find(str) != std::string::npos) -        { -            return true; -        } -    } -    return false; -} - -// static -void LLContextStrings::output(std::ostream& os) -{ -    const std::map<std::string,S32>& strings = -        LLThreadLocalSingletonPointer<LLContextStrings>::getInstance()->m_contextStrings; -    for (const std::map<std::string,S32>::value_type& str_pair : strings) -    { -        os << str_pair.first << "[" << str_pair.second << "]" << "\n"; -    } -} - -// static -std::ostream& operator<<(std::ostream& s, const LLContextStatus& context_status) -{ -    LLThreadLocalSingletonPointer<LLContextStrings>::getInstance()->output(s); -    return s; -} - -bool LLContextStatus::contains(const std::string& str) -{ -    return LLThreadLocalSingletonPointer<LLContextStrings>::getInstance()->contains(str); -} diff --git a/indra/llcommon/llcallstack.h b/indra/llcommon/llcallstack.h deleted file mode 100644 index ad10a9dbf7..0000000000 --- a/indra/llcommon/llcallstack.h +++ /dev/null @@ -1,87 +0,0 @@ -/** - * @file llcallstack.h - * @brief run-time extraction of the current callstack - * - * $LicenseInfo:firstyear=2016&license=viewerlgpl$ - * Second Life Viewer Source Code - * Copyright (C) 2016, Linden Research, Inc. - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; - * version 2.1 of the License only. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA - * - * Linden Research, Inc., 945 Battery Street, San Francisco, CA  94111  USA - * $/LicenseInfo$ - */ - -#include <map> - -class LLCallStackImpl; - -class LLCallStack -{ -public: -    LLCallStack(S32 skip_count=0, bool verbose=false); -    std::vector<std::string> m_strings; -    bool m_verbose; -    bool contains(const std::string& str); -private: -    static LLCallStackImpl *s_impl; -    S32 m_skipCount; -}; - -LL_COMMON_API std::ostream& operator<<(std::ostream& s, const LLCallStack& call_stack); - -class LLContextStrings -{ -public: -    LLContextStrings(); -    static void addContextString(const std::string& str); -    static void removeContextString(const std::string& str); -    static void output(std::ostream& os); -    static LLContextStrings* getThreadLocalInstance(); -    static bool contains(const std::string& str); -private: -    std::map<std::string,S32> m_contextStrings; -}; - -class LLScopedContextString -{ -public: -    LLScopedContextString(const std::string& str): -        m_str(str) -    { -        LLContextStrings::addContextString(m_str); -    } -    ~LLScopedContextString() -    { -        LLContextStrings::removeContextString(m_str); -    } -private: -    std::string m_str; -}; - -// Mostly exists as a class to hook an ostream override to. -struct LLContextStatus -{ -    bool contains(const std::string& str); -}; - -LL_COMMON_API std::ostream& operator<<(std::ostream& s, const LLContextStatus& context_status); - -#define dumpStack(tag)                          \ -    LL_DEBUGS(tag) << "STACK:\n"                \ -                   << "====================\n"  \ -                   << LLCallStack()             \ -                   << "===================="    \ -                   << LL_ENDL; | 
